#759 Project sharing completely broken in case of cancellation

open
nobody
5
2013-06-24
2012-07-17
Stefan Rossbach
No

This is the simplest scenario.

Share one project, do not cancel anything.

Now let the fun begin, try to add more projects, choose a side that should cancel the operation (it does not matter which side).

The side which started the project exchange will always has marked the project as shared, the other side will not.
You will be unable to share that project again, because you can't.

Think further:

A shares project X with B and C.

B finished successfully but C cancels the operation (for what reason ever).

C must leave the session to be able to obtain project X again.

ETC. PP.

Discussion

  • The problem is on project sharing step.
    To my understanding so far sharing project is through CollaborationUtils.addResourcesToSarosSession() which calls SarosSessionManager.addResourcesToSession(). In the latter method the sharing step is being done by adding the project to the session first and schedule OutgoingProjectNegotiation to all remote users of the session. The negotiations ignore the result as OutgoingProjectJob.run() always return OK.

    Before move further, how to determine shared projects on more than two participants? Are projects considered shared if all the participants don't cancel the process? That means A, B, C must not cancel the process. If one of them cancel the process, the project is considered not shared.

     
  • We always assume that the project sharing was successful. Normally we have to keep track who is currently collaborating on which project but we are missing such an option.

     
  • So, to fix this bug we cannot assume project sharing always successful.

    Tracking project-collaborators means collaborators of one session can collaborate on different projects. Let's say A, B, C is in one session with project X shared. Then A and B can share project Y and B and C can share project Z, all in one session. I think this will bring more synchronization problems and it will be easier if one session only defines which projects all users collaborating on.