.editorconfig formatting
This commit is contained in:
parent
0cde06557d
commit
0b7c3ad745
|
@ -76,10 +76,13 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(ClientPresenceManager.class);
|
private static final Logger log = LoggerFactory.getLogger(ClientPresenceManager.class);
|
||||||
|
|
||||||
public ClientPresenceManager(final FaultTolerantRedisCluster presenceCluster, final ScheduledExecutorService scheduledExecutorService, final ExecutorService keyspaceNotificationExecutorService) throws IOException {
|
public ClientPresenceManager(final FaultTolerantRedisCluster presenceCluster,
|
||||||
|
final ScheduledExecutorService scheduledExecutorService,
|
||||||
|
final ExecutorService keyspaceNotificationExecutorService) throws IOException {
|
||||||
this.presenceCluster = presenceCluster;
|
this.presenceCluster = presenceCluster;
|
||||||
this.pubSubConnection = this.presenceCluster.createPubSubConnection();
|
this.pubSubConnection = this.presenceCluster.createPubSubConnection();
|
||||||
this.clearPresenceScript = ClusterLuaScript.fromResource(presenceCluster, "lua/clear_presence.lua", ScriptOutputType.INTEGER);
|
this.clearPresenceScript = ClusterLuaScript.fromResource(presenceCluster, "lua/clear_presence.lua",
|
||||||
|
ScriptOutputType.INTEGER);
|
||||||
this.scheduledExecutorService = scheduledExecutorService;
|
this.scheduledExecutorService = scheduledExecutorService;
|
||||||
this.keyspaceNotificationExecutorService = keyspaceNotificationExecutorService;
|
this.keyspaceNotificationExecutorService = keyspaceNotificationExecutorService;
|
||||||
|
|
||||||
|
@ -111,7 +114,9 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
final String presenceChannel = getManagerPresenceChannel(managerId);
|
final String presenceChannel = getManagerPresenceChannel(managerId);
|
||||||
final int slot = SlotHash.getSlot(presenceChannel);
|
final int slot = SlotHash.getSlot(presenceChannel);
|
||||||
|
|
||||||
connection.sync().nodes(node -> node.is(RedisClusterNode.NodeFlag.UPSTREAM) && node.hasSlot(slot)).commands().subscribe(presenceChannel);
|
connection.sync().nodes(node -> node.is(RedisClusterNode.NodeFlag.UPSTREAM) && node.hasSlot(slot))
|
||||||
|
.commands()
|
||||||
|
.subscribe(presenceChannel);
|
||||||
});
|
});
|
||||||
|
|
||||||
presenceCluster.useCluster(connection -> connection.sync().sadd(MANAGER_SET_KEY, managerId));
|
presenceCluster.useCluster(connection -> connection.sync().sadd(MANAGER_SET_KEY, managerId));
|
||||||
|
@ -142,10 +147,12 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
connection.sync().del(getConnectedClientSetKey(managerId));
|
connection.sync().del(getConnectedClientSetKey(managerId));
|
||||||
});
|
});
|
||||||
|
|
||||||
pubSubConnection.usePubSubConnection(connection -> connection.sync().upstream().commands().unsubscribe(getManagerPresenceChannel(managerId)));
|
pubSubConnection.usePubSubConnection(
|
||||||
|
connection -> connection.sync().upstream().commands().unsubscribe(getManagerPresenceChannel(managerId)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPresent(final UUID accountUuid, final long deviceId, final DisplacedPresenceListener displacementListener) {
|
public void setPresent(final UUID accountUuid, final long deviceId,
|
||||||
|
final DisplacedPresenceListener displacementListener) {
|
||||||
try (final Timer.Context ignored = setPresenceTimer.time()) {
|
try (final Timer.Context ignored = setPresenceTimer.time()) {
|
||||||
final String presenceKey = getPresenceKey(accountUuid, deviceId);
|
final String presenceKey = getPresenceKey(accountUuid, deviceId);
|
||||||
|
|
||||||
|
@ -176,7 +183,8 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
|
|
||||||
public boolean isPresent(final UUID accountUuid, final long deviceId) {
|
public boolean isPresent(final UUID accountUuid, final long deviceId) {
|
||||||
try (final Timer.Context ignored = checkPresenceTimer.time()) {
|
try (final Timer.Context ignored = checkPresenceTimer.time()) {
|
||||||
return presenceCluster.withCluster(connection -> connection.sync().exists(getPresenceKey(accountUuid, deviceId))) == 1;
|
return presenceCluster.withCluster(connection ->
|
||||||
|
connection.sync().exists(getPresenceKey(accountUuid, deviceId))) == 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +211,8 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
private void subscribeForRemotePresenceChanges(final String presenceKey) {
|
private void subscribeForRemotePresenceChanges(final String presenceKey) {
|
||||||
final int slot = SlotHash.getSlot(presenceKey);
|
final int slot = SlotHash.getSlot(presenceKey);
|
||||||
|
|
||||||
pubSubConnection.usePubSubConnection(connection -> connection.sync().nodes(node -> node.is(RedisClusterNode.NodeFlag.UPSTREAM) && node.hasSlot(slot))
|
pubSubConnection.usePubSubConnection(
|
||||||
|
connection -> connection.sync().nodes(node -> node.is(RedisClusterNode.NodeFlag.UPSTREAM) && node.hasSlot(slot))
|
||||||
.commands()
|
.commands()
|
||||||
.subscribe(getKeyspaceNotificationChannel(presenceKey)));
|
.subscribe(getKeyspaceNotificationChannel(presenceKey)));
|
||||||
}
|
}
|
||||||
|
@ -215,16 +224,19 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unsubscribeFromRemotePresenceChanges(final String presenceKey) {
|
private void unsubscribeFromRemotePresenceChanges(final String presenceKey) {
|
||||||
pubSubConnection.usePubSubConnection(connection -> connection.sync().upstream().commands().unsubscribe(getKeyspaceNotificationChannel(presenceKey)));
|
pubSubConnection.usePubSubConnection(
|
||||||
|
connection -> connection.sync().upstream().commands().unsubscribe(getKeyspaceNotificationChannel(presenceKey)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void pruneMissingPeers() {
|
void pruneMissingPeers() {
|
||||||
try (final Timer.Context ignored = prunePeersTimer.time()) {
|
try (final Timer.Context ignored = prunePeersTimer.time()) {
|
||||||
final Set<String> peerIds = presenceCluster.withCluster(connection -> connection.sync().smembers(MANAGER_SET_KEY));
|
final Set<String> peerIds = presenceCluster.withCluster(
|
||||||
|
connection -> connection.sync().smembers(MANAGER_SET_KEY));
|
||||||
peerIds.remove(managerId);
|
peerIds.remove(managerId);
|
||||||
|
|
||||||
for (final String peerId : peerIds) {
|
for (final String peerId : peerIds) {
|
||||||
final boolean peerMissing = presenceCluster.withCluster(connection -> connection.sync().publish(getManagerPresenceChannel(peerId), "ping") == 0);
|
final boolean peerMissing = presenceCluster.withCluster(
|
||||||
|
connection -> connection.sync().publish(getManagerPresenceChannel(peerId), "ping") == 0);
|
||||||
|
|
||||||
if (peerMissing) {
|
if (peerMissing) {
|
||||||
log.debug("Presence manager {} did not respond to ping", peerId);
|
log.debug("Presence manager {} did not respond to ping", peerId);
|
||||||
|
@ -233,7 +245,8 @@ public class ClientPresenceManager extends RedisClusterPubSubAdapter<String, Str
|
||||||
|
|
||||||
String presenceKey;
|
String presenceKey;
|
||||||
|
|
||||||
while ((presenceKey = presenceCluster.withCluster(connection -> connection.sync().spop(connectedClientsKey))) != null) {
|
while ((presenceKey = presenceCluster.withCluster(connection -> connection.sync().spop(connectedClientsKey)))
|
||||||
|
!= null) {
|
||||||
clearPresenceScript.execute(List.of(presenceKey), List.of(peerId));
|
clearPresenceScript.execute(List.of(presenceKey), List.of(peerId));
|
||||||
pruneClientMeter.mark();
|
pruneClientMeter.mark();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue