You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Paulo Motta (Jira)" <ji...@apache.org> on 2021/03/21 22:54:00 UTC

[jira] [Commented] (CASSANDRA-16268) Rolling upgrade from 1.1.0 to 1.2.0 runs into IllegalArgumentException because of Invalid UUID

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

Paulo Motta commented on CASSANDRA-16268:
-----------------------------------------

Closing as these versions are no longer supported.

> Rolling upgrade from 1.1.0 to 1.2.0 runs into IllegalArgumentException because of Invalid UUID
> ----------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-16268
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16268
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Yongle Zhang
>            Priority: Normal
>
> Steps to reproduce:
>  # setup a 2-node C* 1.1.0 cluster
>  # upgrade the non-seed node to 1.2.0
>  # run stress testing tool on the 1.1.0 node, e.g., `/cassandra/tools/bin/stress -d 250.16.238.1 -r`
> Error logs:
> {code:java}
> DEBUG [WRITE-/250.16.238.3] 2020-06-18 02:10:51,087 OutboundTcpConnection.java (line 165) error writing to /250.16.238.3
> java.net.SocketException: Broken pipe (Write failed)
>   at java.net.SocketOutputStream.socketWrite0(Native Method)
>   at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:111)
>   at java.net.SocketOutputStream.write(SocketOutputStream.java:155)
>   at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:82)
>   at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:140)
>   at java.io.DataOutputStream.flush(DataOutputStream.java:123)
>   at org.apache.cassandra.net.OutboundTcpConnection.writeConnected(OutboundTcpConnection.java:156)
>   at org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:126)
> DEBUG [Thrift:1] 2020-07-11 22:32:56,017 CassandraServer.java (line 962) add_keyspace
> DEBUG [WRITE-/250.16.238.2] 2020-07-11 22:32:56,024 OutboundTcpConnection.java (line 229) attempting to connect to /250.16.238.2
> DEBUG [MigrationStage:1] 2020-07-11 22:32:56,039 SchemaCheckVerbHandler.java (line 36) Received schema check request.
> DEBUG [InternalResponseStage:9] 2020-07-11 22:32:56,047 ResponseVerbHandler.java (line 44) Processing response on a callback from 380@/250.16.238.1
> DEBUG [InternalResponseStage:9] 2020-07-11 22:32:56,048 StorageProxy.java (line 955) Received schema check response from 250.16.238.1
> DEBUG [InternalResponseStage:10] 2020-07-11 22:32:56,049 ResponseVerbHandler.java (line 44) Processing response on a callback from 381@/250.16.238.2
> DEBUG [InternalResponseStage:10] 2020-07-11 22:32:56,050 StorageProxy.java (line 955) Received schema check response from 250.16.238.2
> ERROR [InternalResponseStage:10] 2020-07-11 22:32:56,053 AbstractCassandraDaemon.java (line 134) Exception in thread Thread[InternalResponseStage:10,5,main]
> java.lang.IllegalArgumentException: Invalid UUID string: Y��N��>^B��[9X'E?
>   at java.util.UUID.fromString(UUID.java:194)
>   at org.apache.cassandra.service.StorageProxy$8.response(StorageProxy.java:956)
>   at org.apache.cassandra.net.ResponseVerbHandler.doVerb(ResponseVerbHandler.java:45)
>   at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:59)
>   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>   at java.lang.Thread.run(Thread.java:748)
> {code}
> Root cause analysis: data format incompatibility
> In 1.2.0, when the payload of `MessageOut` is `UUID`, it will write two long integers to serialize the payload, representing the most significant 8 bytes and the least significant 8 bytes of this `UUID`. See [https://github.com/apache/cassandra/blob/69337a43670f71ae1fc55e23d6a9031230423900/src/java/org/apache/cassandra/utils/UUIDSerializer.java#L36].
> In 1.1.0, it will read a String from the payload, and call `UUID.fromString` to obtain the `UUID`. Since the string representation is different from the msb + lsb 16 bytes representation, here we get the format mismatch. See [https://github.com/apache/cassandra/blob/c671532825b9e05bd2b50e3aa2d1c5f5156d1c9f/src/java/org/apache/cassandra/service/StorageProxy.java#L956].
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org