)]}'
{
  "commit": "21bab3c517e8630d606ff2157479680f38c48c1e",
  "tree": "68ed937f48ed0ff9abd5558ce5689f3c9151dc8c",
  "parents": [
    "72ac579351c886002890ee6f9ea3468277ba98ab"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Wed Aug 26 15:57:01 2026 +0200"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Thu Aug 27 19:08:49 2026 +0200"
  },
  "message": "Allow replicationRetry to be configured with a time-unit suffix\n\nremote.NAME.replicationRetry was parsed as a bare integer and scheduled\nin TimeUnit.MINUTES, so the smallest non-zero offline-retry backoff an\nadmin could configure was a full minute. That minutes-only quantum also\nprevents ReplicationIT from driving a sub-minute retry, which keeps its\ntwo new-project cases slow.\n\nParse replicationRetry with ConfigUtil.getTimeUnit and schedule the\nretry in seconds. A value without a unit keeps its historical meaning of\nminutes, so existing configurations are unchanged, while a value with a\ntime-unit suffix -- e.g. \"30 s\", \"90 s\" or \"2 m\" -- is honoured as\nwritten. getRetryDelay() now returns seconds, matching the\nRemoteConfiguration javadoc that already documented it as such, and both\nreschedule sites in Destination (the direct retry and the failover\nreplacement) schedule in TimeUnit.SECONDS instead of TimeUnit.MINUTES.\nThis follows the httpd.maxwait precedent in gerrit-core, which likewise\ndefaults a bare number to minutes and accepts an optional unit suffix.\n\nUse the new option to speed up the two new-project cases\n(shouldReplicateNewProjectWithoutRefLog and\nshouldCreateNewProjectWithRefLog): their first ref-push finds the\nreplica repository missing, PushOne#createRepository creates it, and\nthe push is rescheduled as REPOSITORY_MISSING, which waited the\none-minute replicationRetry. They now set replicationRetry to\nTEST_REPLICATION_RETRY_SECONDS (1s) so the missing-repository\nretry fires in a second, with TEST_NEW_PROJECT_TIMEOUT tightened\nto match. The shared TEST_REPLICATION_RETRY_MINUTES is left\nuntouched so tests that rely on the real one-minute retry (e.g.\nReplicationStorageIT) keep their timing. The two cases drop from\n~60s to ~4s; ReplicationIT drops from ~173s to ~61s, all 26 green.\n\nRelease-Notes: remote.NAME.replicationRetry now accepts an optional time-unit suffix (e.g. \"30 s\"); a bare number still means minutes.\nChange-Id: I54f8e3d48d20568b2858abde1e1b06f35bf27841\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "08a6c62c695de118d49ac82ddcfbdbd9b27e97b3",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java",
      "new_id": "c1a19363b7c2002e0d4834867f7e0bb905c4868d",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/Destination.java"
    },
    {
      "type": "modify",
      "old_id": "03ba914790160e5cef765d04d2f683c517a37e4b",
      "old_mode": 33188,
      "old_path": "src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java",
      "new_id": "02389d66e0c5ae75e3fa0d0df51be4922ab9e164",
      "new_mode": 33188,
      "new_path": "src/main/java/com/googlesource/gerrit/plugins/replication/DestinationConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "a2f545909318838ef8170ed4d1c9c84aeb78ce39",
      "old_mode": 33188,
      "old_path": "src/main/resources/Documentation/config.md",
      "new_id": "e8bf92a74f349f25af5136d610b5d3c527611540",
      "new_mode": 33188,
      "new_path": "src/main/resources/Documentation/config.md"
    },
    {
      "type": "modify",
      "old_id": "c7b41742d71919d6176de6d19f5e59425051aa4d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/DestinationConfigurationTest.java",
      "new_id": "d0beea108cea1baa63f0ca409c68799cad20fe04",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/DestinationConfigurationTest.java"
    },
    {
      "type": "modify",
      "old_id": "436fb1cac1357b996e5b1de465303ad84bee2811",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java",
      "new_id": "5764521d32d66fb571bc35e4a3436baf8816b377",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationDaemon.java"
    },
    {
      "type": "modify",
      "old_id": "4a3bb9b470728ab88f84a7e00827b4c7cbc81ef9",
      "old_mode": 33188,
      "old_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java",
      "new_id": "523563aedfb461ed4eb171457bfc8b0399a7b83b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/googlesource/gerrit/plugins/replication/ReplicationIT.java"
    }
  ]
}
