Skip to content

LoomCache Documentation

Raft-consistent, virtual-thread-native, and thoroughly documented. Built in Java 25 from scratch.

LoomCache pairs Raft consensus with a versioned binary client/server protocol for Java client data paths, while the CLI uses the documented HTTP operational surfaces.

Raft Consensus Flow

Waiting for client request...

Client
Leader Node
WAL Term
Follower 1
Follower 2

Virtual-Thread TCP Server

Java 25 virtual-thread-per-connection networking with sizing validated through your release performance gates instead of thread-pool tuning.

Linearizable by Default

Single-group production client writes use Raft with pre-vote, leader lease, ReadIndex, and WAL + snapshot persistence. The supported production path is the Java client and binary protocol; embedded direct access is scoped to local use.

Distributed Data Structures

One client SDK over a dozen-plus distributed structures: maps, queues, sets, topics, CRDTs, a Snowflake ID generator, and CP primitives. Production CP support is AtomicLong, Lock, and managed-session Semaphore. AtomicReference and Latch are not production-supported. The JSR-107 surface focuses on the cache-manager compatibility slice; full TCK compliance is not claimed.

Zero Cache Dependencies

No Hazelcast port, no Redis fork, no Netty in the data path. A custom binary protocol over plain Java sockets, Kryo 5.6.2 serialization, JSSE socket TLS with Netty TLS helper APIs for custom integrations, a Calcite-backed SQL engine, and Spring Boot 4.1.0 auto-configuration.

Chaos and Stress Harnesses

Java harnesses cover partition, disk, clock, process, and combined scenarios, with real-cluster linearizability checking on register histories.

Observability Built In

Micrometer metrics, Prometheus scrape endpoint, JMX MXBeans, health probes, slow-operation detection, and Grafana dashboards.

consistency verification

Linearizability, Continuously Checked

Every chaos run records a real-time operation history and replays it through a Wing–Gong–Lynch checker. The run is linearizable only if a single total order exists that respects each operation’s real-time window and the object’s sequential specification.

operation history · register xwall-clock →
C1
write(x, 1)
read(x) → 2
C2
read(x) → 1
C3
cas(x, 1, 2)
interval = [invoke … response]linearization point
recovered total order
write(x,1)x=1read(x)=1cas(x,1,2)x=2read(x)=2
WglLinearizabilityCheckermodel=register
states explored0/ 500,000
searching for a valid total order…
LINEARIZABLE
CheckerWGL (Wing–Gong–Lynch)
Search bound500,000 states
Modelsregister · counter · queue · set
Harnessreal 3-node ChaosRealCluster

LoomCache is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Hazelcast, Inc. or by any other company whose products are named in this documentation. “Hazelcast” is a trademark of Hazelcast, Inc.; references to it are nominative and describe only migration and comparison. All other product and company names are trademarks of their respective owners and are used for identification purposes only.