Uploaded image for project: 'JGroups'
  1. JGroups
  2. JGRP-1371

Unable to suspend self in FLUSH.blockMessageDuringFlush(); Eternal timeouts not supported

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Critical Critical
    • 2.12.2, 3.0
    • 2.12.1
    • None
    • Hide

      Don't count on timeouts for guaranteeing message blocking. Use BARRIER instead.

      Show
      Don't count on timeouts for guaranteeing message blocking. Use BARRIER instead.

      If a positive timeout is specified for the FLUSH protocol, if the specified waiting time timeout elapses during the notBlockedDown.await(timeout) invocation, the shouldSuspendByItself flag will be set but it will continue looping forever. The if clause below should be moved into the while block.

      If the timeout is 0L or negative, instead of waiting forever, it will instantaneously return from the await(timeout) method, but seeing as it can never suspend itself as mentioned earlier, it will loop forever until a STOP_FLUSH or ABORT_FLUSH event is received.

      Changing the method to await() for "eternal" timeouts may be dangerous however; There must be a guarantee that the isBlockingFlushDown is toggled even if the FLUSH coordinator fails.

              vblagoje Vladimir Blagojevic (Inactive)
              nestrada_jira Nicolas Estrada (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: