Class RequestContext
java.lang.Object
com.loomcache.server.context.RequestContext
Request context propagation using Java 25 ScopedValues.
ScopedValues replace ThreadLocal for virtual thread-friendly, immutable context propagation. Unlike ThreadLocal, ScopedValues: - Are immutable: values are captured, not mutated - Isolate across virtual thread boundaries automatically - Work seamlessly with structured concurrency - Avoid the complexity of manual cleanup
This class provides context for distributed cache operations: - Correlation ID: tracks requests across multiple servers - Node ID: identifies the server handling the request - Client address: identifies the client source - Message type: logs the operation type for audit trails - Client ID: identifies authenticated clients
Usage with try-with-resources
var context = RequestContext.newScope()
.correlationId(123L)
.nodeId("node-1")
.clientAddress("127.0.0.1:9999")
.messageType("GET")
.clientId("user-456");
context.run(() -> {
// Within this block, context is accessible via:
long corrId = RequestContext.correlationId();
String node = RequestContext.nodeId();
// ... rest of operation ...
});
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFluent builder for creating a scoped context. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic @Nullable StringGet the current client address, or null if not set.static @Nullable StringclientId()Get the current client ID, or null if not set.static @Nullable LongGet the current correlation ID, or null if not set.static booleanisActive()Check if any context is currently set.static @Nullable StringGet the current message type, or null if not set.static RequestContext.ContextScopenewScope()Create a new scope builder for setting context values.static @Nullable StringnodeId()Get the current node ID, or null if not set.
-
Constructor Details
-
RequestContext
public RequestContext()
-
-
Method Details
-
correlationId
Get the current correlation ID, or null if not set.- Returns:
- the correlation ID, or null
-
nodeId
Get the current node ID, or null if not set.- Returns:
- the node ID, or null
-
clientAddress
Get the current client address, or null if not set.- Returns:
- the client address, or null
-
messageType
Get the current message type, or null if not set.- Returns:
- the message type, or null
-
clientId
Get the current client ID, or null if not set.- Returns:
- the client ID, or null
-
isActive
public static boolean isActive()Check if any context is currently set. -
newScope
Create a new scope builder for setting context values.- Returns:
- a new builder
-