Code Review
/
controller.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
review
|
tree
raw
|
patch
|
inline
| side by side (from parent 1:
c434a0a
)
Bug 5419: Add persistAsync method to DataPersistenceProvider
40/48440/2
author
Tom Pantelis
<tpanteli@brocade.com>
Thu, 17 Nov 2016 07:03:26 +0000
(
02:03
-0500)
committer
Tom Pantelis
<tpanteli@brocade.com>
Tue, 22 Nov 2016 18:58:28 +0000
(18:58 +0000)
Change-Id: I7558cdbc59bb3db1d2ea6311ff37eec47efff92e
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java
patch
|
blob
|
history
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java
patch
|
blob
|
history
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DelegatingPersistentDataProvider.java
patch
|
blob
|
history
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java
patch
|
blob
|
history
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/PersistentDataProvider.java
patch
|
blob
|
history
diff --git
a/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java
b/opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java
index 378f33a2be2528071de02ad171f573fb9d791d99..238b7e77852b34f242c0d500cec206960deedba4 100644
(file)
--- a/
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java
+++ b/
opendaylight/md-sal/sal-akka-raft/src/main/java/org/opendaylight/controller/cluster/raft/RaftActorDelegatingPersistentDataProvider.java
@@
-31,22
+31,43
@@
class RaftActorDelegatingPersistentDataProvider extends DelegatingPersistentData
}
@Override
}
@Override
- public <T> void persist(final T object, final Procedure<T> procedure) {
+ public <T> void persist(final T entry, final Procedure<T> procedure) {
+ doPersist(entry, procedure, false);
+ }
+
+ @Override
+ public <T> void persistAsync(T entry, Procedure<T> procedure) {
+ doPersist(entry, procedure, true);
+ }
+
+ private <T> void doPersist(final T entry, final Procedure<T> procedure, final boolean async) {
if (getDelegate().isRecoveryApplicable()) {
if (getDelegate().isRecoveryApplicable()) {
-
super.persist(object, procedure
);
+
persistSuper(entry, procedure, async
);
} else {
} else {
- if (
object
instanceof ReplicatedLogEntry) {
- Payload payload = ((ReplicatedLogEntry)
object
).getData();
+ if (
entry
instanceof ReplicatedLogEntry) {
+ Payload payload = ((ReplicatedLogEntry)
entry
).getData();
if (payload instanceof PersistentPayload) {
// We persist the Payload but not the ReplicatedLogEntry to avoid gaps in the journal indexes
// on recovery if data persistence is later enabled.
if (payload instanceof PersistentPayload) {
// We persist the Payload but not the ReplicatedLogEntry to avoid gaps in the journal indexes
// on recovery if data persistence is later enabled.
- persistentProvider.persist(payload, p -> procedure.apply(object));
+ if (async) {
+ persistentProvider.persistAsync(payload, p -> procedure.apply(entry));
+ } else {
+ persistentProvider.persist(payload, p -> procedure.apply(entry));
+ }
} else {
} else {
-
super.persist(object, procedure
);
+
persistSuper(entry, procedure, async
);
}
} else {
}
} else {
-
super.persist(object, procedure
);
+
persistSuper(entry, procedure, async
);
}
}
}
}
}
}
+
+ private <T> void persistSuper(final T object, final Procedure<T> procedure, final boolean async) {
+ if (async) {
+ super.persistAsync(object, procedure);
+ } else {
+ super.persist(object, procedure);
+ }
+ }
}
}
diff --git
a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java
b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java
index d136d45bc7aa6bbfb4ea9d0092f24a4e849c10fe..c655dcdb891488b52f1f42741046594e9651a5e6 100644
(file)
--- a/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java
+++ b/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DataPersistenceProvider.java
@@
-26,7
+26,7
@@
public interface DataPersistenceProvider {
boolean isRecoveryApplicable();
/**
boolean isRecoveryApplicable();
/**
- * Persists an entry to
he applicable
synchronously.
+ * Persists an entry to
the applicable journal
synchronously.
*
* @param entry the journal entry to persist
* @param procedure the callback when persistence is complete
*
* @param entry the journal entry to persist
* @param procedure the callback when persistence is complete
@@
-34,6
+34,15
@@
public interface DataPersistenceProvider {
*/
<T> void persist(T entry, Procedure<T> procedure);
*/
<T> void persist(T entry, Procedure<T> procedure);
+ /**
+ * Persists an entry to the applicable journal asynchronously.
+ *
+ * @param entry the journal entry to persist
+ * @param procedure the callback when persistence is complete
+ * @param <T> the type of the journal entry
+ */
+ <T> void persistAsync(T entry, Procedure<T> procedure);
+
/**
* Saves a snapshot.
*
/**
* Saves a snapshot.
*
diff --git
a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DelegatingPersistentDataProvider.java
b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DelegatingPersistentDataProvider.java
index c513e38fc6d03bcfc19a8d903913996635955e7b..f1a20fcc8e54f4e2f4908a8ec032477a6bd89b0f 100644
(file)
--- a/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DelegatingPersistentDataProvider.java
+++ b/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/DelegatingPersistentDataProvider.java
@@
-40,6
+40,11
@@
public class DelegatingPersistentDataProvider implements DataPersistenceProvider
delegate.persist(entry, procedure);
}
delegate.persist(entry, procedure);
}
+ @Override
+ public <T> void persistAsync(T entry, Procedure<T> procedure) {
+ delegate.persistAsync(entry, procedure);
+ }
+
@Override
public void saveSnapshot(Object entry) {
delegate.saveSnapshot(entry);
@Override
public void saveSnapshot(Object entry) {
delegate.saveSnapshot(entry);
diff --git
a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java
b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java
index 91ae8f118ebeaed44154bc1531950eb792bd81e8..d4381f7cd09119b8bf1128c5ddc76d5a458f4573 100644
(file)
--- a/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java
+++ b/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/NonPersistentDataProvider.java
@@
-33,6
+33,11
@@
public class NonPersistentDataProvider implements DataPersistenceProvider {
}
}
}
}
+ @Override
+ public <T> void persistAsync(T entry, Procedure<T> procedure) {
+ persist(entry, procedure);
+ }
+
@Override
public void saveSnapshot(Object snapshot) {
// no-op
@Override
public void saveSnapshot(Object snapshot) {
// no-op
diff --git
a/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/PersistentDataProvider.java
b/opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/PersistentDataProvider.java
index b4f08c0394b38c9ef88772760b084ff5dd7db6df..1d676fa4a6577f7ff00fef4359fde56f485db3eb 100644
(file)
--- a/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/PersistentDataProvider.java
+++ b/
opendaylight/md-sal/sal-clustering-commons/src/main/java/org/opendaylight/controller/cluster/PersistentDataProvider.java
@@
-33,6
+33,11
@@
public class PersistentDataProvider implements DataPersistenceProvider {
persistentActor.persist(entry, procedure);
}
persistentActor.persist(entry, procedure);
}
+ @Override
+ public <T> void persistAsync(T entry, Procedure<T> procedure) {
+ persistentActor.persistAsync(entry, procedure);
+ }
+
@Override
public void saveSnapshot(Object snapshot) {
persistentActor.saveSnapshot(snapshot);
@Override
public void saveSnapshot(Object snapshot) {
persistentActor.saveSnapshot(snapshot);