Development of the agreement checker (vcheckagreement,
which went into the main line in repltools/24) revealed
a small number of cases in which some replicas of an
immutable directory was missing some of its contents.
This is a serious problem which warrants further
investigation.
All the cases where we observed this problem were in a
partcular directory in different versions of the same
package. Each of them had zero-length base chain.
This means that the directory was deleted and
re-created in subsequent versions, not simply modified.
So far, attempts to reproduce the problem have failed.
Since the replications of these directories happened in
the past, there's a possibility that the cause is a bug
which has already been fixed. If that's the case we
should identify the exact bug in question.
Likely places to look for this problem are:
- The code which replicates an immutable directory by
reading it out of the source repository:
ReplicateImmDir and ReplicateImmDirCallback in
Replication.C
- The client-side implementation of the
VestaSource::list function: VDirSurrogate::list in
VDirSurrogate.C
- The server-side implementation of the
VestaSource::list function for immutable directories:
VDirChangeable::list in VDirChangeable.C