Repository: jclouds-labs
Updated Branches:
  refs/heads/2.0.x e4c809dbd -> 66bed4b31


Remove terminated nodes cache

Used to keep terminated nodes meta for a short while, but not needed.
Also adds missing state transitions on halt, reboot.


Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs/commit/66bed4b3
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs/tree/66bed4b3
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs/diff/66bed4b3

Branch: refs/heads/2.0.x
Commit: 66bed4b31039d140f813cb9c425cec34b4d77cb9
Parents: e4c809d
Author: Svetoslav Neykov <[email protected]>
Authored: Thu Feb 2 11:07:43 2017 +0200
Committer: Ignasi Barrera <[email protected]>
Committed: Thu Feb 2 15:01:33 2017 +0100

----------------------------------------------------------------------
 .../compute/VagrantComputeServiceAdapter.java   |  2 +
 .../VagrantComputeServiceContextModule.java     | 13 ----
 .../vagrant/internal/VagrantNodeRegistry.java   | 77 +++-----------------
 .../internal/VagrantNodeRegistryTest.java       | 20 +----
 4 files changed, 12 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/66bed4b3/vagrant/src/main/java/org/jclouds/vagrant/compute/VagrantComputeServiceAdapter.java
----------------------------------------------------------------------
diff --git 
a/vagrant/src/main/java/org/jclouds/vagrant/compute/VagrantComputeServiceAdapter.java
 
b/vagrant/src/main/java/org/jclouds/vagrant/compute/VagrantComputeServiceAdapter.java
index 2f19b3e..d707ee6 100644
--- 
a/vagrant/src/main/java/org/jclouds/vagrant/compute/VagrantComputeServiceAdapter.java
+++ 
b/vagrant/src/main/java/org/jclouds/vagrant/compute/VagrantComputeServiceAdapter.java
@@ -311,6 +311,7 @@ public class VagrantComputeServiceAdapter implements 
ComputeServiceAdapter<Vagra
       String name = node.name();
       VagrantApiFacade vagrant = getMachine(node);
       vagrant.up(name);
+      node.setMachineState(Status.RUNNING);
    }
 
    private void halt(String id) {
@@ -320,6 +321,7 @@ public class VagrantComputeServiceAdapter implements 
ComputeServiceAdapter<Vagra
 
       try {
          vagrant.halt(name);
+         node.setMachineState(Status.SUSPENDED);
       } catch (IllegalStateException e) {
          logger.warn(e, "Failed graceful shutdown of machine " + id + ". Will 
try to halt it forcefully instead.");
          vagrant.haltForced(name);

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/66bed4b3/vagrant/src/main/java/org/jclouds/vagrant/config/VagrantComputeServiceContextModule.java
----------------------------------------------------------------------
diff --git 
a/vagrant/src/main/java/org/jclouds/vagrant/config/VagrantComputeServiceContextModule.java
 
b/vagrant/src/main/java/org/jclouds/vagrant/config/VagrantComputeServiceContextModule.java
index bb122e4..f66c2db 100644
--- 
a/vagrant/src/main/java/org/jclouds/vagrant/config/VagrantComputeServiceContextModule.java
+++ 
b/vagrant/src/main/java/org/jclouds/vagrant/config/VagrantComputeServiceContextModule.java
@@ -28,7 +28,6 @@ import org.jclouds.compute.domain.NodeMetadata;
 import org.jclouds.compute.domain.internal.ArbitraryCpuRamTemplateBuilderImpl;
 import org.jclouds.compute.domain.internal.TemplateBuilderImpl;
 import 
org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
-import org.jclouds.date.TimeStamp;
 import org.jclouds.domain.Location;
 import org.jclouds.functions.IdentityFunction;
 import org.jclouds.vagrant.api.VagrantApiFacade;
@@ -48,7 +47,6 @@ import org.jclouds.vagrant.suppliers.VagrantHardwareSupplier;
 import com.google.common.base.Function;
 import com.google.common.base.Supplier;
 import com.google.inject.Module;
-import com.google.inject.Provides;
 import com.google.inject.Singleton;
 import com.google.inject.TypeLiteral;
 import com.google.inject.assistedinject.FactoryModuleBuilder;
@@ -94,17 +92,6 @@ public class VagrantComputeServiceContextModule extends 
ComputeServiceAdapterCon
       
bind(CommandIOListener.class).to(VagrantWireLogger.class).in(Singleton.class);
    }
 
-   @Provides
-   @TimeStamp
-   public Supplier<Long> timeSupplier() {
-      return new Supplier<Long>() {
-         @Override
-         public Long get() {
-            return System.currentTimeMillis();
-         }
-      };
-   }
-
    @Override
    protected void install(Module module) {
       // override PersistNodeCredentialsModule bindings, any better way to do 
it?

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/66bed4b3/vagrant/src/main/java/org/jclouds/vagrant/internal/VagrantNodeRegistry.java
----------------------------------------------------------------------
diff --git 
a/vagrant/src/main/java/org/jclouds/vagrant/internal/VagrantNodeRegistry.java 
b/vagrant/src/main/java/org/jclouds/vagrant/internal/VagrantNodeRegistry.java
index 8355b2d..d9447c8 100644
--- 
a/vagrant/src/main/java/org/jclouds/vagrant/internal/VagrantNodeRegistry.java
+++ 
b/vagrant/src/main/java/org/jclouds/vagrant/internal/VagrantNodeRegistry.java
@@ -19,11 +19,7 @@ package org.jclouds.vagrant.internal;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.DelayQueue;
-import java.util.concurrent.Delayed;
-import java.util.concurrent.TimeUnit;
 
-import org.jclouds.date.TimeStamp;
 import org.jclouds.vagrant.domain.VagrantNode;
 
 import com.google.common.base.Supplier;
@@ -33,8 +29,6 @@ import com.google.inject.Singleton;
 
 @Singleton
 public class VagrantNodeRegistry {
-   private static final long TERMINATED_NODES_EXPIRY_MS = 
TimeUnit.MINUTES.toMillis(5);
-   private static final long VACUUM_PERIOD_MS = TimeUnit.SECONDS.toMillis(15);
 
    private static class ConcurrentWrapperSupplier implements 
Supplier<Map<String, VagrantNode>> {
       private Supplier<Collection<VagrantNode>> existingMachines;
@@ -54,84 +48,31 @@ public class VagrantNodeRegistry {
 
    }
 
-   private static class TerminatedNode implements Delayed {
-      Supplier<Long> timeSupplier;
-      long expiryTime;
-      VagrantNode node;
-
-      TerminatedNode(VagrantNode node, Supplier<Long> timeSupplier) {
-         this.expiryTime = System.currentTimeMillis() + 
TERMINATED_NODES_EXPIRY_MS;
-         this.node = node;
-         this.timeSupplier = timeSupplier;
-      }
-      @Override
-      public int compareTo(Delayed o) {
-         if (this == o) {
-            return 0;
-         } else if (o instanceof TerminatedNode) {
-            TerminatedNode other = (TerminatedNode)o;
-            if (expiryTime < other.expiryTime) {
-               return -1;
-            } else if (expiryTime > other.expiryTime) {
-               return 1;
-            } else {
-               return 0;
-            }
-         } else {
-            long diff = getDelay(TimeUnit.NANOSECONDS) - 
o.getDelay(TimeUnit.NANOSECONDS);
-            if (diff < 0) {
-               return -1;
-            } else if (diff > 0) {
-               return 1;
-            } else {
-               return 0;
-            }
-         }
-      }
-      @Override
-      public long getDelay(TimeUnit unit) {
-         return unit.convert(expiryTime - timeSupplier.get(), 
TimeUnit.MILLISECONDS);
-      }
-   }
-
-   private final DelayQueue<TerminatedNode> terminatedNodes = new 
DelayQueue<TerminatedNode>();
    private final Supplier<Map<String, VagrantNode>> nodes;
 
-   private volatile long lastVacuumMs;
-   private final Supplier<Long> timeSupplier;
-
    @Inject
-   VagrantNodeRegistry(@TimeStamp Supplier<Long> timeSupplier, 
Supplier<Collection<VagrantNode>> existingMachines) {
-      this.timeSupplier = timeSupplier;
+   VagrantNodeRegistry(Supplier<Collection<VagrantNode>> existingMachines) {
       this.nodes = Suppliers.memoize(new 
ConcurrentWrapperSupplier(existingMachines));
    }
 
    public VagrantNode get(String id) {
-      vacuum();
-      return nodes.get().get(id);
-   }
-
-   protected void vacuum() {
-      // No need to lock on lastVacuumMs - not critical if we miss/do double 
vacuuming.
-      if (timeSupplier.get() - lastVacuumMs > VACUUM_PERIOD_MS) {
-         TerminatedNode terminated;
-         while ((terminated = terminatedNodes.poll()) != null) {
-            nodes.get().remove(terminated.node.id());
-         }
-         lastVacuumMs = timeSupplier.get();
-      }
+      return nodes().get(id);
    }
 
    public void add(VagrantNode node) {
-      nodes.get().put(node.id(), node);
+      nodes().put(node.id(), node);
    }
 
    public Collection<VagrantNode> list() {
-      return nodes.get().values();
+      return nodes().values();
    }
 
    public void onTerminated(VagrantNode node) {
-      terminatedNodes.add(new TerminatedNode(node, timeSupplier));
+      nodes().remove(node.id());
+   }
+
+   private Map<String, VagrantNode> nodes() {
+      return nodes.get();
    }
 
 }

http://git-wip-us.apache.org/repos/asf/jclouds-labs/blob/66bed4b3/vagrant/src/test/java/org/jclouds/vagrant/internal/VagrantNodeRegistryTest.java
----------------------------------------------------------------------
diff --git 
a/vagrant/src/test/java/org/jclouds/vagrant/internal/VagrantNodeRegistryTest.java
 
b/vagrant/src/test/java/org/jclouds/vagrant/internal/VagrantNodeRegistryTest.java
index 4ad492a..29b6dd9 100644
--- 
a/vagrant/src/test/java/org/jclouds/vagrant/internal/VagrantNodeRegistryTest.java
+++ 
b/vagrant/src/test/java/org/jclouds/vagrant/internal/VagrantNodeRegistryTest.java
@@ -20,7 +20,6 @@ import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNull;
 
 import java.io.File;
-import java.util.concurrent.TimeUnit;
 
 import org.easymock.EasyMock;
 import org.jclouds.compute.domain.Hardware;
@@ -33,23 +32,9 @@ import org.jclouds.compute.domain.Processor;
 import org.jclouds.vagrant.domain.VagrantNode;
 import org.testng.annotations.Test;
 
-import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableList;
 
 public class VagrantNodeRegistryTest {
-   private static class TestTimeSupplier implements Supplier<Long> {
-      long time = System.currentTimeMillis();
-
-      @Override
-      public Long get() {
-         return time;
-      }
-
-      public void advanceTime(long add) {
-         time += add;
-      }
-
-   }
 
    @Test
    public void testNodeRegistry() {
@@ -57,8 +42,7 @@ public class VagrantNodeRegistryTest {
       EasyMock.expect(loader.get()).andReturn(ImmutableList.<VagrantNode>of());
       EasyMock.replay(loader);
 
-      TestTimeSupplier timeSupplier = new TestTimeSupplier();
-      VagrantNodeRegistry registry = new VagrantNodeRegistry(timeSupplier, 
loader);
+      VagrantNodeRegistry registry = new VagrantNodeRegistry(loader);
       OperatingSystem os = new OperatingSystem(OsFamily.UNRECOGNIZED, "Jclouds 
OS", "10", "x64", "Jclouds Test Image", true);
       Image image = new ImageBuilder()
             .ids("jclouds/box")
@@ -83,8 +67,6 @@ public class VagrantNodeRegistryTest {
       registry.add(node);
       assertEquals(registry.get(node.id()), node);
       registry.onTerminated(node);
-      assertEquals(registry.get(node.id()), node);
-      timeSupplier.advanceTime(TimeUnit.MINUTES.toMillis(10));
       assertNull(registry.get(node.id()));
    }
 }

Reply via email to