locked
Mutiple clients RRS feed

  • Question

  • Do the client table have extra fields when you have multiple clients in a bidirectional setup to track the problem of multiple clients editing the same row?

    • Moved by Max Wang_1983 Friday, April 22, 2011 10:38 PM forum consolidation (From:SyncFx - Microsoft Sync Framework Database Providers [ReadOnly])
    Wednesday, June 13, 2007 7:01 PM

Answers

  • Paul,

     

    The run time will detect a conflict; here is a run down of your scenario:

     

    1- A, B has same content

    2- A makes local change to row R

    3- B makes local change to R

    4- A synchronizes with the server - the server has the R(A)

    5- B synchronizes with the server. Conflict is detected.

     

    In step 5, you the ApplyChangeFailed event will be fired by the server provider with the local low on the server (R(A)) and with B's row. In handling this event, you could decide what you want to do:

    1- Ignore the error (means A row wins)

    2- Force write (means B row wins)

    3- Edit the row prior to forcing it (this allows you to merge A and B changes if you so chose)

     

    Take a look at the conflict handling demo here

     

    Thanks

    Monday, June 18, 2007 3:46 PM

All replies

  • No. The client does receive change from one source, the server, and thus does not need to carry the id of clients that made the last set of changes. When multiple clients make a change to a given row and try to upload to the server, one change will win and be persisted on the server store then synced down to the other clients.

     

    Thanks

    Thursday, June 14, 2007 9:21 PM
  • Thanks for the reply – a bit disappointing though. Such a wonderful product. I’ll have to figure out some work around, since we hate to lose data in our environment.

     

    Paul Sullivan

    Friday, June 15, 2007 12:18 AM
  • Paul,

     

    Losing data is not acceptable for us too. Can you explain to me how data is lost?

     

    Thanks

     

    Friday, June 15, 2007 2:16 AM
  • Here is the scenario that worries me:

    Mobile A and Mobile B detach from the central database with a two cell data row with Paul Smith in it. While away Mobile A changes it to Bob Smith and Mobile B changes it to Paul Jones. Mobile A reconnects and the central database is changed to Bob Smith. Later Mobile B reconnects and the central database changes to Paul Jones there by losing the change Mobile A made. How can I make sure the final result is Bob Jones?

    I hope you can show my thinking is wrong on this.

    Paul

     

    Friday, June 15, 2007 12:16 PM
  • Paul,

     

    The run time will detect a conflict; here is a run down of your scenario:

     

    1- A, B has same content

    2- A makes local change to row R

    3- B makes local change to R

    4- A synchronizes with the server - the server has the R(A)

    5- B synchronizes with the server. Conflict is detected.

     

    In step 5, you the ApplyChangeFailed event will be fired by the server provider with the local low on the server (R(A)) and with B's row. In handling this event, you could decide what you want to do:

    1- Ignore the error (means A row wins)

    2- Force write (means B row wins)

    3- Edit the row prior to forcing it (this allows you to merge A and B changes if you so chose)

     

    Take a look at the conflict handling demo here

     

    Thanks

    Monday, June 18, 2007 3:46 PM
  • Super - Thank you so much.

     

    Will study your demo.

     

    Paul V. Sullivan

    Tuesday, June 19, 2007 1:55 AM