This will be put in the final conflict resolution document and linked once complete. There are a number of options for conflict resolution on the server. The industry standard is to have a separate table in the database to record full history. We then either record deltas in another table or the complete record again in a first table. There are a number of drawbacks to this approach, namely: 1 - large database. each record could have potentially hundreds or thousands of entries in the historical table. 2 - customer schema change. customers may be unwilling to add a table to provide conflict resolution. 3 - more complex resolvers. when going with this approach the developers will have to interact with one extra abstraction layer. Another option is for the client to provide its base to the server with every request. If there is a conflict the server then has the client's base to perform a 3 way merge with. The drawbacks to this approach are: 1 - large increase in network requests client side 2 - potentially wasteful as we are anticipating a conflict with every request The investigation is still ongoing but with the client also being investigated. See the related JIRA. |