ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Igor Kamyshnikov (Jira)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-12335) IgniteDataStreamer flush cannot be really interrupted
Date Tue, 29 Oct 2019 10:16:00 GMT
Igor Kamyshnikov created IGNITE-12335:
-----------------------------------------

             Summary: IgniteDataStreamer flush cannot be really interrupted
                 Key: IGNITE-12335
                 URL: https://issues.apache.org/jira/browse/IGNITE-12335
             Project: Ignite
          Issue Type: Bug
          Components: cache
    Affects Versions: 2.7.6, 2.5
            Reporter: Igor Kamyshnikov
         Attachments: DataStreamerFlushInterruptionTest.java, image-2019-10-29-13-05-25-969.png

IgniteDataStreamer flush operation cannot be interrupted:
1) datastreamer.close(true) does not interrupt flushing (though it has cancellation mode)
2) flushingThread.interrupt does not interrupt flushing (though IgniteInterruptedException
is declared in the flush's method throws clause)
3) dataStreamer timeout does not work at all if flushingThread is interrupted
4) dataStreamer timeout does not stop flushing (after catching IgniteDataStreamerTimeoutException)
5) Ignition.closeAll(true) can even result in JVM halt if there was dataStreamer flush running

Cases on the diagram:
 !image-2019-10-29-13-05-25-969.png|thumbnail! 

Reproducer:
 [^DataStreamerFlushInterruptionTest.java] 

RCA:
For the cases with Thread.interrrupt:
1) Probably,
org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl.Buffer#flush method when
it enters org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl#acquireRemapSemaphore
does not trigger InterruptedException because it avoid all the operations on semaphore.

2) org.apache.ignite.internal.processors.datastreamer.DataStreamerImpl#doFlush has a big while(true)
loop that does not handle IgniteDataStreamerTimeoutException (treating it as just IgniteCheckedException
leading to "Remaps needed - flush buffers.")

No RCA for dataStreamer.close(true).



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Mime
View raw message