fe7d56f099
* kvutils/tools: Split the integrity checkers by package. The two versions of the integrity checker are intertwined when they really don't rely on each other at all. This splits them into two separate packages to make the distinction clear. CHANGELOG_BEGIN CHANGELOG_END * kvutils/tools: Split the integrity checkers by directory. This splits the integrity checkers further into separate directories, to make it clear they do not interact at all. * kvutils/tools: Rename "integrity-check" to "integrity-check-v1". * ledger-on-memory: Recommend ledger exports (v3), not ledger dumps (v1). * kvutils/tools: Split the benchmarks from integrity-check-v2. |
||
---|---|---|
.. | ||
src | ||
BUILD.bazel | ||
README.md |
Overview
This document is to help internal engineers work with ledger-on-memory
.
ledger-on-memory
is a key/value-based ledger that uses a simple in-memory map as an
underlying storage. It uses either H2 or PostgreSQL as its index database.
Ledger On Memory
To build a fat JAR with the server built from HEAD run
bazel build //ledger/ledger-on-memory:app_deploy.jar
The application can be run from command line with the following command:
java -Xmx4G -XX:+UseG1GC -jar bazel-bin/ledger/ledger-on-memory/app_deploy.jar --participant participant-id=foo,port=6861
As run from the main project root directory (adjust the location of the JAR according to your working directory).
Alternatively, the application can be run using the Bazel command:
bazel run //ledger/ledger-on-memory:app -- --participant participant-id=foo,port=6861
Docker
Ledger On Memory can be put into a Docker container by first building it:
bazel build ledger/ledger-on-memory:app-image
Then by running the Bazel target that imports the image into your local Docker repository, and then runs a container from that image.
bazel run ledger/ledger-on-memory:app-image
The container will fail to run, but the image has now been loaded into your local Docker
repository under the name bazel/ledger/ledger-on-memory
.
It can then be run using Docker:
docker run \
-it \
--rm \
--name ledger \
--network docker_default \
-p 6861:6865 \
bazel/ledger/ledger-on-memory:app-image \
--participant participant-id=foo,port=6865,address=0.0.0.0
The above command makes the ledger available to clients from the host machine at the address
localhost:6861
. It is also available to other docker containers on the docker_default
network under ledger:6865
.
Creating ledger exports
Ledger On Memory can be used to generate ledger exports through an environment variable:
export KVUTILS_LEDGER_EXPORT=/path/to/export/file
Then launch the ledger using the Bazel or Java command as described above.
In case the ledger is run from within the Docker container, use following syntax:
export KVUTILS_LEDGER_EXPORT=/path/to/export/directory"
docker run \
-it \
--rm \
--name ledger \
--network docker_default \
-p 6861:6865 \
-v ${KVUTILS_LEDGER_EXPORT}:/export \
-e KVUTILS_LEDGER_EXPORT=/export/my-ledger.export \
bazel/ledger/ledger-on-memory:app-image \
--participant participant-id=foo,port=6865,address=0.0.0.0