Skip to content

History / Grouped Files

Revisions

  • Stop saying the file backends have no push feed They gained one in 1.2.0 - the operating system's own watch service - and a version stamp taken from the file, so polling over them detects updates and not only deletes. Six pages still described the state before that: the per-backend matrix, the push-vs-poll rule, two capability tables, and the "see also" line on both file-backend pages. H2 keeps the deletes-only caveat, which is true of H2 alone: it is the one backend reporting version 0 for every key it holds. Also bumps the artifact coordinates to 1.2.1, and renames the heterogeneous-backend "fan-out" after the term stopped naming one thing.

    @EverNife EverNife committed Aug 3, 2026
  • Say that a directory is the unit of separation A grouped-file base directory holds its key files directly, and a scan reads all of them, so collections keyed by unrelated things are better off in separate directories - which is a second storage, not a setting. Also documents what happens to key files found in a sub-directory: the open fails naming it, rather than adopting the directory as empty and writing a second copy beside data nobody can see.

    @EverNife EverNife committed Aug 3, 2026
  • Say when a grouped-file count refuses to answer A key file that will not parse belongs to no collection, so count() and keys() fail instead of returning a number that silently omits it. Record that on the pages a reader lands on: the CRUD contract, the grouped-file page (with the full per-read table), the cheat sheet, the gotcha list and the exception index. Also corrects two claims that were already wrong before this change: the cheat sheet called keys() a directory listing on both file backends when only LocalFile is one, and the log-level table filed a skipped corrupt row under WARN without noting that a read answering with a count or a key set does not degrade - it fails.

    @EverNife EverNife committed Jul 29, 2026
  • Document the 1.2.0 file-backend work Both file backends now record their own on-disk format and refuse a codec that disagrees, both push changes through the OS watch service, and their version stops being a constant zero - so several pages said things that are no longer true: that they have no change feed, that polling over them catches only deletes, and that versions() reports 0. Grouped Files gains sections on key spaces, directory fan-out and the key-major loadKey/batchKey API; Local Files gains its capability table and the per-collection format record.

    @EverNife EverNife committed Jul 29, 2026
  • Tighten and fact-check every wiki page (concision + correctness pass) Swept all 41 content pages for concision (cut rambling/hedging/repetition, prefer scannable tables and short sentences) and verified every load-bearing technical claim against the source. Real fixes: Local-Files documented the removed prettyPrint/fsyncEvery LocalFileConfig constructors (gone since 271962d) - rewritten to the one-arg config; Grouped-Files' stale cross-refs to those knobs corrected. Added a few source-backed facts that were missing (nested inTransaction throws, duplicate migration version rejected at register(), getAll never returns null). No behavior claims changed beyond matching the code.

    @EverNife EverNife committed Jul 5, 2026
  • Sync wiki with adversarial-review fixes Coherence updates for the landed fixes: file backends are crash-atomic (not fsync-durable) and hash-truncate over-long keys; H2 never enforces optimistic locking in any mode incl. TCP; null Long version reads as 0; currentVersion() reports the greatest applied version and InMemory close() resets the ledger; FAIL_FAST yields exactly one error; CacheSync mode + Jedis malformed-payload reporting; non-Comparable map keys serialize unordered; numeric cross-type range on scan backends; progress-tick OR semantics; catalog is the single version source.

    @EverNife EverNife committed Jul 5, 2026
  • docs: sync wiki with current code — grouped-file backend, versions, capability accuracy New page: - Grouped-Files.md — the key-major aggregate-file backend (one file per key, every collection as a sub-node; FileKeyNames sanitisation; atomic writes; SchemaAware via _schema/migrations.json; full-scan queries with declaration validation; no transactions; versions() = 0), plus a _Sidebar entry. Factual fixes across the wiki against the current code and libs.versions.toml: - Seven backends everywhere (GroupedFile added to matrices/lists); the "six backends" phrasings that were specific to MultiBackendRefExampleTest and the six-key example were left correct on purpose. - Single Java 25 toolchain build (sourceCompatibility=25 + options.release=8, Jabel FinalCraft fork) — removed the stale JDK-17 compiler-pin / ~/.jdks blocks. - Dependency and project versions: Jackson 2.22.0, mongodb 5.8.0, mysql 9.7.0, postgresql 42.7.12; project coordinates bumped to 1.0.6. - YAML accepted by both file backends (LocalFile and GroupedFile); Mongo stores the key as the document _id (not storage_key); health() returns HealthStatus; InMemory implements SchemaAwareStorage; ChangeFeed = Mongo/PostgreSQL/InMemory. - CachingManager.stats()/CacheStats section; RefRegistry rejects a conflicting duplicate registration; Mongo replica-set / open-no-auth test creds. - Fixed a few broken examples/links: GuildManager two-arg constructor, Quick-Start variable/type names, BatchSaveReport/KeyOutcome shown as final classes, a dead Caching-Managers wiki-link.

    @EverNife EverNife committed Jul 4, 2026