XMLWordPrintableJSON

Details

    • Technical task
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5.11
    • 1.5.13, 1.6.0
    • core
    • None

    Description

      As part of pre-filtering commits it would be useful to have support in the BackgroundObserver (in general) that would allow to exclude certain commits from being added to the (BackgroundObserver's) queue, thus keeping the queue smaller. The actual filtering is up to subclasses.

      The suggested implementation is as follows:

      • a new method isExcluded is introduced which represents a subclass hook for filtering
      • excluded commits are not added to the queue
      • when multiple commits are excluded subsequently, this is collapsed
      • the first non-excluded commit (ContentChange) added to the queue is marked with the last non-excluded root state as the 'previous root'
      • downstream Observers are notified of the exclusion of a commit via a special CommitInfo NOOP_CHANGE: this instructs it to exclude this change while at the same time 'fast-forwarding' the root state to the new one.
        • this extra token is one way of solving the problem that Observer.contentChanged represents a diff between two states but does not transport the 'from' state explicitly - that is implicitly taken from the previous call to contentChanged. Thus using such a gap token (NOOP_CHANGE) seems to be the only way to instruct Observers to skip a change.

      To repeat: whoever extends BackgroundObserver with filtering must be aware of the new NOOP_CHANGE token. Anyone not doing filtering will not get any NOOP_CHANGE tokens though.

      NOTE: See comment further below with a new suggested approach, which doesn't use NOOP_CHANGED but introduces a new FilteringAwareObserver instead.

      Attachments

        1. FilteringObserver.patch
          4 kB
          Marcel Reutegger
        2. OAK-4916.patch
          21 kB
          Stefan Egli
        3. OAK-4916.v2.patch
          42 kB
          Stefan Egli

        Issue Links

          Activity

            People

              stefanegli Stefan Egli
              stefanegli Stefan Egli
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: