The errors are still caused by the breakpoint and not the code you’re trying to test. I think “replace" returns false if there’s no existing value (or the value is not the one you specify, depending on which method you use), true if it succeeded.
> On 29 Jan 2020, at 12:20, Narsi Reddy Nallamilli <[email protected]> > wrote: > > Now, I tried pausing replace method at before said point for just 1sec and It > throws below error. > > So in production if this sequence occurs, node1->is executing replace and in > between node2->executed remove, what be the outcome would replace method > return 'false' because it did not succeed or throw exception? > > Jan 29, 2020 5:40:17 PM org.apache.ignite.logger.java.JavaLogger error > SEVERE: Blocked system-critical thread has been detected. This can lead to > cluster-wide undefined behaviour [threadName=grid-nio-worker-tcp-comm-2, > blockedFor=44s] > Jan 29, 2020 5:40:17 PM java.util.logging.LogManager$RootLogger log > SEVERE: Critical system error detected. Will be handled accordingly to > configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, > timeout=0, super=AbstractFailureHandler > [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED, > SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext > [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker > [name=grid-nio-worker-tcp-comm-2, igniteInstanceName=null, finished=false, > heartbeatTs=1580299773918]]] > class org.apache.ignite.IgniteException: GridWorker > [name=grid-nio-worker-tcp-comm-2, igniteInstanceName=null, finished=false, > heartbeatTs=1580299773918] > at > org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1831) > at > org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1826) > at > org.apache.ignite.internal.worker.WorkersRegistry.onIdle(WorkersRegistry.java:233) > at > org.apache.ignite.internal.util.worker.GridWorker.onIdle(GridWorker.java:297) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$TcpServer.body(ServerImpl.java:5871) > at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) > at > org.apache.ignite.spi.discovery.tcp.ServerImpl$TcpServerThread.body(ServerImpl.java:5763) > at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62) > > Jan 29, 2020 5:40:18 PM java.util.logging.LogManager$RootLogger log > SEVERE: Critical system error detected. Will be handled accordingly to > configured handler [hnd=StopNodeFailureHandler [super=AbstractFailureHandler > [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED, > SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext > [type=SEGMENTATION, err=null]] > Jan 29, 2020 5:40:18 PM org.apache.ignite.logger.java.JavaLogger error > SEVERE: Ignite node is in invalid state due to a critical failure. > Jan 29, 2020 5:40:18 PM java.util.logging.LogManager$RootLogger log > SEVERE: Stopping local node on Ignite failure: [failureCtx=FailureContext > [type=SEGMENTATION, err=null]] > > On Wed, Jan 29, 2020 at 4:46 PM Stephen Darlington > <[email protected] <mailto:[email protected]>> > wrote: > That is an error you get if the JVM pauses for too long. Most often this is a > sign of poorly configured garbage collection but in this case is almost > certainly because you stopped the node in the debugger. This is not caused by > the use of replace or clear. > >> On 29 Jan 2020, at 07:22, Narsi Reddy Nallamilli <[email protected] >> <mailto:[email protected]>> wrote: >> >> Hi Stephen, >> >> Yes, you are correct. I meant replace and remove. >> >> I tried to see what happens when we remove the key when replace is in >> progress and node resulted in SEVERE error and node is blocked. >> >> I stopped replace method in between after it determined that key exists at >> line 613, GridDhtAtomicCache , ignite 2.7.6 and then executed removed and >> then resumed replace method ti threw below error. >> >> I was expecting it threw some relevant exception. It is a bug? >> >> Jan 29, 2020 12:44:04 PM org.apache.ignite.logger.java.JavaLogger error >> SEVERE: Blocked system-critical thread has been detected. This can lead to >> cluster-wide undefined behaviour [threadName=partition-exchanger, >> blockedFor=12s] >> Jan 29, 2020 12:44:04 PM java.util.logging.LogManager$RootLogger log >> SEVERE: Critical system error detected. Will be handled accordingly to >> configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, >> timeout=0, super=AbstractFailureHandler >> [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED, >> SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext >> [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker >> [name=partition-exchanger, igniteInstanceName=null, finished=false, >> heartbeatTs=1580282031672]]] >> class org.apache.ignite.IgniteException: GridWorker >> [name=partition-exchanger, igniteInstanceName=null, finished=false, >> heartbeatTs=1580282031672] >> at >> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1831) >> at >> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1826) >> at >> org.apache.ignite.internal.worker.WorkersRegistry.onIdle(WorkersRegistry.java:233) >> at >> org.apache.ignite.internal.util.worker.GridWorker.onIdle(GridWorker.java:297) >> at >> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$TimeoutWorker.body(GridTimeoutProcessor.java:221) >> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) >> at java.lang.Thread.run(Thread.java:748) >> >> Jan 29, 2020 12:44:04 PM org.apache.ignite.logger.java.JavaLogger error >> SEVERE: Blocked system-critical thread has been detected. This can lead to >> cluster-wide undefined behaviour [threadName=grid-nio-worker-tcp-comm-1, >> blockedFor=12s] >> Jan 29, 2020 12:44:04 PM java.util.logging.LogManager$RootLogger log >> SEVERE: Critical system error detected. Will be handled accordingly to >> configured handler [hnd=StopNodeOrHaltFailureHandler [tryStop=false, >> timeout=0, super=AbstractFailureHandler >> [ignoredFailureTypes=[SYSTEM_WORKER_BLOCKED, >> SYSTEM_CRITICAL_OPERATION_TIMEOUT]]], failureCtx=FailureContext >> [type=SYSTEM_WORKER_BLOCKED, err=class o.a.i.IgniteException: GridWorker >> [name=grid-nio-worker-tcp-comm-1, igniteInstanceName=null, finished=false, >> heartbeatTs=1580282031672]]] >> class org.apache.ignite.IgniteException: GridWorker >> [name=grid-nio-worker-tcp-comm-1, igniteInstanceName=null, finished=false, >> heartbeatTs=1580282031672] >> at >> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1831) >> at >> org.apache.ignite.internal.IgnitionEx$IgniteNamedInstance$2.apply(IgnitionEx.java:1826) >> at >> org.apache.ignite.internal.worker.WorkersRegistry.onIdle(WorkersRegistry.java:233) >> at >> org.apache.ignite.internal.util.worker.GridWorker.onIdle(GridWorker.java:297) >> at >> org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor$TimeoutWorker.body(GridTimeoutProcessor.java:221) >> at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) >> at java.lang.Thread.run(Thread.java:748) >> >> On Tue, Jan 28, 2020 at 6:49 PM Stephen Darlington >> <[email protected] <mailto:[email protected]>> >> wrote: >> First, I assume you mean remove rather than clear? Clear removes all entries >> in the cache (and takes no parameters). >> >> With that, yes, your sequence of events could happen. >> >> There are (at least) two alternative ways of doing it. >> >> “Put” doesn’t “check that a value already exists.” It simply puts the value >> in the cache, regardless of whether a value exists or not. If you want to >> replace an existing value, you should use the “replace” method. >> >> Alternatively, you could use transactions. >> >> Regards, >> Stephen >> >> > On 28 Jan 2020, at 13:01, Narsi Reddy Nallamilli >> > <[email protected] <mailto:[email protected]>> wrote: >> > >> > Hello, >> > >> > Consider I have below cache on server node >> > >> > Cache >> > ----------- >> > key,value >> > ------------ >> > 1 | a >> > ------------ >> > >> > From client node1, I try to do put(1,a) and from client node2 I try to do >> > clear(1). >> > >> > Are put and clear atomic, mean could this happen? >> > >> > 1. cliennode1 put operation identified that key with 1 exist and it >> > decided to update the value. >> > 2. clientnode2 cleared the entry from cache >> > 3. clientnode1 put operation now tries to update the entry with key 1 >> > >> > >> >> > >
