* 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.clustering.it.provider;
import static akka.actor.ActorRef.noSender;
import akka.pattern.Patterns;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
-import com.google.common.util.concurrent.CheckedFuture;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import org.opendaylight.controller.clustering.it.provider.impl.YnlListener;
import org.opendaylight.controller.md.sal.binding.api.NotificationPublishService;
import org.opendaylight.controller.md.sal.binding.api.NotificationService;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker;
import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction;
import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener;
import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService;
import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.controller.sal.core.api.model.SchemaService;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
import org.opendaylight.mdsal.dom.api.DOMDataTreeLoopException;
import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
import org.opendaylight.yang.gen.v1.tag.opendaylight.org._2017.controller.yang.lowlevel.control.rev170215.AddShardReplicaInput;
private final DOMDataBroker domDataBroker;
private final NotificationPublishService notificationPublishService;
private final NotificationService notificationService;
- private final SchemaService schemaService;
+ private final DOMSchemaService schemaService;
private final ClusterSingletonServiceProvider singletonService;
private final DOMRpcProviderService domRpcService;
private final PrefixLeaderHandler prefixLeaderHandler;
public MdsalLowLevelTestProvider(final RpcProviderRegistry rpcRegistry,
final DOMRpcProviderService domRpcService,
final ClusterSingletonServiceProvider singletonService,
- final SchemaService schemaService,
+ final DOMSchemaService schemaService,
final BindingNormalizedNodeSerializer bindingNormalizedNodeSerializer,
final NotificationPublishService notificationPublishService,
final NotificationService notificationService,
final DOMDataReadOnlyTransaction rTx = domDataBroker.newReadOnlyTransaction();
try {
final Optional<NormalizedNode<?, ?>> readResult =
- rTx.read(CONTROLLER_CONFIG, WriteTransactionsHandler.ID_INT_YID).checkedGet();
+ rTx.read(CONTROLLER_CONFIG, WriteTransactionsHandler.ID_INT_YID).get();
if (!readResult.isPresent()) {
final RpcError error = RpcResultBuilder.newError(
.withRpcError(error).build());
}
+ final boolean nodesEqual = idIntsListener.checkEqual(readResult.get());
+ if (!nodesEqual) {
+ LOG.error("Final read of id-int does not match IdIntsListener's copy. {}",
+ idIntsListener.diffWithLocalCopy(readResult.get()));
+ }
+
return Futures.immediateFuture(
- RpcResultBuilder.success(new UnsubscribeDtclOutputBuilder()
- .setCopyMatches(idIntsListener.checkEqual(readResult.get()))).build());
+ RpcResultBuilder.success(new UnsubscribeDtclOutputBuilder().setCopyMatches(nodesEqual)).build());
- } catch (final ReadFailedException e) {
+ } catch (final InterruptedException | ExecutionException e) {
final RpcError error = RpcResultBuilder.newError(
ErrorType.APPLICATION, "Read failed.", "Final read from id-ints failed.");
return Futures.immediateFuture(RpcResultBuilder.<UnsubscribeDtclOutput>failed()
context.findLocalShardAsync(shardName).onComplete(new OnComplete<ActorRef>() {
@Override
- public void onComplete(final Throwable throwable, final ActorRef actorRef) throws Throwable {
+ public void onComplete(final Throwable throwable, final ActorRef actorRef) {
if (throwable != null) {
shutdownShardAsk.failure(throwable);
} else {
shutdownShardAsk.future().onComplete(new OnComplete<Boolean>() {
@Override
- public void onComplete(final Throwable throwable, final Boolean gracefulStopResult) throws Throwable {
+ public void onComplete(final Throwable throwable, final Boolean gracefulStopResult) {
if (throwable != null) {
final RpcResult<T> failedResult = RpcResultBuilder.<T>failed()
.withError(ErrorType.APPLICATION, "Failed to gracefully shutdown shard", throwable).build();
final ClientLocalHistory localHistory = distributedDataStoreClient.createLocalHistory();
final ClientTransaction tx = localHistory.createTransaction();
- final CheckedFuture<Optional<NormalizedNode<?, ?>>,
- org.opendaylight.mdsal.common.api.ReadFailedException> read =
+ final ListenableFuture<java.util.Optional<NormalizedNode<?, ?>>> read =
tx.read(YangInstanceIdentifier.of(ProduceTransactionsHandler.ID_INT));
tx.abort();
localHistory.close();
try {
- final Optional<NormalizedNode<?, ?>> optional = read.checkedGet();
+ final java.util.Optional<NormalizedNode<?, ?>> optional = read.get();
if (!optional.isPresent()) {
LOG.warn("Final read from client is empty.");
final RpcError error = RpcResultBuilder.newError(
RpcResultBuilder.success(new UnsubscribeDdtlOutputBuilder()
.setCopyMatches(idIntsDdtl.checkEqual(optional.get()))).build());
- } catch (org.opendaylight.mdsal.common.api.ReadFailedException e) {
+ } catch (InterruptedException | ExecutionException e) {
LOG.error("Unable to read data to verify ddtl data.", e);
final RpcError error = RpcResultBuilder.newError(
ErrorType.APPLICATION, "Read failed.", "Final read from id-ints failed.");