Commit Graph
700 Commits
Author SHA1 Message Date
Kenneth Hsu 197a15e032 Fix log message for retried upload operations.
The number of attempts is one (the first attempt) plus the number of
retries.
2020-03-01 12:07:05 -08:00
Rod Savard 1b0f5a8cb0 add descriptive reason for usn soft failure 2020-02-25 15:34:42 -08:00
Sean Templeton 446120ae3e A synthetic filelist could not be uploaded due to the logic in UploadSyntheticFilelist. The code passing in the fileset id to the class would get the id based on if the volume was in the Temporary or Uploading states. If the volume was in the Uploading state, present on the remote backend, and of the right size it would get changed to Uploaded.
One of the first things UploadSyntheticFilelist does is throw an exception if the volume is not in the Uploaded state. Or if it is in the Uploaded state, the next check would prevent a synthetic filelist from being created if the volume was not in the Uploading or Temporary states.

Removed the check for the volume not being in the Uploaded state as the warning in the second check handles that case.

Removed the using statement as it would dispose of the FilesetVolumeWriter after passing it to the UploadChannel. The UploadChannel could not use it since it had been disposed.

Fixed the GetRemoteVolumeFromIDAsync taking a fileset id and matching it up against a volume id. Now it will use fileset id to get the volume that matches the fileset.

Change the StopNow disruption test to not use a synthetic file list. The test was written with it not working and therefore fails a check on the number of filesets after stopping a backup.

Bonus fix for a possible null exception in Dispose for VolumeWriterBase.
2020-02-23 16:50:36 -06:00
Kenneth Hsu 19303614f0 Remove unnecessary call to ToString. 2020-02-18 17:50:26 -08:00
Kenneth Hsu 7e86486f59 Fix logs for custom retention policy to show backup times.
When we modified the code in revision
68ffd86594 (pull request #4018) to
consider collections of IListResultFilesets instead of DateTimes, we
neglected to preserve the backup times in the logs.

This fixes #4109.
2020-02-18 17:50:13 -08:00
warwickmmandGitHub 44f619b725 Merge pull request #4085 from drwtsn32x/improve-usn-snapshot-fails
Improve USN and Snapshot error handling
2020-02-06 19:36:42 -08:00
Rod Savard 235f94c96f change to use custom exception class 2020-02-06 06:34:49 -08:00
Rod Savard 63ddc52744 log warning not error when usn policy is On 2020-02-03 21:55:43 -08:00
Rod Savard ec8f897460 log information event when snap policy is Auto 2020-02-03 21:50:27 -08:00
Rod Savard 57d36df981 improve error msg on snapshot failure 2020-02-03 21:47:11 -08:00
Rod Savard a85c10fd8c move config hash calculation to UsnJournalService 2020-02-02 15:09:23 -08:00
Rod Savard 685c77a018 remove unused parameter 2020-02-01 23:15:26 -08:00
Rod Savard 0a9880c6cf change config hash calculation 2020-02-01 13:34:21 -08:00
Kenneth SkovhedeandGitHub a64671a0c6 Merge pull request #4018 from warwickmm/refactor/fileset_removal
Refactor fileset deletion code and add tests
2020-01-23 13:52:43 +01:00
warwickmmandGitHub e1937f21b8 Merge pull request #4054 from seantempleton/compactblocklist
Write blocklists when compacting files
2020-01-22 17:22:55 -08:00
Kenneth Hsu 35ea890f96 Merge remote-tracking branch 'upstream/master' into refactor/fileset_removal 2020-01-21 20:23:49 -08:00
Sean Templeton 04662bace1 Write blocklists when compacting files
The list folder was not being written to dindex files when performing a
compact operation. After the data blocks have been moved to a new volume
and the new volume data is finished being written to the new index file,
read the blocklists from the database and write them to the new index
file.
2020-01-19 21:57:08 -06:00
Kenneth Hsu d50f86ab7d Fix issue with repairing missing dindex files.
Since we are keeping around a reference to the IndexVolumeWriter and
BlockVolumeWriter instances, we cannot wrap their usages in using
statements.

This fixes issue #4046.
2020-01-09 19:55:27 -08:00
Sean Templeton 3b6306b556 Fix exceptions caused by Stop Now
The LocalDatabase class was deleting from the BlocklistHash table based on the volume id of blocks. The deletes for the Blockset and BlocksetEntry tables were using a union query which included the same query the BlocklistHash delete was using. Changed the BlocklistHash delete query to use the union as well to ensure that all three tables would use the same query to delete the necessary rows. This fixes the "Detected non-empty blocksets with no associated blocks!" error.

Moved a write call in the DataBlockProcessor to send a volume for upload after setting blockvolume to null. This prevents a null reference exception because otherwise it would be sent to the SpillCollector and it tries to add a block, but the volume has already been closed.

Added the ? operator to the RegistryUtility class to prevent a null reference exception while debugging. It was annoying catching it in the debugger.

Fixes #4037
2020-01-05 21:43:56 -06:00
Kenneth Hsu fdcef72a7c Merge remote-tracking branch 'upstream/master' into refactor/fileset_removal 2020-01-01 13:58:59 -08:00
Max 41a5591532 upstream 2019-12-25 16:34:56 +01:00
Kenneth Hsu a7ab5f6f00 Avoid unnecessary array creation and sorting.
This also removes a redundant timestamp conversion, as it already occurs
in the DropFilesetsFromTable method.
2019-12-15 14:06:20 -08:00
Kenneth Hsu 83ac03843d Fix spelling errors in comments.
In doing so, we also normalized some line endings.
2019-12-14 09:52:55 -08:00
Kenneth Hsu 60b4c8479c Fix bug where filesets considered for deletion had wrong version.
The ID in the Fileset table is the auto-incremented integer.  When
considering filesets for deletion (in particular, when deleting specific
versions), we need to reference the backup version number that is
exposed to the user (integers where the newest backup version is 0).
2019-12-12 18:38:17 -08:00
Kenneth Hsu 9cb602b171 Reorder classes to simplify diff. 2019-12-11 20:43:34 -08:00
Kenneth Hsu 68ffd86594 Refactor fileset deletion code.
This extracts the logic for various fileset deletion strategies into
separate classes.  This simplifies the code and makes it easier to test
the individual functionalities.
2019-12-11 17:59:20 -08:00
warwickmmandGitHub 514fc90bd1 Merge pull request #3992 from warwickmm/unhide_partial_filesets
Fix various issues related to partial backups
2019-12-07 10:36:13 -08:00
Kenneth Hsu 0f30604046 Add comment clarifying partial fileset in synthetic filelist. 2019-11-30 13:38:04 -08:00
Kenneth Hsu 20eb785f09 Simplify implementation of keep-versions logic. 2019-11-29 19:45:40 -08:00
Kenneth Hsu 39ba32c383 Remove redundant conditional expression. 2019-11-29 09:10:27 -08:00
Kenneth Hsu b4bef4bea0 Clarify comment. 2019-11-29 09:10:27 -08:00
Kenneth Hsu a47175a945 Fix bug in keep-versions logic where dangling partials were removed.
If the most recent backups were partials (and not followed by a full
backup), they should not be removed.  A partial backup should only be
removed if it is followed by a full backup.

This concerns issue #3982.
2019-11-29 09:10:27 -08:00
Kenneth Hsu fa3ffb7540 Add comment to explain download of dlist files during direct restore. 2019-11-28 20:16:57 -08:00
Kenneth Hsu 861f0ffa1b Ensure that one full backup is kept when processing keep-time.
this concerns issue #3982.
2019-11-23 12:20:56 -08:00
Kenneth Hsu cd08ca919a Include fileset file in synthetic filelist.
We declare this to be a partial backup, with the presumption being that
a synthetic filelist is only created when a backup is interrupted.

This concerns issue #3982.
2019-11-21 19:14:48 -08:00
Kenneth Hsu 51b4ecfb28 Include fileset file in dlist files after purge operation.
This concerns issue #3982.
2019-11-21 19:08:55 -08:00
Kenneth Hsu 0cfce6be39 Include fileset file when repairing missing dlist file.
This concerns issue #3982.
2019-11-20 22:19:03 -08:00
User 8755390dc8 don't store journal data for partial backups 2019-11-20 20:46:27 -08:00
Kenneth Hsu 8ab64071f0 Display correct backup type when using direct restore.
Previously, all filesets would be displayed as partial.  Now, we obtain
the partial/full type from the fileset file (not the fileset.json) file
in the dlist file.  If this file does not exist, the backup type
defaults fo full.

Note that this requires downloading and uncompressing the dlist file, so
performance of populating the restore list may be impacted
significantly.

This concerns issue #3982.
2019-11-20 20:23:48 -08:00
Kenneth Hsu 17d72be7ff Remove intermediate partial backups in delete handler.
If surrounded by full backups, partial backups are assumed to be no
longer necessary.

This concerns issue #3982.
2019-11-19 19:48:40 -08:00
Kenneth Hsu 93bc478d37 Issue warning when backup is cancelled by user.
Previously, a yellow warning icon would be displayed but the logs did
not contain any details regarding the cause of the warning.

This concerns issue #3982.
2019-11-10 11:20:11 -08:00
Fish 3cf01b7297 Advance the progress bar when files are skipped. Fixes #3407.
According to the current implementation, the progress bar does not advance
when files are skipped by FilePreFilterProcess. This causes users'
confusion since the web frontend will get stuck at a certain stage for a
long time. This commit addresses this issue.
2019-11-03 21:34:21 -07:00
Kenneth SkovhedeandGitHub 99d0cb3c57 Merge pull request #3953 from warwickmm/make_fields_readonly
Mark fields that don't need to be reassigned as readonly
2019-10-21 08:36:17 +02:00
Kenneth Hsu 2aa76881a5 Mark fields that don't need to be reassigned as readonly.
This makes it explicit at compile-time that these fields should not be
reassigned outside the constructor.
2019-10-19 13:59:22 -07:00
Kenneth Hsu afab61a05b Use pattern matching to simplify casts. 2019-10-19 10:15:38 -07:00
Kenneth SkovhedeandGitHub 4bb0c507a2 Merge pull request #3930 from warwickmm/dispose_volume_writers
Ensure that instances of VolumeWriterBase are disposed
2019-10-19 14:24:55 +02:00
Kenneth SkovhedeandGitHub 579f9911d5 Merge pull request #3938 from warwickmm/bugfix/wrong_dblock_in_dindex
Ensure that dindex references correct dblock file after renames
2019-10-19 14:19:11 +02:00
Kenneth SkovhedeandGitHub 880459d1b7 Merge pull request #3925 from warwickmm/bugfix/missing_filelist
Ensure that filelist is always included in dlist files
2019-10-19 14:08:27 +02:00
Kenneth Hsu 1c492647ae Rename method parameter for consistency. 2019-10-05 11:25:22 -07:00
Kenneth Hsu 0cdc5b9159 Ensure that dindex contains correct dblock file after renames.
When support for parallel uploads was implemented, we overlooked a case
where a failed put of a dblock file is retried with a different
filename.  In this case, an instance of TemporaryIndexVolume was created
in the DataBlockProcessor or SpillCollectorProcess prior to the
attempted put.  The put would fail, and then retried with a different
filename.  While the Remotevolume table in the database would reflect
the new filename, the TemporaryIndexVolume still contained a reference
to the old dblock filename.  This would cause issues in direct restores,
etc., when the referenced dblock file could not be found.

Now, the TemporaryIndexVolume is only created after the dblock put has
completed.

This addresses issue #3932.
2019-10-05 10:46:39 -07:00