Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2

Overview

Visit the official web site for more information.

Central Dogma

Central Dogma is an open-source, highly-available and version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2.

It is open-sourced and licensed under Apache License 2.0 by LINE Corporation, who uses it in production.

How to build

We use Gradle to build Central Dogma. The following command will compile Central Dogma and generate JARs, tarball and web site:

$ ./gradlew build

How to ask a question

Just create a new issue to ask a question, and browse the list of previously answered questions.

We also have a Slack workspace.

How to contribute

See CONTRIBUTING.md.

Comments
  • Throw error that entries are not found on watching if want

    Throw error that entries are not found on watching if want

    Motivation

    • https://github.com/line/centraldogma/issues/532
    • To-Do of https://github.com/line/centraldogma/pull/610

    Modifications

    • Put value of notify-entry-not-found on Prefer request header to get error that entries are not found on watching file/repository
    • Propagate error that entries are not found into Watcher#initialValueFuture

    Result

    • You can get error on watching file/repository if the entry doesn't exist.
    new feature 
    opened by di-seo 15
  • Add quota limits for push command

    Add quota limits for push command

    Motivation:

    Central Dogma is a read centric application which means heavy writes could be a risk to the reliabilty of the system. By limiting write requests, Central Dogma is able to respond flexibly to burst traffic.

    Modifications:

    • Add QuotaConfig to CentralDogmaConfig for a global configuration. e.g.
      "writeQuotaPerRepository": {
        "requestQuota" : 5,
        "timeWindowSeconds": 1
      }
      
    • Add QuotaConfig to RepositoryMetadata for a repoistory level configration
    • Use Guava's RateLimiter to limit requests for a standalone mode
    • Use InterProcessSemaphoreV2 to limit requests for a replication mode
    • Add a write qouta REST API to MetadataService
      • PATCH /metadata/{projectName}/repos/{repoName}/quota/write
    • Refactor test code to build Zookeeper cluster easily

    Result:

    • You can now set API quotas to push requests for repositories.
    • Fixes #528
    new feature 
    opened by ikhoon 12
  • Run git gc periodically

    Run git gc periodically

    Motivation:

    Central Dogma git repository does not run git gc automatically. git gc will save disk storage and improve performance.

    Modifications:

    • Add RepositoryGarbageCollectionPlugin that schedules GC with a Quartz cron expression
    • Add RepositoryGarbageCollectionConfig in order to configure a GC schedule and the minimum number of new commits for the GC
    • Add GitGcRevision that reads and writes the last revision when GC was run.

    Result:

    • You can now schedule git gc with a Quartz cron expression and the minimum number of new commits.
      "repositoryGarbageCollection": {
        "minNumNewCommits": 1000,
        "schedule": "0 0 * * * ?"
      }
      
    • Fixes #264
    improvement 
    opened by ikhoon 11
  • Enlarge watcher timeout to give a user more chance to retry

    Enlarge watcher timeout to give a user more chance to retry

    Motivation:

    • The current watch timeout of CentralDogmaEndpointGroup is shorter than the recommended value (20 seconds).
    • Instantiation of CentralDogmaEndpointGroup takes too long because it waits until it gets the initial endpoint list.

    Modifications:

    • Increased the watch timeout of CentralDogmaEndpointGroup to 20 seconds.
    • Do not wait for the initial watch result when instantiating a CentralDogmaEndpointGroup.

    Result:

    • Reliability
    • Less blocking
      • A user can still use awaitInitialEndpoints().
    defect breaking change 
    opened by imasahiro 11
  • Provide Go client library

    Provide Go client library

    Motivation: If we provide Go client library, more people can adapt Central Dogma.

    Modifications:

    • Add Go client library

    Result:

    • More customers

    Todos:

    • Repackage the original sources
    • Adapt CLI using this library
    • Add the watcher
    new feature 
    opened by minwoox 11
  • Fix equals() implementation in AbstractCommand (#751)

    Fix equals() implementation in AbstractCommand (#751)

    Motivation: The equals method in AbstractCommand is not correctly implemented.

    Modification:

    • Implement AbstractCommand.equals() correctly.

    Result:

    • ClassCastException is not raised anymore when checking the equality of sub AbstractCommands that don't override equals() method.
    • Fixes #751
    defect 
    opened by amaembo 10
  • Provide a way to remove old commits

    Provide a way to remove old commits

    Motivation: Central Dogma uses jGit to store data. Due to the nature of Git that stores unlimited history, Central Dogma will eventually get in trouble managing disk usage. We can handle this by maintaining the primary and secondary Git repositories internally. This works in this way:

    • Commits are pushed to the primary Git repository.
    • If the number of commits exceeds the threshold (minRetentionCommits), then the secondary Git repository is created.
    • Commits are pushed to both primary and secondary Git repositories.
    • If the secondary Git repository has the number of commits more than the threshold;
      • The secondary Git repository is promoted to the primary Git repository.
      • The primary Git repository is removed completely.
      • Another secondary Git repository is created.
    • Back to the third.

    Modifications:

    • Add CreateRollingRepositoryCommand that creates the rolling repository by the CommitRetentionManagementPlugin.
    • Add GitRepositoryV2 that manages the rolling jGit repositories.
      • The name of internal repositories will be: foo_0000000000, foo_0000000001, foo_0000000002 and so on
        • So that we can only store the suffix of the primary repo to maintain the repository. (i.e. We don't have to maintain the directory information of the secondary repo.)
        • RepositoryMetadataDatabase has the suffix in its file database.
      • GitRepository is not removed for the migration test.
    • Add InternalRepository that has jGit repository and CommitIdDatabase.
    • What happens if the revision of an operation(such as diff, watch, history, etc.) is lower than the firstRevision of the current primary repo?
      • If Revision.INIT(1) is used, the firstRevision is used instead.
        • e.g. diff(INIT, new Revision(100) ...) is equals to diff(new Revision(firstRevisionNumber), new Revision(100) ...)
      • If the Revision between Revision.INIT(1) and the firstRevision is used, a RevisionNotFoundException is raised.
        • except watch and findLatestRevision.

    Result:

    • Close #575
    • A repository now removes the commits that are older than minRetentionCommits while keeping the commits made in the recent minRetentionDay.

    Todo:

    • Provide a way to set minRetentionCommits and minRetentionDay for each repository.
    • Unused internal repositories are removed by purging service.
    • Support mirroring from CD to external Git.
    improvement breaking change new feature 
    opened by minwoox 10
  • Disallow to create non-reserved files in meta repository

    Disallow to create non-reserved files in meta repository

    A meta repository is a special repository to manage a project. So it has restricted permission. However, some users use a meta repository as a normal repository that we do not expect. It would be nice to prohibit users from creating personal files.

    defect good first issue 
    opened by ikhoon 9
  • Implement client-side JSON filtering

    Implement client-side JSON filtering

    Hi, this is a contribution from our internal project.

    The use case is :

    • a JSON file contains several, mostly unrelated configuration blocks used by different components
    • we don't want each component to maintain a separate watcher
    • we don't want each component to be notified for the changes not related to it

    This FilteredJsonWatcher enables to share a single actual watcher, while restricting the notifications to the concerned components only.

    new feature 
    opened by mauhiz 9
  • Automatic purging of removed repositories and projects

    Automatic purging of removed repositories and projects

    Motivation: The repositories and projects that were removed by users just renamed with having the suffix of .removed. If the number of deleted files increases, it takes up a lot of disk space. We can reduce wasted disk space by permanently deleting files which are older than configured.

    Modifications:

    • Add PurgeProjectCommand and PurgeRepositoryCommand and their thrift, rest api.
    • Add markForPurge() and purgeMarked() method to mark and permanently delete a project or a repository directory.
    • Add PurgeSchedulingService and PurgeSchedulingServicePlugin to purge automitically.
      • When the scheduler get started, it cleans up purged projects and repositories which were not deleted before.
    • Add a new configuration maxRemovedRepositoryAgeMillis and update its documentation.
      • Setting 0 to maxRemovedRepositoryAgeMillis means disable the automatic purging.
    • Record removal time into removal.timestamp file when a project/repository is removed.
    • Change return type of Set<String> listRemove() into Map<String, Instant> listRemoved() to get a removal timestamp.

    Result:

    • A user who has permission can purge a repository or a project on demand.
    • Removed repositories and projects are pursed automatically.

    Fixes #47

    new feature 
    opened by ikhoon 9
  • Add a path from a project page to a metadata page on UI

    Add a path from a project page to a metadata page on UI

    It seems nice in practice to me if there is a path from a project page (#/projects/xxx) to a metadata page (#/metadata/xxx) on the UI.

    Here is a screenshot: Screen Shot 2021-06-04 at 15 45 49

    new feature 
    opened by hokkun-dayo 8
  • Update eslint config

    Update eslint config

    Motivation

    Properly setup eslint, prettier and typescript plugins for nextjs.

    Modification

    • Update eslint config.
    • Remove eslint package as it comes bundled with nextjs. https://nextjs.org/docs/basic-features/eslint
    • Fix some lint related error.

    Result

    opened by rainy789 0
  • Bump json5 from 1.0.1 to 1.0.2 in /server-auth/webapp

    Bump json5 from 1.0.1 to 1.0.2 in /server-auth/webapp

    Bumps json5 from 1.0.1 to 1.0.2.

    Release notes

    Sourced from json5's releases.

    v1.0.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295). This has been backported to v1. (#298)
    Changelog

    Sourced from json5's changelog.

    Unreleased [code, diff]

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump fast-json-patch from 1.1.1 to 3.1.1 in /server

    Bump fast-json-patch from 1.1.1 to 3.1.1 in /server

    Bumps fast-json-patch from 1.1.1 to 3.1.1.

    Release notes

    Sourced from fast-json-patch's releases.

    3.1.1

    Security Fix for Prototype Pollution - huntr.dev #262

    Bug fixes and ES6 modules

    Use ES6 Modules

    • package now exports non-bundled ES module Starcounter-Jack/JSON-Patch#232
    • main still points to CommonJS module for backward compatibility
    • README recommends use of named ES imports

    List of changes https://github.com/Starcounter-Jack/JSON-Patch/compare/v2.2.1...3.0.0-0

    Use ES6 Modules

    • package now exports non-bundled ES module Starcounter-Jack/JSON-Patch#232
    • main still points to CommonJS module for backward compatibility
    • README recommends use of named ES imports

    Full list of changes https://github.com/Starcounter-Jack/JSON-Patch/compare/v2.2.1...3.0.0-0

    Fix default import

    This patch release fixes a regression introduced in 2.2.0, namely: the default import using ES6 with Webpack/Babel stopped working (Starcounter-Jack/JSON-Patch#233).

    This version fixes the problem by adding an explicit default import.

    Generate invertible test operations

    New feature:

    • Ability to generate test operations for original values in the first object, also known as "invertible" operations. Search fro the word invertible in README.md for details about usage (PR #228, PR #226).

    Code quality:

    • Replace deep-equal with fast-deep-equal (PR #227)
    • Remove traces for support for legacy browsers which were broken since v2.0.7 (PR #229)
    • Fix testing framework

    Enhancements and bug fixes

    • applyOperation and applyReducer now accept an optional index parameter. This param is used to create more elaborate error messages when invalid operations occur in your patches, Starcounter-Jack/JSON-Patch#221.

    • Error messages are now nicely-formatted, they look like:

    	The specified index MUST NOT be greater than the number of elements in the array
        name: OPERATION_VALUE_OUT_OF_BOUNDS
        index: 1
        operation: {
          "op": "add",
          "path": "/root/1",
          "value": "val"
        }
        tree: {
    </tr></table> 
    

    ... (truncated)

    Commits
    Maintainer changes

    This version was pushed to npm by mountain-jack, a new releaser for fast-json-patch since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Add Apple Silicon binary for CLI

    Add Apple Silicon binary for CLI

    Currently, we only support amd64 for macOS CLI. Go binaries are hosted in the release notes at https://github.com/line/centraldogma-go/releases/tag/0.0.1 We may build go CLI binaries for Apple Silicon and release it as 0.0.2

    improvement 
    opened by ikhoon 0
  • Bump express from 4.17.1 to 4.18.2 in /server-auth/webapp

    Bump express from 4.17.1 to 4.18.2 in /server-auth/webapp

    Bumps express from 4.17.1 to 4.18.2.

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Bump qs from 6.5.2 to 6.5.3 in /server-auth/webapp

    Bump qs from 6.5.2 to 6.5.3 in /server-auth/webapp

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
Releases(centraldogma-0.59.0)
  • centraldogma-0.59.0(Dec 28, 2022)

  • centraldogma-0.58.1(Nov 18, 2022)

  • centraldogma-0.58.0(Nov 18, 2022)

    ⭐️ New features

    • You can now enable mirroring from Central Dogma to a remote Git server. #717
      [
        {
          "type": "single",
          "direction": "LOCAL_TO_REMOTE", // 👈👈👈
          "enabled": true,
          "localPath": "/",
          "localRepo": "foo",
          "remoteUri": "...",
          "schedule": "0 * * * * ?"
        }
      ]
      

    📈 Improvements

    • You can now collect metrics for mirroring. #735
    • The timeout for fetching a Git repository in mirroring is increased from 10 to 60 seconds to reduce the failure when the Git server is overwhelmed. #733

    🛠️ Bug fixes

    • You will no longer see ShuttingDownException warning messages from Central Dogma client when the server shuts down. #737
    • The broken UI is now correctly rendered. #734

    ⛓ Dependencies

    • Armeria 1.20.1 -> 1.20.2

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @jrhee17
    • @ikhoon
    • @mauhiz
    • @minwoox
    • @trustin
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.58.0.tgz(71.65 MB)
  • centraldogma-0.57.3(Oct 11, 2022)

  • centraldogma-0.57.2(Oct 7, 2022)

    ⛓ Dependencies

    • Armeria 1.19.0 -> 1.20.0
    • Javassist 3.29.1-GA -> 3.29.2-GA
    • Micrometer 1.9.3 -> 1.9.4
    • Spring Boot 2.7.3 -> 2.7.4

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @ikhoon
    • @jrhee17
    • @minwoox
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.57.2.tgz(72.01 MB)
  • centraldogma-0.57.1(Sep 13, 2022)

    ⛓ Dependencies

    • Armeria 1.18.0 -> 1.19.0
    • Jackson 2.13.3 -> 2.13.4
    • javassist 3.29.0 -> 3.29.1
    • Micrometer 1.9.2 -> 1.9.3
    • Spring Boot 2.7.2 -> 2.7.3

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @ikhoon
    • @jrhee17
    • @minwoox
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.57.1.tgz(89.58 MB)
  • centraldogma-0.57.0(Aug 8, 2022)

  • centraldogma-0.56.2(Aug 2, 2022)

  • centraldogma-0.56.1(Jul 11, 2022)

  • centraldogma-0.56.0(Jul 6, 2022)

    ⭐️ New features

    • You can now configure the initialization timeout for a CentralDogma client when using Spring integration modules. #691 #692
      centraldogma:
        hosts:
           - ...
        initialization-timeout-millis: 15000
      

    ⛓ Dependencies

    • Armeria 1.16.0 -> 1.17.0
    • Jackson 2.13.2.1 -> 2.13.3
    • Javassist 3.28.0-GA -> 3.29.0-GA
    • Micrometer 1.8.5 -> 1.9.1
    • Spring Boot 2.6.6 -> 2.7.1

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @jrhee17
    • @ikhoon
    • @minwoox
    • @trustin
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.56.0.tgz(72.14 MB)
  • centraldogma-0.55.2(Apr 20, 2022)

  • centraldogma-0.55.1(Mar 29, 2022)

  • centraldogma-0.55.0(Feb 24, 2022)

    ⭐️ New features

    • You can now send a request to a Central Dogma server via fluent APIs. #651
      centralDogma.forRepo("foo", "bar")
                  .file("/foo.json")
                  .get();
      centralDogma.forRepo("foo", "bar")
                  .watch("/foo.json")
                  .start();
      centralDogma.forRepo("foo", "bar")
                  .watcher(PathPattern.all())
                  .start();
      
    • You can specify errorOnEntryNotFound as true to get notified of an exception when the target entry doesn't exist. #532 #653
      CentralDogma dogma = ...
      dogma.forRepo("foo", "bar")
           .watch("/baz.json")
           .errorOnEntryNotFound(true) // 👈👈👈
           .start();
      
    • You can now limit the number of commits when retrieving the commit history. #664
      centralDogma.forRepo("foo", "bar")
                  .history()
                  .maxCommits(5) // 👈👈👈
                  .get(Revision.HEAD, Revision.INIT);
      
    • You can specify gitignore to exclude files from mirroring. #38 #645
      [
        {
          "type": "single",
          "enabled": true,
          "schedule": "0 * * * * ?",
          "direction": "REMOTE_TO_LOCAL",
          "localRepo": "foo",
          "localPath": "/",
          "remoteUri": "git+ssh://git.example.com/foo.git/settings#release",
          "gitignore": [  // 👈👈👈
              "/credential.txt",
              "private_dir"
          ]
        }
      ]
      

    📈 Improvements

    • You cannot create a file in the meta repository anymore. #633 #649
    • The default health check interval of ArmeriaCentralDogma is now 3 seconds to reduce the possibility of EmptyEndpointGroupException raising. #674
    • You can see the detailed error message when a CentralDogmaBeanFactory raises a TimeoutException. #679

    🛠️ Bug fixes

    • The author of a repository is now set correctly. #680
    • Repository.author() and Repository.creationTimeMillis() do not block the thread anymore. #682
    • You can now enable and disable replication in read-only mode. #360 #656
    • You can now use a valid ETag for If-None-Match when sending a watch request through REST API. #415 #654
    • The mapper Function of a child Watcher is executed only once when the child watcher gets notified. #657

    ☢️ Breaking changes

    • CentralDogma.createRepository() now returns CentralDogmaRepository. #662

    ⛓ Dependencies

    • Armeria 1.14.0 -> 1.14.1

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @di-seo
    • @ghkim3221
    • @jrhee17
    • @ikhoon
    • @minwoox
    • @TheWeaVer
    • @trustin
    • @yyuunn0044
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.55.0.tgz(71.26 MB)
  • centraldogma-0.54.0(Jan 28, 2022)

    ⭐️ New features

    • You can now use CentralDogma.whenEndpointReady() to wait for the initial endpoints of a Central Dogma client. #669

    ☢️ Breaking changes

    • Central Dogma client no longer waits for the initial endpoints by default. #669 You should use CentralDogma.whenEndpointReady().join() to wait for the initial endpoints.

    ⛓ Dependencies

    • Armeria 1.13.4 -> 1.14.0
    • Jackson 2.13.0 -> 2.13.1
    • JCommander 1.81 -> 1.82
    • Logback 1.2.7 -> 1.2.10
    • Micrometer 1.7.6 -> 1.8.2
    • SLFJ4 1.7.32 -> 1.7.35
    • Spring Boot 2.5.5 -> 2.6.3
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.54.0.tgz(71.25 MB)
  • centraldogma-0.53.1(Jan 27, 2022)

  • centraldogma-0.53.0(Dec 3, 2021)

    New features

    • You can now immediately get notified by setting Prefer: notify-entry-not-found=true header if the entry doesn't exist when watching files. #610

    Bug fixes

    • Server-side exceptions are properly peeled before sending an error response. #646

    Dependencies

    • Armeria 1.13.3 -> 1.13.4
    • Micrometer 1.7.4 -> 1.7.6
    • Logback 1.2.6 -> 1.2.7
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.53.0.tgz(71.13 MB)
  • centraldogma-0.52.6(Nov 23, 2021)

  • centraldogma-0.52.5(Oct 27, 2021)

  • centraldogma-0.52.4(Oct 21, 2021)

  • centraldogma-0.52.3(Oct 15, 2021)

  • centraldogma-0.52.2(Oct 8, 2021)

  • centraldogma-0.52.1(Aug 27, 2021)

  • centraldogma-0.52.0(Aug 24, 2021)

    Improvement

    • Only owners can access the internal meta repository. #624

    Security fix

    • You cannot set up mirroring to internal repositories anymore. #621

    Breaking changes

    • Git GC scheduling is no longer provided. #564
      • We are going to provide a better way to remove old commits soon.
    • Guests do not have the read permission by default when a repository is created. #624

    Dependencies

    • Armeria 1.9.2 -> 1.10.0
    • Completable futures 0.3.4 -> 0.3.5
    • Jackson 2.12.3 -> 2.12.4
    • Logback 1.2.3 -> 1.2.5
    • Micrometer 1.7.1 -> 1.7.3
    • Slf4j 1.7.31 -> 1.7.32
    • Spring Boot 2.5.2 -> 2.5.4

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @blahblah
    • @ikhoon
    • @minwoox
    • @trustin
    Source code(tar.gz)
    Source code(zip)
  • centraldogma-0.51.1(Jul 5, 2021)

  • centraldogma-0.51.0(Jun 28, 2021)

    New feature

    • You can now go to the metadata page from a project page. #607

    Improvement

    • The service name of the watch API metrics is now WatchContentServiceV1. #602

    Dependencies

    • Armeria 1.8.0 -> 1.9.1
    • jGit 5.11.1.202105131744-r -> 5.12.0.202106070339-r
    • Micrometer 1.7.0 -> 1.7.1
    • Slf4J 1.7.30 -> 1.7.31
    • Spring Boot 2.4.5 -> 2.5.1

    Thank you

    This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

    • @hokkun-dayo
    • @ikhoon
    • @KarboniteKream
    • @mauhiz
    • @minwoox
    • @trustin
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.51.0.tgz(69.70 MB)
  • centraldogma-0.50.0(May 21, 2021)

    New features

    • You can now safely execute a block operation in the callback of a Watcher. #587 #589
      • You can also specify the blocking task executor when either 1) creating a client or 2) watching a query.
        CentralDogma client = 
                new ArmeriaCentralDogmaBuilder()
                                .blockingTaskExecutor(blockingExecutor) // 1)
                                ...
                                .build();
        
        client.fileWatcher(
                "foo", "bar", Query.ofJson("/baz.json"),
                content -> { /* perform a long running task */ }, blockingExecutor); // 2)
        

    Dependencies

    • Armeria 1.7.2 -> 1.8.0
    • Caffeine 2.9.0 -> 2.9.1
    • jcommander 1.78 -> 1.81
    • JGit 5.11.0 -> 5.11.1
    • Micrometer 1.6.6 -> 1.7.0
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.50.0.tgz(69.47 MB)
  • centraldogma-0.49.1(May 6, 2021)

    Bug fixes

    • You no longer see a 500 Internal Server Error response when a text Change is created with a JSON file. #579 #583
      • Central Dogma server now returns a 400 Bad Request response for the invalid input.
    • You no longer see a deadlock when a server is stopping. #593

    Dedendencies

    • Upgrade
      • Armeria 1.6.0 -> 1.7.2
      • Caffeine 2.8.8 -> 2.9.0
      • Jackson 2.12.2 -> 2.12.3
      • Micrometer 1.6.5 -> 1.6.6
      • Spring Boot 2.4.4 -> 2.4.5
    • Downgrade #585
      • ZooKeeper 3.6.2 -> 3.5.8
      • Curator 5.1.0 -> 4.3.0
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.49.1.tgz(69.42 MB)
  • centraldogma-0.49.0(Apr 8, 2021)

    New feature

    • You can now use CentralDogmaClientFactoryConfigurator to configure the ClientFactory for ArmeriaCentralDogma client. #578
      @Bean
      CentralDogmaClientFactoryConfigurator configurator() {
          return builder -> builder.connectTimeoutMillis(3000);
      }
      

    Improvements

    • The pending task in a ZooKeeperCommandExecutor is now timed out if it fails to acquire the lock within the given time. #571
      • The next task no longer has to wait forever anymore for the previous task to finish.

    Bug fixes

    • You no longer see the IllegalStateException that is raised when pushing the wrong context. #573

    Breaking change

    • @ForCentralDomga is now gone. Use CentralDogmaClientFactoryConfigurator to configure the ClientFactory. #578
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.49.0.tgz(69.53 MB)
  • centraldogma-0.48.0(Mar 17, 2021)

    New feature

    • You can now schedule Git GC with a Quartz Cron expression and the minimum number of new commits. #564
      "repositoryGarbageCollection": {
        "minNumNewCommits": 1000,
        "schedule": "0 0 * * * ?"
      }
      

    Bug fixes

    • You no longer see the multiple commits that have the same contents. #568
    • You no longer see multiple Adding missing repository metadata logs for the same repository. #567

    Breaking change

    • Command.push() now returns CommitResult instead of Revision when it's executed. #568
    Source code(tar.gz)
    Source code(zip)
    centraldogma-0.48.0.tgz(69.22 MB)
  • centraldogma-0.47.1(Feb 23, 2021)

Nacos: Dynamic Naming and Configuration Service

An easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications.

Alibaba 25.1k Jan 3, 2023
Get rid of the boilerplate code in properties based configuration.

OWNER OWNER, an API to ease Java property files usage. INTRODUCTION The goal of OWNER API is to minimize the code required to handle application confi

lviggiano 874 Dec 31, 2022
A simple configuration library for Java applications providing a node structure, a variety of formats, and tools for transformation

Configurate Configurate is a simple configuration library for Java applications that provides a node-based representation of data, able to handle a wi

SpongePowered 274 Jan 3, 2023
Modern configuration library for distributed apps written in Java.

Overview cfg4j ("configuration for Java") is a configuration library for Java distributed apps (and more). Features: Open source Easy to use Auto-relo

cfg4j 544 Nov 23, 2022
configuration library for JVM languages using HOCON files

Configuration library for JVM languages. If you have questions or are working on a pull request or just curious, please feel welcome to join the chat

Lightbend 5.8k Jan 4, 2023
A twelve-factor configuration (12factor.net/config) library for Java 8+

dotenv A twelve-factor configuration library for Java 8+. Features: seamless integration with Guice (prefer Spring? see here); zero dependencies; avai

Stanley Shyiko 42 Oct 1, 2022
Modern tool for microservice configuration management

Quick start We recommend to start with Microconfig Features guide and then continue reading this documentation. Microconfig overview and features Micr

Microconfig 262 Dec 19, 2022
configuration library for JVM languages using HOCON files

Configuration library for JVM languages. If you have questions or are working on a pull request or just curious, please feel welcome to join the chat

Lightbend 5.8k Jan 4, 2023
Library for configuration management API

Archaius Features Archaius includes a set of configuration management APIs used by Netflix. It provides the following functionality: Dynamic, Typed Pr

Netflix, Inc. 2.4k Dec 22, 2022
Simple Java/POJO config library written with love and Lombok

Okaeri Configs Supported platforms (general use) General implementations based on standard format libraries directly. HJSON ?? hjson-java: Human JSON

Okaeri 51 Jan 7, 2023
Oyvey skid with decent ca and pastebin hwid lock lmao

McDonald-1.1.7-Cracked It wasn't obfuscated so it isn't really a "crack", just had to remove the HWID authentication from the main class. Uhm, the gui

null 6 Dec 2, 2022
prob isn't but uhhh there you go, it works on .cc and i am happy with that :)

TickShift (prob isn't but uhhh there you go, it works on .cc and i am happy with that :)) Credits Codex#4562: [rudimentary shit code] Doogie13: [expla

noat 9 Dec 2, 2022
Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

Govern Service is a lightweight, low-cost service registration, service discovery, and configuration service SDK. By using Redis in the existing infrastructure (I believe you have already deployed Redis), it doesn’t need to bring extra to the operation and maintenance deployment. Cost and burden. With the high performance of Redis, Govern Service provides ultra-high TPS&QPS (10W+/s JMH Benchmark).

Ahoo Wang 61 Nov 22, 2022
CoSky is a lightweight, low-cost service registration, service discovery, and configuration service SDK.

High-performance, low-cost microservice governance platform. Service Discovery and Configuration Service

Ahoo Wang 61 Nov 22, 2022
An intelliJ plugin providing a UI layer for git-flow, which in itself is a collection of Git extensions to provide high-level repository operations for Vincent Driessen's branching model.

Git Flow Integration Plus for Intellij An intelliJ plugin providing a UI layer for git-flow, which in itself is a collection of Git extensions to prov

RubinCarter 35 Nov 8, 2022
Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and resilient way.

Cadence This repo contains the source code of the Cadence server and other tooling including CLI, schema tools, bench and canary. You can implement yo

Uber Open Source 6.5k Jan 4, 2023
JVM version of Pact. Enables consumer driven contract testing, providing a mock service and DSL for the consumer project, and interaction playback and verification for the service provider project.

pact-jvm JVM implementation of the consumer driven contract library pact. From the Ruby Pact website: Define a pact between service consumers and prov

Pact Foundation 962 Dec 31, 2022
KickAss Configuration. An annotation-based configuration system for Java and Kotlin

KAConf 2016-2020 Mario Macías KickAss Configuration v0.9.0 is an Annotation-based configuration system inspired in the wonderful Spring Boot. Its stro

Mario Macías 53 Nov 21, 2022