Search in sources :

Example 26 with ACL

use of org.apache.zookeeper.data.ACL in project fabric8 by jboss-fuse.

the class CreateAction method doExecute.

@Override
protected void doExecute(CuratorFramework curator) throws Exception {
    List<ACL> acls = acl == null ? ZooDefs.Ids.OPEN_ACL_UNSAFE : parseACLs(acl);
    CreateMode mode;
    if (ephemeral && sequential) {
        mode = CreateMode.EPHEMERAL_SEQUENTIAL;
    } else if (ephemeral) {
        mode = CreateMode.EPHEMERAL;
    } else if (sequential) {
        mode = CreateMode.PERSISTENT_SEQUENTIAL;
    } else {
        mode = CreateMode.PERSISTENT;
    }
    String nodeData = data;
    if (importUrl) {
        nodeData = loadUrl(new URL(data));
    }
    try {
        CreateBuilder createBuilder = curator.create();
        if (recursive) {
            createBuilder.creatingParentsIfNeeded();
        }
        BackgroundPathAndBytesable<String> create = createBuilder.withMode(mode).withACL(acls);
        if (nodeData == null) {
            create.forPath(path);
        } else {
            create.forPath(path, nodeData.getBytes());
        }
    } catch (KeeperException.NodeExistsException e) {
        if (overwrite) {
            curator.setData().forPath(path, nodeData.getBytes());
        } else {
            throw e;
        }
    }
}
Also used : CreateMode(org.apache.zookeeper.CreateMode) CreateBuilder(org.apache.curator.framework.api.CreateBuilder) ACL(org.apache.zookeeper.data.ACL) URL(java.net.URL) KeeperException(org.apache.zookeeper.KeeperException)

Example 27 with ACL

use of org.apache.zookeeper.data.ACL in project accumulo by apache.

the class ZooReaderWriterTest method testMutateWithBadVersion.

@Test
public void testMutateWithBadVersion() throws Exception {
    final String path = "/foo";
    final byte[] value = new byte[] { 0 };
    final List<ACL> acls = Collections.emptyList();
    final byte[] mutatedBytes = new byte[] { 1 };
    Mutator mutator = new Mutator() {

        @Override
        public byte[] mutate(byte[] currentValue) throws Exception {
            return mutatedBytes;
        }
    };
    Method getDataMethod = ZooReaderWriter.class.getMethod("getData", String.class, boolean.class, Stat.class);
    zrw = EasyMock.createMockBuilder(ZooReaderWriter.class).addMockedMethods("getRetryFactory", "getZooKeeper").addMockedMethod(getDataMethod).createMock();
    EasyMock.expect(zrw.getRetryFactory()).andReturn(retryFactory).anyTimes();
    EasyMock.expect(zrw.getZooKeeper()).andReturn(zk).anyTimes();
    Stat stat = new Stat();
    zk.create(path, value, acls, CreateMode.PERSISTENT);
    EasyMock.expectLastCall().andThrow(new NodeExistsException()).once();
    EasyMock.expect(zrw.getData(path, false, stat)).andReturn(new byte[] { 3 }).times(2);
    // BadVersionException should retry
    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andThrow(new BadVersionException());
    // Let 2nd setData succeed
    EasyMock.expect(zk.setData(path, mutatedBytes, 0)).andReturn(null);
    EasyMock.replay(zk, zrw, retryFactory, retry);
    Assert.assertArrayEquals(new byte[] { 1 }, zrw.mutate(path, value, acls, mutator));
    EasyMock.verify(zk, zrw, retryFactory, retry);
}
Also used : Stat(org.apache.zookeeper.data.Stat) Mutator(org.apache.accumulo.fate.zookeeper.IZooReaderWriter.Mutator) NodeExistsException(org.apache.zookeeper.KeeperException.NodeExistsException) ACL(org.apache.zookeeper.data.ACL) BadVersionException(org.apache.zookeeper.KeeperException.BadVersionException) Method(java.lang.reflect.Method) Test(org.junit.Test)

Example 28 with ACL

use of org.apache.zookeeper.data.ACL in project accumulo by apache.

the class ZooReaderWriterTest method testMutateNodeCreationFails.

@Test(expected = SessionExpiredException.class)
public void testMutateNodeCreationFails() throws Exception {
    final String path = "/foo";
    final byte[] value = new byte[] { 0 };
    final List<ACL> acls = Collections.emptyList();
    Mutator mutator = new Mutator() {

        @Override
        public byte[] mutate(byte[] currentValue) throws Exception {
            return new byte[] { 1 };
        }
    };
    zk.create(path, value, acls, CreateMode.PERSISTENT);
    EasyMock.expectLastCall().andThrow(new SessionExpiredException()).once();
    EasyMock.expect(retry.canRetry()).andReturn(false);
    EasyMock.expect(retry.retriesCompleted()).andReturn(1l).once();
    EasyMock.replay(zk, zrw, retryFactory, retry);
    zrw.mutate(path, value, acls, mutator);
}
Also used : Mutator(org.apache.accumulo.fate.zookeeper.IZooReaderWriter.Mutator) ACL(org.apache.zookeeper.data.ACL) SessionExpiredException(org.apache.zookeeper.KeeperException.SessionExpiredException) Test(org.junit.Test)

Example 29 with ACL

use of org.apache.zookeeper.data.ACL in project accumulo by apache.

the class ZooAuthenticationKeyDistributorTest method testAlreadyAdvertisedKey.

@Test
public void testAlreadyAdvertisedKey() throws Exception {
    ZooAuthenticationKeyDistributor distributor = new ZooAuthenticationKeyDistributor(zrw, baseNode);
    AuthenticationKey key = new AuthenticationKey(1, 0l, 10l, keyGen.generateKey());
    String path = baseNode + "/" + key.getKeyId();
    // Attempt to create the directory and fail
    expect(zrw.exists(baseNode)).andReturn(true);
    expect(zrw.getACL(eq(baseNode), anyObject(Stat.class))).andReturn(Collections.singletonList(new ACL(ZooUtil.PRIVATE.get(0).getPerms(), new Id("digest", "accumulo:DEFAULT"))));
    expect(zrw.exists(path)).andReturn(true);
    replay(zrw);
    distributor.initialize();
    distributor.advertise(key);
    verify(zrw);
}
Also used : Stat(org.apache.zookeeper.data.Stat) ACL(org.apache.zookeeper.data.ACL) Id(org.apache.zookeeper.data.Id) Test(org.junit.Test)

Example 30 with ACL

use of org.apache.zookeeper.data.ACL in project accumulo by apache.

the class ZooAuthenticationKeyDistributorTest method testAdvertiseKey.

@Test
public void testAdvertiseKey() throws Exception {
    ZooAuthenticationKeyDistributor distributor = new ZooAuthenticationKeyDistributor(zrw, baseNode);
    AuthenticationKey key = new AuthenticationKey(1, 0l, 10l, keyGen.generateKey());
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    key.write(new DataOutputStream(baos));
    byte[] serialized = baos.toByteArray();
    String path = baseNode + "/" + key.getKeyId();
    // Attempt to create the directory and fail
    expect(zrw.exists(baseNode)).andReturn(true);
    expect(zrw.getACL(eq(baseNode), anyObject(Stat.class))).andReturn(Collections.singletonList(new ACL(ZooUtil.PRIVATE.get(0).getPerms(), new Id("digest", "accumulo:DEFAULT"))));
    expect(zrw.exists(path)).andReturn(false);
    expect(zrw.putPrivatePersistentData(eq(path), aryEq(serialized), eq(NodeExistsPolicy.FAIL))).andReturn(true);
    replay(zrw);
    distributor.initialize();
    distributor.advertise(key);
    verify(zrw);
}
Also used : Stat(org.apache.zookeeper.data.Stat) DataOutputStream(java.io.DataOutputStream) ACL(org.apache.zookeeper.data.ACL) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Id(org.apache.zookeeper.data.Id) Test(org.junit.Test)

Aggregations

ACL (org.apache.zookeeper.data.ACL)214 Id (org.apache.zookeeper.data.Id)83 ArrayList (java.util.ArrayList)58 Test (org.junit.Test)58 Stat (org.apache.zookeeper.data.Stat)53 KeeperException (org.apache.zookeeper.KeeperException)35 Test (org.testng.annotations.Test)32 CuratorFramework (org.apache.curator.framework.CuratorFramework)19 Test (org.junit.jupiter.api.Test)18 Configuration (org.apache.hadoop.conf.Configuration)17 ZooKeeper (org.apache.zookeeper.ZooKeeper)16 ACLProvider (org.apache.curator.framework.api.ACLProvider)15 List (java.util.List)11 IOException (java.io.IOException)10 CountDownLatch (java.util.concurrent.CountDownLatch)9 TestableZooKeeper (org.apache.zookeeper.TestableZooKeeper)7 ByteArrayOutputStream (java.io.ByteArrayOutputStream)6 ExponentialBackoffRetry (org.apache.curator.retry.ExponentialBackoffRetry)6 RetryOneTime (org.apache.curator.retry.RetryOneTime)6 CreateMode (org.apache.zookeeper.CreateMode)6