http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestConsistentHashRoutingService.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestConsistentHashRoutingService.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestConsistentHashRoutingService.java
deleted file mode 100644
index f44cddd..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestConsistentHashRoutingService.java
+++ /dev/null
@@ -1,417 +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.distributedlog.client.routing;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import org.apache.distributedlog.client.resolver.DefaultRegionResolver;
-import org.apache.distributedlog.service.DLSocketAddress;
-import com.twitter.finagle.Address;
-import com.twitter.finagle.Addresses;
-import com.twitter.finagle.ChannelWriteException;
-import com.twitter.finagle.NoBrokersAvailableException;
-import com.twitter.finagle.stats.NullStatsReceiver;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.TimeUnit;
-import org.junit.Test;
-
-/**
- * Test Case for {@link ConsistentHashRoutingService}.
- */
-public class TestConsistentHashRoutingService {
-
-    @Test(timeout = 60000)
-    public void testBlackoutHost() throws Exception {
-        TestName name = new TestName();
-        RoutingService routingService = 
ConsistentHashRoutingService.newBuilder()
-                .serverSet(new NameServerSet(name))
-                .resolveFromName(true)
-                .numReplicas(997)
-                .blackoutSeconds(2)
-                .build();
-
-        InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
3181);
-        Address address = Addresses.newInetAddress(inetAddress);
-        List<Address> addresses = new ArrayList<Address>(1);
-        addresses.add(address);
-        name.changeAddrs(addresses);
-
-        routingService.startService();
-
-        RoutingService.RoutingContext routingContext =
-                RoutingService.RoutingContext.of(new DefaultRegionResolver());
-
-        String streamName = "test-blackout-host";
-        assertEquals(inetAddress, routingService.getHost(streamName, 
routingContext));
-        routingService.removeHost(inetAddress, new ChannelWriteException(new 
IOException("test exception")));
-        try {
-            routingService.getHost(streamName, routingContext);
-            fail("Should fail to get host since no brokers are available");
-        } catch (NoBrokersAvailableException nbae) {
-            // expected
-        }
-
-        TimeUnit.SECONDS.sleep(3);
-        assertEquals(inetAddress, routingService.getHost(streamName, 
routingContext));
-
-        routingService.stopService();
-    }
-
-    @Test(timeout = 60000)
-    public void testPerformServerSetChangeOnName() throws Exception {
-        TestName name = new TestName();
-        ConsistentHashRoutingService routingService = 
(ConsistentHashRoutingService)
-                ConsistentHashRoutingService.newBuilder()
-                        .serverSet(new NameServerSet(name))
-                        .resolveFromName(true)
-                        .numReplicas(997)
-                        .build();
-
-        int basePort = 3180;
-        int numHosts = 4;
-        List<Address> addresses1 = Lists.newArrayListWithExpectedSize(4);
-        List<Address> addresses2 = Lists.newArrayListWithExpectedSize(4);
-        List<Address> addresses3 = Lists.newArrayListWithExpectedSize(4);
-
-        // fill up the addresses1
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            Address address = Addresses.newInetAddress(inetAddress);
-            addresses1.add(address);
-        }
-        // fill up the addresses2 - overlap with addresses1
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 2 + i);
-            Address address = Addresses.newInetAddress(inetAddress);
-            addresses2.add(address);
-        }
-        // fill up the addresses3 - not overlap with addresses2
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 10 + i);
-            Address address = Addresses.newInetAddress(inetAddress);
-            addresses3.add(address);
-        }
-
-        final List<SocketAddress> leftAddresses = Lists.newArrayList();
-        final List<SocketAddress> joinAddresses = Lists.newArrayList();
-
-        RoutingService.RoutingListener routingListener = new 
RoutingService.RoutingListener() {
-            @Override
-            public void onServerLeft(SocketAddress address) {
-                synchronized (leftAddresses) {
-                    leftAddresses.add(address);
-                    leftAddresses.notifyAll();
-                }
-            }
-
-            @Override
-            public void onServerJoin(SocketAddress address) {
-                synchronized (joinAddresses) {
-                    joinAddresses.add(address);
-                    joinAddresses.notifyAll();
-                }
-            }
-        };
-
-        routingService.registerListener(routingListener);
-        name.changeAddrs(addresses1);
-
-        routingService.startService();
-
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts) {
-                joinAddresses.wait();
-            }
-        }
-
-        // validate 4 nodes joined
-        synchronized (joinAddresses) {
-            assertEquals(numHosts, joinAddresses.size());
-        }
-        synchronized (leftAddresses) {
-            assertEquals(0, leftAddresses.size());
-        }
-        assertEquals(numHosts, routingService.shardId2Address.size());
-        assertEquals(numHosts, routingService.address2ShardId.size());
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-        // update addresses2 - 2 new hosts joined, 2 old hosts left
-        name.changeAddrs(addresses2);
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts + 2) {
-                joinAddresses.wait();
-            }
-        }
-        synchronized (leftAddresses) {
-            while (leftAddresses.size() < numHosts - 2) {
-                leftAddresses.wait();
-            }
-        }
-        assertEquals(numHosts, routingService.shardId2Address.size());
-        assertEquals(numHosts, routingService.address2ShardId.size());
-
-        // first 2 shards should leave
-        for (int i = 0; i < 2; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            
assertFalse(routingService.address2ShardId.containsKey(inetAddress));
-        }
-
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 2 + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-        // update addresses3 - 2 new hosts joined, 2 old hosts left
-        name.changeAddrs(addresses3);
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts + 2 + numHosts) {
-                joinAddresses.wait();
-            }
-        }
-        synchronized (leftAddresses) {
-            while (leftAddresses.size() < numHosts - 2 + numHosts) {
-                leftAddresses.wait();
-            }
-        }
-        assertEquals(numHosts, routingService.shardId2Address.size());
-        assertEquals(numHosts, routingService.address2ShardId.size());
-
-        // first 6 shards should leave
-        for (int i = 0; i < 2 + numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            
assertFalse(routingService.address2ShardId.containsKey(inetAddress));
-        }
-        // new 4 shards should exist
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 10 + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-    }
-
-    private static class TestServerSetWatcher implements ServerSetWatcher {
-
-        final LinkedBlockingQueue<ImmutableSet<DLSocketAddress>> changeQueue =
-                new LinkedBlockingQueue<ImmutableSet<DLSocketAddress>>();
-        final CopyOnWriteArrayList<ServerSetMonitor> monitors =
-                new CopyOnWriteArrayList<ServerSetMonitor>();
-
-        @Override
-        public void watch(ServerSetMonitor monitor) throws MonitorException {
-            monitors.add(monitor);
-            ImmutableSet<DLSocketAddress> change;
-            while ((change = changeQueue.poll()) != null) {
-                notifyChanges(change);
-            }
-        }
-
-        void notifyChanges(ImmutableSet<DLSocketAddress> addresses) {
-            if (monitors.isEmpty()) {
-                changeQueue.add(addresses);
-            } else {
-                for (ServerSetMonitor monitor : monitors) {
-                    monitor.onChange(addresses);
-                }
-            }
-        }
-    }
-
-    @Test(timeout = 60000)
-    public void testPerformServerSetChangeOnServerSet() throws Exception {
-        TestServerSetWatcher serverSetWatcher = new TestServerSetWatcher();
-        ConsistentHashRoutingService routingService = new 
ConsistentHashRoutingService(
-                serverSetWatcher, 997, Integer.MAX_VALUE, 
NullStatsReceiver.get());
-
-        int basePort = 3180;
-        int numHosts = 4;
-        Set<DLSocketAddress> addresses1 = Sets.newConcurrentHashSet();
-        Set<DLSocketAddress> addresses2 = Sets.newConcurrentHashSet();
-        Set<DLSocketAddress> addresses3 = Sets.newConcurrentHashSet();
-
-        // fill up the addresses1
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            DLSocketAddress dsa = new DLSocketAddress(i, inetAddress);
-            addresses1.add(dsa);
-        }
-        // fill up the addresses2 - overlap with addresses1
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + numHosts + i);
-            DLSocketAddress dsa = new DLSocketAddress(i + 2, inetAddress);
-            addresses2.add(dsa);
-        }
-        // fill up the addresses3 - not overlap with addresses2
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 10 + i);
-            DLSocketAddress dsa = new DLSocketAddress(i, inetAddress);
-            addresses3.add(dsa);
-        }
-
-        final List<SocketAddress> leftAddresses = Lists.newArrayList();
-        final List<SocketAddress> joinAddresses = Lists.newArrayList();
-
-        RoutingService.RoutingListener routingListener = new 
RoutingService.RoutingListener() {
-            @Override
-            public void onServerLeft(SocketAddress address) {
-                synchronized (leftAddresses) {
-                    leftAddresses.add(address);
-                    leftAddresses.notifyAll();
-                }
-            }
-
-            @Override
-            public void onServerJoin(SocketAddress address) {
-                synchronized (joinAddresses) {
-                    joinAddresses.add(address);
-                    joinAddresses.notifyAll();
-                }
-            }
-        };
-
-        routingService.registerListener(routingListener);
-        serverSetWatcher.notifyChanges(ImmutableSet.copyOf(addresses1));
-
-        routingService.startService();
-
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts) {
-                joinAddresses.wait();
-            }
-        }
-
-        // validate 4 nodes joined
-        synchronized (joinAddresses) {
-            assertEquals(numHosts, joinAddresses.size());
-        }
-        synchronized (leftAddresses) {
-            assertEquals(0, leftAddresses.size());
-        }
-        assertEquals(numHosts, routingService.shardId2Address.size());
-        assertEquals(numHosts, routingService.address2ShardId.size());
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            assertEquals(i, shardId);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-        // update addresses2 - 2 new hosts joined, 2 old hosts left
-        serverSetWatcher.notifyChanges(ImmutableSet.copyOf(addresses2));
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts + 2) {
-                joinAddresses.wait();
-            }
-        }
-        synchronized (leftAddresses) {
-            while (leftAddresses.size() < 2) {
-                leftAddresses.wait();
-            }
-        }
-
-        assertEquals(numHosts + 2, routingService.shardId2Address.size());
-        assertEquals(numHosts + 2, routingService.address2ShardId.size());
-        // first 2 shards should not leave
-        for (int i = 0; i < 2; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            assertEquals(i, shardId);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + numHosts + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            assertEquals(i + 2, shardId);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-        // update addresses3
-        serverSetWatcher.notifyChanges(ImmutableSet.copyOf(addresses3));
-        synchronized (joinAddresses) {
-            while (joinAddresses.size() < numHosts + 2 + numHosts) {
-                joinAddresses.wait();
-            }
-        }
-        synchronized (leftAddresses) {
-            while (leftAddresses.size() < 2 + numHosts) {
-                leftAddresses.wait();
-            }
-        }
-        assertEquals(numHosts + 2, routingService.shardId2Address.size());
-        assertEquals(numHosts + 2, routingService.address2ShardId.size());
-
-        // first 4 shards should leave
-        for (int i = 0; i < numHosts; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + 10 + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            assertEquals(i, shardId);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-        // the other 2 shards should be still there
-        for (int i = 0; i < 2; i++) {
-            InetSocketAddress inetAddress = new InetSocketAddress("127.0.0.1", 
basePort + numHosts + 2 + i);
-            
assertTrue(routingService.address2ShardId.containsKey(inetAddress));
-            int shardId = routingService.address2ShardId.get(inetAddress);
-            assertEquals(numHosts + i, shardId);
-            SocketAddress sa = routingService.shardId2Address.get(shardId);
-            assertNotNull(sa);
-            assertEquals(inetAddress, sa);
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestInetNameResolution.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestInetNameResolution.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestInetNameResolution.java
deleted file mode 100644
index 59665b9..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestInetNameResolution.java
+++ /dev/null
@@ -1,73 +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.distributedlog.client.routing;
-
-import com.google.common.collect.ImmutableSet;
-import com.twitter.common.net.pool.DynamicHostSet;
-import com.twitter.thrift.Endpoint;
-import com.twitter.thrift.ServiceInstance;
-import java.net.InetSocketAddress;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicBoolean;
-import org.junit.Assert;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Test Case for `inet` name resolution.
- */
-public class TestInetNameResolution {
-
-    private static final Logger logger = 
LoggerFactory.getLogger(TestRoutingService.class);
-
-    @Test(timeout = 10000)
-    public void testInetNameResolution() throws Exception {
-        String nameStr = "inet!127.0.0.1:3181";
-        final CountDownLatch resolved = new CountDownLatch(1);
-        final AtomicBoolean validationFailed = new AtomicBoolean(false);
-
-        NameServerSet serverSet = new NameServerSet(nameStr);
-        serverSet.watch(new 
DynamicHostSet.HostChangeMonitor<ServiceInstance>() {
-            @Override
-            public void onChange(ImmutableSet<ServiceInstance> hostSet) {
-                if (hostSet.size() > 1) {
-                    logger.error("HostSet has more elements than expected {}", 
hostSet);
-                    validationFailed.set(true);
-                    resolved.countDown();
-                } else if (hostSet.size() == 1) {
-                    ServiceInstance serviceInstance = 
hostSet.iterator().next();
-                    Endpoint endpoint = 
serviceInstance.getAdditionalEndpoints().get("thrift");
-                    InetSocketAddress address = new 
InetSocketAddress(endpoint.getHost(), endpoint.getPort());
-                    if (endpoint.getPort() != 3181) {
-                        logger.error("Port does not match the expected port 
{}", endpoint.getPort());
-                        validationFailed.set(true);
-                    } else if 
(!address.getAddress().getHostAddress().equals("127.0.0.1")) {
-                        logger.error("Host address does not match the expected 
address {}",
-                            address.getAddress().getHostAddress());
-                        validationFailed.set(true);
-                    }
-                    resolved.countDown();
-                }
-            }
-        });
-
-        resolved.await();
-        Assert.assertEquals(false, validationFailed.get());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRegionsRoutingService.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRegionsRoutingService.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRegionsRoutingService.java
deleted file mode 100644
index 151663e..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRegionsRoutingService.java
+++ /dev/null
@@ -1,133 +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.distributedlog.client.routing;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import com.google.common.collect.Sets;
-import org.apache.distributedlog.client.resolver.DefaultRegionResolver;
-import org.apache.distributedlog.thrift.service.StatusCode;
-import com.twitter.finagle.NoBrokersAvailableException;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicInteger;
-import org.junit.Test;
-
-/**
- * Test Case for {@link RegionsRoutingService}.
- */
-public class TestRegionsRoutingService {
-
-    @Test(timeout = 60000)
-    public void testRoutingListener() throws Exception {
-        int numRoutingServices = 5;
-        RoutingService.Builder[] routingServiceBuilders = new 
RoutingService.Builder[numRoutingServices];
-        Set<SocketAddress> hosts = new HashSet<SocketAddress>();
-        Map<SocketAddress, String> regionMap = new HashMap<SocketAddress, 
String>();
-        for (int i = 0; i < numRoutingServices; i++) {
-            String finagleNameStr = "inet!127.0.0.1:" + (3181 + i);
-            routingServiceBuilders[i] = 
RoutingUtils.buildRoutingService(finagleNameStr);
-            SocketAddress address = new InetSocketAddress("127.0.0.1", 3181 + 
i);
-            hosts.add(address);
-            regionMap.put(address, "region-" + i);
-        }
-
-        final CountDownLatch doneLatch = new 
CountDownLatch(numRoutingServices);
-        final AtomicInteger numHostsLeft = new AtomicInteger(0);
-        final Set<SocketAddress> jointHosts = new HashSet<SocketAddress>();
-        RegionsRoutingService regionsRoutingService =
-                RegionsRoutingService.newBuilder()
-                    .routingServiceBuilders(routingServiceBuilders)
-                    .resolver(new DefaultRegionResolver(regionMap))
-                    .build();
-        regionsRoutingService.registerListener(new 
RoutingService.RoutingListener() {
-            @Override
-            public void onServerLeft(SocketAddress address) {
-                numHostsLeft.incrementAndGet();
-            }
-
-            @Override
-            public void onServerJoin(SocketAddress address) {
-                jointHosts.add(address);
-                doneLatch.countDown();
-            }
-        });
-
-        regionsRoutingService.startService();
-
-        doneLatch.await();
-
-        assertEquals(numRoutingServices, jointHosts.size());
-        assertEquals(0, numHostsLeft.get());
-        assertTrue(Sets.difference(hosts, 
jointHosts).immutableCopy().isEmpty());
-    }
-
-    @Test(timeout = 60000)
-    public void testGetHost() throws Exception {
-        int numRoutingServices = 3;
-        RoutingService.Builder[] routingServiceBuilders = new 
RoutingService.Builder[numRoutingServices];
-        Map<SocketAddress, String> regionMap = new HashMap<SocketAddress, 
String>();
-        for (int i = 0; i < numRoutingServices; i++) {
-            String finagleNameStr = "inet!127.0.0.1:" + (3181 + i);
-            routingServiceBuilders[i] = 
RoutingUtils.buildRoutingService(finagleNameStr);
-            SocketAddress address = new InetSocketAddress("127.0.0.1", 3181 + 
i);
-            regionMap.put(address, "region-" + i);
-        }
-
-        RegionsRoutingService regionsRoutingService =
-                RegionsRoutingService.newBuilder()
-                    .resolver(new DefaultRegionResolver(regionMap))
-                    .routingServiceBuilders(routingServiceBuilders)
-                    .build();
-        regionsRoutingService.startService();
-
-        RoutingService.RoutingContext routingContext =
-                RoutingService.RoutingContext.of(new DefaultRegionResolver())
-                        .addTriedHost(new InetSocketAddress("127.0.0.1", 
3183), StatusCode.WRITE_EXCEPTION);
-        assertEquals(new InetSocketAddress("127.0.0.1", 3181),
-                regionsRoutingService.getHost("any", routingContext));
-
-        routingContext =
-                RoutingService.RoutingContext.of(new DefaultRegionResolver())
-                        .addTriedHost(new InetSocketAddress("127.0.0.1", 
3181), StatusCode.WRITE_EXCEPTION);
-        assertEquals(new InetSocketAddress("127.0.0.1", 3182),
-                regionsRoutingService.getHost("any", routingContext));
-
-        // add 3182 to routing context as tried host
-        routingContext.addTriedHost(new InetSocketAddress("127.0.0.1", 3182), 
StatusCode.WRITE_EXCEPTION);
-        assertEquals(new InetSocketAddress("127.0.0.1", 3183),
-                regionsRoutingService.getHost("any", routingContext));
-
-        // add 3183 to routing context as tried host
-        routingContext.addTriedHost(new InetSocketAddress("127.0.0.1", 3183), 
StatusCode.WRITE_EXCEPTION);
-        try {
-            regionsRoutingService.getHost("any", routingContext);
-            fail("Should fail to get host since all regions are tried.");
-        } catch (NoBrokersAvailableException nbae) {
-            // expected
-        }
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRoutingService.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRoutingService.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRoutingService.java
deleted file mode 100644
index d2d61a9..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/routing/TestRoutingService.java
+++ /dev/null
@@ -1,146 +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.distributedlog.client.routing;
-
-import static org.junit.Assert.assertEquals;
-
-import org.apache.distributedlog.client.resolver.DefaultRegionResolver;
-import com.twitter.finagle.Address;
-import com.twitter.finagle.Addresses;
-import com.twitter.finagle.addr.WeightedAddress;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Test Case for {@link RoutingService}.
- */
-@RunWith(Parameterized.class)
-public class TestRoutingService {
-
-    static final Logger LOG = 
LoggerFactory.getLogger(TestRoutingService.class);
-
-    @Parameterized.Parameters
-    public static Collection<Object[]> configs() {
-        ArrayList<Object[]> list = new ArrayList<Object[]>();
-        for (int i = 0; i <= 1; i++) {
-            for (int j = 0; j <= 1; j++) {
-                for (int k = 0; k <= 1; k++) {
-                    list.add(new Boolean[] {i == 1, j == 1, k == 1});
-                }
-            }
-        }
-        return list;
-    }
-
-    private final boolean consistentHash;
-    private final boolean weightedAddresses;
-    private final boolean asyncResolution;
-
-    public TestRoutingService(boolean consistentHash, boolean 
weightedAddresses, boolean asyncResolution) {
-        this.consistentHash = consistentHash;
-        this.weightedAddresses = weightedAddresses;
-        this.asyncResolution = asyncResolution;
-    }
-
-    private List<Address> getAddresses(boolean weightedAddresses) {
-        ArrayList<Address> addresses = new ArrayList<Address>();
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.1", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.2", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.3", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.4", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.5", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.6", 3181)));
-        addresses.add(Addresses.newInetAddress(new 
InetSocketAddress("127.0.0.7", 3181)));
-
-        if (weightedAddresses) {
-            ArrayList<Address> wAddresses = new ArrayList<Address>();
-            for (Address address: addresses) {
-                wAddresses.add(WeightedAddress.apply(address, 1.0));
-            }
-            return wAddresses;
-        } else {
-            return addresses;
-        }
-    }
-
-    private void testRoutingServiceHelper(boolean consistentHash,
-                                          boolean weightedAddresses,
-                                          boolean asyncResolution)
-        throws Exception {
-        ExecutorService executorService = null;
-        final List<Address> addresses = getAddresses(weightedAddresses);
-        final TestName name = new TestName();
-        RoutingService routingService;
-        if (consistentHash) {
-            routingService = ConsistentHashRoutingService.newBuilder()
-                    .serverSet(new NameServerSet(name))
-                    .resolveFromName(true)
-                    .numReplicas(997)
-                    .build();
-        } else {
-            routingService = 
ServerSetRoutingService.newServerSetRoutingServiceBuilder()
-                    .serverSetWatcher(new TwitterServerSetWatcher(new 
NameServerSet(name), true)).build();
-        }
-
-        if (asyncResolution) {
-            executorService = Executors.newSingleThreadExecutor();
-            executorService.submit(new Runnable() {
-                @Override
-                public void run() {
-                    name.changeAddrs(addresses);
-                }
-            });
-        } else {
-            name.changeAddrs(addresses);
-        }
-        routingService.startService();
-
-        HashSet<SocketAddress> mapping = new HashSet<SocketAddress>();
-
-        for (int i = 0; i < 1000; i++) {
-            for (int j = 0; j < 5; j++) {
-                String stream = "TestStream-" + i + "-" + j;
-                mapping.add(routingService.getHost(stream,
-                        RoutingService.RoutingContext.of(new 
DefaultRegionResolver())));
-            }
-        }
-
-        assertEquals(mapping.size(), addresses.size());
-
-        if (null != executorService) {
-            executorService.shutdown();
-        }
-
-    }
-
-    @Test(timeout = 5000)
-    public void testRoutingService() throws Exception {
-        testRoutingServiceHelper(this.consistentHash, this.weightedAddresses, 
this.asyncResolution);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/client/speculative/TestDefaultSpeculativeRequestExecutionPolicy.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/speculative/TestDefaultSpeculativeRequestExecutionPolicy.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/client/speculative/TestDefaultSpeculativeRequestExecutionPolicy.java
deleted file mode 100644
index ab0cb58..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/client/speculative/TestDefaultSpeculativeRequestExecutionPolicy.java
+++ /dev/null
@@ -1,105 +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.distributedlog.client.speculative;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-
-import com.twitter.util.CountDownLatch;
-import com.twitter.util.Future;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.atomic.AtomicInteger;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-/**
- * Test {@link TestDefaultSpeculativeRequestExecutionPolicy}.
- */
-public class TestDefaultSpeculativeRequestExecutionPolicy {
-
-    @Test(timeout = 20000, expected = IllegalArgumentException.class)
-    public void testInvalidBackoffMultiplier() throws Exception {
-        new DefaultSpeculativeRequestExecutionPolicy(100, 200, -1);
-    }
-
-    @Test(timeout = 20000, expected = IllegalArgumentException.class)
-    public void testInvalidMaxSpeculativeTimeout() throws Exception {
-        new DefaultSpeculativeRequestExecutionPolicy(100, Integer.MAX_VALUE, 
2);
-    }
-
-    @Test(timeout = 20000)
-    public void testSpeculativeRequests() throws Exception {
-        DefaultSpeculativeRequestExecutionPolicy policy =
-                new DefaultSpeculativeRequestExecutionPolicy(10, 10000, 2);
-        SpeculativeRequestExecutor executor = 
mock(SpeculativeRequestExecutor.class);
-
-        final AtomicInteger callCount = new AtomicInteger(0);
-        final CountDownLatch latch = new CountDownLatch(3);
-
-        Mockito.doAnswer(new Answer() {
-            @Override
-            public Object answer(InvocationOnMock invocation) throws Throwable 
{
-                try {
-                    return Future.value(callCount.incrementAndGet() < 3);
-                } finally {
-                    latch.countDown();
-                }
-            }
-        }).when(executor).issueSpeculativeRequest();
-
-        ScheduledExecutorService executorService =
-                Executors.newSingleThreadScheduledExecutor();
-        policy.initiateSpeculativeRequest(executorService, executor);
-
-        latch.await();
-
-        assertEquals(40, policy.getNextSpeculativeRequestTimeout());
-    }
-
-    @Test(timeout = 20000)
-    public void testSpeculativeRequestsWithMaxTimeout() throws Exception {
-        DefaultSpeculativeRequestExecutionPolicy policy =
-                new DefaultSpeculativeRequestExecutionPolicy(10, 15, 2);
-        SpeculativeRequestExecutor executor = 
mock(SpeculativeRequestExecutor.class);
-
-        final AtomicInteger callCount = new AtomicInteger(0);
-        final CountDownLatch latch = new CountDownLatch(3);
-
-        Mockito.doAnswer(new Answer() {
-            @Override
-            public Object answer(InvocationOnMock invocation) throws Throwable 
{
-                try {
-                    return Future.value(callCount.incrementAndGet() < 3);
-                } finally {
-                    latch.countDown();
-                }
-            }
-        }).when(executor).issueSpeculativeRequest();
-
-        ScheduledExecutorService executorService =
-                Executors.newSingleThreadScheduledExecutor();
-        policy.initiateSpeculativeRequest(executorService, executor);
-
-        latch.await();
-
-        assertEquals(15, policy.getNextSpeculativeRequestTimeout());
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/java/org/apache/distributedlog/service/TestDistributedLogClientBuilder.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-client/src/test/java/org/apache/distributedlog/service/TestDistributedLogClientBuilder.java
 
b/distributedlog-client/src/test/java/org/apache/distributedlog/service/TestDistributedLogClientBuilder.java
deleted file mode 100644
index d2df9a5..0000000
--- 
a/distributedlog-client/src/test/java/org/apache/distributedlog/service/TestDistributedLogClientBuilder.java
+++ /dev/null
@@ -1,49 +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.distributedlog.service;
-
-import static org.junit.Assert.assertFalse;
-
-import com.twitter.finagle.builder.ClientBuilder;
-import com.twitter.finagle.thrift.ClientId$;
-import com.twitter.util.Duration;
-import org.junit.Test;
-
-/**
- * Test Case of {@link 
org.apache.distributedlog.service.DistributedLogClientBuilder}.
- */
-public class TestDistributedLogClientBuilder {
-
-    @Test(timeout = 60000)
-    public void testBuildClientsFromSameBuilder() throws Exception {
-        DistributedLogClientBuilder builder = 
DistributedLogClientBuilder.newBuilder()
-                .name("build-clients-from-same-builder")
-                .clientId(ClientId$.MODULE$.apply("test-builder"))
-                .finagleNameStr("inet!127.0.0.1:7001")
-                .streamNameRegex(".*")
-                .handshakeWithClientInfo(true)
-                .clientBuilder(ClientBuilder.get()
-                    .hostConnectionLimit(1)
-                    .connectTimeout(Duration.fromSeconds(1))
-                    .tcpConnectTimeout(Duration.fromSeconds(1))
-                    .requestTimeout(Duration.fromSeconds(10)));
-        DistributedLogClient client1 = builder.build();
-        DistributedLogClient client2 = builder.build();
-        assertFalse(client1 == client2);
-    }
-}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-client/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/distributedlog-client/src/test/resources/log4j.properties 
b/distributedlog-client/src/test/resources/log4j.properties
deleted file mode 100644
index 3e51059..0000000
--- a/distributedlog-client/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,51 +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.
-# */
-
-#
-# DisributedLog Logging Configuration
-#
-
-# Example with rolling log file
-log4j.rootLogger=INFO, CONSOLE
-
-#disable zookeeper logging
-log4j.logger.org.apache.zookeeper=OFF
-#Set the bookkeeper level to warning
-log4j.logger.org.apache.bookkeeper=INFO
-
-log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
-log4j.appender.CONSOLE.Threshold=INFO
-log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
-log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} - %-5p - 
[%t:%C{1}@%L] - %m%n
-
-# Add ROLLINGFILE to rootLogger to get log file output
-#    Log DEBUG level and above messages to a log file
-#log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender
-#log4j.appender.ROLLINGFILE.Threshold=INFO
-#log4j.appender.ROLLINGFILE.File=distributedlog.log
-#log4j.appender.ROLLINGFILE.layout=org.apache.log4j.PatternLayout
-#log4j.appender.ROLLINGFILE.DatePattern='.'yyyy-MM-dd-HH-mm
-#log4j.appender.ROLLINGFILE.layout.ConversionPattern=%d{ISO8601} - %-5p - 
[%t:%C{1}@%L] - %m%n
-
-log4j.appender.R=org.apache.log4j.RollingFileAppender
-log4j.appender.R.Threshold=TRACE
-log4j.appender.R.File=target/error.log
-log4j.appender.R.MaxFileSize=200MB
-log4j.appender.R.MaxBackupIndex=7
-log4j.appender.R.layout=org.apache.log4j.PatternLayout
-log4j.appender.R.layout.ConversionPattern=%d{ISO8601} - %-5p - [%t:%C{1}@%L] - 
%m%n

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-core/src/main/java/org/apache/distributedlog/exceptions/ZKException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-core/src/main/java/org/apache/distributedlog/exceptions/ZKException.java
 
b/distributedlog-core/src/main/java/org/apache/distributedlog/exceptions/ZKException.java
index b9e9d12..5eab707 100644
--- 
a/distributedlog-core/src/main/java/org/apache/distributedlog/exceptions/ZKException.java
+++ 
b/distributedlog-core/src/main/java/org/apache/distributedlog/exceptions/ZKException.java
@@ -17,7 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.KeeperException.Code;
 

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/pom.xml
----------------------------------------------------------------------
diff --git a/distributedlog-protocol/pom.xml b/distributedlog-protocol/pom.xml
index 8a9cb22..a483444 100644
--- a/distributedlog-protocol/pom.xml
+++ b/distributedlog-protocol/pom.xml
@@ -37,26 +37,6 @@
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.thrift</groupId>
-      <artifactId>libthrift</artifactId>
-      <version>${libthrift.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.twitter</groupId>
-      <artifactId>scrooge-core_2.11</artifactId>
-      <version>${scrooge.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.twitter</groupId>
-      <artifactId>finagle-core_2.11</artifactId>
-      <version>${finagle.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>com.twitter</groupId>
-      <artifactId>finagle-thrift_2.11</artifactId>
-      <version>${finagle.version}</version>
-    </dependency>
-    <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
       <version>${commons-lang.version}</version>
@@ -67,6 +47,11 @@
       <version>${commons-codec.version}</version>
     </dependency>
     <dependency>
+      <groupId>com.twitter</groupId>
+      <artifactId>finagle-core_2.11</artifactId>
+      <version>${finagle.version}</version>
+    </dependency>
+    <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>${slf4j.version}</version>
@@ -86,26 +71,6 @@
   <build>
     <plugins>
       <plugin>
-        <groupId>com.twitter</groupId>
-        <artifactId>scrooge-maven-plugin</artifactId>
-        <version>${scrooge-maven-plugin.version}</version>
-        <configuration>
-          <language>java</language>
-          <thriftOpts>
-            <thriftOpt>--finagle</thriftOpt>
-          </thriftOpts>
-        </configuration>
-        <executions>
-          <execution>
-            <id>thrift-sources</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
         <version>${maven-jar-plugin.version}</version>

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyClosedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyClosedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyClosedException.java
index ecb9180..258ff05 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyClosedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyClosedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Thrown when any distributedlog resources have already been closed.
  *

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyTruncatedTransactionException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyTruncatedTransactionException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyTruncatedTransactionException.java
index 9f8d5bc..29903ac 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyTruncatedTransactionException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/AlreadyTruncatedTransactionException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Thrown when the transaction Id specified in the API is in the range that 
has already been truncated.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/BKTransmitException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/BKTransmitException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/BKTransmitException.java
index 7d0a5b3..33f4a04 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/BKTransmitException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/BKTransmitException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Thrown when the send to bookkeeper fails.
  *

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ChecksumFailedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ChecksumFailedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ChecksumFailedException.java
index 36c7bd9..4210d66 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ChecksumFailedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ChecksumFailedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown when checksum failures occurred.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLClientClosedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLClientClosedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLClientClosedException.java
index a5e4faa..bb7c2db 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLClientClosedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLClientClosedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exceptions thrown when a distributedlog client is closed.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLException.java
index e974d46..928895d 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.ResponseHeader;
-import org.apache.distributedlog.thrift.service.StatusCode;
 import java.io.IOException;
 
 /**
@@ -26,24 +24,24 @@ import java.io.IOException;
  */
 public class DLException extends IOException {
     private static final long serialVersionUID = -4485775468586114393L;
-    protected final StatusCode code;
+    protected final int code;
 
-    protected DLException(StatusCode code) {
+    public DLException(int code) {
         super();
         this.code = code;
     }
 
-    protected DLException(StatusCode code, String msg) {
+    public DLException(int code, String msg) {
         super(msg);
         this.code = code;
     }
 
-    protected DLException(StatusCode code, Throwable t) {
+    public DLException(int code, Throwable t) {
         super(t);
         this.code = code;
     }
 
-    protected DLException(StatusCode code, String msg, Throwable t) {
+    public DLException(int code, String msg, Throwable t) {
         super(msg, t);
         this.code = code;
     }
@@ -53,29 +51,8 @@ public class DLException extends IOException {
      *
      * @return status code representing the exception.
      */
-    public StatusCode getCode() {
+    public int getCode() {
         return code;
     }
 
-    public static DLException of(ResponseHeader response) {
-        String errMsg;
-        switch (response.getCode()) {
-            case FOUND:
-                if (response.isSetErrMsg()) {
-                    errMsg = response.getErrMsg();
-                } else {
-                    errMsg = "Request is redirected to " + 
response.getLocation();
-                }
-                return new OwnershipAcquireFailedException(errMsg, 
response.getLocation());
-            case SUCCESS:
-                throw new IllegalArgumentException("Can't instantiate an 
exception for success response.");
-            default:
-                if (response.isSetErrMsg()) {
-                    errMsg = response.getErrMsg();
-                } else {
-                    errMsg = response.getCode().name();
-                }
-                return new DLException(response.getCode(), errMsg);
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLIllegalStateException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLIllegalStateException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLIllegalStateException.java
index 7aa8c39..8dc4116 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLIllegalStateException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLIllegalStateException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Signals that a method has been invoked at an illegal or inappropriate time.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLInterruptedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLInterruptedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLInterruptedException.java
index 6eaf8ac..7b4d5be 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLInterruptedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/DLInterruptedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * An interrupted exception wrapper indicates dl operations are interrupted.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfLogSegmentException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfLogSegmentException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfLogSegmentException.java
index 356dde8..5c12995 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfLogSegmentException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfLogSegmentException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown when reach end of the log segment.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfStreamException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfStreamException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfStreamException.java
index 4b8a931..cc2c79f 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfStreamException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/EndOfStreamException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown when a reader reaches end of a sealed log stream.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/FlushException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/FlushException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/FlushException.java
index 7225970..b471778 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/FlushException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/FlushException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception indicates that errors occurred on flushing data.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InternalServerException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InternalServerException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InternalServerException.java
index 9032c2b..ff6338a 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InternalServerException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InternalServerException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception indicates that there is an internal error at distributedlog 
service side.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidEnvelopedEntryException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidEnvelopedEntryException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidEnvelopedEntryException.java
index d46d14e..b52af61 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidEnvelopedEntryException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidEnvelopedEntryException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown when encounter invalid enveloped entry.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidStreamNameException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidStreamNameException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidStreamNameException.java
index 29e2663..ca6f4db 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidStreamNameException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/InvalidStreamNameException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when encountered invalid log stream.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LockingException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LockingException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LockingException.java
index 63f6b0f..55bd88f 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LockingException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LockingException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception when a log writer attempts to acquire a lock to write data to the 
stream.
  */
@@ -34,11 +32,11 @@ public class LockingException extends DLException {
         this(StatusCode.LOCKING_EXCEPTION, lockPath, message, cause);
     }
 
-    protected LockingException(StatusCode code, String lockPath, String 
message) {
+    protected LockingException(int code, String lockPath, String message) {
         super(code, String.format("LockPath - %s: %s", lockPath, message));
     }
 
-    protected LockingException(StatusCode code, String lockPath, String 
message, Throwable cause) {
+    protected LockingException(int code, String lockPath, String message, 
Throwable cause) {
         super(code, String.format("LockPath - %s: %s", lockPath, message), 
cause);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogEmptyException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogEmptyException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogEmptyException.java
index ba3545d..0326a9a 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogEmptyException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogEmptyException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exceptions are thrown when attempt to read a log stream that doesn't have 
any records.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogExistsException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogExistsException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogExistsException.java
index 3ecb80f..cb2bc65 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogExistsException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogExistsException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown on creating a log stream but the log stream already exists.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogNotFoundException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogNotFoundException.java
index 3795c5a..9ac14ba 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogNotFoundException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogNotFoundException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when a reader attempts to read a log stream that 
doesn't exist.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogReadException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogReadException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogReadException.java
index 91cf5c9..d2ca399 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogReadException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogReadException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Thrown when there's a failure to read an edit log op from disk when loading
  * edits.

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogRecordTooLongException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogRecordTooLongException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogRecordTooLongException.java
index 2cb9085..dd1d66d 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogRecordTooLongException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogRecordTooLongException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when attempting to write a record whose size is too 
larger.
  *

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentIsTruncatedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentIsTruncatedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentIsTruncatedException.java
index ac2ebda..3364940 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentIsTruncatedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentIsTruncatedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when reading data from a truncated log segment.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentNotFoundException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentNotFoundException.java
index 5245cdc..7fad552 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentNotFoundException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/LogSegmentNotFoundException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception on log segment not found.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/MetadataException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/MetadataException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/MetadataException.java
index 6dba778..559972b 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/MetadataException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/MetadataException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when encountering metadata errors.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/NotYetImplementedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/NotYetImplementedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/NotYetImplementedException.java
index eb709de..75eaa52 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/NotYetImplementedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/NotYetImplementedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when a method is not implemented yet.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OverCapacityException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OverCapacityException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OverCapacityException.java
index 6dc4767..4247874 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OverCapacityException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OverCapacityException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when the system is over capacity.
  *
@@ -33,7 +31,7 @@ public class OverCapacityException extends DLException {
         super(StatusCode.OVER_CAPACITY, message);
     }
 
-    public OverCapacityException(StatusCode code, String message) {
+    public OverCapacityException(int code, String message) {
         super(code, message);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OwnershipAcquireFailedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OwnershipAcquireFailedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OwnershipAcquireFailedException.java
index af85e79..b077f5e 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OwnershipAcquireFailedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/OwnershipAcquireFailedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when a log writer attempt to acquire a lock.
  *

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ReadCancelledException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ReadCancelledException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ReadCancelledException.java
index ac0508a..b179ce6 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ReadCancelledException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ReadCancelledException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Signals that a read request has been cancelled.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RegionUnavailableException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RegionUnavailableException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RegionUnavailableException.java
index 7a4b225..745ae6b 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RegionUnavailableException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RegionUnavailableException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception indicates that the service is not available in one region.
  *

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RequestDeniedException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RequestDeniedException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RequestDeniedException.java
index ab730f3..e26f6db 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RequestDeniedException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RequestDeniedException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Signals that a request has been denied at the server.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RetryableReadException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RetryableReadException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RetryableReadException.java
index 10a1e53..1ed506f 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RetryableReadException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/RetryableReadException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Signals that a read request can be retried..
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ServiceUnavailableException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ServiceUnavailableException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ServiceUnavailableException.java
index ca266c2..5ab7f03 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ServiceUnavailableException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/ServiceUnavailableException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception indicates that the service is unavailable at the server side.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StatusCode.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StatusCode.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StatusCode.java
new file mode 100644
index 0000000..6dbb931
--- /dev/null
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StatusCode.java
@@ -0,0 +1,122 @@
+/**
+ * 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.distributedlog.exceptions;
+
+/**
+ * Exception Status Code.
+ */
+public interface StatusCode {
+
+    /* 2xx: action requested by the client was received, understood, accepted 
and processed successfully. */
+
+    /* standard response for successful requests. */
+    int SUCCESS = 200;
+
+    /* 3xx: client must take additional action to complete the request. */
+
+    /* client closed. */
+    int CLIENT_CLOSED = 301;
+    /* found the stream in a different server, a redirection is required by 
client. */
+    int FOUND = 302;
+
+    /* 4xx: client seems to have erred. */
+
+    /* request is denied for some reason */
+    int REQUEST_DENIED = 403;
+    /* request record too large */
+    int TOO_LARGE_RECORD = 413;
+
+    /* 5xx: server failed to fulfill an apparently valid request. */
+
+    /* Generic error message, given when no more specific message is suitable. 
*/
+    int INTERNAL_SERVER_ERROR = 500;
+    /* Not implemented */
+    int NOT_IMPLEMENTED = 501;
+    /* Already Closed Exception */
+    int ALREADY_CLOSED = 502;
+    /* Service is currently unavailable (because it is overloaded or down for 
maintenance). */
+    int SERVICE_UNAVAILABLE = 503;
+    /* Locking exception */
+    int LOCKING_EXCEPTION = 504;
+    /* ZooKeeper Errors */
+    int ZOOKEEPER_ERROR = 505;
+    /* Metadata exception */
+    int METADATA_EXCEPTION = 506;
+    /* BK Transmit Error */
+    int BK_TRANSMIT_ERROR = 507;
+    /* Flush timeout */
+    int FLUSH_TIMEOUT = 508;
+    /* Log empty */
+    int LOG_EMPTY = 509;
+    /* Log not found */
+    int LOG_NOT_FOUND = 510;
+    /* Truncated Transactions */
+    int TRUNCATED_TRANSACTION = 511;
+    /* End of Stream */
+    int END_OF_STREAM = 512;
+    /* Transaction Id Out of Order */
+    int TRANSACTION_OUT_OF_ORDER = 513;
+    /* Write exception */
+    int WRITE_EXCEPTION = 514;
+    /* Stream Unavailable */
+    int STREAM_UNAVAILABLE = 515;
+    /* Write cancelled exception */
+    int WRITE_CANCELLED_EXCEPTION = 516;
+    /* over-capacity/backpressure */
+    int OVER_CAPACITY = 517;
+
+    /** stream exists but is not ready (recovering etc.).
+     the difference between NOT_READY and UNAVAILABLE is that UNAVAILABLE
+     indicates the stream is no longer owned by the proxy and we should
+     redirect. NOT_READY indicates the stream exist at the proxy but isn't
+     eady for writes. */
+    int STREAM_NOT_READY = 518;
+    /* Region Unavailable */
+    int REGION_UNAVAILABLE = 519;
+    /* Invalid Enveloped Entry */
+    int INVALID_ENVELOPED_ENTRY = 520;
+    /* Unsupported metadata version */
+    int UNSUPPORTED_METADATA_VERSION = 521;
+    /* Log Already Exists */
+    int LOG_EXISTS = 522;
+    /* Checksum failed on the request */
+    int CHECKSUM_FAILED = 523;
+    /* Overcapacity: too many streams */
+    int TOO_MANY_STREAMS = 524;
+    /* Log Segment Not Found */
+    int LOG_SEGMENT_NOT_FOUND = 525;
+    /* End of Log Segment */
+    int END_OF_LOG_SEGMENT = 526;
+    /* Log Segment Is Truncated */
+    int LOG_SEGMENT_IS_TRUNCATED = 527;
+
+    /* 6xx: unexpected */
+
+    int UNEXPECTED = 600;
+    int INTERRUPTED = 601;
+    int INVALID_STREAM_NAME = 602;
+    int ILLEGAL_STATE = 603;
+
+    /* 10xx: reader exceptions */
+
+    int RETRYABLE_READ = 1000;
+    int LOG_READ_ERROR = 1001;
+    /* Read cancelled exception */
+    int READ_CANCELLED_EXCEPTION = 1002;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamNotReadyException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamNotReadyException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamNotReadyException.java
index ded9da1..a58a80f 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamNotReadyException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamNotReadyException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception is thrown when a log stream is not ready on server side for 
serving the write requests.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamUnavailableException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamUnavailableException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamUnavailableException.java
index fd0910e..ecba754 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamUnavailableException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/StreamUnavailableException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Exception thrown when a stream is not available for serving traffic.
  */

http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/c44e0278/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/TooManyStreamsException.java
----------------------------------------------------------------------
diff --git 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/TooManyStreamsException.java
 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/TooManyStreamsException.java
index 17e2e38..cc948d9 100644
--- 
a/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/TooManyStreamsException.java
+++ 
b/distributedlog-protocol/src/main/java/org/apache/distributedlog/exceptions/TooManyStreamsException.java
@@ -17,8 +17,6 @@
  */
 package org.apache.distributedlog.exceptions;
 
-import org.apache.distributedlog.thrift.service.StatusCode;
-
 /**
  * Signals that a server has been serving too many streams.
  */


Reply via email to