[jira] [Updated] (MAILBOX-209) A data race is possible with Cassandra modseq generation

2015-03-09 Thread Tellier Benoit (JIRA)

 [ 
https://issues.apache.org/jira/browse/MAILBOX-209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tellier Benoit updated MAILBOX-209:
---
Attachment: MAILBOX-209-rebased.patch

Rebase done...

 A data race is possible with Cassandra modseq generation
 

 Key: MAILBOX-209
 URL: https://issues.apache.org/jira/browse/MAILBOX-209
 Project: James Mailbox
  Issue Type: Bug
Reporter: Tellier Benoit
 Attachments: MAILBOX-209-rebased.patch, 
 fix_cassandra_modseq_provider.patch


 The Cassandra mailbox implementation proceed as follow to increase the modseq 
 :
  - a first call to Cassandra to increase the modseq value for a given mailbox
  - a second call allow us to retrieve the current value.
 Note that you can not do it in a single call...
 In a distributed environment, imagine that :
  - for a mailbox the current modseq is n
  - server A increments modseq. Modseq is n+1
  - server B increments modseq. Modseq is n+2
  - server A and B then retrieve the modseq value and have a duplicated modseq 
 : they for instance both can assign n+2 value to a different message.
 The problem can be solved using conditionnal updates with lightweight 
 transactions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org



[jira] [Updated] (MAILBOX-209) A data race is possible with Cassandra modseq generation

2015-01-21 Thread Tellier Benoit (JIRA)

 [ 
https://issues.apache.org/jira/browse/MAILBOX-209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tellier Benoit updated MAILBOX-209:
---
Attachment: fix_cassandra_modseq_provider.patch

In this patch, we first get the current modseq value. We increase it only if 
the value did not change. If it is the case, we can then return the incremented 
value. If it is not the case, we just retry.

Note a tunnable max retry parameter ( to avoid being stuck )

To validate all cassandra unit tests ( mailbox mappers espacially ), it has to 
behave well even if the mailbox does not exist. Hence the separated table.

 A data race is possible with Cassandra modseq generation
 

 Key: MAILBOX-209
 URL: https://issues.apache.org/jira/browse/MAILBOX-209
 Project: James Mailbox
  Issue Type: Bug
Reporter: Tellier Benoit
 Attachments: fix_cassandra_modseq_provider.patch


 The Cassandra mailbox implementation proceed as follow to increase the modseq 
 :
  - a first call to Cassandra to increase the modseq value for a given mailbox
  - a second call allow us to retrieve the current value.
 Note that you can not do it in a single call...
 In a distributed environment, imagine that :
  - for a mailbox the current modseq is n
  - server A increments modseq. Modseq is n+1
  - server B increments modseq. Modseq is n+2
  - server A and B then retrieve the modseq value and have a duplicated modseq 
 : they for instance both can assign n+2 value to a different message.
 The problem can be solved using conditionnal updates with lightweight 
 transactions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org