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

Aleksey Yeschenko commented on CASSANDRA-8054:
----------------------------------------------

Pushed as 
https://github.com/apache/cassandra/commit/63cb95e012ae3cc197b42b9aa881f905449437b1
 to 2.1 and trunk, because it started to become annoying for some stress users. 
Same issue still persists in 2.0, so not closing the ticket until that one is 
fixed as well (I'll work on a fix).

> EXECUTE request with skipMetadata=false gets no metadata in response
> --------------------------------------------------------------------
>
>                 Key: CASSANDRA-8054
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-8054
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Olivier Michallat
>            Assignee: Sylvain Lebresne
>             Fix For: 2.0.11, 2.1.1
>
>         Attachments: 8054-2.1.txt, 8054-fix.txt, 8054-v2.txt
>
>
> This has been reported independently with the 
> [Java|https://datastax-oss.atlassian.net/browse/JAVA-482] and 
> [C++|https://datastax-oss.atlassian.net/browse/CPP-174] drivers.
> This happens under heavy load, where multiple client threads prepare and 
> execute statements in parallel. One of them sends an EXECUTE request with 
> skipMetadata=false, but the returned ROWS response has no metadata in it.
> A patch of {{Message.Dispatcher.channelRead0}} confirmed that the flag was 
> incorrectly set on the response:
> {code}
>                 logger.debug("Received: {}, v={}", request, 
> connection.getVersion());
>                 boolean skipMetadataOnRequest = false;
>                 if (request instanceof ExecuteMessage) {
>                     ExecuteMessage execute = (ExecuteMessage)request;
>                     skipMetadataOnRequest = execute.options.skipMetadata();
>                 }
>                 response = request.execute(qstate);
>                 if (request instanceof ExecuteMessage) {
>                     Rows rows = (Rows)response;
>                     boolean skipMetadataOnResponse = 
> rows.result.metadata.flags.contains(Flag.NO_METADATA);
>                     if (skipMetadataOnResponse != skipMetadataOnRequest) {
>                         logger.warn("Inconsistent skipMetadata on streamId 
> {}, was {} in request but {} in response",
>                                     request.getStreamId(),
>                                     skipMetadataOnRequest,
>                                     skipMetadataOnResponse);
>                     }
>                 }
> {code}
> We observed the warning with (false, true) during our tests.



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

Reply via email to