Anton, Thank you for your reply and clarification.
I've created a ticket [1] for this fix. Can you take it, please? Probably, I have the solution for the issue described above and at the first the glance it looks not too bad. But I can't guarantee the completeness of my fix and the fact that I took all the details into account. As an author of the IGNITE-8559 commit, you definitely know all details better rather than me. I've marked the issue to be included in the 2.7 release, but it also discussable. [1] https://issues.apache.org/jira/browse/IGNITE-9741 On Fri, 28 Sep 2018 at 19:53 Anton Kalashnikov <kaa....@yandex.ru> wrote: > Hello. > > Looks like you are right about interrupted flag. I don't understand why > tests was pass successfully in master. Your solution also looks correct. > > SegmentAware - it's info object of actual state of WAL segments like > "current work segment", "last archived segment" etc. Actually it's nothing > new here. It just was extracted from FileWriteAheadLogManager for > centralization and future simplification. It should not change a old > behaviour if it was happened it will need to be investigate. > > If you already have fix for it, please will create task and add me to the > watchers. Or I can fix it by myself. > > -- > Best regards, > Anton Kalashnikov > > > 28.09.2018, 16:06, "Maxim Muzafarov" <maxmu...@gmail.com>: > > Igniters, > > > > I would like to discuss this question here and create a separate topic > for > > it. Previously, I've posted some comments on the probable issue in Apache > > Ignite 2.7 topic [2]. My question is related to the IGNITE-8559 [3] > (commit > > [4]). We've added a new SegmentAware class and change the > > FileWriteAheadLogManager behaviour. > > > > The FileWriteAheadLogManager now contains: > > > > `private final SegmentAware segmentAware;`. > > > > The SegmentAware have the `interrupt()` method which at manager > > de-activation sets (e.g. for SegmentArchivedStorage) `interrupted` filed > to > > `true` value [5] but never revert it to `false` after activation. So, the > > SegmentArchivedStorage after de-activation always remain interrupted. > > > > I think it can lead us to unpredictable issues with multiple cluster > > activation/de-activation. I don't know why all tests in master branch > > suppose to be successful but in my local branch, they hang on exchange > > future get() method. > > > > My local solution (probably not ideal) is: > > 1) make it volatile - `private volatile SegmentAware segmentAware;` > > 2) move field init to the `start0()` method of FileWriteAheadLogManager; > > > > With these changes, everything begins to work fine but I can miss > something > > because I don’t understand the whole this change well enough. > > > > Can anyone comment on this and share details IGNITE-8559 implementation? > > > > [1] > > > https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/FileWriteAheadLogManager.java#L319 > > [2] > > > http://apache-ignite-developers.2346864.n4.nabble.com/Apache-Ignite-2-7-release-tp34076p35863.html > > [3] https://issues.apache.org/jira/browse/IGNITE-8559 > > [4] > > > https://github.com/apache/ignite/commit/2f72fe758d4256c4eb4610e5922ad3d174b43dc5 > > [5] > > > https://github.com/apache/ignite/blob/master/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/aware/SegmentArchivedStorage.java#L117 > > -- > > -- > > Maxim Muzafarov > -- -- Maxim Muzafarov