Commit Graph

13 Commits

Author SHA1 Message Date
Adam Simpkins
20f211acb8 remove unused python imports
Summary: Remove a number of unused imports detected by the linter.

Reviewed By: wez

Differential Revision: D15776268

fbshipit-source-id: 221f45d275664d037bbabcac9858b40266b4833e
2019-06-12 14:00:57 -07:00
Joshua Kehn
08b96e33b3 ununderscore eden
Summary: Manually ran `black` with P62353677 applied to ununderscore numbers. Re-ran `arc f` to preserve other lint changes.

Reviewed By: zsol

Differential Revision: D14880800

fbshipit-source-id: d03437208ac10c67701c1dc1d5b38be7bb40acc9
2019-04-12 03:02:10 -07:00
Adam Simpkins
981952749d attempt to repair the RocksDB if we fail to open it
Summary:
Update `RocksHandles` to call `RepairDB()` if we get an error opening the
database.

We have seen errors opening the DB in some cases after hard server reboots.
In every case so far `ldb repair` has been able to repair it with no adverse
effects.  This simply makes `edenfs` automatically attempt to perform this DB
repair step.

Reviewed By: chadaustin, strager

Differential Revision: D14452216

fbshipit-source-id: 10c0cb0ff9cea3c3bbe485a4e489e4a6df640803
2019-03-18 11:36:42 -07:00
Shannon Zhu
37784ab043 Update pyre version for eden
Summary: using upgrade script to clear out all remaining version-set configs

Reviewed By: dark

Differential Revision: D13832474

fbshipit-source-id: 52c280cbd79b1410821ed829465b1c0907b50a86
2019-01-28 13:36:41 -08:00
Marco Leogrande
bdccac3ea2 Upgrade pyre version for eden
Reviewed By: shannonzhu

Differential Revision: D13502225

fbshipit-source-id: d21fb9da209e4f376a7fbe4f618954ef43d08fea
2018-12-18 11:15:40 -08:00
Matt Glazar
506cf4ebf8 Use TemporaryDirectoryMixin in CLI tests
Summary: CLI tests use shutil.rmtree to clean up temporary directories. Reuse TemporaryDirectoryMixin which is more robust against errors and supports EDEN_TEST_NO_CLEANUP.

Reviewed By: chadaustin

Differential Revision: D13268108

fbshipit-source-id: d77e95a2def0dceb34cf14e19c0c0c0e3aeef3f2
2018-12-03 14:42:11 -08:00
Adam Simpkins
a16c28cec8 fsck: also check and fix the next-inode-number file
Summary:
Check that the next-inode-number file exists and that the inode number it
contains is actually larger than all existing inode numbers.  Replace it with
correct data if the file does not exist, is corrupt, or contains an incorrect
inode number.

Reviewed By: chadaustin

Differential Revision: D12955093

fbshipit-source-id: 3d26fb475535577d9a2697bbd575fba350766d01
2018-11-27 14:35:01 -08:00
Adam Simpkins
a1b00e46d8 fsck: fix orphan inodes by extracting them to a lost+found directory
Summary:
Update fsck to extract data for orphan inodes to a lost+found directory in the
fsck log directory, and remove them from the overlay.  This will allow users
to recover the orphan file data if they want, and remove it otherwise.

Reviewed By: chadaustin

Differential Revision: D12955094

fbshipit-source-id: 9783452fce4060b9c5c48b3d48dd1f70294211c6
2018-11-27 14:35:01 -08:00
Adam Simpkins
ee47b3a85e add more files to the basic snapshot
Summary:
Add several more files to the basic snapshot, so we can test more cases
in the fsck tests:
- Materialized, new, and unmodified symlinks
- A deeper directory tree of directory inodes that are not materialized (still
  have a source control tree hash) but have children inodes allocated and are
  therefore present in the overlay.
- A socket in a slightly deeper directory so we can test behavior of sockets
  inside directories that have been corrupted..

As before I have replaced the older basic snapshot instead of adding a new
one, since the Eden data storage formats have not changed since the last
snapshot was created.

Reviewed By: chadaustin

Differential Revision: D13164658

fbshipit-source-id: d117c9cc336709044de212637c03140dfadd9a96
2018-11-26 12:28:52 -08:00
Adam Simpkins
4d8755e1a0 add some new subdirectories to the basic snapshot
Summary:
This updates the basic snapshot code to include a couple slightly deeper
directories.  I plan to use this in the fsck tests to verify handling of
orphan directories that contain subdirectories.

Normally it would be preferable to keep the old `basic-20181030` snapshot, and
simply add this new snapshot without than replacing the old one.  However, I
don't think we have made any meaningful changes to our on-disk storage formats
since the previous snapshot was generated, so it seems okay to just delete the
old snapshot.

Reviewed By: strager

Differential Revision: D13151861

fbshipit-source-id: e6b7583beecb5d9cc55271ad2dea8d36980542d1
2018-11-26 12:28:52 -08:00
Adam Simpkins
37fee2742e update eden fsck to support fixing invalid inodes
Summary: Update `eden fsck` to support replacing missing or invalid overlay files.

Reviewed By: chadaustin

Differential Revision: D12955092

fbshipit-source-id: 1dc28de4d387dba2e7dae96397dd01ceb3edcf5c
2018-11-26 12:28:52 -08:00
Adam Simpkins
8574164ed5 fsck: add basic framework code for fixing errors
Summary:
Add basic high level logic to fsck to begin fixing problems that are found.
This adds basic checks to decide if we should fix errors or not.

If errors are found and need to be fixed, this creates a new directory inside
the checkout state directory in `.eden` to record the actions taken by this
fsck run.  This directory will contain a log file that records the actions
taken.  In the future the fsck logic will also use this directory to store
copies of the corrupted inode data, and can store extracted orphan inode data
here as well.

Reviewed By: wez

Differential Revision: D12955044

fbshipit-source-id: 06c1e17a0a51fa5e2c0f2aab83b367b9358fd004
2018-11-26 12:28:52 -08:00
Adam Simpkins
b6e9844eca add new snapshot-based integration tests for fsck
Summary:
This is the basic framework for some new tests for `eden fsck` that work by
unpacking one of the existing saved snapshot files, breaking it in various
ways, and then running `eden fsck` to fix it.

Using an existing snapshot file rather than creating a new mount point on the
fly in the test has a few advantages:

- This lets us confirm that newer versions of Eden can still correctly repair
  and mount old file formats, even if we update the mount point data formats
  in the future.
- Unpacking a snapshot is much faster than starting Eden, creating an hg
  repository, cloning a new Eden checkout from the repo, and then unmounting
  the checkout.
- The inode number allocations for the snapshot are fixed, which makes it
  easier for the test code to manipulate specific inode numbers and always
  know which path this refers to.  If we created a mount point on the fly we
  can't guarantee ahead of time which inode numbers would map to each file,
  and we would need to do more work to look up this information after creating
  the checkout.

These tests are pretty basic at the moment, but I plan to expand them as I
check in more of the fsck logic to repair errors.

Reviewed By: wez

Differential Revision: D12955045

fbshipit-source-id: 5d5a96cec812f8e72caf93e57bf0f1311e28aab8
2018-11-09 14:29:17 -08:00