)]}'
{
  "commit": "8aa2b747a125f54afd3261da1ef995394f82f8ca",
  "tree": "20a34f669b524158d2e8e19563c5e0eae7f5b48b",
  "parents": [
    "c07e087624fae298fe2f7078f7d7d10523c9e82f"
  ],
  "author": {
    "name": "Marco Miller",
    "email": "marco.miller@ericsson.com",
    "time": "Wed Feb 26 08:56:41 2020 -0400"
  },
  "committer": {
    "name": "Gerrit Code Review",
    "email": "noreply-gerritcodereview@google.com",
    "time": "Wed Feb 26 12:56:41 2020 +0000"
  },
  "message": "Update git submodules\n\n* Update plugins/replication from branch \u0027stable-2.15\u0027\n  to 1850413298125a857b61d31510ccb22c0dfafc1e\n  - ReplicationQueue: Check nulls in firePendingEvents\n    \n    After a sudden reboot (for unknown reason) Gerrit at startup couldn\u0027t\n    load because of NullPointerException. There is a possibility that\n    stored event was null at that point. Extra logging added to handle null\n    events.\n    \n    Change-Id: I72f34d8def6e0246196cd865f33f6e795b21664b\n    \n  - Log stack trace when an error occur while deleting event\n    \n    This will help figuring out root cause of failure to delete event file.\n    \n    Change-Id: I2f9774c3daf19a04f6b04414ba8145c99bb6e0fe\n    (cherry picked from commit b62f006b1350180de0af02c82fb18fb290a2548f)\n    \n  - Append LF to the json string of persisted replication event\n    \n    Change-Id: I83ed3f37071125018bf23f6dcd137ef819ef3559\n    (cherry picked from commit 5e91925cfd391898e8e33fd149b9e1a115dafee4)\n    \n  - Change default for the replicateOnStartup to false\n    \n    Now that replication events are persistent and non-finished replications\n    rescheduled after plugin restart the replicateOnStartup feature becomes\n    less important. We can change the default value for this option to\n    false.\n    \n    Change-Id: I237d8d8514e01b8786b7db9f39bead4eb475a0a4\n    (cherry picked from commit 807790f7d4058235a19b2a766e84628168b64ae6)\n    \n  - Don\u0027t lose ref-updated events on plugin restart\n    \n    When a ref-updated event is received, persist the event in the directory\n    defined by the replication.eventsDirectory. When the updated ref is\n    replicated deleted the persisted event.\n    \n    If replication queue is non-empty and plugin gets stopped, ref updates\n    will not be replicated and, therefore, the persisted events will not get\n    deleted. When the plugin starts it will schedule replication for all\n    persisted events and delete them.\n    \n    This change provides two benefits:\n    * no ref-updated events are lost on plugin restart\n    * eliminate need for the replicateOnStartup\u003dtrue setting which schedules\n      replication of all refs for all projects and typically creates a humongous\n      replication queue on every plugin restart.\n    \n    Change-Id: Ieacd084fabe703333241ffda11c8b6c78cced37a\n    (cherry picked from commit bdaea910694dd5a3474dbc051b298aaee9d77950)\n    ",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3248582915e897c0d568160465a2ca905f38df3e",
      "old_mode": 57344,
      "old_path": "plugins/replication",
      "new_id": "1850413298125a857b61d31510ccb22c0dfafc1e",
      "new_mode": 57344,
      "new_path": "plugins/replication"
    }
  ]
}
