Hi Ginnie,

On Mon, 10 Jan 2011, Ginnie Wray wrote:

Hi Darren and Keith...

See below.

On 01/10/11 06:42, Darren Kenny wrote:
On 06/01/2011 19:40, Keith Mitchell wrote:
  On 01/ 6/11 12:30 PM, Ginnie Wray wrote:
Hi -

I have some observations that I would like to get some feedback on regarding this bug.

First observation: Transfer makes an assumption about the state that the build area will be in. It makes choices based on whether the source directory exists in the data set. If the source directory exists, Transfer assumes that it is ok to begin a transfer. In the case of this CR, the source directory did exist but there was nothing within the directory to permit a transfer to continue. Since the data set was in an indeterminate state, the transfer failed.
The key is that it made assumptions about the state of the directory, even though there's no guarantee that it is the *next* checkpoint being run - which means there's no guarantee that the state of the directory will be changed by a checkpoint that runs prior to it. I don't think that the __init__ of a checkpoint, and any functions it calls, should make assumptions about any pre-conditions of the DOC, build area, etc.

Totally agree with this - because of the way that __init__ is done early, but the actual execution doesn't happen until later in the cycle - nothing really can be guaranteed until the call to execute() - it is only at this point that you can safely assume that things should be inplace for the checkpoint to run.


The code I'm referring to isn't part of the __init__. This is code that is used by transfer's get_progress_estimate, which is called by the engine after the transfer checkpoint is loaded (that is when __init__ is executed).

My question is, does there need to be a delineation between providing an estimate during the period when nothing is guaranteed and when it is? I think for the transfer checkpoint, this makes a difference. When nothing is guaranteed, transfer could return a default value. Right now, there isn't a way for transfer to know definitively what to do.

As part of a bigger scenario, for any given transfer, a requested file or directory might not exist in the source area. (As was the case in this instance). DC folks requested that transfer ignore missing files and report the error output in the log. Would this be true for all applications, or should the application be able to choose how that's handled?

After dealing with a couple of issue as a result of the missing
files, I'm of the opinion that transfer should actually abort
processing if it fails to transfer one or more of the specified
files.

See the following CR:

7010088 transfer-cpio should abort when a file to be transferred is not found

Alok
_______________________________________________
caiman-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/caiman-discuss

Reply via email to