You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2019/08/17 05:26:05 UTC

[incubator-iotdb] branch tool_print_tsfileSource created (now 4a074cd)

This is an automated email from the ASF dual-hosted git repository.

hxd pushed a change to branch tool_print_tsfileSource
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


      at 4a074cd  add a tool to print tsfileResources (each device's start and end time)

This branch includes the following new commits:

     new 4a074cd  add a tool to print tsfileResources (each device's start and end time)

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[incubator-iotdb] 01/01: add a tool to print tsfileResources (each device's start and end time)

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch tool_print_tsfileSource
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 4a074cd5f5c1cfd86020f1c4c0210230b6dc4d6e
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Sat Aug 17 13:25:47 2019 +0800

    add a tool to print tsfileResources (each device's start and end time)
---
 .../tools/print-tsfile-resource-files.bat          | 110 +++++++++++++++++++++
 .../resources/tools/print-tsfile-resource-files.sh |  85 ++++++++++++++++
 .../iotdb/db/tools/TsFileResourcePrinter.java      |  64 ++++++++++++
 3 files changed, 259 insertions(+)

diff --git a/server/src/assembly/resources/tools/print-tsfile-resource-files.bat b/server/src/assembly/resources/tools/print-tsfile-resource-files.bat
new file mode 100644
index 0000000..db00ff1
--- /dev/null
+++ b/server/src/assembly/resources/tools/print-tsfile-resource-files.bat
@@ -0,0 +1,110 @@
+@REM
+@REM Licensed to the Apache Software Foundation (ASF) under one
+@REM or more contributor license agreements.  See the NOTICE file
+@REM distributed with this work for additional information
+@REM regarding copyright ownership.  The ASF licenses this file
+@REM to you under the Apache License, Version 2.0 (the
+@REM "License"); you may not use this file except in compliance
+@REM with the License.  You may obtain a copy of the License at
+@REM
+@REM     http://www.apache.org/licenses/LICENSE-2.0
+@REM
+@REM Unless required by applicable law or agreed to in writing,
+@REM software distributed under the License is distributed on an
+@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+@REM KIND, either express or implied.  See the License for the
+@REM specific language governing permissions and limitations
+@REM under the License.
+@REM
+
+@echo off
+echo ````````````````````````
+echo Starting Printing the TsFileResources
+echo ````````````````````````
+
+PATH %PATH%;%JAVA_HOME%\bin\
+set "FULL_VERSION="
+set "MAJOR_VERSION="
+set "MINOR_VERSION="
+
+
+for /f tokens^=2-5^ delims^=.-_+^" %%j in ('java -fullversion 2^>^&1') do (
+	set "FULL_VERSION=%%j-%%k-%%l-%%m"
+	IF "%%j" == "1" (
+	    set "MAJOR_VERSION=%%k"
+	    set "MINOR_VERSION=%%l"
+	) else (
+	    set "MAJOR_VERSION=%%j"
+	    set "MINOR_VERSION=%%k"
+	)
+)
+
+set JAVA_VERSION=%MAJOR_VERSION%
+
+IF NOT %JAVA_VERSION% == 8 (
+	IF NOT %JAVA_VERSION% == 11 (
+		echo IoTDB only supports jdk8 or jdk11, please check your java version.
+		goto finally
+	)
+) 
+
+if "%OS%" == "Windows_NT" setlocal
+
+pushd %~dp0..
+if NOT DEFINED IOTDB_HOME set IOTDB_HOME=%cd%
+popd
+
+set IOTDB_CONF=%IOTDB_HOME%\conf
+set IOTDB_LOGS=%IOTDB_HOME%\logs
+
+if NOT DEFINED MAIN_CLASS set MAIN_CLASS=org.apache.iotdb.db.tools.TsFileResourcePrinter
+if NOT DEFINED JAVA_HOME goto :err
+
+@REM -----------------------------------------------------------------------------
+@REM JVM Opts we'll use in legacy run or installation
+set JAVA_OPTS=-ea^
+ -Dlogback.configurationFile="%IOTDB_CONF%\logback.xml"^
+ -DIOTDB_HOME="%IOTDB_HOME%"^
+ -DTSFILE_HOME="%IOTDB_HOME%"^
+ -DIOTDB_CONF="%IOTDB_CONF%"
+
+@REM ***** CLASSPATH library setting *****
+@REM Ensure that any user defined CLASSPATH variables are not used on startup
+set CLASSPATH="%IOTDB_HOME%\lib"
+
+REM For each jar in the IOTDB_HOME lib directory call append to build the CLASSPATH variable.
+for %%i in ("%IOTDB_HOME%\lib\*.jar") do call :append "%%i"
+set CLASSPATH=%CLASSPATH%
+goto okClasspath
+
+:append
+set CLASSPATH=%CLASSPATH%;%1
+goto :eof
+
+REM -----------------------------------------------------------------------------
+:okClasspath
+
+rem echo CLASSPATH: %CLASSPATH%
+set IOTDB_DATA=%IOTDB_HOME%\data
+set IOTDB_WAL=%IOTDB_DATA%\wal
+
+IF EXIST "%IOTDB_WAL%" (
+    "%JAVA_HOME%\bin\java" %JAVA_OPTS% %IOTDB_HEAP_OPTS% -cp %CLASSPATH% %IOTDB_JMX_OPTS% %MAIN_CLASS% %IOTDB_WAL%
+    ) ELSE (
+    echo "can't find %IOTDB_WAL%"
+    )
+
+
+goto finally
+
+:err
+echo JAVA_HOME environment variable must be set!
+pause
+
+
+@REM -----------------------------------------------------------------------------
+:finally
+
+pause
+
+ENDLOCAL
diff --git a/server/src/assembly/resources/tools/print-tsfile-resource-files.sh b/server/src/assembly/resources/tools/print-tsfile-resource-files.sh
new file mode 100644
index 0000000..a6e0e5a
--- /dev/null
+++ b/server/src/assembly/resources/tools/print-tsfile-resource-files.sh
@@ -0,0 +1,85 @@
+#!/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 Printing the TsFileResources
+echo ---------------------
+
+if [ -z "${IOTDB_HOME}" ]; then
+  export IOTDB_HOME="`dirname "$0"`/.."
+fi
+
+IOTDB_CONF=${IOTDB_HOME}/conf
+# IOTDB_LOGS=${IOTDB_HOME}/logs
+
+#if [ -f "$IOTDB_CONF/iotdb-env.sh" ]; then
+#    . "$IOTDB_CONF/iotdb-env.sh"
+#else
+#    echo "can't find $IOTDB_CONF/iotdb-env.sh"
+#fi
+
+if [ -n "$JAVA_HOME" ]; then
+    for java in "$JAVA_HOME"/bin/amd64/java "$JAVA_HOME"/bin/java; do
+        if [ -x "$java" ]; then
+            JAVA="$java"
+            break
+        fi
+    done
+else
+    JAVA=java
+fi
+
+if [ -z $JAVA ] ; then
+    echo Unable to find java executable. Check JAVA_HOME and PATH environment variables.  > /dev/stderr
+    exit 1;
+fi
+
+CLASSPATH=""
+for f in ${IOTDB_HOME}/lib/*.jar; do
+  CLASSPATH=${CLASSPATH}":"$f
+done
+classname=org.apache.iotdb.db.tools.TsFileResourcePrinter
+
+
+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 -Dname=iotdb\.IoTDB"
+	exec "$JAVA" $iotdb_parms $IOTDB_JMX_OPTS $iotdb_parms -cp "$CLASSPATH"  "$class" "$WALPATH"
+	return $?
+}
+
+# Start up the service
+#launch_service "$classname"
+
+if [ ! -d ${IOTDB_HOME}/data/wal ]; then
+    echo "Can't find wal directory." 
+    exit 1;
+else
+    WALPATH=${IOTDB_HOME}/data/wal
+    launch_service "$classname"    
+fi
+
+exit $?
diff --git a/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
new file mode 100644
index 0000000..ed384ce
--- /dev/null
+++ b/server/src/main/java/org/apache/iotdb/db/tools/TsFileResourcePrinter.java
@@ -0,0 +1,64 @@
+/**
+ * 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.iotdb.db.tools;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import org.apache.iotdb.db.engine.storagegroup.TsFileResource;
+import org.apache.iotdb.db.qp.constant.DatetimeUtils;
+
+/**
+ * this tool can analyze the tsfile.resource files from a folder.
+ */
+public class TsFileResourcePrinter {
+
+  public static void main(String[] args) throws IOException {
+
+    String folder = "test";
+    if (args.length >= 1) {
+      folder = args[0];
+    }
+    File folderFile = new File(folder);
+    File[] files = folderFile.listFiles((dir, name) -> name.endsWith(".tsfile.resource"));
+    Arrays.sort(files, (x, y) -> Long
+        .compare(Long.valueOf(x.getName().split("-")[0]), Long.valueOf(y.getName().split("-")[0])));
+
+    for (File file : files) {
+      printResource(file.getAbsolutePath());
+    }
+    System.out.println("analyzing the resource file finished.");
+  }
+
+  public static void printResource(String filename) throws IOException {
+    filename = filename.substring(0, filename.length() - 9);
+    TsFileResource resource = new TsFileResource(new File(filename));
+    System.err.println(String.format("analyzing %s ...", filename));
+    resource.deSerialize();
+
+    for (String device : resource.getStartTimeMap().keySet()) {
+      System.out.println(String.format("device %s, start time %d (%s), end time %d (%s)", device,
+          resource.getStartTimeMap().get(device),
+          DatetimeUtils.convertMillsecondToZonedDateTime(resource.getStartTimeMap().get(device)),
+          resource.getEndTimeMap().get(device),
+          DatetimeUtils.convertMillsecondToZonedDateTime(resource.getEndTimeMap().get(device))));
+    }
+  }
+}