[
https://issues.apache.org/jira/browse/CASSANDRA-10926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15068796#comment-15068796
]
Kai Wang commented on CASSANDRA-10926:
--------------------------------------
Joel,
Thanks. This is a long story.
First of all, nodetool status from a good node:
{noformat}
-- Address Load Tokens Owns Host ID
Rack
UN 192.168.0.10 225.89 GB 256 ?
2014f9be-423a-49cd-b8ef-252983c8f615 rack1
UN 192.168.0.11 242.84 GB 256 ?
b822b46f-9981-4105-8308-c3feebd16e32 rack1
UJ 192.168.0.12 29.22 MB 256 ?
ca519cf7-813f-4503-863a-7b5fb93cc3a8 rack1
{noformat}
I guess that pretty much explained the AssertionError.
I had a 3-node cluster. I rebuilt one of them from scratch. When I copied C*
config to it and tried to bootstrap, I got an error saying I can't add because
this node was already in the cluster. I needed to replace the node instead. So
I did it by adding -Dcassandra.replace_address. Then I found the bootstrap
didn't start (can't remember what exactly happened). The other two nodes have
250GB data but the new node only has 12MB.
Then I tried to delete the data and commit log folders from the new node,
remove the -Dcassandra.replace_address. I wanted to add the new node as a brand
new one.
But then I got streaming failure error. From the new node's system.log, I saw
this:
{noformat}
ERROR [STREAM-IN-/192.168.0.10] 2015-12-22 16:46:57,107 StreamSession.java:524
- [Stream #6d9603f0-a8f5-11e5-8eb5-67d8099a8b91] Streaming error occurred
java.nio.channels.ClosedChannelException: null
at sun.nio.ch.SocketChannelImpl.ensureReadOpen(Unknown Source)
~[na:1.8.0_65]
at sun.nio.ch.SocketChannelImpl.read(Unknown Source) ~[na:1.8.0_65]
at
org.apache.cassandra.streaming.messages.StreamMessage.deserialize(StreamMessage.java:53)
~[apache-cassandra-2.2.4.jar:2.2.4]
...
{noformat}
and
{noformat}
ERROR [main] 2015-12-22 16:46:57,144 StorageService.java:1245 - Error while
waiting on bootstrap to complete. Bootstrap will have to be restarted.
java.util.concurrent.ExecutionException:
org.apache.cassandra.streaming.StreamException: Stream failed
...
at
org.apache.cassandra.service.StorageService.bootstrap(StorageService.java:1240)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:920)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.StorageService.initServer(StorageService.java:705)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.StorageService.initServer(StorageService.java:581)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:315)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:529)
[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:638)
[apache-cassandra-2.2.4.jar:2.2.4]
{noformat}
>From the node I streamed from, I saw this:
{noformat}
org.apache.cassandra.io.FSReadError: java.io.IOException: An existing
connection was forcibly closed by the remote host
at
org.apache.cassandra.io.util.ChannelProxy.transferTo(ChannelProxy.java:144)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.compress.CompressedStreamWriter$1.apply(CompressedStreamWriter.java:79)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.compress.CompressedStreamWriter$1.apply(CompressedStreamWriter.java:76)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.io.util.BufferedDataOutputStreamPlus.applyToChannel(BufferedDataOutputStreamPlus.java:297)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.compress.CompressedStreamWriter.write(CompressedStreamWriter.java:75)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.messages.OutgoingFileMessage.serialize(OutgoingFileMessage.java:90)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.messages.OutgoingFileMessage$1.serialize(OutgoingFileMessage.java:48)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.messages.OutgoingFileMessage$1.serialize(OutgoingFileMessage.java:40)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.messages.StreamMessage.serialize(StreamMessage.java:47)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.sendMessage(ConnectionHandler.java:363)
~[apache-cassandra-2.2.4.jar:2.2.4]
at
org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:335)
~[apache-cassandra-2.2.4.jar:2.2.4]
{noformat}
I was pretty much stuck at that point. All I wanted to do is just bootstrap the
new node as if it was a brand new one. That's why I tried to remove it using
removenode and added it back to see if it makes any difference.
> AssertionError when removing node
> ---------------------------------
>
> Key: CASSANDRA-10926
> URL: https://issues.apache.org/jira/browse/CASSANDRA-10926
> Project: Cassandra
> Issue Type: Bug
> Environment: CentOS 7 x64, Java 1.8.0.65
> Reporter: Kai Wang
> Assignee: Joel Knighton
>
> {noformat}
> [root@centos-2 ~]# nodetool -u xxx -pw xxxx removenode
> 97a9042d-ea14-49a9-9f22-2dab4b762673
> error: null
> -- StackTrace --
> java.lang.AssertionError
> at
> org.apache.cassandra.locator.TokenMetadata.getTokens(TokenMetadata.java:474)
> at
> org.apache.cassandra.service.StorageService.removeNode(StorageService.java:3793)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at sun.reflect.misc.Trampoline.invoke(Unknown Source)
> at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at sun.reflect.misc.MethodUtil.invoke(Unknown Source)
> at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Unknown
> Source)
> at com.sun.jmx.mbeanserver.StandardMBeanIntrospector.invokeM2(Unknown
> Source)
> at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(Unknown Source)
> at com.sun.jmx.mbeanserver.PerInterface.invoke(Unknown Source)
> at com.sun.jmx.mbeanserver.MBeanSupport.invoke(Unknown Source)
> at
> com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(Unknown Source)
> at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(Unknown Source)
> at
> com.sun.jmx.remote.security.MBeanServerAccessController.invoke(Unknown Source)
> at javax.management.remote.rmi.RMIConnectionImpl.doOperation(Unknown
> Source)
> at javax.management.remote.rmi.RMIConnectionImpl.access$300(Unknown
> Source)
> at
> javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown
> Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at
> javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown
> Source)
> at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown
> Source)
> at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
> at sun.rmi.transport.Transport$1.run(Unknown Source)
> at sun.rmi.transport.Transport$1.run(Unknown Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.Transport.serviceCall(Unknown Source)
> at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown
> Source)
> at
> sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$81(Unknown
> Source)
> at java.security.AccessController.doPrivileged(Native Method)
> at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown
> Source)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> at java.lang.Thread.run(Unknown Source)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)