[Box Backup] Problem with 'get' command on large files
Per Thomsen
boxbackup@fluffy.co.uk
Wed, 09 Aug 2006 02:56:30 -0700
This is a multi-part message in MIME format.
--------------030309090806000407010407
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi,
I have been awfully busy, and have only now started migrating my old
accounts to my new server (Linux X86_64, FC5, 0.10), and I'm running
into a problem when doing some manual testing.
To wit: My client machine is a Mac OSX machine (10.4.7) with the 0.10
release builds of bbackupd, bbackupquery, etc. It appears that the
backups work fine. I am able to (AFAICT) back up a 3.2GB file to the
store. But when I try to restore it (for testing), the following happens
in bbackupquery:
-------------------------------
curie:/Users/pthomsen root# bbackupquery
Box Backup Query Tool v0.10, (c) Ben Summers and contributors 2003-2006
Using configuration file /etc/box/bbackupd.conf
Connecting to store...
Handshake with store...
Login to store...
Login complete.
Type "help" for a list of commands.
query > cd users/pthomsen/Desktop/bordeaux-DVD-i386
query > ls -st
00032547 f----- 2006-04-01T00:35:58 3079421 FC-5-i386-DVD.iso
00033403 f----- 2006-06-06T00:29:09 00001 SHA1SUM
000375c3 f----- 2006-08-08T03:39:53 00001 .DS_Store
00037666 f----- 2006-08-08T07:26:15 3079421 p.iso
query > get FC-5-i386-DVD.iso foo.iso
Error occured fetching file.
query > ls
Exception: Connection TLSReadFailed (Probably a network issue between
client and server.) (7/34)
-------------------------------
Even with a debug build there is nothing in system.log on the client
machine.
On the server, I get the following in the (extended logging;
release-build) logs:
-------------------------------
Aug 9 01:47:01 backup01 bbstored[19717]: Sending stream, size 256
Aug 9 01:47:01 backup01 bbstored[19717]: Receive GetFile(0x31e85,0x37666)
Aug 9 01:47:01 backup01 bbstored[19717]: Receive GetFile(0x31e85,0x37666)
Aug 9 01:47:01 backup01 bbstored[19717]: Send Success(0x37666)
Aug 9 01:47:01 backup01 bbstored[19717]: Send Success(0x37666)
Aug 9 01:47:01 backup01 bbstored[19717]: Sending stream, size -1141640418
Aug 9 01:47:01 backup01 bbstored[19717]: Connection statistics for
BACKUP-0005: IN=210 OUT=75545 TOTAL=75755
Aug 9 01:47:01 backup01 bbstored[19717]: in server child, exception
RaidFile OSError (Error when accessing an underlying file. Check file
permissions allow files to be read and written in the configured raid
directories.) (2/8) -- terminating child
-------------------------------
I noticed the negative number for stream size, and worry that it is
there because something in my builds is not using 64-bit numbers for
file size. The file I'm trying to restore (id 00032547) is 3,153,326,894
bytes in the store, which (when 16 is subtracted from it) is
-1,141,640,418 as a signed 32-bit number.
I am suspicious that I have not built the large-file support correctly.
I vaguely remember that there was something special needed to get the
large file support to build on Linux, but I thought it was taken care of
with autoconf.
Or this could be a bug in the GetFile command.
In lib/server/Protocol.cpp:738: IOStream::pos_type is used. I can't find
the definition of IOStream::pos_type, and I'm not sure if that's really
the right place to be looking for this.
I think I built the server with 64-bit support, and I'm attaching a
gzipped config.log, so nothing (hopefully is missing)...
Thanks for any help I can get,
Per
--
Per Reedtz Thomsen | Reedtz Consulting, LLC | F: 209 883 4119
V: 209 883 4102 | pthomsen@reedtz.com | C: 209 996 9561
GPG ID: 1209784F | Yahoo! Chat: pthomsen | AIM: pthomsen
--------------030309090806000407010407
Content-Type: application/x-gzip; x-mac-type="0"; x-mac-creator="0";
name="config.log.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="config.log.gz"
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
gedn1ZOWSTR3/h+hnJxqLA4CAA==
--------------030309090806000407010407--