<!-- 
RSS generated by JIRA (5.2.4#845-sha1:c9f4cc41abe72fb236945343a1f485c2c844dac9) at Sat May 25 04:29:40 CDT 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://www.couchbase.com/issues/si/jira.issueviews:issue-xml/SPY-89/SPY-89.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Couchbase</title>
    <link>http://www.couchbase.com/issues</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>5.2.4</version>
        <build-number>845</build-number>
        <build-date>26-12-2012</build-date>
    </build-info>

<item>
            <title>[SPY-89] invalid binary protocol server response during rebalance</title>
                <link>http://www.couchbase.com/issues/browse/SPY-89</link>
                <project id="10047" key="SPY">Spymemcached Java Client</project>
                        <description>When investigating an issue, I found that the server would unexpectedly respond with a 0x0a command for optimized get requests.  This seems to be in violation of the protocol, and it causes all kinds of havoc for a client library.&lt;br/&gt;
&lt;br/&gt;
The scenario is spymemcached&amp;#39;s internals doing an optimized get.  It&amp;#39;s reading the response for an operation during a rebalance.  It has been observed with both the node being rebalanced into the cluster and with a node leaving the cluster.&lt;br/&gt;
&lt;br/&gt;
Reading the minimum header, the client library is checking the magic, and then the response command.  It&amp;#39;s expecting a 0x00, but receiving a 0x0a.&lt;br/&gt;
&lt;br/&gt;
I poked through the server side code, and 0x0a corresponds to TAP_NOOP.  I poked around a little further, and I don&amp;#39;t see any situation where we would respond with this 0x0a to a non-TAP client.&lt;br/&gt;
&lt;br/&gt;
The assertion this is raising is right here:&lt;br/&gt;
&lt;a href=&quot;https://github.com/dustin/java-memcached-client/blob/master/src/main/java/net/spy/memcached/protocol/binary/OperationImpl.java#L136&quot;&gt;https://github.com/dustin/java-memcached-client/blob/master/src/main/java/net/spy/memcached/protocol/binary/OperationImpl.java#L136&lt;/a&gt;&lt;br/&gt;
&lt;br/&gt;
If I force spymemcached to not optimize, the problem goes away.&lt;br/&gt;
&lt;br/&gt;
I will attach a packet capture.</description>
                <environment></environment>
            <key id="17434">SPY-89</key>
            <summary>invalid binary protocol server response during rebalance</summary>
                <type id="1" iconUrl="http://www.couchbase.com/issues/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="3" iconUrl="http://www.couchbase.com/issues/images/icons/priorities/major.png">Major</priority>
                    <status id="1" iconUrl="http://www.couchbase.com/issues/images/icons/statuses/open.png">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                    <security id="10011">Public</security>
                        <assignee username="ingenthr">Matt Ingenthron</assignee>
                                <reporter username="ingenthr">Matt Ingenthron</reporter>
                        <labels>
                    </labels>
                <created>Thu, 31 May 2012 00:47:42 -0500</created>
                <updated>Fri, 1 Jun 2012 02:56:54 -0500</updated>
                                    <version>2.8.1</version>
                                                <component>library</component>
                                <votes>0</votes>
                        <watches>1</watches>
                                                    <comments>
                    <comment id="28402" author="ingenthr" created="Thu, 31 May 2012 00:52:08 -0500"  >Added packet capture and notes (which are effectively the same as above)</comment>
                    <comment id="28404" author="trond" created="Thu, 31 May 2012 00:59:08 -0500"  >0x0a == NOOP, not TAP_NOOP...</comment>
                    <comment id="28411" author="trond" created="Thu, 31 May 2012 01:50:02 -0500"  >I moved this bug back to the client for investigation if we did send a noop request or not (this is typically sent after a series of quiet commands in order to ensure that we get a response). Could it be that we don&amp;#39;t correctly handle reshuffling of the packets (adding a noop to all of the new queues, and ensure that we don&amp;#39;t send multiple of them since we most likely expect only once).</comment>
                    <comment id="28587" author="ingenthr" created="Fri, 1 Jun 2012 02:56:54 -0500"  >Moved this, as I found the protocol was correct, but the assertion was incorrect. The assertion did not account for any setq responses with errors, so this would have been an issue in any environment with optimized sets and responses on setqs.</comment>
                </comments>
                    <attachments>
                    <attachment id="13412" name="rebalanceout-notes.txt" size="332" author="ingenthr" created="Thu, 31 May 2012 00:52:08 -0500" />
                    <attachment id="13411" name="rebalanceout.out" size="6399909" author="ingenthr" created="Thu, 31 May 2012 00:52:08 -0500" />
                </attachments>
            <subtasks>
        </subtasks>
                <customfields>
                                                                                                                                                                                                                    <customfield id="customfield_10081" key="com.pyxis.greenhopper.jira:gh-global-rank">
                <customfieldname>Rank</customfieldname>
                <customfieldvalues>
                    <customfieldvalue>9516</customfieldvalue>
                </customfieldvalues>
            </customfield>
                                                                                                            </customfields>
    </item>
</channel>
</rss>