EdgeGrpcService - destroy if previous session exists
This commit is contained in:
parent
1eea7e71ec
commit
cce9b8f24d
@ -335,6 +335,9 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
|
|||||||
Edge edge = edgeGrpcSession.getEdge();
|
Edge edge = edgeGrpcSession.getEdge();
|
||||||
TenantId tenantId = edge.getTenantId();
|
TenantId tenantId = edge.getTenantId();
|
||||||
log.info("[{}][{}] edge [{}] connected successfully.", tenantId, edgeGrpcSession.getSessionId(), edgeId);
|
log.info("[{}][{}] edge [{}] connected successfully.", tenantId, edgeGrpcSession.getSessionId(), edgeId);
|
||||||
|
if (sessions.containsKey(edgeId)) {
|
||||||
|
destroySession(sessions.get(edgeId));
|
||||||
|
}
|
||||||
sessions.put(edgeId, edgeGrpcSession);
|
sessions.put(edgeId, edgeGrpcSession);
|
||||||
final Lock newEventLock = sessionNewEventsLocks.computeIfAbsent(edgeId, id -> new ReentrantLock());
|
final Lock newEventLock = sessionNewEventsLocks.computeIfAbsent(edgeId, id -> new ReentrantLock());
|
||||||
newEventLock.lock();
|
newEventLock.lock();
|
||||||
@ -503,7 +506,7 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
|
|||||||
} finally {
|
} finally {
|
||||||
newEventLock.unlock();
|
newEventLock.unlock();
|
||||||
}
|
}
|
||||||
toRemove.destroy();
|
destroySession(toRemove);
|
||||||
TenantId tenantId = toRemove.getEdge().getTenantId();
|
TenantId tenantId = toRemove.getEdge().getTenantId();
|
||||||
save(tenantId, edgeId, ACTIVITY_STATE, false);
|
save(tenantId, edgeId, ACTIVITY_STATE, false);
|
||||||
long lastDisconnectTs = System.currentTimeMillis();
|
long lastDisconnectTs = System.currentTimeMillis();
|
||||||
@ -516,6 +519,12 @@ public class EdgeGrpcService extends EdgeRpcServiceGrpc.EdgeRpcServiceImplBase i
|
|||||||
edgeIdServiceIdCache.evict(edgeId);
|
edgeIdServiceIdCache.evict(edgeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void destroySession(EdgeGrpcSession session) {
|
||||||
|
try (session) {
|
||||||
|
session.destroy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void save(TenantId tenantId, EdgeId edgeId, String key, long value) {
|
private void save(TenantId tenantId, EdgeId edgeId, String key, long value) {
|
||||||
log.debug("[{}][{}] Updating long edge telemetry [{}] [{}]", tenantId, edgeId, key, value);
|
log.debug("[{}][{}] Updating long edge telemetry [{}] [{}]", tenantId, edgeId, key, value);
|
||||||
if (persistToTelemetry) {
|
if (persistToTelemetry) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user