You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2016/11/02 08:38:30 UTC

[08/32] kylin git commit: KYLIN-2105 remove QueryIdGenerator and QueryIdGeneratorTest, simply use UUID as QueryId

KYLIN-2105 remove QueryIdGenerator and QueryIdGeneratorTest, simply use UUID as QueryId


Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/46a894db
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/46a894db
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/46a894db

Branch: refs/heads/v1.6.0-rc1-hbase1.x
Commit: 46a894db60e7538468d6e7459ea760bca286249e
Parents: 5d4d639
Author: gaodayue <ga...@meituan.com>
Authored: Thu Oct 27 12:14:49 2016 +0800
Committer: gaodayue <ga...@meituan.com>
Committed: Fri Oct 28 13:32:38 2016 +0800

----------------------------------------------------------------------
 .../apache/kylin/rest/service/QueryService.java |   8 +-
 .../kylin/rest/util/QueryIdGenerator.java       |  47 --------
 .../kylin/rest/util/QueryIdGeneratorTest.java   | 108 -------------------
 .../coprocessor/endpoint/CubeVisitService.java  |   2 +-
 4 files changed, 4 insertions(+), 161 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/kylin/blob/46a894db/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 94f2dd5..81af044 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -39,6 +39,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.UUID;
 
 import javax.annotation.PostConstruct;
 import javax.sql.DataSource;
@@ -72,7 +73,6 @@ import org.apache.kylin.rest.model.TableMeta;
 import org.apache.kylin.rest.request.PrepareSqlRequest;
 import org.apache.kylin.rest.request.SQLRequest;
 import org.apache.kylin.rest.response.SQLResponse;
-import org.apache.kylin.rest.util.QueryIdGenerator;
 import org.apache.kylin.rest.util.QueryUtil;
 import org.apache.kylin.rest.util.Serializer;
 import org.apache.kylin.rest.util.TableauInterceptor;
@@ -117,8 +117,6 @@ public class QueryService extends BasicService {
     private final String hbaseUrl;
     private final String userTableName;
 
-    private QueryIdGenerator queryIdGenerator = new QueryIdGenerator();
-
     @Autowired
     private CacheManager cacheManager;
 
@@ -325,7 +323,7 @@ public class QueryService extends BasicService {
             throw new InternalErrorException("Query is not allowed in " + serverMode + " mode.");
         }
 
-        final String queryId = queryIdGenerator.nextId(sqlRequest.getProject());
+        final String queryId = UUID.randomUUID().toString();
 
         Map<String, String> toggles = new HashMap<>();
         toggles.put(BackdoorToggles.KEY_QUERY_ID, queryId);
@@ -334,7 +332,7 @@ public class QueryService extends BasicService {
         }
         BackdoorToggles.setToggles(toggles);
 
-        try (SetThreadName ignored = new SetThreadName("Query-%s", queryId)) {
+        try (SetThreadName ignored = new SetThreadName("Query %s", queryId)) {
             String sql = sqlRequest.getSql();
             String project = sqlRequest.getProject();
             logger.info("Using project: " + project);

http://git-wip-us.apache.org/repos/asf/kylin/blob/46a894db/server-base/src/main/java/org/apache/kylin/rest/util/QueryIdGenerator.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/util/QueryIdGenerator.java b/server-base/src/main/java/org/apache/kylin/rest/util/QueryIdGenerator.java
deleted file mode 100644
index 2dd19c2..0000000
--- a/server-base/src/main/java/org/apache/kylin/rest/util/QueryIdGenerator.java
+++ /dev/null
@@ -1,47 +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.kylin.rest.util;
-
-import org.apache.commons.lang3.time.FastDateFormat;
-
-import javax.annotation.Nonnull;
-import javax.annotation.concurrent.ThreadSafe;
-import java.util.concurrent.ThreadLocalRandom;
-
-@ThreadSafe
-public class QueryIdGenerator {
-    private static final char[] base26 = "abcdefghijklmnopqrstuvwxyz".toCharArray();
-    private static final FastDateFormat dateFormat = FastDateFormat.getInstance("yyyyMMdd_HHmmss");
-
-    /**
-     * @param project name of the project
-     * @return the next query id. We try to generate unique id as much as possible, but don't guarantee it.
-     */
-    @Nonnull
-    public String nextId(final String project) {
-        char[] postfix = new char[6];
-        for (int i = 0; i < postfix.length; i++) {
-            postfix[i] = base26[ThreadLocalRandom.current().nextInt(base26.length)];
-        }
-
-        return new String(postfix);
-        //return String.format("%s_%s_%s", dateFormat.format(System.currentTimeMillis()), project, new String(postfix));
-        //disabled testcase: org.apache.kylin.rest.util.QueryIdGeneratorTest.testIdFormat()
-    }
-}

http://git-wip-us.apache.org/repos/asf/kylin/blob/46a894db/server-base/src/test/java/org/apache/kylin/rest/util/QueryIdGeneratorTest.java
----------------------------------------------------------------------
diff --git a/server-base/src/test/java/org/apache/kylin/rest/util/QueryIdGeneratorTest.java b/server-base/src/test/java/org/apache/kylin/rest/util/QueryIdGeneratorTest.java
deleted file mode 100644
index dc82c17..0000000
--- a/server-base/src/test/java/org/apache/kylin/rest/util/QueryIdGeneratorTest.java
+++ /dev/null
@@ -1,108 +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.kylin.rest.util;
-
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import java.util.HashSet;
-import java.util.Set;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
-
-public class QueryIdGeneratorTest {
-
-    @Ignore
-    @Test
-    public void testIdFormat() {
-        QueryIdGenerator generator = new QueryIdGenerator();
-        for (int i = 0; i < 100; i++) {
-            String queryId = generator.nextId("project");
-            Assert.assertTrue(queryId.contains("project"));
-        }
-    }
-
-    @Test
-    public void testIdUniqueness() {
-        QueryIdGenerator generator = new QueryIdGenerator();
-        Set<String> idSet = new HashSet<>();
-
-        for (int i = 0; i < 1000; i++) {
-            idSet.add(generator.nextId("test"));
-        }
-
-        Assert.assertEquals(1000, idSet.size());
-    }
-
-    @Test
-    public void testSingleThreadThroughput() {
-        int N = 1_000_000;
-        long millis = new GenIdTask(new QueryIdGenerator(), N).call();
-
-        // ops / second
-        double throughput = (N * 1000.0) / millis;
-        System.out.format("QueryIdGenerator single thread throughput: %d ops/second\n", (int) throughput);
-    }
-
-    @Test
-    public void testMultiThreadsThroughput() throws ExecutionException, InterruptedException {
-        QueryIdGenerator generator = new QueryIdGenerator();
-        int N = 1_000_000;
-
-        final int numThreads = 4;
-        ExecutorService pool = Executors.newFixedThreadPool(numThreads);
-        Future[] futures = new Future[numThreads];
-
-        for (int i = 0; i < numThreads; i++) {
-            futures[i] = pool.submit(new GenIdTask(generator, N));
-        }
-
-        long sumMillis = 0;
-        for (int i = 0; i < numThreads; i++) {
-            sumMillis += (long) futures[i].get();
-        }
-        pool.shutdown();
-
-        double avgThroughputPerThread = (N * 1000.0) / (sumMillis / (double) numThreads);
-        System.out.format("QueryIdGenerator multi threads throughput: %d ops/second\n", (int) avgThroughputPerThread);
-    }
-
-    private static class GenIdTask implements Callable<Long> {
-        private final QueryIdGenerator generator;
-        private final int N;
-
-        GenIdTask(QueryIdGenerator generator, int N) {
-            this.generator = generator;
-            this.N = N;
-        }
-
-        @Override
-        public Long call() {
-            long start = System.currentTimeMillis();
-            for (int i = 0; i < N; i++) {
-                generator.nextId("test");
-            }
-            return System.currentTimeMillis() - start;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/46a894db/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
----------------------------------------------------------------------
diff --git a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
index 506778c..da9c932 100644
--- a/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
+++ b/storage-hbase/src/main/java/org/apache/kylin/storage/hbase/cube/v2/coprocessor/endpoint/CubeVisitService.java
@@ -176,7 +176,7 @@ public class CubeVisitService extends CubeVisitProtos.CubeVisitService implement
         String debugGitTag = "";
 
         String queryId = request.hasQueryId() ? request.getQueryId() : "UnknownId";
-        try (SetThreadName ignored = new SetThreadName("Kylin Query-%s", queryId)) {
+        try (SetThreadName ignored = new SetThreadName("Query %s", queryId)) {
             this.serviceStartTime = System.currentTimeMillis();
 
             region = env.getRegion();