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 < stephen.darling...@gridgain.com> 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 < > narsi.nallami...@gmail.com> 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 < > stephen.darling...@gridgain.com> 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 < >> narsi.nallami...@gmail.com> 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 >> > >> > >> >> >> > >