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

Stanislav Lukyanov commented on IGNITE-8728:
--------------------------------------------

[~vozerov] Thanks for the comments!

1. Two simultaneous `CREATE INDEX ON FOO (A)` will currently create the same 
index as well. The only difference is that without the fix the name in the 
`QueryIndex` will be `null` and with the fix it will be the name that Ignite 
generates. So the current behavior is not changed. I can agree that it is 
somewhat awkward (not only because of the lack of UUID, but also because, for 
example, IGNITE-11146), but let's deal with that separately.
2. The old exception wasn't very helpful - seems like it wasn't expected to 
ever be thrown, so I've added more info to that. The exception type also wasn't 
a good fit - AFAIK `IllegalStateException` is supposed to be an API exception 
(like "you're calling this API in a wrong state"), not signal that the system 
has went into an unexpected state because of a bug. In other words, "illegal 
state" in the name of the exception means "a normal state that is illegal for 
this operation", not "an erroneous state which system shouldn't be in". There 
isn't a standard exception type for this (except for `AssertionError` I guess, 
but `Error` is tricky to throw), so I just chose our generic `IgniteException`.

> "IllegalStateException: Duplicate Key" on node join
> ---------------------------------------------------
>
>                 Key: IGNITE-8728
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8728
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>    Affects Versions: 2.7
>            Reporter: Mahesh Renduchintala
>            Assignee: Stanislav Lukyanov
>            Priority: Critical
>         Attachments: NS1_ignite-9676df15.0.log, NS2_ignite-7cfc8008.0.log, 
> node-config.xml
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> I have two nodes on which we have 3 tables which are partitioned.  Index are 
> also built on these tables. 
> For 24 hours caches work fine.  The tables are definitely distributed across 
> both the nodes
> Node 2 reboots due to some issue - goes out of the baseline - comes back and 
> joins the baseline.  Other baseline nodes crash and in the logs we see 
> duplicate Key error
> [10:38:35,437][INFO][tcp-disco-srvr-#2|#2][TcpDiscoverySpi] TCP discovery 
> accepted incoming connection [rmtAddr=/192.168.1.7, rmtPort=45102]
>  [10:38:35,437][INFO][tcp-disco-srvr-#2|#2][TcpDiscoverySpi] TCP discovery 
> spawning a new thread for connection [rmtAddr=/192.168.1.7, rmtPort=45102]
>  [10:38:35,437][INFO][tcp-disco-sock-reader-#12|#12][TcpDiscoverySpi] Started 
> serving remote node connection [rmtAddr=/192.168.1.7:45102, rmtPort=45102]
>  [10:38:35,451][INFO][tcp-disco-sock-reader-#12|#12][TcpDiscoverySpi] 
> Finished serving remote node connection [rmtAddr=/192.168.1.7:45102, 
> rmtPort=45102
>  [10:38:35,457][SEVERE][tcp-disco-msg-worker-#3|#3][TcpDiscoverySpi] 
> TcpDiscoverSpi's message worker thread failed abnormally. Stopping the node 
> in order to prevent cluster wide instability.
>  *java.lang.IllegalStateException: Duplicate key*
> at org.apache.ignite.cache.QueryEntity.checkIndexes(QueryEntity.java:223)
> at org.apache.ignite.cache.QueryEntity.makePatch(QueryEntity.java:174)
> at 
> org.apache.ignite.internal.processors.query.QuerySchema.makePatch(QuerySchema.java:114)
> at 
> org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor.makeSchemaPatch(DynamicCacheDescriptor.java:360)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.validateNode(GridCacheProcessor.java:2536)
> at 
> org.apache.ignite.internal.managers.GridManagerAdapter$1.validateNode(GridManagerAdapter.java:566)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processJoinRequestMessage(ServerImpl.java:3629)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2736)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2536)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.body(ServerImpl.java:6775)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2621)
> at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
>  [10:38:35,459][SEVERE][tcp-disco-msg-worker-#3|#3][] Critical system error 
> detected. Will be handled accordingly to configured handler [hnd=class 
> o.a.i.failure.StopNodeOrHaltFailureHandler, failureCtx=FailureContext 
> [type=SYSTEM_WORKER_TERMINATION, err=java.lang.IllegalStateException: 
> Duplicate key]]
> java.lang.IllegalStateException: Duplicate key
> at org.apache.ignite.cache.QueryEntity.checkIndexes(QueryEntity.java:223)
> at org.apache.ignite.cache.QueryEntity.makePatch(QueryEntity.java:174)
> at 
> org.apache.ignite.internal.processors.query.QuerySchema.makePatch(QuerySchema.java:114)
> at 
> org.apache.ignite.internal.processors.cache.DynamicCacheDescriptor.makeSchemaPatch(DynamicCacheDescriptor.java:360)
> at 
> org.apache.ignite.internal.processors.cache.GridCacheProcessor.validateNode(GridCacheProcessor.java:2536)
> at 
> org.apache.ignite.internal.managers.GridManagerAdapter$1.validateNode(GridManagerAdapter.java:566)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processJoinRequestMessage(ServerImpl.java:3629)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2736)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.processMessage(ServerImpl.java:2536)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$MessageWorkerAdapter.body(ServerImpl.java:6775)
> at 
> org.apache.ignite.spi.discovery.tcp.ServerImpl$RingMessageWorker.body(ServerImpl.java:2621)
> at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)
>  [10:38:35,460][SEVERE][tcp-disco-msg-worker-#3|#3][] JVM will be halted 
> immediately due to the failure: [failureCtx=FailureContext 
> [type=SYSTEM_WORKER_TERMINATION, err=java.lang.IllegalStateException: 
> Duplicate key]]
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to