)]}'
{
  "commit": "da8a2ad40293c0070502ae2818ff3685cd10cae6",
  "tree": "2b6f3d74d2e8d5c270463f2a06822c2fb7af979e",
  "parents": [
    "5044de0330b8ed421fca21c8ff61560fca020657"
  ],
  "author": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Sun Oct 13 23:18:00 2019 +0200"
  },
  "committer": {
    "name": "David Ostrovsky",
    "email": "david@ostrovsky.org",
    "time": "Mon Oct 14 10:39:15 2019 +0200"
  },
  "message": "Rewrite OS bean provider to avoid using reflection\n\nTry to cast the OperatingSystemMVBean to unix instance and in success\ncase use that instance directly instead of reflection based approach.\n\nGiven that 99% of gerrit instances are used on linux based systems\nin production, we can avoid reflection access altogether and thus\nadministrators wouldn\u0027t need to pass:\n\n  --add-opens\u003djdk.management/com.sun.management.internal\u003dALL-UNNAMED\n\noption on newer Java versions.\n\nTest Plan (on *nix system):\n\n1. Build gerrit to produce Java lanuage level 11:\n\n  $ bazel build --host_javabase\u003d@bazel_tools//tools/jdk:remote_jdk11 \\\n    --javabase\u003d@bazel_tools//tools/jdk:remote_jdk11 \\\n    --host_java_toolchain\u003d@bazel_tools//tools/jdk:toolchain_java11 \\\n    --java_toolchain\u003d@bazel_tools//tools/jdk:toolchain_java11 \\\n    :release\n\n2. Init new gerrit site\n3. Run gerrit site with Java 11\n4. Confirm that it can be started and works as expected without passing\n  --add-opens\u003djdk.management/com.sun.management.internal\u003dALL-UNNAMED\noption.\n\nBug: Issue 7843\nChange-Id: I712d3fab05b267fa4ab5b3ba17247287aebebcb6\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c5504a33ded69e3ee4a0c4e2a7b9ea7653422652",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanFactory.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b7d6ebff28e0314495bc8129d3cc50e603bf46a4",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanInterface.java"
    },
    {
      "type": "delete",
      "old_id": "bc2846a2006fa81753f15b2321688da47622147e",
      "old_mode": 33188,
      "old_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanProvider.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8dc54abb47e05e5958def11ac90d7d78a5b13917",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanReflectionBased.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a7f5bba9efa679844e320caab9ac7011d953cd88",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/OperatingSystemMXBeanUnixNative.java"
    },
    {
      "type": "modify",
      "old_id": "8978e99d69ea3c0433cee076aaec6661594ab6f3",
      "old_mode": 33188,
      "old_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/ProcMetricModule.java",
      "new_id": "3f77225a3dc4c482f8b15c8c638497d7e06df71a",
      "new_mode": 33188,
      "new_path": "gerrit-server/src/main/java/com/google/gerrit/metrics/proc/ProcMetricModule.java"
    }
  ]
}
