[Box Backup] bbstored debug vs release database format incompatibility

Ben Summers boxbackup@fluffy.co.uk
Thu, 9 Feb 2006 11:06:54 +0000


On 9 Feb 2006, at 10:06, Jonas Berlin wrote:

[snip]
>
> I then further went into the source and found the line that printed it
> out which lead me to a couple of constants defined in
> lib/backupstore/StoreStructure.h:
>
> #ifdef NDEBUG
> 	#define STORE_ID_SEGMENT_LENGTH		8
> 	#define STORE_ID_SEGMENT_MASK		0xff
> #else
> 	// Debug we'll use lots and lots of directories to stress things
> 	#define STORE_ID_SEGMENT_LENGTH		2
> 	#define STORE_ID_SEGMENT_MASK		0x03
> #endif
>
> After the "DOH" reaction I went ahead and changed the NDEBUG  
> version to
> use the same values as the debug version, compiled a new release build
> and now it worked fine again.
>
> Question 1: Is this kind of debug database really as resource- 
> consuming
> as the comment suggests?

It uses lots and lots of directories with 4 files and 4 directories  
in each, instead of 256 + 256.

>
> Question 2: What do you suggest to do in my situation?
>   a) Is it best to continue with this debug setup?
>   b) Can it be converted to the "release build" setup in any way?
>   c) Start from scratch with a empty database and let the clients send
> everything again (I already got a weeks worth of 512/512 internet
> bandwidth in there)
>   d) something else?

I suppose you could write a program to reorder them all, but maybe  
the best thing is to run your modified release client. But it doesn't  
feel like the right solution, and you'll have to remember to modify  
every version you install.

>
> Question 3: Regarding alternative 2c) above: will the clients freak  
> out
> if the database suddenly disappears? Or do they always work based on
> what the server reports?

They will just upload everything again without complaint.

Ben