Tue 10 Sep 2013 08:17:33 PM UTC, comment #1:
Hi, that's complicated. I'll try to explain what's happening.
storeBackup.pl works (among others) in the following way:
1. check by timestamp, size, path/filename if a file is already in the backup. If not:
2. calc all (or lots of) md5 sums from new / changes files in a directory by calling the program md5sum. This is done in parallel to other stuff (mostly copying, compressing, hard linking, reading directories)
3. put the md5 sums in a waiting queue for compression or a queue for copying (let's say for compression)
Now, there is a problem:
If the file (which name was picked up from the queue) changed since the time of calculation of the md5 sum, then the md5 sum in the file in the backup will be different from the one calculated with md5sum before (the change) and stored in .md5CheckSums.
Therefore:
4. an external program (lib/stbuMd5Exec.pl) is started in parallel (to other activities) which recalculates the md5sum of the data and compresses the file simultaneously reading the file only once. This program writes it's results (md5sum + size of the file) to a temporary file which is read by storeBackup.pl. And the reading of that temporary file is not successful.
The reason for this is the following issue:
If you start an external program (fork/exec) and wait for it to finish, then you cannot always be sure to be able to read a file the external program wrote. This may be due to buffered writing or whatever. In these very rare cases storeBackup.pl waits some time and if that's not enough finally calls sync. But in some even more rare cases this also doesn't help. Then the message you saw is written to the log file.
The same sometimes happens with redirected output (stderr, stdout).
I think this may be an issue of buffering and/or caching!?
I was never able to really reproduces these rare cases. Inserting a print statement is enough to change the behaviour.
The only answer I can give you: simply ignore the message.
Maybe this helps?
PS: If somebody knows how to handle this problem .... would be nice to hear.
|