You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2021/03/10 12:39:38 UTC

[ignite-3] branch ignite-14272 created (now a16573f)

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

agoncharuk pushed a change to branch ignite-14272
in repository https://gitbox.apache.org/repos/asf/ignite-3.git.


      at a16573f  IGNITE-14272 DEVNOTES.md moved to proper location, added draft modules structure

This branch includes the following new commits:

     new a16573f  IGNITE-14272 DEVNOTES.md moved to proper location, added draft modules structure

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.



[ignite-3] 01/01: IGNITE-14272 DEVNOTES.md moved to proper location, added draft modules structure

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

agoncharuk pushed a commit to branch ignite-14272
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit a16573fe2d0ca341d4b9df8af5f76bb916eeddc8
Author: Alexey Goncharuk <al...@gmail.com>
AuthorDate: Wed Mar 10 15:39:30 2021 +0300

    IGNITE-14272 DEVNOTES.md moved to proper location, added draft modules structure
---
 DEVNOTES.md                                        | 55 +++++++++++++++++++++-
 modules/DEVNOTES.md                                | 47 ------------------
 modules/README.md                                  | 19 ++++++++
 .../configuration-annotation-processor/README.md   |  5 ++
 modules/network/README.md                          | 18 +++++++
 5 files changed, 95 insertions(+), 49 deletions(-)

diff --git a/DEVNOTES.md b/DEVNOTES.md
index 5575f29..0185e9b 100644
--- a/DEVNOTES.md
+++ b/DEVNOTES.md
@@ -1,13 +1,64 @@
-## Local Build
+# Setting up and building
+## Prerequisites
+ * Java 11 SDK
+ * Maven 3.6.0+ (for building)
+ 
+## Building Ignite
+Ignite follows standard guidelines for multi-module maven projects, so it can be easily built using the following 
+command from the project root directory (you can disable the tests when building using `-DskipTests`):
 
     mvn clean install [-DskipTests]
 
 Upon completion, you will find the CLI tool under `modules/cli/target` directory.
 Use `ignite` on Linux and MacOS, or `ignite.exe` on Windows. 
 
-## License Headers Check
+### Running tests
+To run unit tests only, use the following command:
 
+    mvn test
+
+Before running integration tests, make sure to build the project using the ``package`` target.
+
+To run unit + integration tests, use the following command:
+
+    mvn integration-test
+
+To run integration tests only, use the following command:
+
+    mvn integration-test -Dskip.surefire.tests=true
+    
+### Sanity check targets
+Use the following commands to run generic sanity checks before submitting a PR.
+
+RAT license validation:
+    
     mvn validate
+    
+Checkstyle code validation:
+
+    mvn checkstyle:checkstyle:aggregate
+
+PMD static code analysis
+
+    mvn compile pmd:check 
+
+
+## Setting up IntelliJ Idea project
+You can quickly import Ignite project to your IDE using the root `pom.xml` file. In IntelliJ, choose `Open Project` 
+from the `Quick Start` box or choose `Open...` from the `File` menu and select the root `pom.xml` file.
+
+After opening the project in IntelliJ, double check that the Java SDK is properly configured for the project:
+
+ * Open the `File` menu and select `Project Structure...`
+ * In the SDKs section, ensure that a 1.11 JDK is selected (create one if none exist)
+ * In the `Project` section, make sure the project language level is set to 11.0 as Ignite makes use of several Java 11 
+ language features
+ 
+Ignite uses machine code generation for some of it's modules. To generate necessary production code, build the project
+using maven (see Building Ignite).
+
+## Code structure
+High-level modules structure and detailed modules description can be found in the [modules readme](modules/README.md).
 
 ## Release candidate verification
 
diff --git a/modules/DEVNOTES.md b/modules/DEVNOTES.md
deleted file mode 100644
index 8e6d2a1..0000000
--- a/modules/DEVNOTES.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Setting up and building
-## Prerequisites
- * Java 11 SDK
- * Maven 3.6.0+ (for building)
- 
-## Building Ignite
-Ignite follows standard guidelines for multi-module maven projects, so it can be easily built using the following 
-command from the project root directory:
-```commandline
-mvn clean install
-```
-You can disable the tests when building using the following command:
-```commandline
-mvn clean install -DskipTests
-```
-
-### Running tests
-To run unit tests only, use the following command:
-```commandline
-mvn test
-```
-
-Before running integration tests, make sure to build the project using the ``package`` target.
-
-To run unit + integration tests, use the following command:
-```commandline
-mvn integration-test
-```
-
-To run integration tests only, use the following command:
-```commandline
-mvn integration-test -Dskip.surefire.tests=true
-``` 
-
-## Setting up IntelliJ Idea project
-You can quickly import Ignite project to your IDE using the root `pom.xml` file. In IntelliJ, choose `Open Project` 
-from the `Quick Start` box or choose `Open...` from the `File` menu and select the root `pom.xml` file.
-
-After opening the project in IntelliJ, double check that the Java SDK is properly configured for the project:
-
- * Open the `File` menu and select `Project Structure...`
- * In the SDKs section, ensure that a 1.11 JDK is selected (create one if none exist)
- * In the `Project` section, make sure the project language level is set to 11.0 as Ignite makes use of several Java 11 
- language features
- 
-Ignite uses machine code generation for some of it's modules. To generate necessary production code, build the project
-using maven (see Building Ignite).
diff --git a/modules/README.md b/modules/README.md
new file mode 100644
index 0000000..6b3f13b
--- /dev/null
+++ b/modules/README.md
@@ -0,0 +1,19 @@
+# Apache Ignite modules
+We try to make Apache Ignite reasonably modular in order to simplify unit and integration testing.
+Each module provides an exposed API which should be used by external modules. Not exposed APIs must not be used
+by external modules. At the time of writing we do not use Java JIGSAW modules system, but it is likely that we will
+at some point, which will help us to control the exported API contract.
+
+We prohibit cyclic dependencies between modules in order to simplify JIGSAW migration in the future.
+
+## Modules list
+
+Module Name | Description
+----------- | -----------
+[network](network/README.md)|Networking module: group membership and message passing
+[configuration-annotation-processor](configuration-annotation-processor/README.md)|Tooling for generating Ignite configuration model classes from configuration schema definition
+[configuration](configuration/README.md)|Ignite configuration classes and configuration management framework
+[runner](runner/README.md)|Ignite server node runner. The module that wires up the Ignite components and handles node lifecycle
+[rest](rest/README.md)|REST management endpoint bindings and command handlers
+[cli-common](cli-common/README.md)|Shared interfaces definitions for pluggable CLI
+[cli](cli/README.md)|Ignite CLI implementation
diff --git a/modules/configuration-annotation-processor/README.md b/modules/configuration-annotation-processor/README.md
new file mode 100644
index 0000000..b459187
--- /dev/null
+++ b/modules/configuration-annotation-processor/README.md
@@ -0,0 +1,5 @@
+# Configuration annotation processor
+This module provides a build extension that is used by Ignite to automatically generate configuration POJO classes
+from configuration schema definition.
+
+*TODO* describe how annotation processor works.
\ No newline at end of file
diff --git a/modules/network/README.md b/modules/network/README.md
new file mode 100644
index 0000000..faddaab
--- /dev/null
+++ b/modules/network/README.md
@@ -0,0 +1,18 @@
+# Ignite networking module
+This module provides an abstraction and default implementation of networking layer for Ignite. The module provides
+two major functions:
+ 
+* Discovery and group membership. The networking layer interface provides weakly-consistent discovery and group 
+membership service which uses the Scalecube implementation of the SWIM gossip protocol. The default implementation 
+requires a set of seed IP addresses to provided on start.
+* Messaging service. The networking layer provides several useful abstractions that can be used for sending and 
+receiving messages across nodes in the cluster. Several delivery guarantee options are available:
+  * Weak mode provides a 'shoot and forget' style of sending a message. These messages are not tracked for delivery and 
+  may be dropped by either sender or receiver. This is the preferred way of communication between nodes as such messages 
+  do not incur any risks of OOME or other resource shortage. For example, Raft server messages should be sent via weak 
+  mode because all Raft messages can be arbitrarily dropped.
+  * Patient mode attempts to deliver a message until either it is acknowledged, or we received a notification that a
+  target cluster member left the cluster. Internally, the networking module preserves a queue which orders scheduled
+  messages and persistently attempts to establish a connection and deliver scheduled messages in that particular order.
+  Messages sent via patient mode cannot be arbitrarily dropped and are kept in a memory buffer until either they are 
+  delivered or a destination node is reported as failed.