Apache Ignite 3 is a distributed database for high-performance computing.
./gradlew clean build./gradlew clean build -x test -x integrationTest./gradlew clean build -x assembleDist -x distTar -x distZip -x check./gradlew clean test./gradlew clean integrationTest./gradlew clean test integrationTest./gradlew :ignite-<module>:test --tests "*TestClassName*"./gradlew clean check./gradlew checkstyleMain checkstyleIntegrationTest checkstyleTest checkstyleTestFixtures./gradlew spotbugsMain./gradlew pmdMain pmdTest./gradlew clean allDistZip./gradlew clean packaging-cli:distZip./gradlew clean packaging-db:distZip./gradlew clean docker -x test -x check./bin/ignite3db start (from unpacked distribution)./bin/ignite3 (from CLI distribution)docker compose -f packaging/docker/docker-compose.yml up -d./gradlew clean :ignite-<module>:jmh./gradlew clean :ignite-<module>:jmh -PjmhBench=BenchmarkName.methodName./gradlew :ignite-<module>:jmh -PjmhProfileJfr./gradlew aggregateJavadoc./gradlew javadocApache Ignite 3 is built with a modular, component-based architecture where components form an acyclic dependency graph:
modules/runner/): Main entry point that wires up all components and handles node lifecyclemodules/network/): Group membership, messaging, and cluster communicationmodules/metastorage/): Distributed key-value storage for cluster metadata using Raft consensusmodules/catalog/): Schema management and DDL operationsmodules/table/): Table API implementation and partition managementmodules/sql-engine/): Distributed SQL query processing with Apache Calcitemodules/storage-rocksdb/) and in-memory (modules/storage-page-memory/) optionsmodules/transactions/): ACID transactions with MVCC and serializable isolationmodules/compute/): Distributed compute framework for job executionmodules/configuration/): Dynamic configuration management systemComponents are initialized in topological sort order based on dependencies. Each component:
modules/vault/) for persistent local statesrc/test/java/ - use JUnit 5 with @Test annotationssrc/integrationTest/java/ - test component interactionssrc/testFixtures/java/ - shared test utilitiessrc/jmh/java/ - JMH performance benchmarksEach module follows standard Gradle structure:
src/main/java/ - Main source codesrc/test/java/ - Unit testssrc/integrationTest/java/ - Integration testssrc/testFixtures/java/ - Test utilitiesbuild.gradle - Module-specific build configurationKey modules are organized by functional area (storage, network, sql-engine, etc.) with clear API boundaries and minimal inter-module dependencies.
Run checkstyle and PMD on the modified module(s):
./gradlew :ignite-<module>:checkstyleMain :ignite-<module>:checkstyleTest :ignite-<module>:pmdMain :ignite-<module>:pmdTest
Run IDEA inspections on the modified module(s):
idea inspect . .idea/inspectionProfiles/Project_Default.xml /tmp/results -d modules/<module>
Notes:
idea command is not available, ask the user to install it via: Tools > Create Command-line Launcher in IntelliJ IDEA.find /tmp/results -name "*.xml" ! -name ".descriptions.xml" -exec cat {} \;Run IDEA inspections on the modified module(s) and fix all issues:
idea inspect . .idea/inspectionProfiles/Project_Default.xml /tmp/results -d modules/<module>
IMPORTANT: Always run IDEA inspections before creating or updating a PR. The inspections catch issues that checkstyle/PMD miss (e.g., methods that can be static, redundant suppressions, etc.).
Never use git push without specifying the target branch. Always push explicitly:
git push origin <branch-name>
ignite-3 label