Package org.infinispan.remoting.rpc
Class RpcManagerImpl
- java.lang.Object
-
- org.infinispan.remoting.rpc.RpcManagerImpl
-
- All Implemented Interfaces:
JmxStatisticsExposer
,org.infinispan.metrics.impl.CustomMetricsSupplier
,RpcManager
@MBean(objectName="RpcManager", description="Manages all remote calls to remote cache instances in the cluster.") public class RpcManagerImpl extends Object implements RpcManager, JmxStatisticsExposer, org.infinispan.metrics.impl.CustomMetricsSupplier
This component really is just a wrapper around aTransport
implementation, and is used to set up the transport and provide lifecycle and dependency hooks into external transport implementations.- Since:
- 4.0
- Author:
- Manik Surtani, Galder ZamarreƱo, Mircea.Markus@jboss.com, Pedro Ruivo
-
-
Field Summary
Fields Modifier and Type Field Description static String
OBJECT_NAME
-
Constructor Summary
Constructors Constructor Description RpcManagerImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description <T> T
blocking(CompletionStage<T> request)
Block on a request and return its result.Address
getAddress()
Returns the address associated with this RpcManager or null if not part of the cluster.long
getAverageReplicationTime()
long
getAverageXSiteReplicationTime()
long
getAverageXSiteReplicationTimeTo(String dstSite)
String
getCommittedViewAsString()
Collection<MBeanMetadata.AttributeMetadata>
getCustomMetrics()
long
getMaximumXSiteReplicationTime()
long
getMaximumXSiteReplicationTimeTo(String dstSite)
List<Address>
getMembers()
Returns members of a cluster scoped to the cache owning this RpcManager.long
getMinimumXSiteReplicationTime()
long
getMinimumXSiteReplicationTimeTo(String dstSite)
long
getNumberXSiteRequests()
long
getNumberXSiteRequestsReceived()
long
getNumberXSiteRequestsReceivedFrom(String srcSite)
long
getNumberXSiteRequestsSentTo(String dstSite)
String
getPendingViewAsString()
long
getReplicationCount()
long
getReplicationFailures()
String
getSitesView()
boolean
getStatisticsEnabled()
Returns whether an interceptor's statistics are being captured.String
getSuccessRatio()
double
getSuccessRatioFloatingPoint()
RpcOptions
getSyncRpcOptions()
int
getTopologyId()
Returns the current topology id.Transport
getTransport()
<T> CompletionStage<T>
invokeCommand(Collection<Address> targets, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Invoke a command on a collection of node and pass the responses to aResponseCollector
.<T> CompletionStage<T>
invokeCommand(Address target, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Invoke a command on a single node and pass the response to aResponseCollector
.<T> CompletionStage<T>
invokeCommandOnAll(ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Invoke a command on all the nodes in the cluster and pass the responses to aResponseCollector
.<T> CompletionStage<T>
invokeCommands(Collection<Address> targets, Function<Address,ReplicableCommand> commandGenerator, ResponseCollector<T> collector, RpcOptions rpcOptions)
Invoke different commands on a collection of nodes and pass the responses to aResponseCollector
.<T> CompletionStage<T>
invokeCommandStaggered(Collection<Address> targets, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Invoke a command on a collection of nodes and pass the responses to aResponseCollector
.CompletableFuture<Map<Address,Response>>
invokeRemotelyAsync(Collection<Address> recipients, ReplicableCommand rpc, RpcOptions options)
Invokes a command on remote nodes.<O> XSiteResponse<O>
invokeXSite(org.infinispan.xsite.XSiteBackup backup, org.infinispan.xsite.XSiteReplicateCommand<O> command)
Sends theXSiteReplicateCommand
to a remote site.boolean
isStatisticsEnabled()
void
resetStatistics()
Resets an interceptor's cache statisticsvoid
sendTo(Address destination, ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Asynchronously sends theReplicableCommand
to the destination using the specifiedDeliverOrder
.void
sendToAll(ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Asynchronously sends theReplicableCommand
to the entire cluster.void
sendToMany(Collection<Address> destinations, ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Asynchronously sends theReplicableCommand
to the set of destination using the specifiedDeliverOrder
.void
setCrossSiteReplicationTimes(TimerTracker timer)
void
setStatisticsEnabled(boolean statisticsEnabled)
Deprecated.We already have an attribute, we shouldn't have an operation for the same thing.void
setTransport(Transport t)
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.infinispan.remoting.rpc.RpcManager
getTotalSyncRpcOptions
-
-
-
-
Field Detail
-
OBJECT_NAME
public static final String OBJECT_NAME
- See Also:
- Constant Field Values
-
-
Method Detail
-
getCustomMetrics
public Collection<MBeanMetadata.AttributeMetadata> getCustomMetrics()
-
getCommittedViewAsString
@ManagedAttribute(description="Retrieves the committed view.", displayName="Committed view", dataType=TRAIT) public String getCommittedViewAsString()
-
getPendingViewAsString
@ManagedAttribute(description="Retrieves the pending view.", displayName="Pending view", dataType=TRAIT) public String getPendingViewAsString()
-
invokeCommand
public <T> CompletionStage<T> invokeCommand(Address target, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Description copied from interface:RpcManager
Invoke a command on a single node and pass the response to aResponseCollector
. If the target is the local node, the command is never executed andResponseCollector.finish()
is called directly.- Specified by:
invokeCommand
in interfaceRpcManager
-
invokeCommand
public <T> CompletionStage<T> invokeCommand(Collection<Address> targets, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Description copied from interface:RpcManager
Invoke a command on a collection of node and pass the responses to aResponseCollector
. If one of the targets is the local node, it is ignored. The command is only executed on the remote nodes.- Specified by:
invokeCommand
in interfaceRpcManager
-
invokeCommandOnAll
public <T> CompletionStage<T> invokeCommandOnAll(ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Description copied from interface:RpcManager
Invoke a command on all the nodes in the cluster and pass the responses to aResponseCollector
. The command is not executed locally and it is not sent across RELAY2 bridges to remote sites.- Specified by:
invokeCommandOnAll
in interfaceRpcManager
-
invokeCommandStaggered
public <T> CompletionStage<T> invokeCommandStaggered(Collection<Address> targets, ReplicableCommand command, ResponseCollector<T> collector, RpcOptions rpcOptions)
Description copied from interface:RpcManager
Invoke a command on a collection of nodes and pass the responses to aResponseCollector
. The command is only sent immediately to the first target, and there is an implementation-dependent delay before sending the command to each target. There is no delay if the target responds or leaves the cluster. The remaining targets are skipped ifResponseCollector.addResponse(Address, Response)
returns a non-null
value. The command is only executed on the remote nodes.- Specified by:
invokeCommandStaggered
in interfaceRpcManager
-
invokeCommands
public <T> CompletionStage<T> invokeCommands(Collection<Address> targets, Function<Address,ReplicableCommand> commandGenerator, ResponseCollector<T> collector, RpcOptions rpcOptions)
Description copied from interface:RpcManager
Invoke different commands on a collection of nodes and pass the responses to aResponseCollector
. The command is only executed on the remote nodes and it is not executed in the local node even if it is in thetargets
.- Specified by:
invokeCommands
in interfaceRpcManager
-
blocking
public <T> T blocking(CompletionStage<T> request)
Description copied from interface:RpcManager
Block on a request and return its result.- Specified by:
blocking
in interfaceRpcManager
-
invokeRemotelyAsync
public CompletableFuture<Map<Address,Response>> invokeRemotelyAsync(Collection<Address> recipients, ReplicableCommand rpc, RpcOptions options)
Description copied from interface:RpcManager
Invokes a command on remote nodes.- Specified by:
invokeRemotelyAsync
in interfaceRpcManager
- Parameters:
recipients
- A list of nodes, ornull
to invoke the command on all the members of the clusterrpc
- The command to invokeoptions
- The invocation options- Returns:
- A future that, when completed, returns the responses from the remote nodes.
-
sendTo
public void sendTo(Address destination, ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Description copied from interface:RpcManager
Asynchronously sends theReplicableCommand
to the destination using the specifiedDeliverOrder
.- Specified by:
sendTo
in interfaceRpcManager
- Parameters:
destination
- the destination'sAddress
.command
- theReplicableCommand
to send.deliverOrder
- theDeliverOrder
to use.
-
sendToMany
public void sendToMany(Collection<Address> destinations, ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Description copied from interface:RpcManager
Asynchronously sends theReplicableCommand
to the set of destination using the specifiedDeliverOrder
.- Specified by:
sendToMany
in interfaceRpcManager
- Parameters:
destinations
- the collection of destination'sAddress
. Ifnull
, it sends to all the members in the cluster.command
- theReplicableCommand
to send.deliverOrder
- theDeliverOrder
to use.
-
sendToAll
public void sendToAll(ReplicableCommand command, org.infinispan.remoting.inboundhandler.DeliverOrder deliverOrder)
Description copied from interface:RpcManager
Asynchronously sends theReplicableCommand
to the entire cluster.- Specified by:
sendToAll
in interfaceRpcManager
-
invokeXSite
public <O> XSiteResponse<O> invokeXSite(org.infinispan.xsite.XSiteBackup backup, org.infinispan.xsite.XSiteReplicateCommand<O> command)
Description copied from interface:RpcManager
Sends theXSiteReplicateCommand
to a remote site.If
XSiteBackup.isSync()
returnsfalse
, theXSiteResponse
is only completed when the an ACK from the remote site is received. The invoker needs to make sure not to wait for theXSiteResponse
.- Specified by:
invokeXSite
in interfaceRpcManager
- Parameters:
backup
- The site to where the command is sent.command
- The command to send.- Returns:
- A
XSiteResponse
that is completed when the request is completed.
-
getTransport
public Transport getTransport()
- Specified by:
getTransport
in interfaceRpcManager
- Returns:
- a reference to the underlying transport.
-
resetStatistics
@ManagedOperation(description="Resets statistics gathered by this component", displayName="Reset statistics") public void resetStatistics()
Description copied from interface:JmxStatisticsExposer
Resets an interceptor's cache statistics- Specified by:
resetStatistics
in interfaceJmxStatisticsExposer
-
getReplicationCount
@ManagedAttribute(description="Number of successful replications", displayName="Number of successful replications", measurementType=TRENDSUP) public long getReplicationCount()
-
getReplicationFailures
@ManagedAttribute(description="Number of failed replications", displayName="Number of failed replications", measurementType=TRENDSUP) public long getReplicationFailures()
-
isStatisticsEnabled
@ManagedAttribute(description="Enables or disables the gathering of statistics by this component", displayName="Statistics enabled", dataType=TRAIT, writable=true) public boolean isStatisticsEnabled()
-
getStatisticsEnabled
public boolean getStatisticsEnabled()
Description copied from interface:JmxStatisticsExposer
Returns whether an interceptor's statistics are being captured.- Specified by:
getStatisticsEnabled
in interfaceJmxStatisticsExposer
- Returns:
- true if statistics are captured
-
setStatisticsEnabled
@Deprecated @ManagedOperation(displayName="Enable/disable statistics. Deprecated, use the statisticsEnabled attribute instead.") public void setStatisticsEnabled(@Parameter(name="enabled",description="Whether statistics should be enabled or disabled (true/false)") boolean statisticsEnabled)
Deprecated.We already have an attribute, we shouldn't have an operation for the same thing.Description copied from interface:JmxStatisticsExposer
Enables an interceptor's cache statistics If true, the interceptor will capture statistics and make them available through the mbean.- Specified by:
setStatisticsEnabled
in interfaceJmxStatisticsExposer
- Parameters:
statisticsEnabled
- true if statistics should be captured
-
getSuccessRatio
@ManagedAttribute(description="Successful replications as a ratio of total replications", displayName="Successful replications ratio") public String getSuccessRatio()
-
getSuccessRatioFloatingPoint
@ManagedAttribute(description="Successful replications as a ratio of total replications in numeric double format", displayName="Successful replication ratio", units=PERCENTAGE) public double getSuccessRatioFloatingPoint()
-
getAverageReplicationTime
@ManagedAttribute(description="The average time spent in the transport layer, in milliseconds", displayName="Average time spent in the transport layer", units=MILLISECONDS) public long getAverageReplicationTime()
-
getSitesView
@ManagedAttribute(description="Retrieves the x-site view.", displayName="Cross site (x-site) view", dataType=TRAIT) public String getSitesView()
-
getAverageXSiteReplicationTime
@ManagedAttribute(description="Returns the average replication time, in milliseconds, for a cross-site replication request", displayName="Average Cross-Site replication time", units=MILLISECONDS) public long getAverageXSiteReplicationTime()
-
getAverageXSiteReplicationTimeTo
@ManagedOperation(description="Returns the average replication time, in milliseconds, for cross-site request sent to the remote site.", displayName="Average Cross-Site replication time to Site", name="AverageXSiteReplicationTimeTo") public long getAverageXSiteReplicationTimeTo(@Parameter(name="dstSite",description="Destination site name") String dstSite)
-
getMinimumXSiteReplicationTime
@ManagedAttribute(description="Returns the minimum replication time, in milliseconds, for a cross-site replication request", displayName="Minimum Cross-Site replication time", units=MILLISECONDS, measurementType=TRENDSDOWN) public long getMinimumXSiteReplicationTime()
-
getMinimumXSiteReplicationTimeTo
@ManagedOperation(description="Returns the minimum replication time, in milliseconds, for cross-site request sent to the remote site.", displayName="Minimum Cross-Site replication time to Site", name="MinimumXSiteReplicationTimeTo") public long getMinimumXSiteReplicationTimeTo(@Parameter(name="dstSite",description="Destination site name") String dstSite)
-
getMaximumXSiteReplicationTime
@ManagedAttribute(description="Returns the maximum replication time, in milliseconds, for a cross-site replication request", displayName="Maximum Cross-Site replication time", units=MILLISECONDS, measurementType=TRENDSUP) public long getMaximumXSiteReplicationTime()
-
getMaximumXSiteReplicationTimeTo
@ManagedOperation(description="Returns the maximum replication time, in milliseconds, for cross-site request sent to the remote site.", displayName="Maximum Cross-Site replication time to Site", name="MaximumXSiteReplicationTimeTo") public long getMaximumXSiteReplicationTimeTo(@Parameter(name="dstSite",description="Destination site name") String dstSite)
-
getNumberXSiteRequests
@ManagedAttribute(description="Returns the number of sync cross-site requests", displayName="Cross-Site replication requests", measurementType=TRENDSUP) public long getNumberXSiteRequests()
-
getNumberXSiteRequestsSentTo
@ManagedOperation(description="Returns the number of cross-site requests sent to the remote site.", displayName="Number of Cross-Site request sent to site", name="NumberXSiteRequestsSentTo") public long getNumberXSiteRequestsSentTo(@Parameter(name="dstSite",description="Destination site name") String dstSite)
-
getNumberXSiteRequestsReceived
@ManagedAttribute(description="Returns the number of cross-site requests received from all nodes", displayName="Number of Cross-Site Requests Received from all sites", measurementType=TRENDSUP) public long getNumberXSiteRequestsReceived()
-
getNumberXSiteRequestsReceivedFrom
@ManagedOperation(description="Returns the number of cross-site requests received from the remote site.", displayName="Number of Cross-Site request received from site", name="NumberXSiteRequestsReceivedFrom") public long getNumberXSiteRequestsReceivedFrom(@Parameter(name="srcSite",description="Originator site name") String srcSite)
-
setCrossSiteReplicationTimes
@ManagedAttribute(description="Cross Site Replication Times", displayName="Cross Site Replication Times", dataType=TIMER, units=NANOSECONDS) public void setCrossSiteReplicationTimes(TimerTracker timer)
-
setTransport
public void setTransport(Transport t)
-
getAddress
public Address getAddress()
Description copied from interface:RpcManager
Returns the address associated with this RpcManager or null if not part of the cluster.- Specified by:
getAddress
in interfaceRpcManager
-
getTopologyId
public int getTopologyId()
Description copied from interface:RpcManager
Returns the current topology id. As opposed to the viewId which is updated whenever the cluster changes, the topologyId is updated when a new cache instance is started or removed - this doesn't necessarily coincide with a node being added/removed to the cluster.- Specified by:
getTopologyId
in interfaceRpcManager
-
getSyncRpcOptions
public RpcOptions getSyncRpcOptions()
- Specified by:
getSyncRpcOptions
in interfaceRpcManager
- Returns:
- The default options for synchronous remote invocations.
-
getMembers
public List<Address> getMembers()
Description copied from interface:RpcManager
Returns members of a cluster scoped to the cache owning this RpcManager. Note that this List is always a subset ofTransport.getMembers()
- Specified by:
getMembers
in interfaceRpcManager
- Returns:
- a list of cache scoped cluster members
-
-