[ 
https://issues.apache.org/jira/browse/CASSANDRA-1311?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976326#action_12976326
 ] 

Martin Hentschel commented on CASSANDRA-1311:
---------------------------------------------

In StorageProxy.mutate (was mutateBlocking in the older version I guess), 
triggers are only executed once a write quorum has been reached.  Threrefore, 
at the master, only acknowledged writes will also fire triggers.  If the 
acknowledgement gets lost, then the writes have been performed and the triggers 
have been executed so there should not be a consistency issue.

Concerning your point about slave nodes, we assume that clients retry write 
requests that have not been acknowledged by Cassandra.  Triggers at slave nodes 
are buffered (storeDanglingTrigger) and are only executed in case the master 
node goes down.  If the master fails before sending the acknowledgement to the 
client, the trigger might have been executed already.  I think that correctly 
was your point.  But because the client did not get a response, it should retry 
its write request and thus establishing consistency again.  Of course, there is 
a window in which triggers have been fired but the actual data is not present.  
If the client ceases to issue the write request, then the inconsistency will be 
durable, which is bad.  If this is a too serious issue, we should come up with 
a solution.

(For the record:
Master node = Cassandra's update coordinator
Slave nodes = All replica nodes minus the update coordinator)

> Support (asynchronous) triggers
> -------------------------------
>
>                 Key: CASSANDRA-1311
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1311
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: Contrib
>            Reporter: Maxim Grinev
>             Fix For: 0.8
>
>         Attachments: HOWTO-PatchAndRunTriggerExample-update1.txt, 
> HOWTO-PatchAndRunTriggerExample.txt, ImplementationDetails-update1.pdf, 
> ImplementationDetails.pdf, trunk-967053.txt, trunk-984391-update1.txt, 
> trunk-984391-update2.txt
>
>
> Asynchronous triggers is a basic mechanism to implement various use cases of 
> asynchronous execution of application code at database side. For example to 
> support indexes and materialized views, online analytics, push-based data 
> propagation.
> Please find the motivation, triggers description and list of applications:
> http://maxgrinev.com/2010/07/23/extending-cassandra-with-asynchronous-triggers/
> An example of using triggers for indexing:
> http://maxgrinev.com/2010/07/23/managing-indexes-in-cassandra-using-async-triggers/
> Implementation details are attached.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to