Resolution: Description:
=======
In case of recovery of ActiveSpaces with 'shared-nothing', what will happen if the backing store file has corrupt blocks at the end? Will it abort and use what it has been able to recover up to the point it detects the corrupt block, or will the recovery fail completely?
Resolution:
=======
ActiveSpaces will process until the end of the file and recover as much as possible.
If corrupt blocks are found, the file will not be deleted but recovery will complete. ActiveSpaces does not stop once it reads the first corrupt block. It skips and continues reading until the end of the old file and any good blocks found will be deserialized and loaded which are written to a new file. If there is inconsistency between the original and replica, whichever gets loaded first during recovery is used and any later load of the same tuple will be ignored. There is no good way to reconcile other than first to load gets preference.
In the other case where the file is inconsistent due to shutdown at different times (and some files do not have all the data flushed to disk) the same principle applies.
– If owner and replica are inconsistent, whichever loaded first will get preference. Recover would recover all the data from all the files. Missing data should be covered by replicas.
– If one node has the tuple in the file and the other node (replica) does not have it, then during load it will get replicated again and both copies (or copies equal to replication degree) are available in memory as well as the new files.