Appendix B — Spring Boot Configuration Quick Reference

Properties begin at dsm.* and bind to DsmProperties. Defaults support local startup and are not production recommendations; deployment reviews network, security, capacity, and failure domains.

Top-level identity

Property Purpose Gate
dsm.cluster-id cluster identity required; blank fails startup
dsm.service-id service family/communication isolation equal across peers; not a tenant ID
dsm.node.id node identity random UUID by default; configure explicitly for stable diagnostics
dsm.node.host / port advertised address reachable from peer network

Membership

Property group Key fields Meaning
dsm.cluster.mode STANDALONE / MULTICAST / UNICAST selects membership implementation
dsm.cluster.multicast.* group, port, heartbeat, failure threshold constrained by multicast support
dsm.cluster.unicast.* gossip port/interval, seeds/DNS, failure threshold seed is discovery entry, not permanent leader

High-risk Lease decisions also check quorum and stability rounds; member count alone does not establish ownership.

Runtime and sync

dsm.runtime.* governs lifecycle/threads; dsm.sync.* governs propagation, repair, batching, and QoS. A timeout, queue, batch, or repair-period change also updates capacity experiments and fault drills.

Security

Property surface Question
token/challenge who enters the communication domain?
authentication/key version who signs, and which minimum version is accepted?
encryption is ciphertext required, with which algorithm/key version?
nonce window/senders what replay window and sender-memory bound apply?
rate limit/ban how do repeated failures throttle and recover?

Secrets come from deployment key management and stay out of the book, logs, metric tags, and repository configuration.

Collections

Each dsm.collections[] contains at least:

- bean-name: routeHintsCollection
  tenant-id: shared
  application-id: gateway
  collection-id: route-hints
  schema-id: route-hints/v1
  type: REGISTER
  consistency-tier: REGISTER
  entity-type: com.example.RouteHint
Type Additional requirement
Register record-derived codec, or codec-bean for non-record
Lease entity factory, Lease mode/TTL/quorum configuration
CRDT update/state codecs, initial state, and merger bean

The canonical bean name is dsmCollection:<tenant>/<application>/<collection>; bean-name is an additional business alias. Duplicate locator, missing codec/merger/factory, or invalid ranges fail fast.

Validation entry point

cd submodule/dsm
mvn -q -pl dsm-spring-boot-autoconfigure -am \
  -Dtest=DsmAutoConfigurationTest,DsmSpringBootSmokeTest \
  -Dsurefire.failIfNoSpecifiedTests=false test