in src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java [89:123]
protected void processMessage(Event message) {
if (!WebSessionEvent.TYPE.equals(message.getType())) {
logger.atWarning().log("Skipping web session message of unknown type:{}", message.getType());
return;
}
WebSessionEvent event = (WebSessionEvent) message;
switch (event.operation) {
case ADD:
try (ByteArrayInputStream in = new ByteArrayInputStream(event.payload);
ObjectInputStream inputStream = new ObjectInputStream(in)) {
Val value = (Val) inputStream.readObject();
webSessionLogger.log(Direction.CONSUME, webSessionTopicName, event, Optional.of(value));
Instant expires = Instant.ofEpochMilli(value.getExpiresAt());
if (expires.isAfter(timeMachine.now())) {
cache.put(event.key, value);
}
} catch (IOException | ClassNotFoundException e) {
logger.atSevere().withCause(e).log("Malformed event '%s': [Exception: %s]", message);
}
break;
case REMOVE:
cache.invalidate(event.key);
webSessionLogger.log(Direction.CONSUME, webSessionTopicName, event, Optional.empty());
break;
default:
logger.atWarning().log(
"Skipping web session message of unknown operation type:{}", event.operation);
break;
}
}