This is an overview of the decisions made in the previous sections of this chapter:
Only shared files and applications are supported.
Assumptions made regarding file usage:
Low level of write-sharing, especially due to human write locks.
Small files, average size 10-22K.
No special support for different file types.
Note: Even though I will not make many explicit choices based
on these assumptions, the implementation will most certainly function less
than optimal if actual system use deviates a lot from these.
Session semantics were chosen for file sharing.
Granularity of replication is whole files, a sensible choice in light of
the above assumptions.
A replica control strategy based on a primary copy scheme:
Multi-level consistency based on definitions of pessimistic, strict,
and optimistic replica control strategies.
Conflict detection based on timestamping.
Conflict resolution left to the applications.
The file system should require minimal changes to existing applications.
The clients are assumed to be synchronized with the server, but a simple
service to check this, based on Cristian's algorithm, will be provided.
Caching is done in a simple least-recently-used (LRU) fashion.