Commit Graph

15 Commits

Author SHA1 Message Date
Lukas Piatkowski
4f44c3f130 mercurial_types: remove D* types and move mercurial types around
Summary:
Now it is as it should be: mercurial_types have the types, mercurial has revlog related structures
burnbridge

Reviewed By: farnz

Differential Revision: D8319906

fbshipit-source-id: 256e73cdd1b1a304c957b812b227abfc142fd725
2018-06-07 13:19:16 -07:00
Jeremy Fitzhardinge
a2daf8c2d5 mononoke: no need to pass Mysql connection params by value
Summary: It only needs to borrow them.

Reviewed By: kulshrax

Differential Revision: D8244267

fbshipit-source-id: 2a24a3b7c6eb65177e4e26c57650dd7e096b4202
2018-06-04 08:51:25 -07:00
Stanislau Hlebik
e99fce6bd4 mononoke: add separate types for Bookmark and BookmarkPrefix
Summary:
This will make it easier to change the "real" bookmark type from AsciiString to
String if we decide to do that.

BookmarkPrefix is a separate type because we may want to change it from
AsciiString to String. Also we don't want to confuse a bookmark prefix with a
bookmark name.

Reviewed By: jsgf

Differential Revision: D7909992

fbshipit-source-id: 3d4d075c204ed5ef1114a743430982c2836bac04
2018-05-09 02:11:17 -07:00
Lukas Piatkowski
7e6b69046c blobrepo: persist bookmarks in on-disk Sqlite database
Summary: For on-disk-rocksdb use cases we should persist bookmarks like any other table we use

Reviewed By: farnz

Differential Revision: D7728717

fbshipit-source-id: f63a6410f5ed254a719a16a7504d1b31da5a20a8
2018-04-24 11:17:06 -07:00
Stanislau Hlebik
0392799c87 mononoke: add mysql bookmarks
Summary:
The diff size is formidable, however it's not that bad really. This is just
about moving the code inside the macro and tests in a separate file.
This is similar to changesets or filenodes crates

Reviewed By: lukaspiatkowski

Differential Revision: D7639681

fbshipit-source-id: 4216652780bf99939245ae39e508b3b46cf96a03
2018-04-21 11:24:24 -07:00
Stanislau Hlebik
27d38be015 mononoke: make SqliteDbBookmarks cloneable and pass it to transaction object
Summary:
Instead of passing Connection, let's pass SqliteBookmarks struct.
This makes adding mysql bookmarks easier.

Reviewed By: lukaspiatkowski

Differential Revision: D7639679

fbshipit-source-id: 7c12e4dbc56b5ad00ecb3a00877da0e2600c3039
2018-04-21 11:24:24 -07:00
Stanislau Hlebik
fb45846aa2 mononoke: add get_conn method to bookmarks
Summary:
This is similar to what we've already done in filenodes and changesets. Sqlite
implementation just grabs the lock, future mysql implementation will get a
connection from pool.

Reviewed By: lukaspiatkowski

Differential Revision: D7585387

fbshipit-source-id: 95a046808f4d78d7776a26bdf3f7d939b1ee0451
2018-04-21 08:40:24 -07:00
Lukas Piatkowski
f6c3f72745 CODEMOD: rename mercurial_types::HgChangesetId to DChangesetId
Summary: mercurial_types::DChangesetId should be replaced by types from mononoke_types in most cases and by mercurial::HgChangesetId in others. This rename should help with tracking this

Reviewed By: sid0

Differential Revision: D7618897

fbshipit-source-id: 78904f57376606be99b56662164e0c110e632c64
2018-04-16 03:40:24 -07:00
Stanislau Hlebik
27d46fd45c mononoke: change the schema of bookmarks table
Summary:
Bump bookmark size limit - we use 512 for infinitepush, let's use the same
here. Also add a primary key

Reviewed By: farnz

Differential Revision: D7534967

fbshipit-source-id: aeef926de910a3a9934fb1588778f8f503821071
2018-04-09 08:03:51 -07:00
Stanislau Hlebik
7e3daf753c mononoke: implement bookmarks using diesel
Summary:
Implementation of the bookmarks trait using diesel. Currently it's quite slow
because it uses mutex to make the struct sync. Also it's not really async, even
though it returns future. The plan to make it async is to move the computation
on a separate thread pool.

Reviewed By: kulshrax

Differential Revision: D7255935

fbshipit-source-id: ce622a14af777ae470aecc039cef8c6cab9db41e
2018-03-21 14:24:43 -07:00
Stanislau Hlebik
801591845e mononoke: move bookmarks to bookmarks_old
Summary:
We are going to significantly change Bookmark trait and implementation.
We are going to use Diesel, and new Bookmark trait won't use Version. Instead
of changing the current implementation, let's just move it to the separate
directory which will soon be deleted.

Reviewed By: lukaspiatkowski

Differential Revision: D7138039

fbshipit-source-id: 72b81bf7f6524052b3a360bac23ab56a978b08cb
2018-03-06 04:47:34 -08:00
Julian Priestley
67e908efe0 Use ChangesetId rather than NodeHash in bookmarks
Summary: Update the bookmarks module to use ChangesetId to represent bookmarks, rather than NodeHash.

Reviewed By: lukaspiatkowski

Differential Revision: D6774650

fbshipit-source-id: 1742e4e78798ad68a7f17ebd345eef14a7de2cec
2018-01-22 10:23:36 -08:00
Jeremy Fitzhardinge
dc5e78c1c1 rust: mass convert scm/mononoke/... to use failure
Summary:
Convert scm/mononoke to use failure, and update common/rust crates it depends on as well.

What it looks like is a lot of deleted code...

General strategy:
- common/rust/failure_ext adds some things that are in git failure that aren't yet in crates.io (`bail!` and `ensure!`, `Result<T, Error>`)
- everything returns `Result<T, failure::Error>`
- crates with real error get an error type, with a derived Fail implementation
  - replicate error-chain by defining an `enum ErrorKind` where the fields match the declared errors in the error! macro
- crates with dummy error-chain (no local errors) lose it
- `.chain_err()` -> `.context()` or `.with_context()`

So far the only place I've needed to extract an error is in a unit test.
Having a single unified error type has simplified a lot of things, and removed a lot of error type parameters, error conversion, etc, etc.

Reviewed By: sid0

Differential Revision: D6446584

fbshipit-source-id: 744640ca2997d4a85513c4519017f2e2e78a73f5
2017-12-05 18:11:13 -08:00
Simon Farnsworth
5519eae489 Make Bookmarks a parameterless trait
Summary:
As part of removing excess genericism, make Bookmarks a trait with no
associated types or type parameters. I will revisit error types here once I
have removed the Repo trait - these are not ideal, but enough to get things
going

Reviewed By: StanislavGlebik

Differential Revision: D6405315

fbshipit-source-id: 814c106612a061e1766f1ea9a9428a13a73bd007
2017-11-27 08:05:02 -08:00
Arun Kulshreshtha
918b1f2dbe Add MySQL-backed Bookmarks implementation
Summary: Add a new implementation of the Bookmarks trait backed by a MySQL database.

Reviewed By: farnz

Differential Revision: D6215856

fbshipit-source-id: 4258a6195a946917a1878e87a53f9bbc6ca64400
2017-11-08 16:16:27 -08:00