{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":101732174,"defaultBranch":"main","name":"centraldogma","ownerLogin":"line","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-08-29T07:23:31.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/13128444?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1713859455.0","currentOid":""},"activityList":{"items":[{"before":"4f86c3dd0ed02833607253c593885fada04eee54","after":"5463d227d91e0b7f1f1942312d7a2fcd23d9d911","ref":"refs/heads/main","pushedAt":"2024-05-22T10:44:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Support Git clone over HTTP in Central Dogma. (#954)\n\nMotivation:\r\nAdding support for Git clone over HTTP in Central Dogma server would enhance its capabilities and make it more user-friendly. This PR partially addressed #543.\r\nPlease note that I didn't impelent Git over HTTP fully because:\r\n- We have APIs for commit separately.\r\n- The underlying Git repository could be changed to another format instead of Git.\r\n\r\nModifications:\r\n- Added support for Git clone over HTTP to Central Dogma.\r\n\r\nResult:\r\n- You can now clone your repositories via Git clone over HTTP.\r\n ```\r\n git clone -c http.extraHeader=\"Authorization: Bearer your-token\" https://your-dogma.com/foo/bar.git\r\n ```\r\n\r\nReferences:\r\n- https://git-scm.com/docs/protocol-v2/\r\n- https://git-scm.com/docs/protocol-capabilities/\r\n- https://www.git-scm.com/docs/http-protocol\r\n- https://www.git-scm.com/docs/git-upload-pack\r\n- https://git-scm.com/docs/protocol-common\r\n- https://git-scm.com/docs/pack-format/\r\n\r\nThe CLI command that allows you to view the packets being sent and received:\r\n```\r\nGIT_TRACE=2 GIT_CURL_VERBOSE=2 GIT_TRACE_PERFORMANCE=2 GIT_TRACE_PACK_ACCESS=2 GIT_TRACE_PACKET=2 GIT_TRACE_PACKFILE=2 GIT_TRACE_SETUP=2 GIT_TRACE_SHALLOW=2 git clone --depth=1 https://github.com/line/armeria.git\r\n```","shortMessageHtmlLink":"Support Git clone over HTTP in Central Dogma. (#954)"}},{"before":"7193f1382c344e997fd1409c1bf710a7342fc5ce","after":"4f86c3dd0ed02833607253c593885fada04eee54","ref":"refs/heads/main","pushedAt":"2024-05-21T05:43:41.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update the default config as document (#923)\n\n**Motivation**\r\nWhen I try to learn the **_centraldogma_** via document, I see that the default config of the source code is missing two properties from the document https://line.github.io/centraldogma/setup-configuration.html\r\nSo I create this pr.","shortMessageHtmlLink":"Update the default config as document (#923)"}},{"before":"adb71abb88612df098447b6849519ec2149db2a8","after":"7193f1382c344e997fd1409c1bf710a7342fc5ce","ref":"refs/heads/main","pushedAt":"2024-05-21T02:24:43.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Add a metric for tracking the number of pushes (#953)\n\nMotivation:\r\n\r\nIt isn't easy to check how many commits have been pushed to a specific repository without looking at log files.\r\n\r\nThis PR is the orignal commit of #943 that tracks the number of pushes instead of adding `project` and `repo` tags to all `api` metrics. #943 has been reverted because it increased in CPU and memory usage.\r\n\r\nModifications:\r\n\r\n- Add a `Counter` that is increased when a commit is pushed to a repository.\r\n - `project` and `repository` are added as tags.\r\n\r\nResult:\r\n\r\nYou can monitor the number of pushes to a repository using the `commits.push` metric.","shortMessageHtmlLink":"Add a metric for tracking the number of pushes (#953)"}},{"before":"f1f17afa7cdf2290d87cdcf14d99d8e4a317df97","after":"adb71abb88612df098447b6849519ec2149db2a8","ref":"refs/heads/main","pushedAt":"2024-05-10T10:37:36.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update Github workflow with JDK21 (#927)\n\n**Motivation**\r\nSince Java 21 is an LTS version released on September 19, 2023. We should update the CI Github build.\r\n\r\nResult\r\nClose https://github.com/line/centraldogma/issues/911","shortMessageHtmlLink":"Update Github workflow with JDK21 (#927)"}},{"before":"0571ef6cddef7fe3585ce47d264952b854044242","after":"f1f17afa7cdf2290d87cdcf14d99d8e4a317df97","ref":"refs/heads/main","pushedAt":"2024-05-10T06:48:39.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Clean up: fix typo (#936)","shortMessageHtmlLink":"Clean up: fix typo (#936)"}},{"before":"faa73d8623aa5d71c2e62499d474901a9e43907c","after":"16d7076aef4ef91a87fd92ce527e293fe6e4a118","ref":"refs/heads/gh-pages","pushedAt":"2024-05-02T07:15:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: 08fad73700e9e7738f2d216c47e73c65f5b7c3d9","shortMessageHtmlLink":"deploy: 08fad73"}},{"before":"ccd1b15d521ed805ea8e543856fdb24901ddfec2","after":"0571ef6cddef7fe3585ce47d264952b854044242","ref":"refs/heads/main","pushedAt":"2024-05-02T07:13:47.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update the project version to 0.65.2-SNAPSHOT","shortMessageHtmlLink":"Update the project version to 0.65.2-SNAPSHOT"}},{"before":"66da8bb75825eb48e4758c343a858676e96d7312","after":null,"ref":"refs/heads/update-armeria-version","pushedAt":"2024-05-02T07:10:32.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"}},{"before":"661cfedb08e7fb24da6df99a3ebb6995d9345b6f","after":"ccd1b15d521ed805ea8e543856fdb24901ddfec2","ref":"refs/heads/main","pushedAt":"2024-05-02T07:10:32.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.4 (#951)","shortMessageHtmlLink":"Update Armeria version to 1.28.4 (#951)"}},{"before":"fb86b3749c46afca4503dfe745b1e24a2d9ab742","after":"661cfedb08e7fb24da6df99a3ebb6995d9345b6f","ref":"refs/heads/main","pushedAt":"2024-05-02T07:10:17.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Restrict prefix value in `CentralDogmaConfig` (#952)\n\nMotivation:\r\nThe current implementation of `CentralDogmaConfig` strips the prefix separated by a colon from the configuration value. This causes issues when the configuration value, without a prefix, contains a colon. For instance, the following configuration value:\r\n```\r\n-----BEGIN EC PRIVATE KEY-----\r\nProc-Type: 4,ENCRYPTED\r\nDEK-Info: ...\r\n...\r\n```\r\nIn this case, `CentralDogmaConfig` throws an exception because there is no `ConfigValueConverter` for converting the value after the colon. This can be avoided by restricting the prefix value to only valid characters.\r\n\r\nModifications:\r\n- Restrict the prefix value to the regular expression pattern `^[a-z0-9_]+$`.\r\n- Use the configuration value as is if `CentralDogmaConfig` fails to find a proper `ConfigValueConverter` for the prefix.\r\n\r\nResult:\r\n- `CentralDogmaConfig` will no longer fail due to configuration values with colons.","shortMessageHtmlLink":"Restrict prefix value in CentralDogmaConfig (#952)"}},{"before":"0def4b4291ee4e9a58b6192841609b0863526727","after":"fb86b3749c46afca4503dfe745b1e24a2d9ab742","ref":"refs/heads/main","pushedAt":"2024-05-02T00:51:37.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update documentation as using Github Packages registry instead of Dockerhub (#931)\n\n### Motivation\r\nWe must also update the document since centraldogma used [Github Packages registry](https://github.com/line/centraldogma/pkgs/container/centraldogma).\r\nRelated: https://github.com/line/centraldogma/issues/926","shortMessageHtmlLink":"Update documentation as using Github Packages registry instead of Doc…"}},{"before":"f3d16787543a357618f8dffc3b421dfb16aea2b7","after":"66da8bb75825eb48e4758c343a858676e96d7312","ref":"refs/heads/update-armeria-version","pushedAt":"2024-04-29T13:43:13.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.4","shortMessageHtmlLink":"Update Armeria version to 1.28.4"}},{"before":"141483fceb20477f68fa2555a9ea8c640b2143ac","after":"f3d16787543a357618f8dffc3b421dfb16aea2b7","ref":"refs/heads/update-armeria-version","pushedAt":"2024-04-26T03:07:28.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.3","shortMessageHtmlLink":"Update Armeria version to 1.28.3"}},{"before":"e01e70bac63b881de56ccbf6b6b1b7d66dbc2527","after":"0def4b4291ee4e9a58b6192841609b0863526727","ref":"refs/heads/main","pushedAt":"2024-04-25T08:21:56.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Revert \"Add `project` and `repository` tags to `api` metrics (#943)\" (#950)\n\nThis reverts commit bacab639dbbe323ece76ce82adb3feb793c6ee1e.\r\n\r\nWe noticed an increase in CPU and memory usage. Upon capturing a heap dump, we found a large number of Metric-related objects, leading us to suspect that this pull request might be the cause. Let's revert this change to determine if it is indeed responsible.","shortMessageHtmlLink":"Revert \"Add project and repository tags to api metrics (#943)\" (#…"}},{"before":"7ef048623750bd1661691a752ea7839fb8b77f64","after":"faa73d8623aa5d71c2e62499d474901a9e43907c","ref":"refs/heads/gh-pages","pushedAt":"2024-04-23T08:06:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"github-actions[bot]","name":null,"path":"/apps/github-actions","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/15368?s=80&v=4"},"commit":{"message":"deploy: fcfe127665026959cd20632ffe45a0c89f1162bd","shortMessageHtmlLink":"deploy: fcfe127"}},{"before":"9550282ea6d5fe67d743a337f5374b69b17d738c","after":"e01e70bac63b881de56ccbf6b6b1b7d66dbc2527","ref":"refs/heads/main","pushedAt":"2024-04-23T08:04:14.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update the project version to 0.65.1-SNAPSHOT","shortMessageHtmlLink":"Update the project version to 0.65.1-SNAPSHOT"}},{"before":"6501a59a1037a43efd52e38e0f162999164ec96c","after":"9550282ea6d5fe67d743a337f5374b69b17d738c","ref":"refs/heads/main","pushedAt":"2024-04-23T08:03:04.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Fix flaky ServerStatusManagerIntegrationTest (#948)\n\nMotivation:\r\n\r\n`ServerStatusManagerIntegrationTest` reuses the acquired ports to restart the running cluster. I observed that the ports were not released after `cluster.stop()`.\r\n\r\n![image](https://github.com/line/centraldogma/assets/1866157/e0bd2f45-61c6-41c2-8d55-59f654ccc379)\r\n\r\nModifications:\r\n\r\n- Sleep 3 seconds after a cluster stop to give enough time to release the ports.\r\n\r\nResult:\r\n\r\nFixes CI failures.","shortMessageHtmlLink":"Fix flaky ServerStatusManagerIntegrationTest (#948)"}},{"before":"fb3b472cab3aeff7d0668b0a699bd825fff1597f","after":"6501a59a1037a43efd52e38e0f162999164ec96c","ref":"refs/heads/main","pushedAt":"2024-04-23T05:08:38.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update dependencies (#945)\n\n- Armeria 1.28.1 -> 1.28.2\r\n- Bouncy Castle 1.77 -> 1.78.1\r\n- Control plane 1.0.39 -> 1.0.44\r\n- Guava 33.0.0-jre -> 33.1.0-jre\r\n- Jackson 2.16.1 -> 2.17.0\r\n- JGit6 6.8.0.202311291450-r -> 6.9.0.202403050737-r\r\n- Micrometer 1.12.2 -> 1.12.4\r\n- Mina SSHD 2.12.0 -> 2.12.1\r\n- Spring Boot3 3.2.2 -> 3.2.4\r\n- Build and Test\r\n - AssertJ 3.25.2 -> 2.35.3\r\n - Awaitility 4.2.0 -> 4.2.1\r\n - de.undercouch.download 5.5.0 -> 5.6.0\r\n - Gradle 8.5 -> 8.7\r\n - JUnit5 5.10.1 -> 5.10.2\r\n - nexus-publish-plugin 1.3.0 -> 2.0.0\r\n - node-gradle-plugin 7.0.1 -> 7.0.2\r\n - testcontainers 1.19.0 -> 1.19.7","shortMessageHtmlLink":"Update dependencies (#945)"}},{"before":"aae194c2d65925e05f0c6f45081b263a3fe1e0d5","after":"fb3b472cab3aeff7d0668b0a699bd825fff1597f","ref":"refs/heads/main","pushedAt":"2024-04-23T05:07:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Update the whole cluster status via REST API (#921)\n\nMotivation:\r\n\r\nWhen the writable status is updated via `AdministrativeSevice.updateStatus()`, the status isn't propagated to other cluster members. As a result, they will have inconsistent status. #912\r\n\r\nAdditionally, the status isn't persistent. If one replica is restarted, the status will be reset. That means the Central Dogma server can't be started with read-only mode. It makes it difficult to serve data in read-only mode after restart if there are replication problems.\r\n\r\nThis feature also helps to scale out the Central Dogma server by adding read-only nodes when the server receives heavy read queries. If more features are implemented, new data can be replicated while serving in read-only mode.\r\n\r\nModifications:\r\n\r\n- Replication is now controlled by `UpdateServerStatusCommand`.\r\n- `/server-status.properties` file will be created to store a server status when it is updated via `UpdateServerStatusCommand`.\r\n - The file is used to determine whether the server is writable and replicating when the server is started.\r\n - As the server status is persistent, we should use REST API or the file to restore the status. REST API is preferred, however, if replication is disabled, it can't be recovered via REST API. There is no way to propagate new status because ZooKeeper servers are also stopped. In this case, 1) the status file should be updated manually before restarting servers. Otherwise, 2) each replica's status can be updated by specifying `scope=LOCAL` to the status API.\r\n- `ServerStatusManager` is added to atomically update and read the status file.\r\n- `CommandExecutorStatusManager` is a helper class to handle a start request and a stop request.\r\n - A start request being processed is canceled if a stop request is received and vice versa. \r\n- `AdministrativeService` uses `UpdateServerStatusCommand` to propagate the received server status to other replicas.\r\n- Add `ReadOnlyException` that is raised when data is pushed in read-only mode.\r\n- Testing) `CentralDogmaReplicationExtension` is added to `testing-internal` for easier testing of Central Dogma features in replication mode.\r\n\r\nResult:\r\n\r\n- You can update the status of all servers equally using the Administrative REST API.\r\n- You can now start Central Dogma servers in read-only mode.\r\n- Fixes #912","shortMessageHtmlLink":"Update the whole cluster status via REST API (#921)"}},{"before":"1fd531a1155f788beedcf636b868bfd2b8b86943","after":"aae194c2d65925e05f0c6f45081b263a3fe1e0d5","ref":"refs/heads/main","pushedAt":"2024-04-23T05:06:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Sleep 1 second after changing server healthy to false when shutting down (#947)\n\nWe changed to sleep as much as graceful shutdown quiet period after changing server healthy when shutting down in https://github.com/line/centraldogma/pull/938\r\nHowever, if the value is too large, it may result in an unnecessarily long wait. Let's just change the value to 1 second and add a parameter later if there's a demand.","shortMessageHtmlLink":"Sleep 1 second after changing server healthy to false when shutting d…"}},{"before":"aa61510716f6767450ff6940f1a4e70e033dbd63","after":"1fd531a1155f788beedcf636b868bfd2b8b86943","ref":"refs/heads/main","pushedAt":"2024-04-23T05:06:29.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"[ISSUE-897] Add ANONYMOUS Permission (#917)\n\n### Motivation \r\n> If there is no sensitive information in a repository, users may want to make the repo public and allow access without an access token. ANONYMOUS could be added as a new permission in addition to OWNER, MEMBMER and GUEST.\r\n\r\n### Modification \r\n- Add `ProjectRole#ANONYMOUS` \r\n- Modify UI \r\n\"image\"\r\n\"image\"\r\n\r\n### Result \r\n- Users will be able to add `ANONYMOUS` role to their project \r\n\r\n### Links \r\nhttps://github.com/line/centraldogma/issues/897","shortMessageHtmlLink":"[ISSUE-897] Add ANONYMOUS Permission (#917)"}},{"before":"bacab639dbbe323ece76ce82adb3feb793c6ee1e","after":"aa61510716f6767450ff6940f1a4e70e033dbd63","ref":"refs/heads/main","pushedAt":"2024-04-23T02:44:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"minwoox","name":"minux","path":"/minwoox","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/25103250?s=80&v=4"},"commit":{"message":"Use LinkedBlockingQueue instead of LinkedTransferQueue for ThreadPoolExecutor (#946)\n\nMotivation:\r\nThe use of `LinkedTransferQueue` in JDK 17 has a bug causing a thread to consume all of a CPU's usage: https://bugs.openjdk.org/browse/JDK-8301341. Although this bug has been fixed, the patch has not been backported to JDK 17. Since copying the code from JDK 11 poses licensing issues (https://github.com/openhab/openhab-core/pull/3756), we need a different solution.\r\n\r\nSwitching to `LinkedBlockingQueue` offers a feasible workaround. While `LinkedTransferQueue` is typically efficient under high multi-thread contention due to its use of CAS, our current usage does not exhibit significant contention as the queue tasks' size remains close to 0.\r\n\r\nModifications:\r\n- Replaced the use of `LinkedTransferQueue` with `LinkedBlockingQueue` in `ThreadPoolExecutor`.\r\n\r\nResult:\r\n- You no longer see an excessive CPU usage by a single thread.","shortMessageHtmlLink":"Use LinkedBlockingQueue instead of LinkedTransferQueue for ThreadPool…"}},{"before":null,"after":"141483fceb20477f68fa2555a9ea8c640b2143ac","ref":"refs/heads/update-armeria-version","pushedAt":"2024-04-18T08:06:36.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.2","shortMessageHtmlLink":"Update Armeria version to 1.28.2"}},{"before":"a82f6b5e2eefab9b20d11e29adbcf0c1d15eafa0","after":"bacab639dbbe323ece76ce82adb3feb793c6ee1e","ref":"refs/heads/main","pushedAt":"2024-04-16T06:26:09.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"},"commit":{"message":"Add `project` and `repository` tags to `api` metrics (#943)\n\nMotivation:\r\n\r\nIt is difficult to check how many commits have been pushed to a specific\r\nrepository without looking at log files.\r\n\r\nModifications:\r\n\r\n- Add `project` and `repository` tags to `api` metrics.\r\n- `projectName` and `repoName` path params are used to extract the\r\nvalues.\r\n\r\nResult:\r\n\r\nCentral Dogma metrics for REST API now provide project and repository\r\ninformation as tags.","shortMessageHtmlLink":"Add project and repository tags to api metrics (#943)"}},{"before":"9688d955c8e115e03b1011c29c3f9b632746a39c","after":"a82f6b5e2eefab9b20d11e29adbcf0c1d15eafa0","ref":"refs/heads/main","pushedAt":"2024-04-16T01:57:58.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"},"commit":{"message":"Retry the ZooKeeper lock operation to avoid entering read-only mode unwantedly (#941)\n\nMotivation:\r\n\r\nAlthough not frequent, ZooKeeper seems to fail when\r\n`ZooKeeperCommandExecutor.safeLock()` attempts to acquire a lock when\r\nthe system is under load, leading into read-only mode.\r\n\r\nModifications:\r\n\r\n- Retry up to 1 minute to acquire a lock.\r\n- Log what command is causing the problem.\r\n- Miscellaneous:\r\n- Fix the problem where `ZooKeeperCommandExecutorTest.lockTimeout()`\r\ndoesn't terminate.\r\n\r\nResult:\r\n\r\n- Central Dogma does not enter read-only mode unexpectedly under load.","shortMessageHtmlLink":"Retry the ZooKeeper lock operation to avoid entering read-only mode u…"}},{"before":"d0b140441fe66039f12387b47ed959bd06f0ce8e","after":"9688d955c8e115e03b1011c29c3f9b632746a39c","ref":"refs/heads/main","pushedAt":"2024-04-16T01:56:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"},"commit":{"message":"Gracefully shut down watches when server is shutting down (#929)\n\n**Motivation**\r\n\r\nWhen `CentralDogma` is shutting down, clients watching the server\r\ninevitably receive a 500 HTTP response code.\r\n\r\nWhile for most requests I think this behavior makes sense, watch\r\nrequests by nature are expected to continuously watch the server and are\r\nprobably not interested in shut down notifications.\r\n\r\nTo minimize noise while monitoring CentralDogma servers, I propose that\r\nwe return a 304 status code for watch requests when the server is\r\nshutting down\r\n\r\n**Modifications**\r\n- Return a 304 for watch requests when `ShuttingDownException` is\r\nbubbled up\r\n\r\n**Result**\r\n- Central Dogma Server maintainers can monitor with less noise\r\n- Closes https://github.com/line/centraldogma/issues/928","shortMessageHtmlLink":"Gracefully shut down watches when server is shutting down (#929)"}},{"before":"36bd42ac0b58a7d1e936e1f269edaaf585a94a97","after":null,"ref":"refs/heads/update-armeria-version","pushedAt":"2024-04-15T10:16:21.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"}},{"before":"e4fb79b63bbfa5d83785d1862d773f2c84fc9953","after":"d0b140441fe66039f12387b47ed959bd06f0ce8e","ref":"refs/heads/main","pushedAt":"2024-04-15T10:16:20.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.1 (#940)","shortMessageHtmlLink":"Update Armeria version to 1.28.1 (#940)"}},{"before":"88ec80caf48c925d2a22884567319d7c7cea46cb","after":"36bd42ac0b58a7d1e936e1f269edaaf585a94a97","ref":"refs/heads/update-armeria-version","pushedAt":"2024-04-15T09:40:35.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"armerian","name":"Kim Meri","path":"/armerian","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/84899087?s=80&v=4"},"commit":{"message":"Update Armeria version to 1.28.1","shortMessageHtmlLink":"Update Armeria version to 1.28.1"}},{"before":"f8d524d0caf82f257af127d09e7c9a5a5e589d0d","after":"e4fb79b63bbfa5d83785d1862d773f2c84fc9953","ref":"refs/heads/main","pushedAt":"2024-04-12T07:23:23.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"jrhee17","name":"jrhee17","path":"/jrhee17","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8510579?s=80&v=4"},"commit":{"message":"Wait for quiet period after health check (#938)\n\n**Motivation**\r\n\r\nhttps://github.com/line/centraldogma/issues/928\r\n\r\nWhen `CentralDogma` server is shutting down, we set the health check to\r\nfalse and then initiate the shutdown process.\r\nHowever, we do this immediately so clients likely don't have time to\r\nreact to the health check signal.\r\nI propose that we wait for `quietPeriodMillis` after setting the health\r\ncheck for more graceful shutdown behavior.\r\n\r\nNote that I've left the `ServerBuilder#gracefulShutdownTimeout` call\r\nas-is since if requests are correctly drained `gracefulShutdownTimeout`,\r\nwon't have an effect.\r\n\r\n**Modifications**\r\n\r\n- It is possible that a user provides a negative `quietPeriodMillis`, so\r\nadded a >= 0 validation\r\n- Added a sleep right after setting the health check to false\r\n\r\n**Result**\r\n- Graceful shutdown behavior","shortMessageHtmlLink":"Wait for quiet period after health check (#938)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEUM9VfwA","startCursor":null,"endCursor":null}},"title":"Activity · line/centraldogma"}