ignite-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sboi...@apache.org
Subject [27/27] incubator-ignite git commit: ignite-688 Age related cluster group doesn't refresh dynamically
Date Tue, 07 Apr 2015 19:26:59 GMT
ignite-688 Age related cluster group doesn't refresh dynamically


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/e4794d40
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/e4794d40
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/e4794d40

Branch: refs/heads/ignite-688
Commit: e4794d40683f925b84b3a4d74cac30cd7931e698
Parents: 97ad565
Author: Andrey Gura <agura@gridgain.com>
Authored: Tue Apr 7 22:01:34 2015 +0300
Committer: Andrey Gura <agura@gridgain.com>
Committed: Tue Apr 7 22:01:34 2015 +0300

----------------------------------------------------------------------
 .../internal/cluster/ClusterGroupAdapter.java   | 73 ++++++++++++++++++--
 1 file changed, 67 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/e4794d40/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
index b93a920..f431e76 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterGroupAdapter.java
@@ -120,9 +120,9 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
      * @param ids Node IDs.
      */
     private ClusterGroupAdapter(@Nullable GridKernalContext ctx,
-                                @Nullable UUID subjId,
-                                @Nullable IgnitePredicate<ClusterNode> p,
-                                Set<UUID> ids)
+        @Nullable UUID subjId,
+        @Nullable IgnitePredicate<ClusterNode> p,
+        Set<UUID> ids)
     {
         if (ctx != null)
             setKernalContext(ctx);
@@ -320,7 +320,7 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
     }
 
     /** {@inheritDoc} */
-    @Override public final IgnitePredicate<ClusterNode> predicate() {
+    @Override public IgnitePredicate<ClusterNode> predicate() {
         return p != null ? p : F.<ClusterNode>alwaysTrue();
     }
 
@@ -809,9 +809,25 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
          * @param isOldest Oldest flag.
          */
         private AgeClusterGroup(ClusterGroupAdapter parent, boolean isOldest) {
-            super(parent.ctx, parent.subjId, parent.p, parent.ids);
+            this(parent.ctx, parent.subjId, parent.p, parent.ids, isOldest);
+        }
 
-            this.parentP = parent.p;
+        /**
+         * @param ctx Context.
+         * @param subjId Subj ID.
+         * @param p Parent predicate.
+         * @param ids Ids.
+         * @param isOldest Is oldest.
+         */
+        private AgeClusterGroup(GridKernalContext ctx,
+            UUID subjId,
+            IgnitePredicate<ClusterNode> p,
+            Set<UUID> ids,
+            boolean isOldest)
+        {
+            super(ctx, subjId, p, ids);
+
+            this.parentP = p;
             this.isOldest = isOldest;
 
             reset();
@@ -856,6 +872,14 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
         }
 
         /** {@inheritDoc} */
+        @Override public IgnitePredicate<ClusterNode> predicate() {
+            if (ctx.discovery().topologyVersion() != lastTopVer)
+                reset();
+
+            return super.predicate();
+        }
+
+        /** {@inheritDoc} */
         @Override public ClusterGroup forPredicate(IgnitePredicate<ClusterNode> p)
{
             A.notNull(p, "p");
 
@@ -874,6 +898,34 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
                 unguard();
             }
         }
+
+        /** {@inheritDoc} */
+        @Override public void writeExternal(ObjectOutput out) throws IOException {
+            super.writeExternal(out);
+
+            out.writeBoolean(isOldest);
+            out.writeObject(parentP);
+        }
+
+        /** {@inheritDoc} */
+        @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
+            super.readExternal(in);
+
+            isOldest = in.readBoolean();
+            parentP = (IgnitePredicate<ClusterNode>)in.readObject();
+        }
+
+        /**
+         * Reconstructs object on unmarshalling.
+         *
+         * @return Reconstructed object.
+         * @throws ObjectStreamException Thrown in case of unmarshalling error.
+         */
+        protected Object readResolve() throws ObjectStreamException {
+            ClusterGroupAdapter parent = (ClusterGroupAdapter)super.readResolve();
+
+            return new AgeClusterGroup(parent.ctx, parent.subjId, parentP, parent.ids, isOldest);
+        }
     }
 
     /**
@@ -900,7 +952,16 @@ public class ClusterGroupAdapter implements ClusterGroupEx, Externalizable
{
 
         /** {@inheritDoc} */
         @Override public boolean apply(ClusterNode node) {
+            A.notNull(node, "node is null");
+
             return grp.predicate().apply(node) && p.apply(node);
         }
+
+        /** {@inheritDoc} */
+        @Override public String toString() {
+            return getClass().getName() +
+                " [grp='" + grp.getClass().getName() +
+                "', p='" + p.getClass().getName() + "']";
+        }
     }
 }


Mime
View raw message