diff --git a/build.gradle.kts b/build.gradle.kts index 769d5eab68..f165de207b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,18 +41,100 @@ java { } } +allprojects { + repositories { + mavenCentral() + mavenLocal() + } +} + +nexusPublishing { + repositories { + sonatype { + nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) + snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) + + val sonatypeUser = + System.getenv("SONATYPE_USER").takeUnless { it.isNullOrEmpty() } + ?: extra["SONATYPE_USER"].toString() + val sonatypePassword = + System.getenv("SONATYPE_PASSWORD").takeUnless { it.isNullOrEmpty() } + ?: extra["SONATYPE_PASSWORD"].toString() + + username.set(sonatypeUser) + password.set(sonatypePassword) + } + } + + packageGroup.set("com.datastrato.gravitino") +} + dependencies { testImplementation(libs.testng) } subprojects { apply(plugin = "jacoco") + apply(plugin = "maven-publish") + apply(plugin = "java") repositories { mavenCentral() mavenLocal() } + val sourcesJar by tasks.registering(Jar::class) { + from(sourceSets.named("main").get().allSource) + archiveClassifier.set("sources") + } + + val javadocJar by tasks.registering(Jar::class) { + archiveClassifier.set("javadoc") + from(tasks["javadoc"]) + } + + apply(plugin = "signing") + publishing { + publications { + create("MavenJava") { + from(components["java"]) + artifact(sourcesJar) + artifact(javadocJar) + + pom { + name.set("Gravitino") + description.set("Gravitino is a high-performance, geo-distributed and federated metadata lake.") + url.set("https://datastrato.ai") + licenses { + license { + name.set("The Apache Software License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } + } + developers { + developer { + id.set("The maintainers of Gravitino") + name.set("support") + email.set("support@datastrato.com") + } + } + scm { + url.set("https://github.com/datastrato/gravitino") + connection.set("scm:git:git://github.com/datastrato/gravitino.git") + } + } + } + } + } + + configure { + val gpgId = System.getenv("GPG_ID") + val gpgSecretKey = System.getenv("GPG_PRIVATE_KEY") + val gpgKeyPassword = System.getenv("GPG_PASSPHRASE") + useInMemoryPgpKeys(gpgId, gpgSecretKey, gpgKeyPassword) + sign(publishing.publications) + } + tasks.configureEach { val skipTests = project.hasProperty("skipTests") if (!skipTests) { @@ -114,24 +196,6 @@ subprojects { } } -nexusPublishing { - repositories { - create("sonatype") { - val sonatypeUser = - System.getenv("SONATYPE_USER").takeUnless { it.isNullOrEmpty() } - ?: extra["SONATYPE_USER"].toString() - val sonatypePassword = - System.getenv("SONATYPE_PASSWORD").takeUnless { it.isNullOrEmpty() } - ?: extra["SONATYPE_PASSWORD"].toString() - nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/")) - - snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) - username.set(sonatypeUser) - password.set(sonatypePassword) - } - } -} - tasks.rat { substringMatcher("DS", "Datastrato", "Copyright 2023 Datastrato.") approvedLicense("Datastrato") diff --git a/core/src/main/java/com/datastrato/gravitino/storage/EntityKeyEncoder.java b/core/src/main/java/com/datastrato/gravitino/storage/EntityKeyEncoder.java index ad9ed8c7fa..cf92c03d65 100644 --- a/core/src/main/java/com/datastrato/gravitino/storage/EntityKeyEncoder.java +++ b/core/src/main/java/com/datastrato/gravitino/storage/EntityKeyEncoder.java @@ -17,7 +17,7 @@ public interface EntityKeyEncoder { * @param ident entity identifier to encode * @param type entity type to encode * @return encoded key for key-value stored - * @throws IOException, Exception if error occurs + * @throws IOException Exception if error occurs */ default T encode(NameIdentifier ident, EntityType type) throws IOException { return encode(ident, type, false); @@ -28,7 +28,7 @@ default T encode(NameIdentifier ident, EntityType type) throws IOException { * * @param nullIfMissing return null if the specific entity no found * @return encoded key for key-value stored - * @throws IOException, Exception if error occurs + * @throws IOException Exception if error occurs */ T encode(NameIdentifier ident, EntityType type, boolean nullIfMissing) throws IOException; } diff --git a/core/src/main/java/com/datastrato/gravitino/storage/NameMappingService.java b/core/src/main/java/com/datastrato/gravitino/storage/NameMappingService.java index cf096de375..74fcc0b5f3 100644 --- a/core/src/main/java/com/datastrato/gravitino/storage/NameMappingService.java +++ b/core/src/main/java/com/datastrato/gravitino/storage/NameMappingService.java @@ -42,12 +42,12 @@ public interface NameMappingService extends AutoCloseable { * *
    * Before:
-   *   oldname -> 1
-   *   1       -> oldname
+   *   oldName ------ 1
+   *   1       ------ oldName
    *
    * After:
-   *  newname -> 1
-   *  1       -> newname
+   *  newName ---- 1
+   *  1       ---- newName
    * 
* * @param oldName name to be updated @@ -60,7 +60,7 @@ public interface NameMappingService extends AutoCloseable { /** * Unbind id-name mapping. Ignore if the name does not exist. * - * @param name name to be unbined + * @param name name to be unbind * @return true if the name exists and is deleted successfully, false if the name does not exist * @throws IOException if the underlying storage failed */ diff --git a/core/src/main/java/com/datastrato/gravitino/storage/kv/BinaryEntityKeyEncoder.java b/core/src/main/java/com/datastrato/gravitino/storage/kv/BinaryEntityKeyEncoder.java index 0a93a12db2..f501b3afc0 100644 --- a/core/src/main/java/com/datastrato/gravitino/storage/kv/BinaryEntityKeyEncoder.java +++ b/core/src/main/java/com/datastrato/gravitino/storage/kv/BinaryEntityKeyEncoder.java @@ -34,19 +34,19 @@ * *
  *     Key                                Value
- * ml_{ml_id}               ----->    matalake info
- * ml_{ml_id}               ----->    matalake info
- * ca_{ml_id}_{ca_id}       ----->    catalog_info
- * ca_{ml_id}_{ca_id}       ----->    catalog_info
- * sc_{ml_id}_{ca_id}_{sc_id} --->    schema_info
- * sc_{ml_id}_{ca_id}_{sc_id} --->    schema_info
- * br_{ml_id}_{ca_id}_{br_id} --->    broker_info
- * br_{ml_id}_{ca_id}_{br_id} --->    broker_info
+ * ml_{ml_id}               -----    metalake info
+ * ml_{ml_id}               -----    metalake info
+ * ca_{ml_id}_{ca_id}       -----    catalog_info
+ * ca_{ml_id}_{ca_id}       -----    catalog_info
+ * sc_{ml_id}_{ca_id}_{sc_id} ---    schema_info
+ * sc_{ml_id}_{ca_id}_{sc_id} ---    schema_info
+ * br_{ml_id}_{ca_id}_{br_id} ---    broker_info
+ * br_{ml_id}_{ca_id}_{br_id} ---    broker_info
  *
- * ta_{ml_id}_{ca_id}_{sc_id}_{table_id}    ----->    table_info
- * ta_{ml_id}_{ca_id}_{sc_id}_{table_id}    ----->    table_info
- * to_{ml_id}_{ca_id}_{br_id}_{to_id}       ----->    topic_info
- * to_{ml_id}_{ca_id}_{br_id}_{to_id}       ----->    topic_info
+ * ta_{ml_id}_{ca_id}_{sc_id}_{table_id}    -----    table_info
+ * ta_{ml_id}_{ca_id}_{sc_id}_{table_id}    -----    table_info
+ * to_{ml_id}_{ca_id}_{br_id}_{to_id}       -----    topic_info
+ * to_{ml_id}_{ca_id}_{br_id}_{to_id}       -----    topic_info
  * 
*/ public class BinaryEntityKeyEncoder implements EntityKeyEncoder { diff --git a/core/src/main/java/com/datastrato/gravitino/storage/kv/KvEntityStore.java b/core/src/main/java/com/datastrato/gravitino/storage/kv/KvEntityStore.java index ebb7a803af..4ede9212cd 100644 --- a/core/src/main/java/com/datastrato/gravitino/storage/kv/KvEntityStore.java +++ b/core/src/main/java/com/datastrato/gravitino/storage/kv/KvEntityStore.java @@ -174,28 +174,28 @@ private String concatIdAndName(long[] namespaceIds, String name) { * *
    *   Assume we have the following entities:
-   *   metalake: a1        ----> 1
-   *   catalog : a1.b1     ----> 2
-   *   schema  : a1.b1.c   ----> 3
+   *   metalake: a1        ---- 1
+   *   catalog : a1.b1     ---- 2
+   *   schema  : a1.b1.c   ---- 3
    *
-   *   metalake: a2        ----> 4
-   *   catalog : a2.b2     ----> 5
-   *   schema  : a2.b2.c   ----> 6
-   *   schema  : a2.b2.c1  ----> 7
+   *   metalake: a2        ---- 4
+   *   catalog : a2.b2     ---- 5
+   *   schema  : a2.b2.c   ---- 6
+   *   schema  : a2.b2.c1  ---- 7
    *
-   *   metalake: a1        ----> 1 means the name of metalake is a1 and the corresponding id is 1
+   *   metalake: a1        ---- 1 means the name of metalake is a1 and the corresponding id is 1
    * 
* * Then we will store the name to id mapping as follows * *
-   *  a1         --> 1
-   * 	1/b1       --> 2
-   * 	1/2/c      --> 3
-   * 	a2         --> 4
-   * 	4/b2       --> 5
-   * 	4/5/c      --> 6
-   * 	4/5/c1     --> 7
+   *  a1         -- 1
+   * 	1/b1       -- 2
+   * 	1/2/c      -- 3
+   * 	a2         -- 4
+   * 	4/b2       -- 5
+   * 	4/5/c      -- 6
+   * 	4/5/c1     -- 7
    * 
* * @param nameIdentifier name of a specific entity diff --git a/docs/how-to-build.md b/docs/how-to-build.md index 64994948dd..d38215e127 100644 --- a/docs/how-to-build.md +++ b/docs/how-to-build.md @@ -41,15 +41,17 @@ This software is licensed under the Apache License version 2." ```text ├── ... └── distribution/package - ├── bin/gravitino.sh # Gravitino Server Launching scripts + ├── bin/gravitino.sh # Gravitino Server Launching scripts. ├── catalogs - │ └── hive/libs/ # Hive catalog dependencies - ├── conf/ # All configuration for Gravitino - | ├── gravitino.conf # Gravitino Server configuration - | ├── gravitino-env.sh # Environment variables, etc., JAVA_HOME, GRAVITINO_HOME, and more. - | └── log4j2.properties # log4j configuration for Gravitino Server. - ├── libs/ # Gravitino Server dependencies lib - └── logs/ # Gravitino Server logs + │ └── hive/ # Hive catalog dependencies and configuratons. + │ └── lakehouse-iceberg/ # Iceberg catalog dependencies and configuratons. + ├── conf/ # All configuration for Gravitino. + | ├── gravitino.conf # Gravitino Server configuration. + | ├── gravitino-env.sh # Environment variables, etc., JAVA_HOME, GRAVITINO_HOME, and more. + | └── log4j2.properties # log4j configuration for Gravitino Server. + ├── libs/ # Gravitino Server dependencies libraries. + └── logs/ # Gravitino Server logs. + └── data/ # Default directory for Gravitino Server to store data. ``` > Note: The `./gradlew clean` command will delete the `distribution` directory. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 56b7a9419f..e712076e88 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -36,7 +36,7 @@ testng = "7.7.1" protobuf-plugin = "0.9.2" spotless-plugin = '6.11.0' gradle-extensions-plugin = '1.74' -publish-plugin = '1.1.0' +publish-plugin = '1.2.0' rat-plugin = '0.8.0' shadow-plugin = "8.1.1" diff --git a/integration-test/src/test/java/com/datastrato/gravitino/integration/test/catalog/lakehouse/iceberg/CatalogIcebergIT.java b/integration-test/src/test/java/com/datastrato/gravitino/integration/test/catalog/lakehouse/iceberg/CatalogIcebergIT.java index 813b270b56..99ca060287 100644 --- a/integration-test/src/test/java/com/datastrato/gravitino/integration/test/catalog/lakehouse/iceberg/CatalogIcebergIT.java +++ b/integration-test/src/test/java/com/datastrato/gravitino/integration/test/catalog/lakehouse/iceberg/CatalogIcebergIT.java @@ -312,7 +312,7 @@ void testOperationIcebergSchema() { @Test void testCreateAndLoadIcebergTable() { - // Create table from Graviton API + // Create table from Gravitino API ColumnDTO[] columns = createColumns(); NameIdentifier tableIdentifier = diff --git a/trino-connector/build.gradle.kts b/trino-connector/build.gradle.kts index da1fbdb148..decd5be61a 100644 --- a/trino-connector/build.gradle.kts +++ b/trino-connector/build.gradle.kts @@ -42,6 +42,10 @@ java { } } +tasks.named("generateMetadataFileForMavenJavaPublication") { + dependsOn(":trino-connector:copyDepends") +} + tasks { val copyDepends by registering(Copy::class) { from(configurations.runtimeClasspath) diff --git a/trino-connector/src/main/java/com/datastrato/gravitino/trino/connector/catalog/CatalogInjector.java b/trino-connector/src/main/java/com/datastrato/gravitino/trino/connector/catalog/CatalogInjector.java index d12b2c4553..006582d217 100644 --- a/trino-connector/src/main/java/com/datastrato/gravitino/trino/connector/catalog/CatalogInjector.java +++ b/trino-connector/src/main/java/com/datastrato/gravitino/trino/connector/catalog/CatalogInjector.java @@ -92,7 +92,7 @@ private static Class getClass(ClassLoader classLoader, String className) * ----nodeManager (DiscoveryNodeManager) * ------nodeManager (DiscoveryNodeManager) * ------allCatalogsOnAllNodes (boolean) - * ------activeNodesByCatalogHandle (Optional) + * ------activeNodesByCatalogHandle (SetMultimap) * --metadataProvider(InternalMetadataProvider) * ----metadata (TracingMetadata) * ------delegate (MetadataManager)