blob: 69a6b8ae3bdedc51ca59e1877bfcde6a34d9cde4 [file] [log] [blame]
import{_ as a,C as s,O as r,P as l,ah as c,Q as e,U as t,ai as i,aW as n}from"./framework-62ad666a.js";const h={},d=e("h1",{id:"iotdb-working-process",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#iotdb-working-process","aria-hidden":"true"},"#"),t(" IoTDB Working Process")],-1),u=e("h2",{id:"main-link",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#main-link","aria-hidden":"true"},"#"),t(" Main link")],-1),p={href:"https://iotdb.apache.org/",target:"_blank",rel:"noopener noreferrer"},m={href:"https://github.com/apache/iotdb",target:"_blank",rel:"noopener noreferrer"},g={href:"https://github.com/apache/iotdb-client-go",target:"_blank",rel:"noopener noreferrer"},b={href:"https://github.com/apache/iotdb-bin-resources",target:"_blank",rel:"noopener noreferrer"},f={href:"http://iotdb.apache.org/UserGuide/Master/QuickStart/QuickStart.html",target:"_blank",rel:"noopener noreferrer"},_={href:"https://issues.apache.org/jira/projects/IOTDB/issues",target:"_blank",rel:"noopener noreferrer"},v={href:"https://cwiki.apache.org/confluence/display/IOTDB/Home%5C",target:"_blank",rel:"noopener noreferrer"},y={href:"https://lists.apache.org/list.html?dev@iotdb.apache.org",target:"_blank",rel:"noopener noreferrer"},k={href:"https://ci-builds.apache.org/job/IoTDB/job/IoTDB-Pipe/job/master/",target:"_blank",rel:"noopener noreferrer"},w={href:"https://apacheiotdb.slack.com/join/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg#/shared-invite/email",target:"_blank",rel:"noopener noreferrer"},I=n('<h2 id="subscribe-to-mailing-list" tabindex="-1"><a class="header-anchor" href="#subscribe-to-mailing-list" aria-hidden="true">#</a> Subscribe to mailing list</h2><p>The mailing list is where the Apache project conducts technical discussions and communication with users. Follow the mailing list to receive mail.</p><p>Mailing list address:dev@iotdb.apache.org</p><p>Follow method: Send an email to <a href="mailto:dev-subscribe@iotdb.apache.org">dev-subscribe@iotdb.apache.org</a> 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).</p><p>Other mailing list:</p><ul><li><a href="mailto:notifications@iotdb.apache.org">notifications@iotdb.apache.org</a> (for JIRA information notification.) <ul><li>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 &quot;start-watching this issue&quot; on the jira issue webpage or just comment on this issue.</li></ul></li><li><a href="mailto:commits@iotdb.apache.org">commits@iotdb.apache.org</a> (Any code changes will be notified here, please note that this mailing list will be very large)</li><li><a href="mailto:reviews@iotdb.apache.org">reviews@iotdb.apache.org</a> (Any code review comments will be notified here, please note that this mailing list will be very large)</li></ul><h2 id="new-features-bug-feedback-improvements-and-more" tabindex="-1"><a class="header-anchor" href="#new-features-bug-feedback-improvements-and-more" aria-hidden="true">#</a> New features, bug feedback, improvements and more</h2>',7),D={href:"https://issues.apache.org/jira/projects/IOTDB/issues",target:"_blank",rel:"noopener noreferrer"},j=n('<p>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.</p><h2 id="email-discussion-content-english" tabindex="-1"><a class="header-anchor" href="#email-discussion-content-english" aria-hidden="true">#</a> Email discussion content (English)</h2><ul><li><p>Joining the mailing list for the first time can introduce youself briefly. (Hi, I&#39;m xxx ...)</p></li><li><p>Before developing a new feature, you can send an e-mail to declare the task you want to do.(Hi,I&#39;m working on issue IOTDB-XXX,My plan is ...)</p></li></ul><h2 id="contributing-documents" tabindex="-1"><a class="header-anchor" href="#contributing-documents" aria-hidden="true">#</a> Contributing documents</h2><p>The content of all IoTDB official websites is in the docs of the project root directory:</p><ul><li>docs/SystemDesign: System Design Document-English Version</li><li>docs/zh/SystemDesign: System Design Document-Chinese Version</li><li>docs/UserGuide: User Guide English Version</li><li>docs/zh/UserGuide: User Guide Chinese Version</li><li>docs/Community: community English Version</li><li>docs/zh/Community: community Chinese Version</li><li>docs/Development: Development Guide English Version</li><li>docs/zh/Development: Development Guide Chinese Version</li></ul><p>Correspondence between versions and branches on the official website:</p><ul><li>In progress -&gt; master</li><li>major_version.x -&gt; rel/major_version (eg 0.9.x -&gt; rel/0.9)</li></ul><p>Precautions:</p>',9),x={href:"https://github.com/apache/iotdb-bin-resources",target:"_blank",rel:"noopener noreferrer"},T=e("li",null,"Do not use special Unicode chars, e.g., U+FF1A",-1),S=e("li",null,"Do not use the character of dollar (as we will use Latex to generate pdf files)",-1),C=e("h2",{id:"code-formatting",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#code-formatting","aria-hidden":"true"},"#"),t(" Code Formatting")],-1),E={href:"https://github.com/diffplug/spotless/tree/main/plugin-maven",target:"_blank",rel:"noopener noreferrer"},B={href:"https://github.com/google/google-java-format",target:"_blank",rel:"noopener noreferrer"},A={href:"https://plugins.jetbrains.com/plugin/8527-google-java-format/versions/stable/83169",target:"_blank",rel:"noopener noreferrer"},q={href:"https://github.com/google/google-java-format#intellij-android-studio-and-other-jetbrains-ides",target:"_blank",rel:"noopener noreferrer"},O=e("li",null,'Install the plugin from disk (Plugins -> little gear icon -> "Install plugin from disk" -> Navigate to downloaded zip file)',-1),N=e("li",null,"In the plugin settings, enable the plugin and keep the default Google code style (2-space indents)",-1),G=e("li",null,"Remember to never update this plugin to a later version,until Spotless was upgraded to version 1.8+.",-1),M={href:"https://plugins.jetbrains.com/plugin/7642-save-actions",target:"_blank",rel:"noopener noreferrer"},P=e("li",null,[t('In the "Save Actions" settings page, setup a "File Path Inclusion" for '),e("code",null,".*\\.java"),t(". Otherwise you will get unintended reformatting in other files you edit.")],-1),L=e("li",null,'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:',-1),R=n(`<div class="language-bash line-numbers-mode" data-ext="sh"><pre class="language-bash"><code> <span class="token function">import</span> org.apache.iotdb.*
<span class="token operator">&lt;</span>blank line<span class="token operator">&gt;</span>
<span class="token function">import</span> all other imports
<span class="token operator">&lt;</span>blank line<span class="token operator">&gt;</span>
<span class="token function">import</span> java.*
<span class="token operator">&lt;</span>blank line<span class="token operator">&gt;</span>
<span class="token function">import</span> static all other imports
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><ol start="8"><li>Before you submit codes, you can use <code>mvn spotless:check</code> to check your codes manually, and use <code>mvn spotless:apply</code> to format your codes.</li></ol><h2 id="code-sytle" tabindex="-1"><a class="header-anchor" href="#code-sytle" aria-hidden="true">#</a> Code Sytle</h2>`,3),U={href:"https://checkstyle.sourceforge.io/config_filefilters.html",target:"_blank",rel:"noopener noreferrer"},V={href:"https://github.com/apache/iotdb/blob/master/checkstyle.xml",target:"_blank",rel:"noopener noreferrer"},F=n('<p>You can reference the code style rules in the file. After development, you can use <code>mvn validate</code> to check whether your codes satisfy the style rules.</p><p>Besides, when you develop in an IDE, some default code style configurations may be conflict with those rules.</p><p>In IDEA, you can follow these steps to change those inconsistent style formatting rules:</p><h3 id="disable-using-wildcard-import" tabindex="-1"><a class="header-anchor" href="#disable-using-wildcard-import" aria-hidden="true">#</a> Disable using wildcard import</h3><ol><li>Navigate to Java code style configuration page (Preferences... -&gt; Editor -&gt; Code Style -&gt; Java).</li><li>Switch to the &#39;imports&#39; tab.</li><li>In the &#39;General&#39; section, enable &#39;Use single class import&#39; option.</li><li>Change &#39;Class count to use import with &#39;*&#39;&#39; to 999 or another very large number.</li><li>Change &#39;Names to count to use static import with &#39;*&#39;&#39; to 999 or another very large number.</li></ol><h2 id="contributing-code" tabindex="-1"><a class="header-anchor" href="#contributing-code" aria-hidden="true">#</a> Contributing code</h2><p>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.</p><ul><li>Clone the repository to your own local repository, clone to the local, and associate the apache repository as the upstream upstream repository.</li><li>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).</li><li>Add code style as the root java-google-style.xml in the idea</li><li>Modify the code and add test cases (unit test, integration test) <ul><li>Integration test reference:server/src/test/java/org/apache/iotdb/db/integration/IoTDBTimeZoneIT</li></ul></li><li>Use <code>mvn spotless:check</code> to check the code style and use <code>mvn spotless:apply</code> to correct the code style</li><li>Submit a PR, starting with [IOTDB-jira number]</li><li>Email to dev mailing list:(I&#39;ve submitted a PR for issue IOTDB-xxx [link])</li><li>Make changes based on other people&#39;s reviews and continue to update until merged</li><li>close jira issue</li></ul><h1 id="iotdb-debug-guide" tabindex="-1"><a class="header-anchor" href="#iotdb-debug-guide" aria-hidden="true">#</a> IoTDB Debug Guide</h1><h2 id="import-the-code" tabindex="-1"><a class="header-anchor" href="#import-the-code" aria-hidden="true">#</a> Import the code</h2><h3 id="intellij-idea" tabindex="-1"><a class="header-anchor" href="#intellij-idea" aria-hidden="true">#</a> Intellij idea</h3><p>It is recommended to use Intellij idea。<code>mvn clean package -DskipTests</code></p><p>Mark <code>antlr/target/generated-sources/antlr4</code> and<code>thrift/target/generated-sources/thrift</code> as <code>Source Root</code>。</p><h3 id="eclipse" tabindex="-1"><a class="header-anchor" href="#eclipse" aria-hidden="true">#</a> Eclipse</h3><p>If it is a version before eclipse 2019,users need to be executed in the root directory of IoTDB <code>mvn eclipse:eclipse -DskipTests</code>。</p><p>import -&gt; General -&gt; Existing Projects into Workspace -&gt; Select IoTDB root directory</p><p>If the version after eclipse 2019</p><p>import -&gt; Maven -&gt; Existing Maven Projects</p><h1 id="frequent-questions-when-compiling-the-source-code" tabindex="-1"><a class="header-anchor" href="#frequent-questions-when-compiling-the-source-code" aria-hidden="true">#</a> Frequent Questions When Compiling the Source Code</h1><blockquote><p>Q: I could not download thrift-* tools, like <code>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</code></p></blockquote><p>It is due to some network problems (especially in China), you can:</p>',21),z=e("p",null,"Download the file from the URL manually;",-1),J={href:"https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu",target:"_blank",rel:"noopener noreferrer"},W={href:"https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-MacOS",target:"_blank",rel:"noopener noreferrer"},Q=e("li",null,[e("p",null,"Put the file to thrift/target/tools/")],-1),Y=e("li",null,[e("p",null,[t("Re-run maven command like "),e("code",null,"mvn compile")])],-1),H=n('<blockquote><p>Q: IConfigNodeRPCService class is unrecognized (IDEA can not find the class even though we have generated it)</p></blockquote><p>It is because Thrift generate the file too large, which exceeds the lines that IDEA can parse by default. You can find that file and then you will see IDEA claims that. To make it work, you can:</p><ul><li>Click &quot;Help&quot; menu of IDEA</li><li>Choose &quot;Edit Customed Properties&quot;</li><li>On the opened file (<code>idea.properties</code>), add: <code>idea.max.intellisense.filesize=9000</code></li><li>Restart IDEA</li></ul><h2 id="recommended-debug-tool" tabindex="-1"><a class="header-anchor" href="#recommended-debug-tool" aria-hidden="true">#</a> Recommended Debug Tool</h2>',4),X={href:"https://www.ej-technologies.com/products/jprofiler/overview.html",target:"_blank",rel:"noopener noreferrer"};function Z(K,$){const o=s("ExternalLinkIcon");return r(),l("div",null,[c(`
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.
`),d,u,e("p",null,[t("IoTDB official website:"),e("a",p,[t("https://iotdb.apache.org/"),i(o)])]),e("p",null,[t("Code library:"),e("a",m,[t("https://github.com/apache/iotdb"),i(o)])]),e("p",null,[t("Code library for go language: "),e("a",g,[t("https://github.com/apache/iotdb-client-go"),i(o)])]),e("p",null,[t("Library for resources (project's documents, compiler, etc): "),e("a",b,[t("https://github.com/apache/iotdb-bin-resources"),i(o)])]),e("p",null,[t("Get started quickly:"),e("a",f,[t("http://iotdb.apache.org/UserGuide/Master/QuickStart/QuickStart.html"),i(o)])]),e("p",null,[t("Jira Task Management:"),e("a",_,[t("https://issues.apache.org/jira/projects/IOTDB/issues"),i(o)])]),e("p",null,[t("Wiki Document Management:"),e("a",v,[t("https://cwiki.apache.org/confluence/display/IOTDB/Home\\"),i(o)])]),e("p",null,[t("Mailing list: "),e("a",y,[t("https://lists.apache.org/list.html?dev@iotdb.apache.org"),i(o)])]),e("p",null,[t("Everyday build: "),e("a",k,[t("https://ci-builds.apache.org/job/IoTDB/job/IoTDB-Pipe/job/master/"),i(o)])]),e("p",null,[t("Slack: "),e("a",w,[t("https://apacheiotdb.slack.com/join/shared_invite/zt-qvso1nj8-7715TpySZtZqmyG5qXQwpg#/shared-invite/email"),i(o)])]),I,e("p",null,[t("All features or bugs that you want IoTDB to do can be raised on Jira:"),e("a",D,[t("https://issues.apache.org/jira/projects/IOTDB/issues"),i(o)])]),j,e("ul",null,[e("li",null,[t("Images in Markdown can be uploaded to "),e("a",x,[t("https://github.com/apache/iotdb-bin-resources"),i(o)]),t(" for url")]),T,S]),C,e("p",null,[t("We use the "),e("a",E,[t("Spotless plugin"),i(o)]),t(" together with "),e("a",B,[t("google-java-format"),i(o)]),t(" 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("ol",null,[e("li",null,[t("Download the "),e("a",A,[t("google-java-format plugin v1.7.0.5"),i(o)]),t(", it can be installed in IDEA (Preferences -> plugins -> search google-java-format), "),e("a",q,[t("More detailed setup manual"),i(o)])]),O,N,G,e("li",null,[t("Install the "),e("a",M,[t("Save Actions plugin"),i(o)]),t(' , and enable the plugin, along with "Optimize imports" and "Reformat file"')]),P,L]),R,e("p",null,[t("We use the "),e("a",U,[t("maven-checkstyle-plugin"),i(o)]),t(" to make Java codes obey a consistent ruleset defined in "),e("a",V,[t("checkstyle.xml"),i(o)]),t(" under the project root.")]),F,e("ul",null,[e("li",null,[z,e("ul",null,[e("li",null,[e("p",null,[e("a",J,[t("https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-ubuntu"),i(o)])])]),e("li",null,[e("p",null,[e("a",W,[t("https://github.com/apache/iotdb-bin-resources/blob/main/compile-tools/thrift-0.14-MacOS"),i(o)])])])])]),Q,Y]),H,e("p",null,[t("The initial committer of IoTDB is using this "),e("a",X,[t("Java profiler"),i(o)]),t(" to debug. Welcome all IoTDB contributors to use it.")])])}const te=a(h,[["render",Z],["__file","ContributeGuide.html.vue"]]);export{te as default};