140
any active network connections. Each change can be examined with respect to its source,
operands and relationship to other changes, and then dealt with appropriately. Application
conflicts are those conflicts that depend on specialized consistency constraints over and
above the basic sequence constraints imposed by the data model. This kind of customization
is beyond our current scope, but it is worth noting that proper support for this function
would include support for applications to detect semantic conflicts. This would include full
query functions on changes of the sort discussed in Chapter 6. A standard set of extensible
disposition actions for detected conflicts would also be needed as a starting point for appli-
cation implementers. These would include, at least:
• Movement of conflicting changes to special change sets;
• Acceptance of conflicting changes, and sending of a special conflict event to the applica-
tion;
• Acceptance of the conflict without special reporting of any kind.
The other functions of the policy manager (in conjunction with the individual network
connections) are replication management and event propagation. These are grouped together
because the Palimpsest model unifies these under the rubric of change distribution, at the
same time that it separates them from synchronization concerns. The policy manager needs
to be able to decide what changes should be distributed where. A brief list of useful policies
includes the following:
• Epidemic. For each new change received, send it to a subset of a (presumably large)
group of active connections. If a change has already been received, do not propagate it,
or propagate it with a very low probability.
• Version update. For a selected version, package up all the changes in its change set,
and send them out on one or more network channels.
• Pushy. Send every change added to a particular version to a specified set of network
connections. Accept every change on those connections, and add it to that version.
any active network connections. Each change can be examined with respect to its source,
operands and relationship to other changes, and then dealt with appropriately. Application
conflicts are those conflicts that depend on specialized consistency constraints over and
above the basic sequence constraints imposed by the data model. This kind of customization
is beyond our current scope, but it is worth noting that proper support for this function
would include support for applications to detect semantic conflicts. This would include full
query functions on changes of the sort discussed in Chapter 6. A standard set of extensible
disposition actions for detected conflicts would also be needed as a starting point for appli-
cation implementers. These would include, at least:
• Movement of conflicting changes to special change sets;
• Acceptance of conflicting changes, and sending of a special conflict event to the applica-
tion;
• Acceptance of the conflict without special reporting of any kind.
The other functions of the policy manager (in conjunction with the individual network
connections) are replication management and event propagation. These are grouped together
because the Palimpsest model unifies these under the rubric of change distribution, at the
same time that it separates them from synchronization concerns. The policy manager needs
to be able to decide what changes should be distributed where. A brief list of useful policies
includes the following:
• Epidemic. For each new change received, send it to a subset of a (presumably large)
group of active connections. If a change has already been received, do not propagate it,
or propagate it with a very low probability.
• Version update. For a selected version, package up all the changes in its change set,
and send them out on one or more network channels.
• Pushy. Send every change added to a particular version to a specified set of network
connections. Accept every change on those connections, and add it to that version.