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

Matt Stump commented on CASSANDRA-9193:
---------------------------------------

I've got it so I can run JS when events are triggered, but the problem is that 
the partition key is serialized to a ByteBuffer fairly high in the stack above 
StorageProxy. StorageProxy doesn't have the context of a CQL3 query so if the 
query utilizes a composite partition key it's hard to check for equality if you 
wanted to filter by partition key. 

We have three options:
# Only allow JS introspection for CQL3 queries
# Expose functionality to compose composite partition keys in JS so that we can 
check for equality
# Require that the user know the fully serialized partition key beforehand.

I'm leaning towards option 1 and 3. Offer multiple injection points, one at the 
CQL3 query processing level, and maybe later an injection point further down 
the stack which would require knowledge of the fully serialized partition key. 

> Facility to write dynamic code to selectively trigger trace or log for queries
> ------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-9193
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9193
>             Project: Cassandra
>          Issue Type: New Feature
>            Reporter: Matt Stump
>
> I want the equivalent of dtrace for Cassandra. I want the ability to 
> intercept a query with a dynamic script (assume JS) and based on logic in 
> that script trigger the statement for trace or logging. 
> Examples 
> - Trace only INSERT statements to a particular CF. 
> - Trace statements for a particular partition or consistency level.
> - Log statements that fail to reach the desired consistency for read or write.
> - Log If the request size for read or write exceeds some threshold
> At some point in the future it would be helpful to also do things such as log 
> partitions greater than X bytes or Z cells when performing compaction. 
> Essentially be able to inject custom code dynamically without a reboot to the 
> different stages of C*. 
> The code should be executed synchronously as part of the monitored task, but 
> we should provide the ability to log or execute CQL asynchronously from the 
> provided API.
> Further down the line we could use this functionality to modify/rewrite 
> requests or tasks dynamically.



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

Reply via email to