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. Java clients use the binary protocol for the data path, while the CLI uses the documented HTTP operational endpoints.

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 by 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 covers more than a dozen 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.

The following animation shows how a chaos run’s register history is checked for linearizability:

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.