447: added PlayerRecordingService instantiation & configuration#653
Merged
Conversation
* Remove legacy Travis CI configuration
Travis CI is fully superseded by GitHub Actions workflows.
* Delete unused ChronoStore/ component
ChronoStore is not linked by any production component; only its own
self-contained unit tests at test/unit/chrono-store/ reference it.
- Remove ChronoStore/ source tree
- Remove test/unit/chrono-store/ unit tests (which tested only the
removed code)
- Drop add_subdirectory(ChronoStore) from root CMakeLists.txt
- Drop add_subdirectory(chrono-store) from test/unit/CMakeLists.txt
- Update test/README.md to remove ChronoStore from the CTest naming
table and stale legacy-tree note
* Rename docs-website/ to docs/ and consolidate doc/images/
- Rename docs-website/ -> docs/ (Docusaurus site)
- Merge unique images from doc/images/ into docs/static/img/ and
docs/static/logos/ (skipping duplicates already present)
- Remove tracked content from doc/ (untracked working-tree files
are left untouched)
- Update README.md image references from doc/images/* to docs/static/*
- Update deploy-website.yml path triggers and working-directory
references to docs/
- Update CMakeLists.txt Doxygen DOXY_FILE path and lint --exclude
paths from doc/ to docs/
* Move Dockerfile to ci/docker/, rename CI/ -> ci/, fix enviroment typo
- Move .github/docker/dockerfile -> ci/docker/ (alongside existing
Dockerfiles), delete now-empty .github/docker/
- Rename CI/ -> ci/ for consistent lowercase directory naming
- Fix typo: CI/enviroment/ -> ci/environment/
- Update workflow docker context and hashFiles() references from
.github/docker/** to ci/docker/** in chronolog-base, create-release,
and publish-dev-image
- Update README.md install snippet from CI/docker/ to ci/docker/
- Update CMakeLists.txt lint --exclude and CPack comment from CI/ to ci/
- Update ci/installation/install_with_spack.sh path references
CI/enviroment -> ci/environment
* Move configuration templates into conf/
- Create conf/ directory
- Move default_conf.json.in and default_client_conf.json.in from
the repo root into conf/
- Update configure_file() and install(FILES ...) calls in
ChronoVisor/CMakeLists.txt, Client/cpp/CMakeLists.txt,
tools/cli/CMakeLists.txt, and
test/integration/keeper-grapher/CMakeLists.txt
* Move CodeStyleFiles/ to .github/code-style/
Keep code-style configuration co-located with GitHub Actions and
tooling configuration.
- Move ChronoLog.clang-format, ChronoLog.xml, pre-commit into
.github/code-style/ and delete the now-empty CodeStyleFiles/
- Update check-format.yml trigger path, clang-format style args,
PR comment instructions, and header comment
- Update pre-commit hook internal path references
* Rename test/ to tests/
Align with the target directory layout (tests/ plural).
- Rename test/ -> tests/
- Update add_subdirectory(test) -> add_subdirectory(tests) in root
CMakeLists.txt (both the standard and performance-only branches)
- Update build path hint in tests/communication/thallium_protocol_test.sh
* Rename Client/ to client/
- Rename Client/ -> client/ for consistent lowercase naming
- Update root CMakeLists.txt: add_subdirectory(Client) -> add_subdirectory(client)
- Update hashFiles() in chronolog-base, publish-dev-image, and
create-release workflows: Client/spack.yaml -> client/spack.yaml
- Update all CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR Client/ path
references across component, plugin, test, and tools CMakeLists.txt
* Rename Plugins/ to plugins/ and standardize plugin subdirectory names
- Rename Plugins/ -> plugins/
- Rename chronokvs/ -> chrono-kvs/, chronostream/ -> chrono-stream/,
chronoviz/ -> chrono-viz/ for consistency with kebab-case
component naming
- Update root CMakeLists.txt: add_subdirectory(Plugins) -> add_subdirectory(plugins)
- Update plugins/CMakeLists.txt subdirectory names
- Update test include paths for chrono-kvs headers in unit and
integration tests
* Create src/ and move core server components into it
- Create src/ directory for all server-side ChronoLog components
- Move and rename:
chrono_common/ -> src/chrono-common/
ChronoVisor/ -> src/chrono-visor/
ChronoKeeper/ -> src/chrono-keeper/
ChronoGrapher/ -> src/chrono-grapher/
ChronoPlayer/ -> src/chrono-player/
- Update root CMakeLists.txt add_subdirectory() calls for all five
components
- Update all CMAKE_SOURCE_DIR and CMAKE_BINARY_DIR path references
across component, client, plugin, test, and tools CMakeLists.txt
- Fix stale path comments in src/chrono-common and src/chrono-player
* style: apply clang-format-18 to files surfaced by the format check
These 23 files have pre-existing format issues that were not caught
on develop because the format check only scans paths that appear in
the PR diff. The directory renames in this PR put every previously
unscanned file back through the check, so the failures appear now.
Content is unchanged — only whitespace, line breaks, and continuation
indentation per .github/code-style/ChronoLog.clang-format.
* ci(distributed-pipeline): run docker exec as --user root where needed
The chronolog-base workflow added \`docker commit --change 'USER grc-iit'\`
in PR #604 (75e0c41), making grc-iit the image's default exec user.
distributed-pipeline.yml was not updated alongside that change: it
relies on \`docker exec\` (no --user) for steps that legitimately
require root — apt-get install, useradd, service ssh start, and chown
of the shared_home volume. Those silently failed under \`|| true\`,
which is why no SSH server was running and the next step's
ssh-keyscan loop tripped \`set -e\`.
The issue stayed hidden on develop because hashFiles('.github/docker/**')
keeps reusing the legacy USER=root cached base image. This PR's rename
to ci/docker/** invalidates that cache, forcing a fresh build that
exposes the bug.
Pass --user root explicitly to the docker exec calls that need it:
- Create grc-iit user and install SSH in containers
- Prepare SSH keys (the final chown/chmod step)
- Copy workspace to containers (the chown step)
- Fix /home/grc-iit ownership
- Prepare hosts files (mkdir + chown step)
* Co-locate client examples with each binding
Move the examples next to the binding they target so each binding
owns its own examples directory, rather than splitting them under a
sibling examples/ folder:
client/examples/cpp/ -> client/cpp/examples/
client/examples/python/ -> client/python/examples/
- Drop client/examples/CMakeLists.txt and the
add_subdirectory(examples) in client/CMakeLists.txt
- Add add_subdirectory(examples) to client/cpp/CMakeLists.txt so the
C++ example targets are still built and installed
- Python examples stay non-built (matches the previous behavior of
client/examples/CMakeLists.txt, which only descended into cpp/)
No source or CMake target changes — \${CMAKE_BINARY_DIR}/client/cpp/include
paths used by the example targets remain correct.
* Delete unused tools/deploy/others/
These bringup scripts for Bookkeeper, Kafka, Lustre, MongoDB,
OrangeFS, and Redis are research-comparison artifacts: lab-bound
(env_ares.sh, env_cham.sh, env_hec.sh hard-code cluster paths),
not referenced by any build target, CI workflow, test, plugin,
or product source, and not functionally updated in this repo's
history (last touched only by the tools/ reorganization in #404).
Removing the directory along with its single mention in
tests/README.md. History is preserved in git for anyone who needs
to reproduce a published benchmark.
* Consolidate dynamic_deploy.sh: port -i + resource limits, drop orphan
.github/scripts/dynamic_deploy.sh was added in PR #502 to support
the ci-modular.yml / docker-build-publish.yml workflows, both of
which were later removed. The script has been an orphan since then
(no workflow or script references it) but had picked up two useful
improvements over its ci/docker/ sibling.
- Port -i IMAGE_NAME flag to ci/docker/dynamic_deploy.sh so users
can target images other than ghcr.io/grc-iit/chronolog:latest
(e.g. dev tags, local builds)
- Port the compose-level resource caps (mem_limit, mem_reservation,
cpus, shm_size) to the same script so user-facing runs match the
resource shape that the orphan version used in CI
- Delete .github/scripts/dynamic_deploy.sh and the now-empty
.github/scripts/ directory
README.md already points at ci/docker/dynamic_deploy.sh, so the
user-facing entry point is unchanged.
* Remove ci/docker/dynamic_deploy_pearc2025.sh
PEARC 2025 demo script kept only as a frozen snapshot of the deploy
flow at the time of the conference. No workflow, test, or doc
references it; the conference has passed; ci/docker/dynamic_deploy.sh
is the supported alternative for users. History remains in git for
anyone reproducing the PEARC artifact.
* Flatten tools/deploy/ChronoLog/ into tools/deploy/
With tools/deploy/others/ gone, ChronoLog/ is the only subdirectory
under tools/deploy/ — keeping it adds a path level for no benefit.
- Move build.sh, install.sh, deploy_local.sh, deploy_cluster.sh,
local_single_user_deploy.sh, single_user_deploy.sh up one level
- Update tools/deploy/build.sh internal forwarding comment in
CMakeLists.txt
- Update install(PROGRAMS ...) rule in CMakeLists.txt that ships the
deploy-from-install helpers
- Update CPackConfig.cmake comment
- Update tests/README.md fixture reference for end-to-end/data-integrity
- Update plugins/chrono-stream/README.md cd target
- Update internal cross-references in single_user_deploy.sh and
local_single_user_deploy.sh (they invoke build.sh / install.sh
via REPO_ROOT)
- Update workflow paths in publish-dev-image.yml, create-release.yml,
local-pipeline.yml, and distributed-pipeline.yml
* Remove dead ci/installation/, ci/spack/, ci/environment/
All three date back to 0a186a8 (2022-03-01 "Initial commit after
cleanup") and have been untouched since except for the CI/ -> ci/
rename in this branch. None are referenced by any workflow, CMake
target, script, doc, or README outside themselves.
- ci/installation/install_with_spack.sh clones github.com/scs-lab/ChronoLog
(defunct org — repo moved to grc-iit/ChronoLog years ago) and refers
to a ci/environment/spack.lock that does not exist in the tree.
- ci/installation/print_env.sh is a 4-line CLion remote-dev helper
that nothing invokes.
- ci/spack/packages/socketpp/package.py is a 0-byte stub — the
package was never written. ci/spack/repo.yaml is a 2-line
namespace declaration with no packages.
- ci/environment/ (spack.yaml listing just [cmake, mpich~fortran,
boost] and a 2020-era Ubuntu/gcc-9.3 module loads file) was
consumed only by the dead install_with_spack.sh; orphan once
installation/ is gone.
The supported install path today is the chronolog-base Docker image
(ci/docker/dockerfile + chronolog-base.yml + root spack.yaml) and
the user-facing tools/deploy/ scripts. ci/ now contains only the
actively used ci/docker/.
* Flatten ci/docker/ to docker/ at the repo root
With ci/installation/, ci/spack/, and ci/environment/ gone, ci/ wrapped
a single child (docker/), and the ci/ label was actively misleading: the
directory contains end-user/product container assets, not CI internals.
dynamic_deploy.sh is the user-facing script the README points at;
chronolog.dockerfile, chronolog-ssh.dockerfile, local.dockerfile, and
distributed.docker-compose.yaml are deployment artifacts.
Promote the directory to docker/ at the repo root — a widely-understood
top-level convention — and drop the empty ci/ wrapper.
- Rename ci/docker/ -> docker/
- Update hashFiles('ci/docker/**') and `context: ci/docker` in the
chronolog-base, publish-dev-image, and create-release workflows
- Update README.md user-facing wget snippet
- Update CMakeLists.txt lint --exclude path
- Update CPackConfig.cmake comment
* Remove Docusaurus scaffolding leftovers from docs/
The doc site keeps a few files from \`docusaurus init\` that the
ChronoLog content never adopted:
- docs/static/img/undraw_docusaurus_mountain.svg
- docs/static/img/undraw_docusaurus_react.svg
- docs/static/img/undraw_docusaurus_tree.svg
(default illustrations; no markdown, theme, or config references them)
- docs/src/pages/markdown-page.md
(scaffolding sample titled \"You don't need React to write simple
standalone pages\"; mapped to a public /markdown-page route that
nothing links to)
No theme overrides, no config entries, no doc pages reference these.
Other unused project-specific images are kept on purpose.
* Remove inert unversioned docs/docs/ placeholders
All six pages under docs/docs/ were \"Under Construction — see v2.4.0\"
stubs written when v2.4.0 was the latest release. Three releases
(v2.5.0 / v2.6.0 / v2.7.0) have shipped since, each frozen into its
own versioned_docs/version-X.Y.Z/. With
\`includeCurrentVersion: false\` in docusaurus.config.ts:77, the
unversioned tree is not built or served — the placeholders never
reach readers.
- Delete docs/docs/ (architecture, client, for-developers,
getting-started, plugins, tutorials)
- Reduce docs/sidebars.ts to an empty SidebarsConfig with a comment
explaining why (the docs plugin's sidebarPath still has to resolve;
versioned sidebars under docs/versioned_sidebars/ are unaffected)
If v2.8.0 documentation is later authored, recreate docs/docs/ and
flip \`includeCurrentVersion\` to true in the same change.
* Remove dead docs/src/ files
- docs/src/components/YouTube.tsx: <YouTube id> iframe embed
component, not imported by any markdown or component in the doc
site (versioned or unversioned).
- docs/src/theme/Footer/index.tsx: docusaurus swizzle --wrap scaffold
that imports @theme-original/Footer and re-exports it unchanged.
Removing it falls back to the built-in Footer, which still
delegates to the customized overrides under Footer/Layout/ and
Footer/Links/.
* Fix straggling stale paths missed by the structural rename
Comprehensive path audit caught a handful of references that still
pointed at the old layout. None were build-breaking (all are in docs,
comments, or runtime-path strings that no code actually consumes),
but they would confuse readers.
- cmake/CPackConfig.cmake: source-package exclude pattern
docs-website/build/ -> docs/build/ (the Docusaurus build dir
moved when docs-website/ was renamed to docs/)
- plugins/chrono-{viz,stream}/**.md, plugins/chrono-viz/grafana_plugin/README.md,
plugins/chrono-viz/grafana_backend/{README,TEST_SUMMARY}.md:
Plugins/chronoviz -> plugins/chrono-viz
Plugins/chronostream -> plugins/chrono-stream
(cd <path> instructions in plugin developer docs)
- tests/README.md: drop chrono-store / chrono_store mentions left over
after ChronoStore was deleted (layout row, install summary, naming
table component list, sample-files table, installed-executables
table) and update one build-dir hint from test/ to tests/
- tests/CMakeLists.txt: skip message test/overhead -> tests/overhead
- tests/performance/ares_test.sh: header comment test/performance/ ->
tests/performance/
- tools/cli/client_cli.cpp: header comment test/performance/ ->
tests/performance/
* Fix REPO_ROOT in deploy scripts after tools/deploy/ flatten
When tools/deploy/ChronoLog/local_single_user_deploy.sh and
tools/deploy/ChronoLog/single_user_deploy.sh were moved up one level
to tools/deploy/, their REPO_ROOT computation kept the old
\`SCRIPT_DIR/../../../\` (three levels up from the script). At the new
location that resolves to the *parent* of the repo, so the scripts
look for build.sh/install.sh outside the working tree and fail with
\"Error: /home/grc-iit/tools/deploy/build.sh is not executable or
not found.\" in the local-deployment and distributed-deployment
pipelines.
Drop one level of \`..\` so REPO_ROOT resolves to the repo root again.
* Fix REPO_ROOT in build.sh and install.sh after tools/deploy/ flatten
Same root cause as the previous fix to local_single_user_deploy.sh
and single_user_deploy.sh: build.sh and install.sh also compute
REPO_ROOT with three \`..\` segments, which lined up with the old
tools/deploy/ChronoLog/ location but now overshoots into the parent
of the repo. CI surfaces this as:
==> Error: No such environment: '/home/grc-iit'
CMake Error: The source directory \"/home/grc-iit\" does not appear
to contain CMakeLists.txt.
Drop one level of \`..\` so REPO_ROOT lands on the repo root.
deploy_local.sh and deploy_cluster.sh don't need a change — they're
sourced/called via SCRIPT_DIR by the wrapper scripts and don't
compute REPO_ROOT themselves.
* Address PR 563 review comments after folder-structure refactor
- docker/{local,chronolog}.dockerfile: fix deploy-script path
(tools/deploy/ChronoLog/ → tools/deploy/) after the flatten.
- CMakeLists.txt: drop the else branch that recursed into
tests/performance — that directory has no CMakeLists.txt, so
configure failed with CHRONOLOG_BUILD_TESTING=OFF.
- .gitignore: rename docs-website/ entries to docs/ to match the
renamed Docusaurus directory.
- plugins/chrono-viz/README.md: update layout diagram from
chronoviz/ to chrono-viz/.
* Set up website and docs scaffolding for v2.8.0 release - Add v2.8.0 release entry to website releases page; demote v2.7.0 (drop Latest badge, point docs link to /docs/2.7.0/) - Duplicate Docusaurus v2.7.0 docs into version-2.8.0 and bump internal version references; register the new version in versions.json, navbarSidebarsByVersion, and lastVersion Content updates for the new v2.8.0 features will follow in subsequent commits. Refs #649 * Update v2.8.0 docs for repo restructure and new extraction model - Translate stale post-#563 paths across all v2.8.0 docs: ChronoKeeper/include -> src/chrono-keeper/include and 4 sibling components; tools/deploy/ChronoLog/ -> tools/deploy/; CodeStyleFiles/ -> .github/code-style/; CI/docker/ -> docker/; Client/(cpp|python|spack.yaml) -> client/...; Plugins/chronoX -> plugins/chrono-X; test/<subdir>/ -> tests/<subdir>/. - Drop the ChronoStore unit-test section (component deleted in #563) and rephrase architecture diagrams' "the ChronoStore" as "the HDF5 archive". Retire Unit_ChronoStore_StoryChunk example. - Replace v2.7.0 Extractor narrative with the configurable ExtractionModule / ExtractionChain introduced in #633: rewrite the ChronoKeeper and ChronoGrapher architecture rows; add a full ExtractionModule schema section (csv_extractor, single_endpoint_rdma_extractor, dual_endpoint_rdma_extractor, hdf5_extractor) to server-configuration.md; document extraction_stream_count + extractor-chain composition in performance-tuning.md. - Document the IngestionThreadCount knobs added in #636 across KeeperRecordingService / KeeperGrapherDrainService / PlaybackQueryService, with defaults and tuning guidance. - Fix the conf/default_conf.json.in link target on the configuration page. Refs #649
…652) * feat(chronokvs): support config file path in constructors (#470) ChronoKVS was hardcoded to the ChronoLog client defaults (localhost:5555), limiting it to local deployments. Add an optional config_path parameter to ChronoKVS, ChronoKVSMapper and ChronoKVSClientAdapter constructors so callers can point at a ChronoLog client JSON configuration and connect to remote deployments. Default-constructed instances keep their previous behavior. The adapter loads the file via ClientConfiguration::load_from_file() before connecting and throws std::runtime_error if loading fails, matching the acceptance criteria in the issue. The writer/reader examples accept --config/-c (parse_conf_path_arg) so the plumbing can be exercised end-to-end. Adds a unit test that verifies the constructor throws on missing or section-less config files without requiring a running ChronoLog deployment. * ci(local-pipeline): sanitize branch name for artifact uploads actions/upload-artifact rejects names containing '/'. Branch names like 'feature/470-...' caused the ctest-results upload step to fail. Compute a slugified branch name (slashes replaced with dashes) once and reuse it for both artifact uploads and the job summary references. * refactor(chronokvs): rename confManager to client_config Per review feedback on PR #628: confManager is a remnant of the old ConfigurationManager class. Use a clearer client-facing name. * refactor(chronokvs): replace throwing constructors with noexcept Create() factory Per review feedback on PR #628 (Inna): throwing exceptions across a client-library boundary forces callers to wrap construction in try/catch without an obvious set of exception types to catch. Convert the public ChronoKVS API to a factory pattern instead: - Make ChronoKVS constructors private. - Add static std::unique_ptr<ChronoKVS> Create(...) noexcept overloads that catch any construction-path exception, log it via the configured log level, and return nullptr to signal failure. - Update examples, integration test, and unit tests to use the factory and check for nullptr instead of catching std::runtime_error. Internal layers (ChronoKVSMapper, ChronoKVSClientAdapter) keep using exceptions for clarity; they are now caught at the library boundary inside Create() rather than escaping to user code.
This comment was marked as resolved.
This comment was marked as resolved.
iameneko
requested changes
May 20, 2026
Contributor
iameneko
left a comment
There was a problem hiding this comment.
I ran a review focused on critical issues; these 4 were found.
This comment was marked as resolved.
This comment was marked as resolved.
iameneko
approved these changes
May 21, 2026
fkengun
reviewed
May 21, 2026
fkengun
approved these changes
May 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes for Issue #447