[Box Backup-dev] COMMIT r840 - box/chris/merge/bin/bbackupd

Ben Summers boxbackup-dev@fluffy.co.uk
Thu, 31 Aug 2006 13:00:36 +0100


Without an associated test, this scares me. There's a lot of  
complexity in the syncing mechanism, and I worry that little changes  
can break it. You've already re-written the main if statement for  
whether to update a file or not.

Ben


On 31 Aug 2006, at 09:01, subversion@fluffy.co.uk wrote:

> Author: chris
> Date: 2006-08-31 09:01:43 +0100 (Thu, 31 Aug 2006)
> New Revision: 840
>
> Modified:
>    box/chris/merge/bin/bbackupd/BackupClientDirectoryRecord.cpp
> Log:
> * bin/bbackupd/BackupClientDirectoryRecord.cpp
> - Sync subdirectories even when store is full, allows user to exclude
>   files to free up space to complete their backups
>
>
> Modified: box/chris/merge/bin/bbackupd/BackupClientDirectoryRecord.cpp
> ===================================================================
> --- box/chris/merge/bin/bbackupd/BackupClientDirectoryRecord.cpp	 
> 2006-08-30 19:51:59 UTC (rev 839)
> +++ box/chris/merge/bin/bbackupd/BackupClientDirectoryRecord.cpp	 
> 2006-08-31 08:01:43 UTC (rev 840)
> @@ -922,11 +922,15 @@
>  			// In the list, just use this pointer
>  			psubDirRecord = e->second;
>  		}
> -		else if(!rParams.mrContext.StorageLimitExceeded())	// know we've  
> got a connection if we get this far, as dir will have been modified.
> +		else
>  		{
> -			// Note: only think about adding directory records if there's  
> space left on the server.
> -			// If there isn't, this step will be repeated when there is  
> some available.
> -		
> +			// Note: if we have exceeded our storage limit, then
> +			// we should not upload any more data, nor create any
> +			// DirectoryRecord representing data that would have
> +			// been uploaded. This step will be repeated when
> +			// there is some space available.
> +			bool doCreateDirectoryRecord = true;
> +			
>  			// Need to create the record. But do we need to create the  
> directory on the server?
>  			int64_t subDirObjectID = 0;
>  			if(en != 0)
> @@ -934,6 +938,12 @@
>  				// No. Exists on the server, and we know about it from the  
> listing.
>  				subDirObjectID = en->GetObjectID();
>  			}
> +			else if(rParams.mrContext.StorageLimitExceeded())	
> +			// know we've got a connection if we get this far,
> +			// as dir will have been modified.
> +			{
> +				doCreateDirectoryRecord = false;
> +			}				
>  			else
>  			{
>  				// Yes, creation required!
> @@ -1016,21 +1026,24 @@
>  					haveJustCreatedDirOnServer = true;
>  				}
>  			}
> -			
> -			// New an object for this
> -			psubDirRecord = new BackupClientDirectoryRecord(subDirObjectID,  
> *d);
> -			
> -			// Store in list
> -			try
> -			{
> -				mSubDirectories[*d] = psubDirRecord;
> +
> +			if (doCreateDirectoryRecord)
> +			{				
> +				// New an object for this
> +				psubDirRecord = new BackupClientDirectoryRecord 
> (subDirObjectID, *d);
> +				
> +				// Store in list
> +				try
> +				{
> +					mSubDirectories[*d] = psubDirRecord;
> +				}
> +				catch(...)
> +				{
> +					delete psubDirRecord;
> +					psubDirRecord = 0;
> +					throw;
> +				}
>  			}
> -			catch(...)
> -			{
> -				delete psubDirRecord;
> -				psubDirRecord = 0;
> -				throw;
> -			}
>  		}
>  		
>  		ASSERT(psubDirRecord != 0 ||  
> rParams.mrContext.StorageLimitExceeded());
>
> _______________________________________________
> Boxbackup-dev mailing list
> Boxbackup-dev@fluffy.co.uk
> http://lists.warhead.org.uk/mailman/listinfo/boxbackup-dev