cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "david.pan (JIRA)" <j...@apache.org>
Subject [jira] Created: (CASSANDRA-742) write operation will throw internal error if the bootstrapping node is down
Date Tue, 26 Jan 2010 10:00:34 GMT
write operation will throw internal error if the bootstrapping node is down
---------------------------------------------------------------------------

                 Key: CASSANDRA-742
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-742
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.5
         Environment: linux2.6
            Reporter: david.pan
             Fix For: 0.6


the opertions are that :
1) bootstrap a node A;
2) keep on inserting data while bootstrapping;
3) stop the service of the node A;
4) then the following exception was found:
ERROR [pool-1-thread-9] 2010-01-26 10:32:39,688 Cassandra.java (line 1064) Internal error
processing insert
java.lang.AssertionError
at org.apache.cassandra.locator.TokenMetadata.getToken(TokenMetadata.java:213)
at org.apache.cassandra.locator.AbstractReplicationStrategy.getHintedMapForEndpoints(AbstractReplicationStrategy.java:142)
at org.apache.cassandra.locator.AbstractReplicationStrategy.getHintedEndpoints(AbstractReplicationStrategy.java:76)
at org.apache.cassandra.service.StorageService.getHintedEndpointMap(StorageService.java:1188)
at org.apache.cassandra.service.StorageProxy.insertBlocking(StorageProxy.java:169)
at org.apache.cassandra.service.CassandraServer.doInsert(CassandraServer.java:466)
at org.apache.cassandra.service.CassandraServer.insert(CassandraServer.java:417)
at org.apache.cassandra.service.Cassandra$Processor$insert.process(Cassandra.java:1056)
at org.apache.cassandra.service.Cassandra$Processor.process(Cassandra.java:817)
at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:253)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)

I traced the code and found that "org.apache.cassandra.locator.AbstractReplicationStrategy.getHintedMapForEndpoints(Collection<InetAddress>)"
will select a hinted endpoint for a dead endpoint, no mater whether it's a normal node or
a bootstrapping node. To get the tokenID of the endpoint, this method will call "tokenMetadata_.getToken(ep);",
but getToken() asserts that the endpoint should be  a member of the ring only. Of course,
the bootstrapping endpoint is not a member and a internal exception is throwed out.
This exception will always be throwed out until I re-boostrapping. This is really a big prolem
for me, because the bootstrapping will last  30 hours and my machines are not very durable.
I have to get up from bed at night to deal with this accident. :-(



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message