This is an automated email from the ASF dual-hosted git repository. jiangtian pushed a commit to branch thrift_test in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 2267ba80e16bb4a4a5e8caf4bb685662cefd4910 Author: jt2594838 <[email protected]> AuthorDate: Thu Jun 11 16:57:12 2020 +0800 test --- server/src/assembly/resources/sbin/test.sh | 82 ++++++++++++++++++++++ .../org/apache/iotdb/db/service/TSServiceImpl.java | 63 ++++++++++++++++- service-rpc/src/main/thrift/rpc.thrift | 2 + 3 files changed, 144 insertions(+), 3 deletions(-) diff --git a/server/src/assembly/resources/sbin/test.sh b/server/src/assembly/resources/sbin/test.sh new file mode 100644 index 0000000..f3618ef --- /dev/null +++ b/server/src/assembly/resources/sbin/test.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# +# 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. +# + + +echo --------------------- +echo Starting IoTDB +echo --------------------- + +if [ -z "${IOTDB_HOME}" ]; then + export IOTDB_HOME="`dirname "$0"`/.." +fi + +IOTDB_CONF=${IOTDB_HOME}/conf +# IOTDB_LOGS=${IOTDB_HOME}/logs + +is_conf_path=false +for arg do + shift + if [ "$arg" == "-c" ]; then + is_conf_path=true + continue + fi + if [ $is_conf_path == true ]; then + IOTDB_CONF=$arg + is_conf_path=false + continue + fi + set -- "$@" "$arg" +done + +CONF_PARAMS=$* + +if [ -f "$IOTDB_CONF/iotdb-env.sh" ]; then + if [ "$#" -ge "1" -a "$1" == "printgc" ]; then + . "$IOTDB_CONF/iotdb-env.sh" "printgc" + else + . "$IOTDB_CONF/iotdb-env.sh" + fi +else + echo "can't find $IOTDB_CONF/iotdb-env.sh" +fi + +CLASSPATH="" +for f in ${IOTDB_HOME}/lib/*.jar; do + CLASSPATH=${CLASSPATH}":"$f +done +classname=org.apache.iotdb.db.service.TSServiceImpl + +launch_service() +{ + class="$1" + iotdb_parms="-Dlogback.configurationFile=${IOTDB_CONF}/logback.xml" + iotdb_parms="$iotdb_parms -DIOTDB_HOME=${IOTDB_HOME}" + iotdb_parms="$iotdb_parms -DTSFILE_HOME=${IOTDB_HOME}" + iotdb_parms="$iotdb_parms -DIOTDB_CONF=${IOTDB_CONF}" + iotdb_parms="$iotdb_parms -DTSFILE_CONF=${IOTDB_CONF}" + iotdb_parms="$iotdb_parms -Dname=iotdb\.IoTDB" + exec "$JAVA" $iotdb_parms $IOTDB_JMX_OPTS $iotdb_parms -cp "$CLASSPATH" "$class" $CONF_PARAMS + return $? +} + +# Start up the service +launch_service "$classname" + +exit $? diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java index d17457e..57284d0 100644 --- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java +++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java @@ -25,15 +25,25 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.sql.SQLException; import java.time.ZoneId; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; import org.antlr.v4.runtime.misc.ParseCancellationException; import org.apache.iotdb.db.auth.AuthException; import org.apache.iotdb.db.auth.AuthorityChecker; -import org.apache.iotdb.db.auth.authorizer.IAuthorizer; import org.apache.iotdb.db.auth.authorizer.BasicAuthorizer; +import org.apache.iotdb.db.auth.authorizer.IAuthorizer; import org.apache.iotdb.db.conf.IoTDBConfig; import org.apache.iotdb.db.conf.IoTDBConstant; import org.apache.iotdb.db.conf.IoTDBDescriptor; @@ -53,8 +63,14 @@ import org.apache.iotdb.db.qp.executor.IPlanExecutor; import org.apache.iotdb.db.qp.executor.PlanExecutor; import org.apache.iotdb.db.qp.logical.Operator.OperatorType; import org.apache.iotdb.db.qp.physical.PhysicalPlan; -import org.apache.iotdb.db.qp.physical.crud.*; +import org.apache.iotdb.db.qp.physical.crud.AggregationPlan; +import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan; import org.apache.iotdb.db.qp.physical.crud.AlignByDevicePlan.MeasurementType; +import org.apache.iotdb.db.qp.physical.crud.DeletePlan; +import org.apache.iotdb.db.qp.physical.crud.InsertPlan; +import org.apache.iotdb.db.qp.physical.crud.InsertTabletPlan; +import org.apache.iotdb.db.qp.physical.crud.LastQueryPlan; +import org.apache.iotdb.db.qp.physical.crud.QueryPlan; import org.apache.iotdb.db.qp.physical.sys.AuthorPlan; import org.apache.iotdb.db.qp.physical.sys.CreateTimeSeriesPlan; import org.apache.iotdb.db.qp.physical.sys.DeleteStorageGroupPlan; @@ -89,6 +105,7 @@ import org.apache.iotdb.service.rpc.thrift.TSFetchResultsReq; import org.apache.iotdb.service.rpc.thrift.TSFetchResultsResp; import org.apache.iotdb.service.rpc.thrift.TSGetTimeZoneResp; import org.apache.iotdb.service.rpc.thrift.TSIService; +import org.apache.iotdb.service.rpc.thrift.TSIService.Client; import org.apache.iotdb.service.rpc.thrift.TSInsertRecordReq; import org.apache.iotdb.service.rpc.thrift.TSInsertRecordsReq; import org.apache.iotdb.service.rpc.thrift.TSInsertTabletReq; @@ -108,7 +125,12 @@ import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding; import org.apache.iotdb.tsfile.read.common.Path; import org.apache.iotdb.tsfile.read.query.dataset.QueryDataSet; import org.apache.thrift.TException; +import org.apache.thrift.protocol.TBinaryProtocol; +import org.apache.thrift.protocol.TProtocol; import org.apache.thrift.server.ServerContext; +import org.apache.thrift.transport.TFastFramedTransport; +import org.apache.thrift.transport.TSocket; +import org.apache.thrift.transport.TTransport; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -1463,4 +1485,39 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext { throws MetadataException { return SchemaUtils.getSeriesTypesByString(paths, aggregation); } + + @Override + public long requestCommitId(long headerId) { + return 0; + } + + public static void main(String[] args) throws TException { + + + AtomicInteger globalCnt = new AtomicInteger(); + long startTime = System.currentTimeMillis(); + int clientNum = 50; + ExecutorService pool = Executors.newFixedThreadPool(clientNum); + for (int i = 0; i < clientNum; i++) { + pool.submit(() -> { + TTransport tTransport = new TFastFramedTransport(new TSocket(args[0], + Integer.parseInt(args[1]))); + TProtocol protocol = new TBinaryProtocol(tTransport); + Client client = new Client(protocol); + tTransport.open(); + int cnt = 0; + while (true) { + client.requestCommitId(0); + cnt ++; + if (cnt % (1000000 / clientNum) == 0) { + int gc = globalCnt.addAndGet(1000000 / clientNum); + long consumedTime = System.currentTimeMillis() - startTime; + System.out.println(String.format("%d request complete, time %d, speed %f", gc, + consumedTime, (double) gc / consumedTime)); + } + } + }); + } + + } } diff --git a/service-rpc/src/main/thrift/rpc.thrift b/service-rpc/src/main/thrift/rpc.thrift index 6dd4edf..e68d2d5 100644 --- a/service-rpc/src/main/thrift/rpc.thrift +++ b/service-rpc/src/main/thrift/rpc.thrift @@ -312,4 +312,6 @@ service TSIService { TSStatus deleteData(1:TSDeleteDataReq req); i64 requestStatementId(1:i64 sessionId); + + i64 requestCommitId(1:i64 headerId) }
