This is an automated email from the ASF dual-hosted git repository.
etudenhoefner pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/master by this push:
new f49227813b Nessie: Bump Nessie to 0.71.0, adjust to Nessie
client-builder updates (#8607)
f49227813b is described below
commit f49227813b9ade737852ed0799cbe42114ad8fa5
Author: Robert Stupp <[email protected]>
AuthorDate: Thu Sep 21 18:24:16 2023 +0200
Nessie: Bump Nessie to 0.71.0, adjust to Nessie client-builder updates
(#8607)
---
gradle/libs.versions.toml | 2 +-
.../org/apache/iceberg/nessie/NessieCatalog.java | 15 +++---
.../iceberg/nessie/TestCustomNessieClient.java | 60 +++++++++++-----------
.../org.projectnessie.client.NessieClientBuilder | 16 ++++++
4 files changed, 56 insertions(+), 37 deletions(-)
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index d562ff7e79..2deb6c3c2d 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -47,7 +47,7 @@ kryo-shaded = "4.0.3"
microprofile-openapi-api = "3.1.1"
mockito = "4.11.0"
mockserver = "5.15.0"
-nessie = "0.67.0"
+nessie = "0.71.0"
netty-buffer = "4.1.97.Final"
netty-buffer-compat = "4.1.68.Final"
object-client-bundle = "3.3.2"
diff --git a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
index b02df3d759..46c8adca3e 100644
--- a/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
+++ b/nessie/src/main/java/org/apache/iceberg/nessie/NessieCatalog.java
@@ -46,6 +46,8 @@ import org.projectnessie.client.NessieClientBuilder;
import org.projectnessie.client.NessieConfigConstants;
import org.projectnessie.client.api.NessieApiV1;
import org.projectnessie.client.api.NessieApiV2;
+import org.projectnessie.client.config.NessieClientConfigSource;
+import org.projectnessie.client.config.NessieClientConfigSources;
import org.projectnessie.client.http.HttpClientBuilder;
import org.projectnessie.model.ContentKey;
import org.projectnessie.model.TableReference;
@@ -94,10 +96,11 @@ public class NessieCatalog extends BaseMetastoreCatalog
String requestedHash =
options.get(removePrefix.apply(NessieConfigConstants.CONF_NESSIE_REF_HASH));
- NessieClientBuilder<?> nessieClientBuilder =
- createNessieClientBuilder(
-
options.get(NessieConfigConstants.CONF_NESSIE_CLIENT_BUILDER_IMPL))
- .fromConfig(x -> options.get(removePrefix.apply(x)));
+ NessieClientConfigSource configSource =
+ NessieClientConfigSources.mapConfigSource(options)
+ .fallbackTo(x -> options.get(removePrefix.apply(x)));
+ NessieClientBuilder nessieClientBuilder =
+
NessieClientBuilder.createClientBuilderFromSystemSettings(configSource);
// default version is set to v1.
final String apiVersion =
options.getOrDefault(removePrefix.apply(NessieUtil.CLIENT_API_VERSION), "1");
@@ -182,8 +185,8 @@ public class NessieCatalog extends BaseMetastoreCatalog
return warehouseLocation;
}
- private static NessieClientBuilder<?> createNessieClientBuilder(String
customBuilder) {
- NessieClientBuilder<?> clientBuilder;
+ private static NessieClientBuilder createNessieClientBuilder(String
customBuilder) {
+ NessieClientBuilder clientBuilder;
if (customBuilder != null) {
try {
clientBuilder =
diff --git
a/nessie/src/test/java/org/apache/iceberg/nessie/TestCustomNessieClient.java
b/nessie/src/test/java/org/apache/iceberg/nessie/TestCustomNessieClient.java
index 4034135807..85dc3af8b4 100644
--- a/nessie/src/test/java/org/apache/iceberg/nessie/TestCustomNessieClient.java
+++ b/nessie/src/test/java/org/apache/iceberg/nessie/TestCustomNessieClient.java
@@ -20,17 +20,14 @@ package org.apache.iceberg.nessie;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import java.net.URI;
-import java.util.function.Function;
import org.apache.iceberg.CatalogProperties;
import org.apache.iceberg.TestCatalogUtil;
import org.apache.iceberg.io.FileIO;
import org.apache.iceberg.relocated.com.google.common.collect.ImmutableMap;
import org.junit.jupiter.api.Test;
-import org.projectnessie.client.NessieClientBuilder;
+import
org.projectnessie.client.NessieClientBuilder.AbstractNessieClientBuilder;
import org.projectnessie.client.NessieConfigConstants;
import org.projectnessie.client.api.NessieApi;
-import org.projectnessie.client.auth.NessieAuthentication;
import org.projectnessie.client.http.HttpClientBuilder;
public class TestCustomNessieClient extends BaseTestIceberg {
@@ -71,7 +68,6 @@ public class TestCustomNessieClient extends BaseTestIceberg {
@Test
public void testNonExistentCustomClient() {
- String nonExistingClass = "non.existent.ClientBuilderImpl";
assertThatThrownBy(
() -> {
NessieCatalog catalog = new NessieCatalog();
@@ -83,14 +79,14 @@ public class TestCustomNessieClient extends BaseTestIceberg
{
CatalogProperties.URI,
uri,
NessieConfigConstants.CONF_NESSIE_CLIENT_BUILDER_IMPL,
- nonExistingClass));
+ "non.existent.ClientBuilderImpl"));
})
.isInstanceOf(RuntimeException.class)
- .hasMessageContaining(nonExistingClass);
+ .hasMessageContaining("Cannot load Nessie client builder
implementation class");
}
@Test
- public void testCustomClient() {
+ public void testCustomClientByImpl() {
assertThatThrownBy(
() -> {
NessieCatalog catalog = new NessieCatalog();
@@ -108,6 +104,25 @@ public class TestCustomNessieClient extends
BaseTestIceberg {
.hasMessage("BUILD CALLED");
}
+ @Test
+ public void testCustomClientByName() {
+ assertThatThrownBy(
+ () -> {
+ NessieCatalog catalog = new NessieCatalog();
+ catalog.initialize(
+ "nessie",
+ ImmutableMap.of(
+ CatalogProperties.WAREHOUSE_LOCATION,
+ temp.toUri().toString(),
+ CatalogProperties.URI,
+ uri,
+ NessieConfigConstants.CONF_NESSIE_CLIENT_NAME,
+ "Dummy"));
+ })
+ .isInstanceOf(RuntimeException.class)
+ .hasMessage("BUILD CALLED");
+ }
+
@Test
public void testAlternativeInitializeWithNulls() {
NessieCatalog catalog = new NessieCatalog();
@@ -128,7 +143,7 @@ public class TestCustomNessieClient extends BaseTestIceberg
{
}
@SuppressWarnings("rawtypes")
- public static final class DummyClientBuilderImpl implements
NessieClientBuilder {
+ public static final class DummyClientBuilderImpl extends
AbstractNessieClientBuilder {
@SuppressWarnings("unused")
public static DummyClientBuilderImpl builder() {
@@ -136,33 +151,18 @@ public class TestCustomNessieClient extends
BaseTestIceberg {
}
@Override
- public NessieClientBuilder fromSystemProperties() {
- return this;
- }
-
- @Override
- public NessieClientBuilder withAuthentication(NessieAuthentication
authentication) {
- return this;
- }
-
- @Override
- public NessieClientBuilder withUri(URI uri) {
- return this;
- }
-
- @Override
- public NessieClientBuilder withAuthenticationFromConfig(Function
configuration) {
- return this;
+ public <A extends NessieApi> A build(Class<A> apiContract) {
+ throw new RuntimeException("BUILD CALLED");
}
@Override
- public NessieClientBuilder fromConfig(Function configuration) {
- return this;
+ public String name() {
+ return "Dummy";
}
@Override
- public NessieApi build(Class apiContract) {
- throw new RuntimeException("BUILD CALLED");
+ public int priority() {
+ return 42;
}
}
}
diff --git
a/nessie/src/test/resources/META-INF/services/org.projectnessie.client.NessieClientBuilder
b/nessie/src/test/resources/META-INF/services/org.projectnessie.client.NessieClientBuilder
new file mode 100644
index 0000000000..289944f550
--- /dev/null
+++
b/nessie/src/test/resources/META-INF/services/org.projectnessie.client.NessieClientBuilder
@@ -0,0 +1,16 @@
+# 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.
+
+org.apache.iceberg.nessie.TestCustomNessieClient$DummyClientBuilderImpl