Implement 3.4.0-rc2 events broker API version
Bug: Issue 14465
Change-Id: Ibca25c7f68bf25648a5f316b77db9c59a387ee4e
diff --git a/external_plugin_deps.bzl b/external_plugin_deps.bzl
index 63b890d..4501db7 100644
--- a/external_plugin_deps.bzl
+++ b/external_plugin_deps.bzl
@@ -16,8 +16,8 @@
maven_jar(
name = "events-broker",
- artifact = "com.gerritforge:events-broker:3.4.0-rc0",
- sha1 = "8c34c88103d4783eb4c4decde6d93541bc1cf064",
+ artifact = "com.gerritforge:events-broker:3.4.0-rc2",
+ sha1 = "f72b4166e6d785fd1a41c997a4ffb14461dd7d87",
)
maven_jar(
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java b/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
index 678d246..bc78599 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/websession/broker/BrokerBasedWebSessionCache.java
@@ -20,6 +20,10 @@
import com.google.common.cache.CacheStats;
import com.google.common.collect.ImmutableMap;
import com.google.common.flogger.FluentLogger;
+import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.MoreExecutors;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.annotations.PluginName;
import com.google.gerrit.extensions.events.LifecycleListener;
@@ -246,7 +250,6 @@
@Override
public void run() {
- boolean succeeded = false;
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(out)) {
@@ -255,14 +258,27 @@
byte[] serializedObject = out.toByteArray();
WebSessionEvent webSessionEvent = new WebSessionEvent(key, serializedObject, operation);
EventMessage message = brokerApi.get().newMessage(UUID.randomUUID(), webSessionEvent);
- succeeded = brokerApi.get().send(webSessionTopicName, message);
- if (succeeded) {
- webSessionLogger.log(
- Direction.PUBLISH, webSessionTopicName, webSessionEvent, Optional.ofNullable(value));
- } else {
- logger.atSevere().log(
- "Cannot send web-session message for '%s Topic: '%s'", key, webSessionTopicName);
- }
+ ListenableFuture<Boolean> resultF = brokerApi.get().send(webSessionTopicName, message);
+ Futures.addCallback(
+ resultF,
+ new FutureCallback<Boolean>() {
+ @Override
+ public void onSuccess(Boolean aBoolean) {
+ webSessionLogger.log(
+ Direction.PUBLISH,
+ webSessionTopicName,
+ webSessionEvent,
+ Optional.ofNullable(value));
+ }
+
+ @Override
+ public void onFailure(Throwable throwable) {
+ logger.atSevere().log(
+ "Cannot send web-session message for '%s Topic: '%s'",
+ key, webSessionTopicName);
+ }
+ },
+ MoreExecutors.directExecutor());
} catch (IOException e) {
logger.atSevere().withCause(e).log(
"Cannot serialize event for account id '%s': [Exception: %s]", value.getAccountId());