From 8d46b75e6ce5d4b1170e575ebac74e61dcee854e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 16 Jan 2024 20:16:42 +0100 Subject: [PATCH] Eliminate OSGiDOMDataBroker Fold instantiation wiring into ConcurrentDOMDataBroker, which ends up being really simple integration. Change-Id: I70fa7a6422de11f7cbdc8c8c71e95d2410b9d1ce Signed-off-by: Robert Varga --- .../databroker/ConcurrentDOMDataBroker.java | 32 +++++++++--- .../cluster/databroker/OSGiDOMDataBroker.java | 52 ------------------- 2 files changed, 25 insertions(+), 59 deletions(-) delete mode 100644 opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/OSGiDOMDataBroker.java diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java index d208fcd5ea..d6da8487e0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java @@ -27,6 +27,7 @@ import org.opendaylight.mdsal.common.api.CommitInfo; import org.opendaylight.mdsal.common.api.DataStoreUnavailableException; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.spi.AbstractDOMDataBroker; import org.opendaylight.mdsal.dom.spi.TransactionCommitFailedExceptionMapper; @@ -34,6 +35,10 @@ import org.opendaylight.mdsal.dom.spi.store.DOMStore; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.util.DurationStatisticsTracker; import org.opendaylight.yangtools.yang.common.Empty; +import org.osgi.service.component.annotations.Activate; +import org.osgi.service.component.annotations.Component; +import org.osgi.service.component.annotations.Deactivate; +import org.osgi.service.component.annotations.Reference; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,6 +50,7 @@ import org.slf4j.LoggerFactory; * @author Thomas Pantelis */ @Beta +@Component(service = DOMDataBroker.class, property = "type=default") public class ConcurrentDOMDataBroker extends AbstractDOMDataBroker { private static final Logger LOG = LoggerFactory.getLogger(ConcurrentDOMDataBroker.class); private static final String CAN_COMMIT = "CAN_COMMIT"; @@ -70,8 +76,22 @@ public class ConcurrentDOMDataBroker extends AbstractDOMDataBroker { this.commitStatsTracker = requireNonNull(commitStatsTracker); } - public DurationStatisticsTracker getCommitStatsTracker() { - return commitStatsTracker; + @Activate + public ConcurrentDOMDataBroker(@Reference final DataBrokerCommitExecutor commitExecutor, + @Reference(target = "(type=distributed-config)") final DOMStore configDatastore, + @Reference(target = "(type=distributed-operational)") final DOMStore operDatastore) { + this(Map.of( + LogicalDatastoreType.CONFIGURATION, configDatastore, LogicalDatastoreType.OPERATIONAL, operDatastore), + commitExecutor.executor(), commitExecutor.commitStatsTracker()); + LOG.info("DOM Data Broker started"); + } + + @Override + @Deactivate + public void close() { + LOG.info("DOM Data Broker stopping"); + super.close(); + LOG.info("DOM Data Broker stopped"); } @Override @@ -82,9 +102,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMDataBroker { checkArgument(cohort != null, "Cohorts must not be null."); LOG.debug("Tx: {} is submitted for execution.", transaction.getIdentifier()); - final AsyncNotifyingSettableFuture clientSubmitFuture = - new AsyncNotifyingSettableFuture(clientFutureCallbackExecutor); - + final var clientSubmitFuture = new AsyncNotifyingSettableFuture(clientFutureCallbackExecutor); doCanCommit(clientSubmitFuture, transaction, cohort); return FluentFuture.from(clientSubmitFuture); } @@ -157,8 +175,8 @@ public class ConcurrentDOMDataBroker extends AbstractDOMDataBroker { final Exception e; if (throwable instanceof NoShardLeaderException || throwable instanceof ShardLeaderNotRespondingException) { e = new DataStoreUnavailableException(throwable.getMessage(), throwable); - } else if (throwable instanceof Exception) { - e = (Exception) throwable; + } else if (throwable instanceof Exception ex) { + e = ex; } else { e = new RuntimeException("Unexpected error occurred", throwable); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/OSGiDOMDataBroker.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/OSGiDOMDataBroker.java deleted file mode 100644 index 7788ffee3d..0000000000 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/OSGiDOMDataBroker.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.cluster.databroker; - -import com.google.common.annotations.Beta; -import java.util.Map; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.mdsal.common.api.LogicalDatastoreType; -import org.opendaylight.mdsal.dom.api.DOMDataBroker; -import org.opendaylight.mdsal.dom.spi.ForwardingDOMDataBroker; -import org.opendaylight.mdsal.dom.spi.store.DOMStore; -import org.osgi.service.component.annotations.Activate; -import org.osgi.service.component.annotations.Component; -import org.osgi.service.component.annotations.Deactivate; -import org.osgi.service.component.annotations.Reference; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@Beta -@Component(service = DOMDataBroker.class, property = "type=default") -public final class OSGiDOMDataBroker extends ForwardingDOMDataBroker { - private static final Logger LOG = LoggerFactory.getLogger(OSGiDOMDataBroker.class); - - private final @NonNull ConcurrentDOMDataBroker delegate; - - @Activate - public OSGiDOMDataBroker(@Reference final DataBrokerCommitExecutor commitExecutor, - @Reference(target = "(type=distributed-config)") final DOMStore configDatastore, - @Reference(target = "(type=distributed-operational)") final DOMStore operDatastore) { - delegate = new ConcurrentDOMDataBroker(Map.of( - LogicalDatastoreType.CONFIGURATION, configDatastore, LogicalDatastoreType.OPERATIONAL, operDatastore), - commitExecutor.executor(), commitExecutor.commitStatsTracker()); - LOG.info("DOM Data Broker started"); - } - - @Override - protected DOMDataBroker delegate() { - return delegate; - } - - @Deactivate - void deactivate() { - LOG.info("DOM Data Broker stopping"); - delegate.close(); - LOG.info("DOM Data Broker stopped"); - } -} -- 2.36.6