You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by gr...@apache.org on 2016/01/25 22:17:55 UTC
[03/35] usergrid git commit: Remove unused zookeeper lock manager.
Remove unused zookeeper lock manager.
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/8849d8eb
Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/8849d8eb
Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/8849d8eb
Branch: refs/heads/USERGRID-1047
Commit: 8849d8eb2cb443a70e4ad37c4dae119bb198ece4
Parents: 56eb80f
Author: Michael Russo <mi...@gmail.com>
Authored: Wed Jan 13 09:13:39 2016 -0800
Committer: Michael Russo <mi...@gmail.com>
Committed: Wed Jan 13 09:13:39 2016 -0800
----------------------------------------------------------------------
.../src/test/resources/usergrid-test.properties | 5 -
stack/core/pom.xml | 5 -
.../zookeeper/ZooKeeperLockManagerImpl.java | 115 --------
.../locking/zookeeper/ZookeeperLockImpl.java | 88 ------
.../main/resources/usergrid-core-context.xml | 8 -
.../zookeeper/AbstractZooKeeperTest.java | 127 ---------
.../usergrid/locking/zookeeper/ZooPut.java | 114 --------
.../zookeeper/ZookeeperLockManagerTest.java | 186 -------------
.../resources/usergrid-standalone.properties | 4 -
stack/pom.xml | 32 ---
.../test/resources/testApplicationContext.xml | 271 +++++++++----------
11 files changed, 135 insertions(+), 820 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/config/src/test/resources/usergrid-test.properties
----------------------------------------------------------------------
diff --git a/stack/config/src/test/resources/usergrid-test.properties b/stack/config/src/test/resources/usergrid-test.properties
index 111c750..0824673 100644
--- a/stack/config/src/test/resources/usergrid-test.properties
+++ b/stack/config/src/test/resources/usergrid-test.properties
@@ -114,11 +114,6 @@ usergrid.binary.bucketname=usergrid-test-bucket
# Where to store temporary files
usergrid.temp.files=/tmp/usergrid
-# Zookeeper instances
-zookeeper.hosts=localhost:2180
-zookeeper.sessionTimeout = 3000
-zookeeper.maxAttempts = 3
-
swagger.basepath=http://localhost:8080
AWS_ACCESS_KEY_ID=
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/pom.xml
----------------------------------------------------------------------
diff --git a/stack/core/pom.xml b/stack/core/pom.xml
index 7f7dcfb..ae9f915 100644
--- a/stack/core/pom.xml
+++ b/stack/core/pom.xml
@@ -177,11 +177,6 @@
<artifactId>commons-beanutils</artifactId>
</dependency>
- <dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- </dependency>
-
<!-- SUN, Javax Package, and Other Commercial Dependencies -->
<dependency>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZooKeeperLockManagerImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZooKeeperLockManagerImpl.java b/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZooKeeperLockManagerImpl.java
deleted file mode 100644
index 018e639..0000000
--- a/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZooKeeperLockManagerImpl.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.locking.zookeeper;
-
-
-import java.util.UUID;
-
-import javax.annotation.PostConstruct;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.usergrid.locking.Lock;
-import org.apache.usergrid.locking.LockManager;
-import org.apache.usergrid.locking.LockPathBuilder;
-
-import com.netflix.curator.RetryPolicy;
-import com.netflix.curator.framework.CuratorFramework;
-import com.netflix.curator.framework.CuratorFrameworkFactory;
-import com.netflix.curator.framework.recipes.locks.InterProcessMutex;
-import com.netflix.curator.retry.ExponentialBackoffRetry;
-
-
-/** Implementation for Zookeeper service that handles global locks. */
-public final class ZooKeeperLockManagerImpl implements LockManager {
-
- private String hostPort;
-
- private int sessionTimeout = 2000;
-
- private int maxAttempts = 5;
-
- private CuratorFramework client;
-
-
- public ZooKeeperLockManagerImpl( String hostPort, int sessionTimeout, int maxAttemps ) {
- this.hostPort = hostPort;
- this.sessionTimeout = sessionTimeout;
- this.maxAttempts = maxAttemps;
- init();
- }
-
-
- public ZooKeeperLockManagerImpl() {
- }
-
-
- @PostConstruct
- public void init() {
- RetryPolicy retryPolicy = new ExponentialBackoffRetry( sessionTimeout, maxAttempts );
- client = CuratorFrameworkFactory.newClient( hostPort, retryPolicy );
- client.start();
- }
-
-
- protected static final Logger logger = LoggerFactory.getLogger( ZooKeeperLockManagerImpl.class );
-
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.usergrid.locking.LockManager#createLock(java.util.UUID,
- * java.lang.String[])
- */
- @Override
- public Lock createLock( UUID applicationId, String... path ) {
- String lockPath = LockPathBuilder.buildPath( applicationId, path );
-
-
- return new ZookeeperLockImpl( new InterProcessMutex( client, lockPath ) );
- }
-
-
- public String getHostPort() {
- return hostPort;
- }
-
-
- public void setHostPort( String hostPort ) {
- this.hostPort = hostPort;
- }
-
-
- public int getSessionTimeout() {
- return sessionTimeout;
- }
-
-
- public void setSessionTimeout( int sessionTimeout ) {
- this.sessionTimeout = sessionTimeout;
- }
-
-
- public int getMaxAttempts() {
- return maxAttempts;
- }
-
-
- public void setMaxAttempts( int maxAttemps ) {
- this.maxAttempts = maxAttemps;
- }
-}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockImpl.java
----------------------------------------------------------------------
diff --git a/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockImpl.java b/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockImpl.java
deleted file mode 100644
index a4aab31..0000000
--- a/stack/core/src/main/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.locking.zookeeper;
-
-
-import java.util.concurrent.TimeUnit;
-
-import org.apache.usergrid.locking.Lock;
-import org.apache.usergrid.locking.exception.UGLockException;
-
-import com.netflix.curator.framework.recipes.locks.InterProcessMutex;
-
-
-/**
- * Wrapper for locks using curator
- *
- * @author tnine
- */
-public class ZookeeperLockImpl implements Lock {
-
-
- private InterProcessMutex zkMutex;
-
-
- /**
- *
- */
- public ZookeeperLockImpl( InterProcessMutex zkMutex ) {
- this.zkMutex = zkMutex;
- }
-
-
- /* (non-Javadoc)
- * @see org.apache.usergrid.locking.Lock#tryLock(long, java.util.concurrent.TimeUnit)
- */
- @Override
- public boolean tryLock( long timeout, TimeUnit time ) throws UGLockException {
-
- try {
- return zkMutex.acquire( timeout, time );
- }
- catch ( Exception e ) {
- throw new UGLockException( "Unable to obtain lock", e );
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.apache.usergrid.locking.Lock#lock()
- */
- @Override
- public void lock() throws UGLockException {
- try {
- zkMutex.acquire();
- }
- catch ( Exception e ) {
- throw new UGLockException( "Unable to obtain lock", e );
- }
- }
-
-
- /* (non-Javadoc)
- * @see org.apache.usergrid.locking.Lock#unlock()
- */
- @Override
- public void unlock() throws UGLockException {
- try {
- zkMutex.release();
- }
- catch ( Exception e ) {
- throw new UGLockException( "Unable to obtain lock", e );
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/main/resources/usergrid-core-context.xml
----------------------------------------------------------------------
diff --git a/stack/core/src/main/resources/usergrid-core-context.xml b/stack/core/src/main/resources/usergrid-core-context.xml
index 57d4de7..dc52b70 100644
--- a/stack/core/src/main/resources/usergrid-core-context.xml
+++ b/stack/core/src/main/resources/usergrid-core-context.xml
@@ -88,14 +88,6 @@
<property name="defaultWriteConsistencyLevel" value="${cassandra.lock.writecl}"/>
</bean>
- <!-- zookeeper locks -->
- <!--
- <bean orgAppName="lockManager" class="org.apache.usergrid.locking.zookeeper.ZooKeeperLockManagerImpl" >
- <property orgAppName="hostPort" value="${zookeeper.url}"/>
- <property orgAppName="sessionTimeout" value="2000"/>
- <property orgAppName="maxAttempts" value="10"/>
- </bean> -->
-
<bean id="injector"
class="org.apache.usergrid.corepersistence.GuiceFactory">
</bean>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/AbstractZooKeeperTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/AbstractZooKeeperTest.java b/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/AbstractZooKeeperTest.java
deleted file mode 100644
index 9ff1a33..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/AbstractZooKeeperTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.locking.zookeeper;
-
-
-import java.io.File;
-import java.net.InetSocketAddress;
-
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.zookeeper.server.ServerConfig;
-import org.apache.zookeeper.server.ZooKeeperServerMain;
-
-
-/** Base test class for ZooKeeper tests. */
-public abstract class AbstractZooKeeperTest {
-
- public static final String ZOO_KEEPER_HOST = "localhost:20181/";
-
- private static final Logger logger = LoggerFactory.getLogger( AbstractZooKeeperTest.class );
-
-
- static class ZKServerMain extends ZooKeeperServerMain {
- @Override
- public void shutdown() {
- super.shutdown();
- }
- }
-
-
- protected static ZKServerMain zkServer = new ZKServerMain();
-
- protected static File tmpDir = new File( "./zk_tmp" );
-
- protected int clientPort;
-
-
- @BeforeClass
- public static void before() throws Exception {
- // we don't call super.setUp
- System.setProperty( "zkHost", ZOO_KEEPER_HOST );
- Thread zooThread = new Thread() {
- @Override
- public void run() {
- ServerConfig config = null;
-
- config = new ServerConfig() {
- {
- clientPortAddress = new InetSocketAddress( "localhost", 20181 );
- dataDir = tmpDir.getAbsolutePath() + File.separator + "zookeeper/server1/data";
- dataLogDir = dataDir;
- // this.maxClientCnxns = 50;
- // this.tickTime = 2000;
- }
- };
-
- try {
- zkServer.runFromConfig( config );
- logger.info( "ZOOKEEPER EXIT" );
- }
- catch ( Throwable e ) {
- logger.error("Error on zkServer.runFromConfig", e);
- throw new RuntimeException( e );
- }
- }
- };
-
- zooThread.setDaemon( true );
- zooThread.start();
- Thread.sleep( 500 ); // pause for ZooKeeper to start
-
- buildZooKeeper();
-
- logger.info( "Zookeeper initialized." );
- }
-
-
- public static void buildZooKeeper() throws Exception {
- ZooPut zooPut = new ZooPut( ZOO_KEEPER_HOST.substring( 0, ZOO_KEEPER_HOST.indexOf( '/' ) ) );
- // TODO read a system property to get the app root path if
- // needed.
- // zooPut.makePath("/somepath");
- zooPut.close();
- }
-
-
- @AfterClass
- public static void after() throws Exception {
- zkServer.shutdown();
-
- // Remove test data.
- boolean deletedData = recurseDelete( tmpDir );
- if ( !deletedData ) {
- logger.warn( "Zk testing data was not removed properly. You need to" + "manually remove:" + tmpDir
- .getAbsolutePath() );
- }
- }
-
-
- public static boolean recurseDelete( File f ) {
- if ( f.isDirectory() ) {
- for ( File sub : f.listFiles() ) {
- if ( !recurseDelete( sub ) ) {
- return false;
- }
- }
- }
- return f.delete();
- }
-}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZooPut.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZooPut.java b/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZooPut.java
deleted file mode 100644
index 5ef3b05..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZooPut.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.locking.zookeeper;
-
-
-import java.io.IOException;
-
-import org.apache.zookeeper.CreateMode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.WatchedEvent;
-import org.apache.zookeeper.Watcher;
-import org.apache.zookeeper.Watcher.Event.KeeperState;
-import org.apache.zookeeper.ZooDefs;
-import org.apache.zookeeper.ZooKeeper;
-
-
-/** Util for uploading and updating files in ZooKeeper. */
-public class ZooPut implements Watcher {
-
- private ZooKeeper keeper;
-
- private boolean closeKeeper = true;
-
- private boolean connected = false;
-
-
- public ZooPut( String host ) throws IOException {
- keeper = new ZooKeeper( host, 10000, this );
- // TODO: nocommit: this is asynchronous - think about how to deal with
- // connection
- // lost, and other failures
- synchronized ( this ) {
- while ( !connected ) {
- try {
- this.wait();
- }
- catch ( InterruptedException e ) {
- // nocommit
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- }
-
-
- public ZooPut( ZooKeeper keeper ) throws IOException {
- this.closeKeeper = false;
- this.keeper = keeper;
- }
-
-
- public void close() throws InterruptedException {
- if ( closeKeeper ) {
- keeper.close();
- }
- }
-
-
- public void makePath( String path ) throws KeeperException, InterruptedException {
- makePath( path, CreateMode.PERSISTENT );
- }
-
-
- public void makePath( String path, CreateMode createMode ) throws KeeperException, InterruptedException {
- // nocommit
- System.out.println( "make:" + path );
-
- if ( path.startsWith( "/" ) ) {
- path = path.substring( 1, path.length() );
- }
- String[] paths = path.split( "/" );
- StringBuilder sbPath = new StringBuilder();
- for ( int i = 0; i < paths.length; i++ ) {
- String pathPiece = paths[i];
- sbPath.append("/").append(pathPiece);
- String currentPath = sbPath.toString();
- Object exists = keeper.exists( currentPath, null );
- if ( exists == null ) {
- CreateMode mode = CreateMode.PERSISTENT;
- if ( i == paths.length - 1 ) {
- mode = createMode;
- }
- keeper.create( currentPath, null, ZooDefs.Ids.OPEN_ACL_UNSAFE, mode );
- }
- }
- }
-
-
- @Override
- public void process( WatchedEvent event ) {
- // nocommit: consider how we want to accomplish this
- if ( event.getState() == KeeperState.SyncConnected ) {
- synchronized ( this ) {
- connected = true;
- this.notify();
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockManagerTest.java
----------------------------------------------------------------------
diff --git a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockManagerTest.java b/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockManagerTest.java
deleted file mode 100644
index c74f6f8..0000000
--- a/stack/core/src/test/java/org/apache/usergrid/locking/zookeeper/ZookeeperLockManagerTest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.usergrid.locking.zookeeper;
-
-
-import java.util.UUID;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import org.apache.usergrid.locking.Lock;
-import org.apache.usergrid.locking.LockManager;
-import org.apache.usergrid.locking.exception.UGLockException;
-
-import net.jcip.annotations.NotThreadSafe;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-
-@NotThreadSafe
-public class ZookeeperLockManagerTest extends AbstractZooKeeperTest {
-
- private static final Logger logger = LoggerFactory.getLogger( ZookeeperLockManagerTest.class );
-
- private static LockManager manager;
-
- private static ExecutorService pool;
-
-
- @BeforeClass
- public static void setup() throws Exception {
-
- // AbstractZooKeeperTest.before();
-
- ZooKeeperLockManagerImpl lockImpl = new ZooKeeperLockManagerImpl();
- lockImpl.setHostPort( "localhost:20181" );
- lockImpl.setMaxAttempts( 1000 );
- lockImpl.setSessionTimeout( 2 );
-
- lockImpl.init();
-
- manager = lockImpl;
- }
-
-
- @Before
- public void start() {
- // Create a different thread to lock the same node, that is held by the main thread.
- pool = Executors.newFixedThreadPool( 1 );
- }
-
-
- @After
- public void tearDown() throws Exception {
- pool.shutdownNow();
- }
-
-
- /** Locks a path and launches a thread which also locks the same path. */
- @Test
- public void testLock() throws InterruptedException, ExecutionException, UGLockException {
-
- final UUID application = UUID.randomUUID();
- final UUID entity = UUID.randomUUID();
-
- logger.info( "Locking:" + application.toString() + "/" + entity.toString() );
-
- // Lock a node twice to test reentrancy and validate.
- Lock lock = manager.createLock( application, entity.toString() );
- lock.lock();
- lock.lock();
-
- boolean wasLocked = lockInDifferentThread( application, entity );
- Assert.assertEquals( false, wasLocked );
-
- // Unlock once
- lock.unlock();
-
- // Try from the thread expecting to fail since we still hold one reentrant
- // lock.
- wasLocked = lockInDifferentThread( application, entity );
- assertFalse( wasLocked );
-
- // Unlock completely
- logger.info( "Releasing lock:" + application.toString() + "/" + entity.toString() );
- lock.unlock();
-
- // Try to effectively get the lock from the thread since the current one has
- // already released it.
- wasLocked = lockInDifferentThread( application, entity );
- Assert.assertEquals( true, wasLocked );
- }
-
-
- /** Locks a couple of times and try to clean up. Later oin another thread successfully acquire the lock */
- @Test
- public void testLock2() throws InterruptedException, ExecutionException, UGLockException {
-
- final UUID application = UUID.randomUUID();
- final UUID entity = UUID.randomUUID();
- final UUID entity2 = UUID.randomUUID();
-
- logger.info( "Locking:" + application.toString() + "/" + entity.toString() );
-
- // Acquire to locks. One of them twice.
- Lock lock = manager.createLock( application, entity.toString() );
- lock.lock();
- lock.lock();
-
- Lock second = manager.createLock( application, entity2.toString() );
- second.lock();
-
- // Cleanup the locks for main thread
- logger.info( "Cleaning up locks for current thread..." );
- lock.unlock();
- lock.unlock();
- second.unlock();
-
- boolean locked = lockInDifferentThread( application, entity );
- assertTrue( locked );
-
- locked = lockInDifferentThread( application, entity2 );
- assertTrue( locked );
- }
-
-
- /** Acquires a lock in a different thread. */
- private boolean lockInDifferentThread( final UUID application, final UUID entity ) {
- Future<Boolean> status = pool.submit( new Callable<Boolean>() {
-
- @Override
- public Boolean call() throws Exception {
-
- Lock lock = manager.createLock( application, entity.toString() );
-
- // False here means that the lock WAS NOT ACQUIRED. And that is
- // what we expect.
-
- boolean locked = lock.tryLock( 0, TimeUnit.MILLISECONDS );
-
- // shouldn't lock, so unlock to avoid polluting future tests
- if ( locked ) {
- lock.unlock();
- }
-
- return locked;
- }
- } );
-
- boolean wasLocked = true;
- try {
- wasLocked = status.get( 2, TimeUnit.SECONDS );
- }
- catch ( Exception e ) {
- wasLocked = false;
- }
-
- return wasLocked;
- }
-}
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/launcher/src/main/resources/usergrid-standalone.properties
----------------------------------------------------------------------
diff --git a/stack/launcher/src/main/resources/usergrid-standalone.properties b/stack/launcher/src/main/resources/usergrid-standalone.properties
index c81437a..86c183c 100644
--- a/stack/launcher/src/main/resources/usergrid-standalone.properties
+++ b/stack/launcher/src/main/resources/usergrid-standalone.properties
@@ -101,10 +101,6 @@ usergrid.sysadmin.approve.organizations=false
# Where to store temporary files
usergrid.temp.files=/tmp/usergrid
-# Zookeeper instances
-zookeeper.hosts=localhost:2180
-zookeeper.sessionTimeout = 3000
-zookeeper.maxAttempts = 3
#AWS_ACCESS_KEY_ID=
#AWS_ACCESS_KEY_SECRET=
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/pom.xml
----------------------------------------------------------------------
diff --git a/stack/pom.xml b/stack/pom.xml
index e086295..802f7b5 100644
--- a/stack/pom.xml
+++ b/stack/pom.xml
@@ -551,38 +551,6 @@
</dependency>
<dependency>
- <groupId>org.apache.zookeeper</groupId>
- <artifactId>zookeeper</artifactId>
- <version>3.4.5</version>
- <exclusions>
- <exclusion>
- <groupId>jline</groupId>
- <artifactId>jline</artifactId>
- </exclusion>
-
- <exclusion>
- <groupId>org.jboss.netty</groupId>
- <artifactId>netty</artifactId>
- </exclusion>
-
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </exclusion>
-
- <exclusion>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- </exclusion>
-
- <exclusion>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.4.4</version>
http://git-wip-us.apache.org/repos/asf/usergrid/blob/8849d8eb/stack/websocket/src/test/resources/testApplicationContext.xml
----------------------------------------------------------------------
diff --git a/stack/websocket/src/test/resources/testApplicationContext.xml b/stack/websocket/src/test/resources/testApplicationContext.xml
index eef74b4..8eccb74 100644
--- a/stack/websocket/src/test/resources/testApplicationContext.xml
+++ b/stack/websocket/src/test/resources/testApplicationContext.xml
@@ -1,136 +1,135 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:amq="http://activemq.apache.org/schema/core" xmlns:jms="http://www.springframework.org/schema/jms"
- xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd
- http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
-
- <context:component-scan base-package="org.apache.usergrid.persistence" />
- <context:annotation-config />
-
- <bean id="properties"
- class="org.springframework.beans.factory.config.PropertiesFactoryBean">
- <property name="singleton" value="true" />
- <property name="ignoreResourceNotFound" value="true" />
- <property name="locations">
- <list>
- <value>classpath:/usergrid-default.properties</value>
- <value>classpath:/usergrid-test.properties</value>
- <value>${usergrid-custom-spring-test-properties}</value>
- </list>
- </property>
- </bean>
-
- <bean id="propertyPlaceholderConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="properties" ref="properties" />
- <property name="systemPropertiesModeName">
- <value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
- </property>
- </bean>
-
- <bean id="cassandraUseRemote" class="java.lang.Boolean">
- <constructor-arg value="${cassandra.use_remote}" />
- </bean>
- <bean id="cassandraLocalUrl" class="java.lang.String">
- <constructor-arg value="${cassandra.local.url}" />
- </bean>
- <bean id="cassandraRemoteUrl" class="java.lang.String">
- <constructor-arg value="${cassandra.remote.url}" />
- </bean>
- <bean id="cassandraUrl" class="java.lang.String">
- <constructor-arg
- value="#{cassandraUseRemote ? cassandraRemoteUrl : cassandraLocalUrl}" />
- </bean>
- <util:map id="cassandraCredentials" map-class="java.util.HashMap">
- <entry key="username" value="${cassandra.username}" />
- <entry key="password" value="${cassandra.password}" />
- </util:map>
-
- <bean id="realm" class="org.apache.usergrid.security.shiro.Realm">
- <property name="name" value="realm" />
- </bean>
-
- <bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager">
- <property name="realm" ref="realm" />
- </bean>
-
- <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
-
- <bean
- class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
- <property name="staticMethod"
- value="org.apache.shiro.SecurityUtils.setSecurityManager" />
- <property name="arguments" ref="securityManager" />
- </bean>
-
- <!-- The Time Resolution used for the cluster -->
- <bean id="microsecondsTimeResolution"
- class="me.prettyprint.cassandra.service.clock.MicrosecondsClockResolution" />
-
- <bean id="cassandraHostConfigurator"
- class="me.prettyprint.cassandra.service.CassandraHostConfigurator">
- <constructor-arg ref="cassandraUrl" />
- <property name="clockResolution" ref="microsecondsTimeResolution" />
- </bean>
-
- <bean id="cassandraCluster" class="me.prettyprint.cassandra.service.ThriftCluster">
- <constructor-arg value="${cassandra.cluster}" />
- <constructor-arg ref="cassandraHostConfigurator" />
- <constructor-arg ref="cassandraCredentials" />
- </bean>
-
- <!-- bean name="lockManager" class="org.apache.usergrid.locking.zookeeper.ZooKeeperLockManagerImpl" /> -->
- <bean name="lockManager" class="org.apache.usergrid.locking.zookeeper.NoOpLockManagerImpl" />
-
- <bean id="cassandraService"
- class="org.apache.usergrid.persistence.cassandra.CassandraService" init-method="init">
- <constructor-arg ref="properties" />
- <constructor-arg ref="cassandraCluster" />
- <constructor-arg ref="cassandraHostConfigurator" />
- <constructor-arg ref="lockManager" />
- </bean>
-
- <bean id="entityManagerFactory"
- class="org.apache.usergrid.persistence.cassandra.EntityManagerFactoryImpl">
- <constructor-arg ref="cassandraService" />
- </bean>
-
- <bean id="queueManagerFactory"
- class="org.apache.usergrid.mq.cassandra.QueueManagerFactoryImpl">
- <constructor-arg ref="cassandraService" />
- </bean>
-
- <bean id="serviceManagerFactory" class="org.apache.usergrid.services.ServiceManagerFactory">
- <constructor-arg>
- <ref bean="entityManagerFactory" />
- </constructor-arg>
- </bean>
-
- <bean id="tokenService" class="org.apache.usergrid.security.tokens.cassandra.TokenServiceImpl"/>
-
- <bean id="managementService" class="org.apache.usergrid.management.cassandra.ManagementServiceImpl" />
-
-</beans>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:amq="http://activemq.apache.org/schema/core" xmlns:jms="http://www.springframework.org/schema/jms"
+ xmlns:p="http://www.springframework.org/schema/p"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
+ http://www.springframework.org/schema/jms http://www.springframework.org/schema/jms/spring-jms-3.1.xsd
+ http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd">
+
+ <context:component-scan base-package="org.apache.usergrid.persistence" />
+ <context:annotation-config />
+
+ <bean id="properties"
+ class="org.springframework.beans.factory.config.PropertiesFactoryBean">
+ <property name="singleton" value="true" />
+ <property name="ignoreResourceNotFound" value="true" />
+ <property name="locations">
+ <list>
+ <value>classpath:/usergrid-default.properties</value>
+ <value>classpath:/usergrid-test.properties</value>
+ <value>${usergrid-custom-spring-test-properties}</value>
+ </list>
+ </property>
+ </bean>
+
+ <bean id="propertyPlaceholderConfigurer"
+ class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+ <property name="properties" ref="properties" />
+ <property name="systemPropertiesModeName">
+ <value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
+ </property>
+ </bean>
+
+ <bean id="cassandraUseRemote" class="java.lang.Boolean">
+ <constructor-arg value="${cassandra.use_remote}" />
+ </bean>
+ <bean id="cassandraLocalUrl" class="java.lang.String">
+ <constructor-arg value="${cassandra.local.url}" />
+ </bean>
+ <bean id="cassandraRemoteUrl" class="java.lang.String">
+ <constructor-arg value="${cassandra.remote.url}" />
+ </bean>
+ <bean id="cassandraUrl" class="java.lang.String">
+ <constructor-arg
+ value="#{cassandraUseRemote ? cassandraRemoteUrl : cassandraLocalUrl}" />
+ </bean>
+ <util:map id="cassandraCredentials" map-class="java.util.HashMap">
+ <entry key="username" value="${cassandra.username}" />
+ <entry key="password" value="${cassandra.password}" />
+ </util:map>
+
+ <bean id="realm" class="org.apache.usergrid.security.shiro.Realm">
+ <property name="name" value="realm" />
+ </bean>
+
+ <bean id="securityManager" class="org.apache.shiro.mgt.DefaultSecurityManager">
+ <property name="realm" ref="realm" />
+ </bean>
+
+ <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>
+
+ <bean
+ class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
+ <property name="staticMethod"
+ value="org.apache.shiro.SecurityUtils.setSecurityManager" />
+ <property name="arguments" ref="securityManager" />
+ </bean>
+
+ <!-- The Time Resolution used for the cluster -->
+ <bean id="microsecondsTimeResolution"
+ class="me.prettyprint.cassandra.service.clock.MicrosecondsClockResolution" />
+
+ <bean id="cassandraHostConfigurator"
+ class="me.prettyprint.cassandra.service.CassandraHostConfigurator">
+ <constructor-arg ref="cassandraUrl" />
+ <property name="clockResolution" ref="microsecondsTimeResolution" />
+ </bean>
+
+ <bean id="cassandraCluster" class="me.prettyprint.cassandra.service.ThriftCluster">
+ <constructor-arg value="${cassandra.cluster}" />
+ <constructor-arg ref="cassandraHostConfigurator" />
+ <constructor-arg ref="cassandraCredentials" />
+ </bean>
+
+ <bean name="lockManager" class="org.apache.usergrid.locking.cassandra.HectorLockManagerImpl" />
+
+ <bean id="cassandraService"
+ class="org.apache.usergrid.persistence.cassandra.CassandraService" init-method="init">
+ <constructor-arg ref="properties" />
+ <constructor-arg ref="cassandraCluster" />
+ <constructor-arg ref="cassandraHostConfigurator" />
+ <constructor-arg ref="lockManager" />
+ </bean>
+
+ <bean id="entityManagerFactory"
+ class="org.apache.usergrid.persistence.cassandra.EntityManagerFactoryImpl">
+ <constructor-arg ref="cassandraService" />
+ </bean>
+
+ <bean id="queueManagerFactory"
+ class="org.apache.usergrid.mq.cassandra.QueueManagerFactoryImpl">
+ <constructor-arg ref="cassandraService" />
+ </bean>
+
+ <bean id="serviceManagerFactory" class="org.apache.usergrid.services.ServiceManagerFactory">
+ <constructor-arg>
+ <ref bean="entityManagerFactory" />
+ </constructor-arg>
+ </bean>
+
+ <bean id="tokenService" class="org.apache.usergrid.security.tokens.cassandra.TokenServiceImpl"/>
+
+ <bean id="managementService" class="org.apache.usergrid.management.cassandra.ManagementServiceImpl" />
+
+</beans>