tree aea68aac0cb0207499de4fd330c726ed32c901be
parent 709f6a34aaab68fb7878ac1b1533302c97edbd63
author Luca Milanesio <luca.milanesio@gmail.com> 1593702310 +0100
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 1593702310 +0000

Update git submodules

* Update plugins/replication from branch 'master'
  to ced7fc318feb76e2fc6d549669c5f5d8d905add5
  - Merge branch 'stable-3.2'
    
    * stable-3.2:
      Improve readability of shouldFirePendingOnlyToStoredUri test
      Fix flakiness in ReplicationIT for pending events firing
      Only fire the specified pending event URI
    
    Change-Id: If550f00b22c0cab5bd49a24f13110da65ecded00
    
  - Merge branch 'stable-3.1' into stable-3.2
    
    * stable-3.1:
      Improve readability of shouldFirePendingOnlyToStoredUri test
      Fix flakiness in ReplicationIT for pending events firing
      Only fire the specified pending event URI
    
    Change-Id: Ie83763e4a9fe13522f356b569fc2360fa5883224
    
  - Merge branch 'stable-3.0' into stable-3.1
    
    * stable-3.0:
      Improve readability of shouldFirePendingOnlyToStoredUri test
      Fix flakiness in ReplicationIT for pending events firing
    
    Change-Id: I58ce5a03d7b1094ef859c4cd2bd08a3ead00ba30
    
  - Merge branch 'stable-2.16' into stable-3.0
    
    * stable-2.16:
      Improve readability of shouldFirePendingOnlyToStoredUri test
      Fix flakiness in ReplicationIT for pending events firing
    
    Change-Id: Id40baca92acc9fba8656630f725d55e5fbb6662b
    
  - Improve readability of shouldFirePendingOnlyToStoredUri test
    
    Make the ReplicationIT.shouldFirePendingOnlyToStoredUri easier
    to read and simplify the extraction of the replication tasks
    associated to a change ref, as regex matching isn't required
    and could be misleading when reading the test.
    
    Change-Id: Ib493275872b56bc04cdcfb541b7cfa7ecfb1e058
    
  - Fix flakiness in ReplicationIT for pending events firing
    
    Fix the shouldFirePendingOnlyToStoredUri test by making sure
    that events are NOT executed by the replication engine until
    the tests has completed the preparation phase.
    
    The Gerrit build on stable-2.16 became flaky right afterward
    the merge of the new shouldFirePendingOnlyToStoredUri test which
    highlighted the flakiness.
    
    The test wants to simulate a situation where a ref-update needs
    to be propagated to two remotes: remote1 and remote2.
    For doing so, it configures the two remotes and crates a change
    for generating the two replication tasks files on the filesystem.
    Then, it looks for the events associated for remote1 and removes
    them, so that the next replication queue startup won't find it
    and won't replicate the change to remote1.
    
    During the interval of time between the creation of the change
    and the removal of the underlying replication task on the filesystem,
    the replication task could have been executed already and the
    test failed.
    
    Make sure that the replication does not kick in by
    setting the replication timeout to Integer.MAX_VALUE at the
    beginning. Then, once the replication task file is removed on the
    filesystem, set it back to default and reload the configuration to
    trigger the firing of the events.
    
    Remove also the explicit start/stop of the replication queue, as
    the config reload is already a stop/start process and it
    automatically triggering an event replay.
    
    Change-Id: Ifd591da37e94b6ce8f281cb0404f3f3c737489f3
    
  - Merge branch 'stable-3.0' into stable-3.1
    
    * stable-3.0:
      Only fire the specified pending event URI
    
    Adapt to the new refactored code of the config
    and destinations in stable-3.1 and remove unused
    methods coming from the merge with stable-3.0.
    
    Change-Id: Ica9da7c735bbd965bc6704dec35419dba126ab66
    
  - Merge branch 'stable-2.16' into stable-3.0
    
    * stable-2.16:
      Only fire the specified pending event URI
    
    Change-Id: Ib800603d830c9b4ba688b0222ac5642ad50f17a0
    
  - Only fire the specified pending event URI
    
    Previously the startup firing of pending events would fire every URI for
    a project ref combination on startup. To avoid duplicates, it only ever
    fired one round of every URI per project/ref combination. This had the
    side effect that if only a single URI were stored, presumably because
    the other URIs were completed before shutdown, this would result in the
    creation of way more replication events than necessary, presumably many
    duplicates of already completed pushes. Fix this behavior by only firing
    to the specific stored URI, and remove the duplicate project/ref
    filtering since that now would prevent firing to more than one URI for
    the same project/ref combination when there actually are stored events
    for multiple URIs. Add a test to confirm the correct new more limiting
    behavior.
    
    Bug: Issue 12779
    Change-Id: I56d314af2ecbf84362dda099fa28f1b8f82cefa7
    