未验证 提交 656b1306 编写于 作者: R ran 提交者: GitHub

[Pulsar SQL] Fix Pulsar SQL CI test (#7898)

### Motivation

Currently, the Pulsar SQL CI test is blocked. 

### Modifications

1. Build a new docker image before CI test to make sure the latest changes are covered.
2. Remove the config `distributed-joins-enabled` in the `$PULSAR_HOME/conf/presto/config.properties`, this config was discarded in presto version `332`.
3. Add the config `-Dpresto-temporarily-allow-java8=true` in `$PULSAR_HOME/conf/presto/jvm.config`, this config is needed if use Java 8 environment.
4. The ClientBuilder will be loaded by two different ClassLoaders, in the Pulsar SQL CI test the ClientBuilder will be created by unexpected ClassLoader, we need to specify the ClassLoader for it.
上级 ad2d8124
...@@ -73,15 +73,14 @@ jobs: ...@@ -73,15 +73,14 @@ jobs:
if: steps.docs.outputs.changed_only == 'no' if: steps.docs.outputs.changed_only == 'no'
run: mvn -q -B -ntp clean install -DskipTests run: mvn -q -B -ntp clean install -DskipTests
# Flaky Test: https://github.com/apache/pulsar/issues/7750 - name: build pulsar image
# - name: build pulsar image if: steps.docs.outputs.changed_only == 'no'
# if: steps.docs.outputs.changed_only == 'no' run: mvn -B -f docker/pulsar/pom.xml install -am -Pdocker -DskipTests -Ddocker.nocache=true
# run: mvn -B -f docker/pulsar/pom.xml install -am -Pdocker -DskipTests -Ddocker.nocache=true
# - name: build pulsar-all image
# - name: build pulsar-all image if: steps.docs.outputs.changed_only == 'no'
# if: steps.docs.outputs.changed_only == 'no' run: mvn -B -f docker/pulsar-all/pom.xml install -am -Pdocker -DskipTests -Ddocker.nocache=true
# run: mvn -B -f docker/pulsar-all/pom.xml install -am -Pdocker -DskipTests -Ddocker.nocache=true
#
- name: build artifacts and docker pulsar latest test image - name: build artifacts and docker pulsar latest test image
if: steps.docs.outputs.changed_only == 'no' if: steps.docs.outputs.changed_only == 'no'
run: mvn -B -f tests/docker-images/pom.xml install -am -Pdocker -DskipTests run: mvn -B -f tests/docker-images/pom.xml install -am -Pdocker -DskipTests
......
...@@ -39,6 +39,4 @@ query.min-expire-age=30m ...@@ -39,6 +39,4 @@ query.min-expire-age=30m
presto.version=testversion presto.version=testversion
distributed-joins-enabled=true
node-scheduler.include-coordinator=true node-scheduler.include-coordinator=true
...@@ -25,3 +25,4 @@ ...@@ -25,3 +25,4 @@
-XX:+ExplicitGCInvokesConcurrent -XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError -XX:+ExitOnOutOfMemoryError
-Dpresto-temporarily-allow-java8=true
...@@ -132,7 +132,7 @@ public class PulsarAdmin implements Closeable { ...@@ -132,7 +132,7 @@ public class PulsarAdmin implements Closeable {
public PulsarAdmin(String serviceUrl, ClientConfigurationData clientConfigData) throws PulsarClientException { public PulsarAdmin(String serviceUrl, ClientConfigurationData clientConfigData) throws PulsarClientException {
this(serviceUrl, clientConfigData, DEFAULT_CONNECT_TIMEOUT_SECONDS, TimeUnit.SECONDS, this(serviceUrl, clientConfigData, DEFAULT_CONNECT_TIMEOUT_SECONDS, TimeUnit.SECONDS,
DEFAULT_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS, DEFAULT_READ_TIMEOUT_SECONDS, TimeUnit.SECONDS,
DEFAULT_REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS); DEFAULT_REQUEST_TIMEOUT_SECONDS, TimeUnit.SECONDS, null);
} }
...@@ -143,7 +143,8 @@ public class PulsarAdmin implements Closeable { ...@@ -143,7 +143,8 @@ public class PulsarAdmin implements Closeable {
int readTimeout, int readTimeout,
TimeUnit readTimeoutUnit, TimeUnit readTimeoutUnit,
int requestTimeout, int requestTimeout,
TimeUnit requestTimeoutUnit) throws PulsarClientException { TimeUnit requestTimeoutUnit,
ClassLoader clientBuilderClassLoader) throws PulsarClientException {
this.connectTimeout = connectTimeout; this.connectTimeout = connectTimeout;
this.connectTimeoutUnit = connectTimeoutUnit; this.connectTimeoutUnit = connectTimeoutUnit;
this.readTimeout = readTimeout; this.readTimeout = readTimeout;
...@@ -171,6 +172,12 @@ public class PulsarAdmin implements Closeable { ...@@ -171,6 +172,12 @@ public class PulsarAdmin implements Closeable {
httpConfig.register(MultiPartFeature.class); httpConfig.register(MultiPartFeature.class);
httpConfig.connectorProvider(asyncConnectorProvider); httpConfig.connectorProvider(asyncConnectorProvider);
ClassLoader originalCtxLoader = null;
if (clientBuilderClassLoader != null) {
originalCtxLoader = Thread.currentThread().getContextClassLoader();
Thread.currentThread().setContextClassLoader(clientBuilderClassLoader);
}
ClientBuilder clientBuilder = ClientBuilder.newBuilder() ClientBuilder clientBuilder = ClientBuilder.newBuilder()
.withConfig(httpConfig) .withConfig(httpConfig)
.connectTimeout(this.connectTimeout, this.connectTimeoutUnit) .connectTimeout(this.connectTimeout, this.connectTimeoutUnit)
...@@ -207,6 +214,10 @@ public class PulsarAdmin implements Closeable { ...@@ -207,6 +214,10 @@ public class PulsarAdmin implements Closeable {
this.worker = new WorkerImpl(root, auth, readTimeoutMs); this.worker = new WorkerImpl(root, auth, readTimeoutMs);
this.schemas = new SchemasImpl(root, auth, readTimeoutMs); this.schemas = new SchemasImpl(root, auth, readTimeoutMs);
this.bookies = new BookiesImpl(root, auth, readTimeoutMs); this.bookies = new BookiesImpl(root, auth, readTimeoutMs);
if (originalCtxLoader != null) {
Thread.currentThread().setContextClassLoader(originalCtxLoader);
}
} }
/** /**
......
...@@ -252,4 +252,10 @@ public interface PulsarAdminBuilder { ...@@ -252,4 +252,10 @@ public interface PulsarAdminBuilder {
*/ */
PulsarAdminBuilder requestTimeout(int requestTimeout, TimeUnit requestTimeoutUnit); PulsarAdminBuilder requestTimeout(int requestTimeout, TimeUnit requestTimeoutUnit);
/**
*
* @return
*/
PulsarAdminBuilder setContextClassLoader(ClassLoader clientBuilderClassLoader);
} }
...@@ -39,12 +39,13 @@ public class PulsarAdminBuilderImpl implements PulsarAdminBuilder { ...@@ -39,12 +39,13 @@ public class PulsarAdminBuilderImpl implements PulsarAdminBuilder {
private TimeUnit connectTimeoutUnit = TimeUnit.SECONDS; private TimeUnit connectTimeoutUnit = TimeUnit.SECONDS;
private TimeUnit readTimeoutUnit = TimeUnit.SECONDS; private TimeUnit readTimeoutUnit = TimeUnit.SECONDS;
private TimeUnit requestTimeoutUnit = TimeUnit.SECONDS; private TimeUnit requestTimeoutUnit = TimeUnit.SECONDS;
private ClassLoader clientBuilderClassLoader = null;
@Override @Override
public PulsarAdmin build() throws PulsarClientException { public PulsarAdmin build() throws PulsarClientException {
return new PulsarAdmin(conf.getServiceUrl(), return new PulsarAdmin(conf.getServiceUrl(),
conf, connectTimeout, connectTimeoutUnit, readTimeout, readTimeoutUnit, conf, connectTimeout, connectTimeoutUnit, readTimeout, readTimeoutUnit,
requestTimeout, requestTimeoutUnit); requestTimeout, requestTimeoutUnit, clientBuilderClassLoader);
} }
public PulsarAdminBuilderImpl() { public PulsarAdminBuilderImpl() {
...@@ -166,4 +167,10 @@ public class PulsarAdminBuilderImpl implements PulsarAdminBuilder { ...@@ -166,4 +167,10 @@ public class PulsarAdminBuilderImpl implements PulsarAdminBuilder {
this.requestTimeoutUnit = requestTimeoutUnit; this.requestTimeoutUnit = requestTimeoutUnit;
return this; return this;
} }
@Override
public PulsarAdminBuilder setContextClassLoader(ClassLoader clientBuilderClassLoader) {
this.clientBuilderClassLoader = clientBuilderClassLoader;
return this;
}
} }
...@@ -251,6 +251,7 @@ The Apache Software License, Version 2.0 ...@@ -251,6 +251,7 @@ The Apache Software License, Version 2.0
- netty-transport-native-unix-common-4.1.51.Final-linux-x86_64.jar - netty-transport-native-unix-common-4.1.51.Final-linux-x86_64.jar
* Joda Time * Joda Time
- joda-time-2.10.5.jar - joda-time-2.10.5.jar
- joda-time-2.10.1.jar
* Jetty * Jetty
- http2-client-9.4.27.v20200227.jar - http2-client-9.4.27.v20200227.jar
- http2-common-9.4.27.v20200227.jar - http2-common-9.4.27.v20200227.jar
...@@ -546,7 +547,6 @@ CDDL-1.1 -- licenses/LICENSE-CDDL-1.1.txt ...@@ -546,7 +547,6 @@ CDDL-1.1 -- licenses/LICENSE-CDDL-1.1.txt
Eclipse Public License - v2.0 -- licenses/LICENSE-EPL-2.0.txt Eclipse Public License - v2.0 -- licenses/LICENSE-EPL-2.0.txt
* jakarta.annotation-api-1.3.5.jar * jakarta.annotation-api-1.3.5.jar
* jakarta.ws.rs-api-2.1.6.jar
Public Domain (CC0) -- licenses/LICENSE-CC0.txt Public Domain (CC0) -- licenses/LICENSE-CC0.txt
* HdrHistogram * HdrHistogram
......
...@@ -31,6 +31,9 @@ ...@@ -31,6 +31,9 @@
<outputDirectory>/</outputDirectory> <outputDirectory>/</outputDirectory>
<useProjectArtifact>false</useProjectArtifact> <useProjectArtifact>false</useProjectArtifact>
<scope>runtime</scope> <scope>runtime</scope>
<excludes>
<exclude>jakarta.ws.rs:jakarta.ws.rs-api</exclude>
</excludes>
</dependencySet> </dependencySet>
</dependencySets> </dependencySets>
</assembly> </assembly>
\ No newline at end of file
...@@ -95,6 +95,12 @@ ...@@ -95,6 +95,12 @@
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>${joda.version}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -26,6 +26,8 @@ import java.util.Map; ...@@ -26,6 +26,8 @@ import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.ws.rs.client.ClientBuilder;
import org.apache.bookkeeper.stats.NullStatsProvider; import org.apache.bookkeeper.stats.NullStatsProvider;
import org.apache.pulsar.client.admin.PulsarAdmin; import org.apache.pulsar.client.admin.PulsarAdmin;
import org.apache.pulsar.client.admin.PulsarAdminBuilder; import org.apache.pulsar.client.admin.PulsarAdminBuilder;
...@@ -396,6 +398,7 @@ public class PulsarConnectorConfig implements AutoCloseable { ...@@ -396,6 +398,7 @@ public class PulsarConnectorConfig implements AutoCloseable {
builder.tlsTrustCertsFilePath(getTlsTrustCertsFilePath()); builder.tlsTrustCertsFilePath(getTlsTrustCertsFilePath());
} }
builder.setContextClassLoader(ClientBuilder.class.getClassLoader());
this.pulsarAdmin = builder.serviceHttpUrl(getBrokerServiceUrl()).build(); this.pulsarAdmin = builder.serviceHttpUrl(getBrokerServiceUrl()).build();
} }
return this.pulsarAdmin; return this.pulsarAdmin;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册