blob: 3bcbe2cc2ff8740787125de9ff2e9a9a0f6ee869 [file] [log] [blame]
(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{415:function(e,t,i){"use strict";i.r(t);var o=i(29),a=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"iotdb-working-process"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iotdb-working-process"}},[e._v("#")]),e._v(" IoTDB Working Process")]),e._v(" "),t("h2",{attrs:{id:"main-link"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#main-link"}},[e._v("#")]),e._v(" Main link")]),e._v(" "),t("p",[e._v("IoTDB official website:https://iotdb.apache.org/")]),e._v(" "),t("p",[e._v("Code library:https://github.com/apache/iotdb")]),e._v(" "),t("p",[e._v("Code library for go language: https://github.com/apache/iotdb-client-go")]),e._v(" "),t("p",[e._v("Library for resources (project's documents, compiler, etc): https://github.com/apache/iotdb-bin-resources")]),e._v(" "),t("p",[e._v("Get started quickly:http://iotdb.apache.org/UserGuide/Master/QuickStart/QuickStart.html")]),e._v(" "),t("p",[e._v("Jira Task Management:https://issues.apache.org/jira/projects/IOTDB/issues")]),e._v(" "),t("p",[e._v("Wiki Document Management:https://cwiki.apache.org/confluence/display/IOTDB/Home\\")]),e._v(" "),t("p",[e._v("Mailing list: https://lists.apache.org/list.html?dev@iotdb.apache.org")]),e._v(" "),t("p",[e._v("Everyday build: https://ci-builds.apache.org/job/IoTDB/job/IoTDB-Pipe/job/master/")]),e._v(" "),t("p",[e._v("Slack: https://apacheiotdb.slack.com/join/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg#/shared-invite/email")]),e._v(" "),t("h2",{attrs:{id:"subscribe-to-mailing-list"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#subscribe-to-mailing-list"}},[e._v("#")]),e._v(" Subscribe to mailing list")]),e._v(" "),t("p",[e._v("The mailing list is where the Apache project conducts technical discussions and communication with users. Follow the mailing list to receive mail.")]),e._v(" "),t("p",[e._v("Mailing list address:dev@iotdb.apache.org")]),e._v(" "),t("p",[e._v("Follow method: Send an email to dev-subscribe@iotdb.apache.org with the email you want to receive the email, the subject content is not limited, after receiving the reply, send a confirmation email to the confirmation address again (the confirmation address is longer, it is recommended gmail mailbox).")]),e._v(" "),t("p",[e._v("Other mailing list:")]),e._v(" "),t("ul",[t("li",[e._v("notifications@iotdb.apache.org (for JIRA information notification.)\n"),t("ul",[t("li",[e._v('If you only want to receive individual Jira notifications that you are interest in, you do not need to subscribe this mailing list. Instead, you just need to click "start-watching this issue" on the jira issue webpage or just comment on this issue.')])])]),e._v(" "),t("li",[e._v("commits@iotdb.apache.org (Any code changes will be notified here, please note that this mailing list will be very large)")]),e._v(" "),t("li",[e._v("reviews@iotdb.apache.org (Any code review comments will be notified here, please note that this mailing list will be very large)")])]),e._v(" "),t("h2",{attrs:{id:"new-features-bug-feedback-improvements-and-more"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#new-features-bug-feedback-improvements-and-more"}},[e._v("#")]),e._v(" New features, bug feedback, improvements and more")]),e._v(" "),t("p",[e._v("All features or bugs that you want IoTDB to do can be raised on Jira:https://issues.apache.org/jira/projects/IOTDB/issues")]),e._v(" "),t("p",[e._v("You can choose issue types: bug, improvement, new feature, etc. New issues will be automatically synchronized to the mailing list (notifications@), and subsequent discussions can be left on jira or on the mailing list. When the issue is resolved, close the issue.")]),e._v(" "),t("h2",{attrs:{id:"email-discussion-content-english"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#email-discussion-content-english"}},[e._v("#")]),e._v(" Email discussion content (English)")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Joining the mailing list for the first time can introduce youself briefly. (Hi, I'm xxx ...)")])]),e._v(" "),t("li",[t("p",[e._v("Before developing a new feature, you can send an e-mail to declare the task you want to do.(Hi,I'm working on issue IOTDB-XXX,My plan is ...)")])])]),e._v(" "),t("h2",{attrs:{id:"contributing-documents"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing-documents"}},[e._v("#")]),e._v(" Contributing documents")]),e._v(" "),t("p",[e._v("The content of all IoTDB official websites is in the docs of the project root directory:")]),e._v(" "),t("ul",[t("li",[e._v("docs/SystemDesign: System Design Document-English Version")]),e._v(" "),t("li",[e._v("docs/zh/SystemDesign: System Design Document-Chinese Version")]),e._v(" "),t("li",[e._v("docs/UserGuide: User Guide English Version")]),e._v(" "),t("li",[e._v("docs/zh/UserGuide: User Guide Chinese Version")]),e._v(" "),t("li",[e._v("docs/Community: community English Version")]),e._v(" "),t("li",[e._v("docs/zh/Community: community Chinese Version")]),e._v(" "),t("li",[e._v("docs/Development: Development Guide English Version")]),e._v(" "),t("li",[e._v("docs/zh/Development: Development Guide Chinese Version")])]),e._v(" "),t("p",[e._v("Correspondence between versions and branches on the official website:")]),e._v(" "),t("ul",[t("li",[e._v("In progress -> master")]),e._v(" "),t("li",[e._v("major_version.x -> rel/major_version (eg 0.9.x -> rel/0.9)")])]),e._v(" "),t("p",[e._v("Precautions:")]),e._v(" "),t("ul",[t("li",[e._v("Images in Markdown can be uploaded to https://github.com/apache/iotdb-bin-resources for url")]),e._v(" "),t("li",[e._v("Do not use special Unicode chars, e.g., U+FF1A")]),e._v(" "),t("li",[e._v("Do not use the character of dollar (as we will use Latex to generate pdf files)")])]),e._v(" "),t("h2",{attrs:{id:"code-formatting"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code-formatting"}},[e._v("#")]),e._v(" Code Formatting")]),e._v(" "),t("p",[e._v("We use the "),t("a",{attrs:{href:"https://github.com/diffplug/spotless/tree/main/plugin-maven",target:"_blank",rel:"noopener noreferrer"}},[e._v("Spotless\nplugin"),t("OutboundLink")],1),e._v(" together with "),t("a",{attrs:{href:"https://github.com/google/google-java-format",target:"_blank",rel:"noopener noreferrer"}},[e._v("google-java-format"),t("OutboundLink")],1),e._v(" to format our Java code. You can configure your IDE to automatically apply formatting on saving with these steps(Take idea as an example):")]),e._v(" "),t("ol",[t("li",[e._v("Download the "),t("a",{attrs:{href:"https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/83169",target:"_blank",rel:"noopener noreferrer"}},[e._v("google-java-format\nplugin v1.7.0.5"),t("OutboundLink")],1),e._v(", it can be installed in IDEA (Preferences -> plugins -> search google-java-format), "),t("a",{attrs:{href:"https://github.com/google/google-java-format#intellij-android-studio-and-other-jetbrains-ides",target:"_blank",rel:"noopener noreferrer"}},[e._v("More detailed setup manual"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v('Install the plugin from disk (Plugins -> little gear icon -> "Install plugin from disk" -> Navigate to downloaded zip file)')]),e._v(" "),t("li",[e._v("In the plugin settings, enable the plugin and keep the default Google code style (2-space indents)")]),e._v(" "),t("li",[e._v("Remember to never update this plugin to a later version,until Spotless was upgraded to version 1.8+.")]),e._v(" "),t("li",[e._v("Install the "),t("a",{attrs:{href:"https://plugins.jetbrains.com/plugin/7642-save-actions",target:"_blank",rel:"noopener noreferrer"}},[e._v("Save Actions\nplugin"),t("OutboundLink")],1),e._v(' , and enable the plugin, along with "Optimize imports" and "Reformat file"')]),e._v(" "),t("li",[e._v('In the "Save Actions" settings page, setup a "File Path Inclusion" for '),t("code",[e._v(".*\\.java")]),e._v(". Otherwise you will get unintended reformatting in other files you edit.")]),e._v(" "),t("li",[e._v('Fix the issues of reordering the import packages: in IDEA: choose: Preferences | Editor | Code Style | Java | imports. At the tail of the panel, there is "Import Layout", change it to:')])]),e._v(" "),t("div",{staticClass:"language-shell line-numbers-mode"},[t("pre",{pre:!0,attrs:{class:"language-shell"}},[t("code",[e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("import")]),e._v(" org.apache.iotdb.*\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("blank line"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("import")]),e._v(" all other imports\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("blank line"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("import")]),e._v(" java.*\n "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("<")]),e._v("blank line"),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v(">")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("import")]),e._v(" static all other imports\n")])]),e._v(" "),t("div",{staticClass:"line-numbers-wrapper"},[t("span",{staticClass:"line-number"},[e._v("1")]),t("br"),t("span",{staticClass:"line-number"},[e._v("2")]),t("br"),t("span",{staticClass:"line-number"},[e._v("3")]),t("br"),t("span",{staticClass:"line-number"},[e._v("4")]),t("br"),t("span",{staticClass:"line-number"},[e._v("5")]),t("br"),t("span",{staticClass:"line-number"},[e._v("6")]),t("br"),t("span",{staticClass:"line-number"},[e._v("7")]),t("br")])]),t("ol",{attrs:{start:"8"}},[t("li",[e._v("Before you submit codes, you can use "),t("code",[e._v("mvn spotless:check")]),e._v(" to check your codes manually,\nand use "),t("code",[e._v("mvn spotless:apply")]),e._v(" to format your codes.")])]),e._v(" "),t("h2",{attrs:{id:"code-sytle"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#code-sytle"}},[e._v("#")]),e._v(" Code Sytle")]),e._v(" "),t("p",[e._v("We use the "),t("a",{attrs:{href:"https://checkstyle.sourceforge.io/config_filefilters.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("maven-checkstyle-plugin"),t("OutboundLink")],1),e._v(" to make Java codes obey a consistent ruleset defined in "),t("a",{attrs:{href:"https://github.com/apache/iotdb/blob/master/checkstyle.xml",target:"_blank",rel:"noopener noreferrer"}},[e._v("checkstyle.xml"),t("OutboundLink")],1),e._v(" under the project root.")]),e._v(" "),t("p",[e._v("You can reference the code style rules in the file. After development, you can use "),t("code",[e._v("mvn validate")]),e._v(" to check whether your codes satisfy the style rules.")]),e._v(" "),t("p",[e._v("Besides, when you develop in an IDE, some default code style configurations may be conflict with those rules.")]),e._v(" "),t("p",[e._v("In IDEA, you can follow these steps to change those inconsistent style formatting rules:")]),e._v(" "),t("h3",{attrs:{id:"disable-using-wildcard-import"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#disable-using-wildcard-import"}},[e._v("#")]),e._v(" Disable using wildcard import")]),e._v(" "),t("ol",[t("li",[e._v("Navigate to Java code style configuration page (Preferences... -> Editor -> Code Style -> Java).")]),e._v(" "),t("li",[e._v("Switch to the 'imports' tab.")]),e._v(" "),t("li",[e._v("In the 'General' section, enable 'Use single class import' option.")]),e._v(" "),t("li",[e._v("Change 'Class count to use import with '*'' to 999 or another very large number.")]),e._v(" "),t("li",[e._v("Change 'Names to count to use static import with '*'' to 999 or another very large number.")])]),e._v(" "),t("h2",{attrs:{id:"contributing-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#contributing-code"}},[e._v("#")]),e._v(" Contributing code")]),e._v(" "),t("p",[e._v("You can go to jira to pick up the existing issue or create your own issue and get it. The comment says that I can do this issue.")]),e._v(" "),t("ul",[t("li",[e._v("Clone the repository to your own local repository, clone to the local, and associate the apache repository as the upstream upstream repository.")]),e._v(" "),t("li",[e._v("Cut out a new branch from master. The branch name is determined by the function of this branch. It is usually called f_new_feature (such as f_storage_engine) or fix_bug (such as fix_query_cache_bug).")]),e._v(" "),t("li",[e._v("Add code style as the root java-google-style.xml in the idea")]),e._v(" "),t("li",[e._v("Modify the code and add test cases (unit test, integration test)\n"),t("ul",[t("li",[e._v("Integration test reference:server/src/test/java/org/apache/iotdb/db/integration/IoTDBTimeZoneIT")])])]),e._v(" "),t("li",[e._v("Use "),t("code",[e._v("mvn spotless:check")]),e._v(" to check the code style and use "),t("code",[e._v("mvn spotless:apply")]),e._v(" to correct the code style")]),e._v(" "),t("li",[e._v("Submit a PR, starting with [IOTDB-jira number]")]),e._v(" "),t("li",[e._v("Email to dev mailing list:(I've submitted a PR for issue IOTDB-xxx [link])")]),e._v(" "),t("li",[e._v("Make changes based on other people's reviews and continue to update until merged")]),e._v(" "),t("li",[e._v("close jira issue")])]),e._v(" "),t("h1",{attrs:{id:"iotdb-debug-guide"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#iotdb-debug-guide"}},[e._v("#")]),e._v(" IoTDB Debug Guide")]),e._v(" "),t("h2",{attrs:{id:"import-the-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#import-the-code"}},[e._v("#")]),e._v(" Import the code")]),e._v(" "),t("h3",{attrs:{id:"intellij-idea"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#intellij-idea"}},[e._v("#")]),e._v(" Intellij idea")]),e._v(" "),t("p",[e._v("It is recommended to use Intellij idea。"),t("code",[e._v("mvn clean package -DskipTests")])]),e._v(" "),t("p",[e._v("Mark "),t("code",[e._v("antlr/target/generated-sources/antlr4")]),e._v(" and"),t("code",[e._v("thrift/target/generated-sources/thrift")]),e._v(" as "),t("code",[e._v("Source Root")]),e._v("。")]),e._v(" "),t("h3",{attrs:{id:"eclipse"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#eclipse"}},[e._v("#")]),e._v(" Eclipse")]),e._v(" "),t("p",[e._v("If it is a version before eclipse 2019,users need to be executed in the root directory of IoTDB "),t("code",[e._v("mvn eclipse:eclipse -DskipTests")]),e._v("。")]),e._v(" "),t("p",[e._v("import -> General -> Existing Projects into Workspace -> Select IoTDB root directory")]),e._v(" "),t("p",[e._v("If the version after eclipse 2019")]),e._v(" "),t("p",[e._v("import -> Maven -> Existing Maven Projects")]),e._v(" "),t("h2",{attrs:{id:"debugging-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#debugging-code"}},[e._v("#")]),e._v(" Debugging code")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Server main function:"),t("code",[e._v("server/src/main/java/org/apache/iotdb/db/service/IoTDB")]),e._v(", can be started in debug mode.")])]),e._v(" "),t("li",[t("p",[e._v("Cli:"),t("code",[e._v("cli/src/main/java/org/apache/iotdb/cli/")]),e._v(',Use Cli for linux and WinCli for windows, you can start directly with the parameter "'),t("code",[e._v("-h 127.0.0.1 -p 6667 -u root -pw root")]),e._v('"')])]),e._v(" "),t("li",[t("p",[e._v("Server rpc implementation (mainly used for cli and server communication, generally start interruption point here):"),t("code",[e._v("server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl")])])]),e._v(" "),t("li",[t("p",[e._v("all jdbc statements:"),t("code",[e._v("executeStatement(TSExecuteStatementReq req)")])])]),e._v(" "),t("li",[t("p",[e._v("jdbc query:"),t("code",[e._v("executeQueryStatement(TSExecuteStatementReq req)")])])]),e._v(" "),t("li",[t("p",[e._v("native Write interface:"),t("code",[e._v("insertRecord(TSInsertRecordReq req)")]),e._v(" "),t("code",[e._v("insertTablet(TSInsertTabletReq req)")])])]),e._v(" "),t("li",[t("p",[e._v("Storage engine"),t("code",[e._v("org.apache.iotdb.db.engine.StorageEngine")])])]),e._v(" "),t("li",[t("p",[e._v("Query engine "),t("code",[e._v("org.apache.iotdb.db.qp.QueryProcessor")])])])]),e._v(" "),t("h1",{attrs:{id:"frequent-questions-when-compiling-the-source-code"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#frequent-questions-when-compiling-the-source-code"}},[e._v("#")]),e._v(" Frequent Questions When Compiling the Source Code")]),e._v(" "),t("p",[e._v("I could not download thrift-* tools, like "),t("code",[e._v("Could not get content org.apache.maven.wagon.TransferFailedException: Transfer failed for https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu")])]),e._v(" "),t("p",[e._v("It is due to some network problems (especially in China), you can:")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Download the file from the URL manually;")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu")])]),e._v(" "),t("li",[t("p",[e._v("https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-MacOS")])])])]),e._v(" "),t("li",[t("p",[e._v("Put the file to thrift/target/tools/")])]),e._v(" "),t("li",[t("p",[e._v("Re-run maven command like "),t("code",[e._v("mvn compile")])])])]),e._v(" "),t("h2",{attrs:{id:"recommended-debug-tool"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recommended-debug-tool"}},[e._v("#")]),e._v(" Recommended Debug Tool")]),e._v(" "),t("p",[e._v("The initial committer of IoTDB is using this "),t("a",{attrs:{href:"https://www.ej-technologies.com/products/jprofiler/overview.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Java profiler"),t("OutboundLink")],1),e._v(" to debug. Welcome all IoTDB contributors to use it.")])])}),[],!1,null,null,null);t.default=a.exports}}]);