Class Core
@Volatile public class Core extends Object
This class has been around behind a facade in the 1.x days, but here it is just a plain simple class that can be instantiated and is used across the upper language bindings.
- Since:
- 2.0.0
-
Constructor Summary
Constructors Modifier Constructor Description protected
Core(CoreEnvironment environment, Authenticator authenticator, Set<SeedNode> seedNodes)
Creates a new Core. -
Method Summary
Modifier and Type Method Description ClusterConfig
clusterConfig()
This API provides access to the current config that is published throughout the core.ConfigurationProvider
configurationProvider()
Returns the attached configuration provider.CoreContext
context()
Returns theCoreContext
of this core instance.static Core
create(CoreEnvironment environment, Authenticator authenticator, Set<SeedNode> seedNodes)
Creates a newCore
with the given environment.protected Node
createNode(NodeIdentifier identifier, Optional<String> alternateAddress)
Create aNode
from the given identifier.Stream<EndpointDiagnostics>
diagnostics()
Mono<Void>
ensureServiceAt(NodeIdentifier identifier, ServiceType serviceType, int port, Optional<String> bucket, Optional<String> alternateAddress)
This method can be used by a caller to make sure a certain service is enabled at the given target node.void
initGlobalConfig()
Instructs the client to, if possible, load and initialize the global config.void
openBucket(String name)
Attempts to open a bucket and fails theMono
if there is a persistent error as the reason.ValueRecorder
responseMetric(Request<?> request)
<R extends Response>
voidsend(Request<R> request)
Sends a command into the core layer and registers the request with the timeout timer.<R extends Response>
voidsend(Request<R> request, boolean registerForTimeout)
Sends a command into the core layer and allows to avoid timeout registration.Optional<Flux<ServiceState>>
serviceState(NodeIdentifier nodeIdentifier, ServiceType type, Optional<String> bucket)
If present, returns a flux that allows to monitor the state changes of a specific service.Mono<Void>
shutdown()
Mono<Void>
shutdown(Duration timeout)
Shuts down this core and all associated, owned resources.
-
Constructor Details
-
Core
Creates a new Core.- Parameters:
environment
- the environment for this core.
-
-
Method Details
-
create
public static Core create(CoreEnvironment environment, Authenticator authenticator, Set<SeedNode> seedNodes)Creates a newCore
with the given environment.- Parameters:
environment
- the environment for this core.- Returns:
- the created
Core
.
-
configurationProvider
Returns the attached configuration provider.Internal API, use with care!
-
send
Sends a command into the core layer and registers the request with the timeout timer.- Parameters:
request
- the request to dispatch.
-
send
Sends a command into the core layer and allows to avoid timeout registration.Usually you want to use
send(Request)
instead, this method should only be used during retry situations where the request has already been registered with a timeout timer before.- Parameters:
request
- the request to dispatch.registerForTimeout
- if the request should be registered with a timeout.
-
context
Returns theCoreContext
of this core instance. -
diagnostics
-
serviceState
@Internal public Optional<Flux<ServiceState>> serviceState(NodeIdentifier nodeIdentifier, ServiceType type, Optional<String> bucket)If present, returns a flux that allows to monitor the state changes of a specific service.- Parameters:
nodeIdentifier
- the node identifier for the node.type
- the type of service.bucket
- the bucket, if present.- Returns:
- if found, a flux with the service states.
-
initGlobalConfig
Instructs the client to, if possible, load and initialize the global config.Since global configs are an "optional" feature depending on the cluster version, if an error happens this method will not fail. Rather it will log the exception (with some logic dependent on the type of error) and will allow the higher level components to move on where possible.
-
openBucket
Attempts to open a bucket and fails theMono
if there is a persistent error as the reason. -
clusterConfig
This API provides access to the current config that is published throughout the core.Note that this is internal API and might change at any time.
-
ensureServiceAt
@Internal public Mono<Void> ensureServiceAt(NodeIdentifier identifier, ServiceType serviceType, int port, Optional<String> bucket, Optional<String> alternateAddress)This method can be used by a caller to make sure a certain service is enabled at the given target node.This is advanced, internal functionality and should only be used if the caller knows what they are doing.
- Parameters:
identifier
- the node to check.serviceType
- the service type to enable if not enabled already.port
- the port where the service is listening on.bucket
- if the service is bound to a bucket, it needs to be provided.alternateAddress
- if an alternate address is present, needs to be provided since it is passed down to the node and its services.- Returns:
- a
Mono
which completes once initiated.
-
responseMetric
-
createNode
Create aNode
from the given identifier.This method is here so it can be overridden in tests.
- Parameters:
identifier
- the identifier for the node.alternateAddress
- the alternate address if present.- Returns:
- the created node instance.
-
shutdown
-
shutdown
Shuts down this core and all associated, owned resources.
-