[Box Backup-commit] COMMIT r2757 - in box/invisnet/perfhack1: bin/bbstored lib/backupclient lib/raidfile

subversion at boxbackup.org subversion at boxbackup.org
Tue Sep 28 00:55:35 BST 2010


Author: invisnet
Date: 2010-09-28 00:55:35 +0100 (Tue, 28 Sep 2010)
New Revision: 2757

Modified:
   box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp
   box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp
   box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp
Log:
Deal with diff-less files, fix logic, and enforce sanity (via ASSERT) in the right place

Modified: box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp
===================================================================
--- box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp	2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/bin/bbstored/BackupStoreContext.cpp	2010-09-27 23:55:35 UTC (rev 2757)
@@ -600,6 +600,8 @@
 	int64_t blocksInOldFiles = 0;
 	try
 	{
+		bool MarkedAsOld = false;
+
 		if(MarkFileWithSameNameAsOldVersions)
 		{
 			BackupStoreDirectory::Iterator i(dir);
@@ -620,6 +622,7 @@
 						// Can safely do this, because we know we won't be here if it's already
 						// an old version
 						blocksInOldFiles += e->GetSizeInBlocks();
+						MarkedAsOld = true;
 					}
 				}
 			}
@@ -653,7 +656,7 @@
 		}
 
 		// Write the directory back to disc
-		SaveDirectory(dir, InDirectory, (0 == DiffFromFileID) /* Append last (new) entry only */ );
+		SaveDirectory(dir, InDirectory, (0 == DiffFromFileID && !MarkedAsOld) /* Append last (new) entry only */ );
 
 		// Commit the old version's new patched version, now that the directory safely reflects
 		// the state of the files on disc.

Modified: box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp
===================================================================
--- box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp	2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/lib/backupclient/BackupStoreDirectory.cpp	2010-09-27 23:55:35 UTC (rev 2757)
@@ -281,12 +281,15 @@
 	ASSERT(mObjectID != 0);
 	ASSERT(mContainerID != 0);
 
+	ASSERT(mEntries.size() > 0);
+
 	Entry *pen = mEntries.back();
+	ASSERT(pen != 0);
 
 	if( FlagsMustBeSet == Entry::Flags_INCLUDE_EVERYTHING
 		&& FlagsNotToBeSet == Entry::Flags_EXCLUDE_NOTHING
 		&& !HasDependencyInfo()
-		&& ( (!StreamDependencyInfo && !HasDependencyInfoInline()) || (StreamDependencyInfo && HasDependencyInfoInline() == pen->HasDependencies()) ) )
+		&& ( StreamDependencyInfo == HasDependencyInfoInline() || ( StreamDependencyInfo && !pen->HasDependencies() ) ) )
 	{
 		BOX_TRACE("Appending to directory");
 
@@ -303,7 +306,10 @@
 			StreamableMemBlock::WriteEmptyBlockToStream(rStream);
 		}
 
-		rStream.Seek(0, IOStream::SeekType_End);
+		if(mEntries.size() > 1)
+		{
+			rStream.Seek(0, IOStream::SeekType_End);
+		}
 		pen->WriteToStream(rStream);
 		if(HasDependencyInfoInline())
 		{

Modified: box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp
===================================================================
--- box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp	2010-09-24 00:22:34 UTC (rev 2756)
+++ box/invisnet/perfhack1/lib/raidfile/RaidFileWrite.cpp	2010-09-27 23:55:35 UTC (rev 2757)
@@ -110,8 +110,6 @@
 // --------------------------------------------------------------------------
 void RaidFileWrite::Open(bool AllowOverwrite, bool UpdateOnly)
 {
-	ASSERT( !(AllowOverwrite && UpdateOnly) );
-
 	if(mOSFileHandle != -1)
 	{
 		THROW_EXCEPTION(RaidFileException, AlreadyOpen)




More information about the Boxbackup-commit mailing list