[ https://issues.apache.org/jira/browse/CASSANDRA-3390?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13133584#comment-13133584 ]
Yang Yang edited comment on CASSANDRA-3390 at 10/23/11 7:26 AM: ---------------------------------------------------------------- Jonathan: I see what you mean: the returned CF from cachedRow, in CFS.java:1169 : /** * Filter a cached row, which will not be modified by the filter, but may be modified by throwing out * tombstones that are no longer relevant. * The returned column family won't be thread safe. */ ColumnFamily filterColumnFamily(ColumnFamily cached, QueryFilter filter, int gcBefore) { it seems that for some CFs, the buffer.length() was calculated, then another thread did the removeDeletedColumns() for expiring columns in filterColumnFamily(), then serializedSize() was calculated again, if that is the case, would it actually cause correctness problems, or is it just an annoying discrepancy between 2 reports on the size (which reflect the size at 2 times in history)? something like that. was (Author: yangyangyyy): Jonathan: I see what you mean: the returned CF from cachedRow, in CFS.java:1169 : /** * Filter a cached row, which will not be modified by the filter, but may be modified by throwing out * tombstones that are no longer relevant. * The returned column family won't be thread safe. */ ColumnFamily filterColumnFamily(ColumnFamily cached, QueryFilter filter, int gcBefore) { in ColumnSerializer.java:serialize()--->ByteBufferUtils.write() out.write(buffer.array(), buffer.arrayOffset() + buffer.position(), buffer.remaining()); > ReadResponseSerializer.serializedSize() calculation is wrong > ------------------------------------------------------------ > > Key: CASSANDRA-3390 > URL: https://issues.apache.org/jira/browse/CASSANDRA-3390 > Project: Cassandra > Issue Type: Bug > Affects Versions: 1.0.1 > Reporter: Yang Yang > Fix For: 1.0.1 > > Attachments: 3390.patch > > > in ReadResponse.java > the following code > public long serializedSize(ReadResponse response, int version) > { > int size = DBConstants.intSize; > size += (response.isDigestQuery() ? response.digest() : > ByteBufferUtil.EMPTY_BYTE_BUFFER).remaining(); > size += DBConstants.boolSize; > if (response.isDigestQuery()) > size += response.digest().remaining(); > else > size += Row.serializer().serializedSize(response.row(), version); > return size; > } > adds the digest size 2 times > this triggers assertion error in at least ReadVerbHandler -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira