Skip to content

Commit a02b2de

Browse files
authored
Merge pull request #988: Fix direct classloader
2 parents 4270fb6 + 56b2617 commit a02b2de

5 files changed

Lines changed: 17 additions & 4 deletions

File tree

beam/tools/src/main/java/cz/o2/proxima/beam/tools/groovy/RemoteConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public StreamObserver<Item> collect(StreamObserver<Response> responseObserver) {
103103
unterminatedCalls.add(terminateFuture);
104104
// send initial status to client
105105
responseObserver.onNext(Response.newBuilder().setStatus(CONTINUE).build());
106-
return new StreamObserver<Item>() {
106+
return new StreamObserver<>() {
107107

108108
List<Item> received = new ArrayList<>();
109109

core/src/main/java/cz/o2/proxima/core/repository/JPMSMain.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public static void main(String[] args)
6464
new ChildLayerFirstClassLoader(finder, thisClass.getClassLoader());
6565
createModuleLayer(loaderCache, parentLayer, finder, parentLoader);
6666
log.info("Added module layer from path {} with modules {}", path, finder.findAll());
67+
Repository.setJpmsClassLoader(parentLoader);
6768
Thread.currentThread().setContextClassLoader(parentLoader);
6869
Class<?> loadedMainClass = parentLoader.loadClass(mainClass);
6970
Method main = loadedMainClass.getDeclaredMethod("main", String[].class);

core/src/main/java/cz/o2/proxima/core/repository/Repository.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import cz.o2.proxima.core.annotations.Evolving;
1919
import cz.o2.proxima.core.functional.Consumer;
2020
import cz.o2.proxima.core.scheme.ValueSerializerFactory;
21+
import cz.o2.proxima.core.util.internal.ClassLoaders.ChildLayerFirstClassLoader;
2122
import cz.o2.proxima.internal.com.google.common.annotations.VisibleForTesting;
2223
import cz.o2.proxima.internal.com.google.common.collect.Streams;
2324
import cz.o2.proxima.typesafe.config.Config;
@@ -32,7 +33,9 @@
3233
import java.util.Set;
3334
import java.util.concurrent.ConcurrentHashMap;
3435
import java.util.stream.Stream;
36+
import lombok.AccessLevel;
3537
import lombok.Getter;
38+
import lombok.Setter;
3639
import lombok.extern.slf4j.Slf4j;
3740

3841
/** Repository of all entities configured in the system. */
@@ -42,6 +45,9 @@ public abstract class Repository implements Serializable {
4245

4346
private static final long serialVersionUID = 1L;
4447

48+
@Setter(AccessLevel.PACKAGE)
49+
private static ChildLayerFirstClassLoader jpmsClassLoader = null;
50+
4551
/** Various validation flags. */
4652
public enum Validate {
4753
/** Do not perform any validations. */
@@ -94,6 +100,10 @@ public static Repository ofTest(Config config, Validate... validate) {
94100
return ConfigRepository.ofTest(config, validate);
95101
}
96102

103+
public static ClassLoader getJpmsClassloader() {
104+
return jpmsClassLoader;
105+
}
106+
97107
@SuppressWarnings({"unchecked", "rawtypes"})
98108
private static Iterable<DataOperatorFactory<?>> readDataOperatorFactories() {
99109
return (Iterable) ServiceLoader.load(DataOperatorFactory.class);

direct/core/src/main/java/cz/o2/proxima/direct/core/DirectDataOperator.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ private static Factory<ExecutorService> createExecutorFactory() {
9393
"Error running task in thread {}, bailing out...", thr.getName(), exc);
9494
Runtime.getRuntime().exit(1);
9595
});
96-
t.setContextClassLoader(DirectDataOperator.class.getClassLoader());
96+
if (Repository.getJpmsClassloader() != null) {
97+
t.setContextClassLoader(Repository.getJpmsClassloader());
98+
}
9799
return t;
98100
});
99101
}

direct/ingest-server/src/main/java/cz/o2/proxima/direct/server/RetrieveService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -325,7 +325,7 @@ public void multifetch(
325325
for (GetRequest getRequest : request.getGetRequestList()) {
326326
get(
327327
getRequest.toBuilder().setTransactionId(request.getTransactionId()).build(),
328-
new StreamObserver<GetResponse>() {
328+
new StreamObserver<>() {
329329
@Override
330330
public void onNext(GetResponse getResponse) {
331331
response.addGetResponse(getResponse);
@@ -348,7 +348,7 @@ public void onCompleted() {}
348348
for (ListRequest listRequest : request.getListRequestList()) {
349349
listAttributes(
350350
listRequest.toBuilder().setTransactionId(request.getTransactionId()).build(),
351-
new StreamObserver<ListResponse>() {
351+
new StreamObserver<>() {
352352
@Override
353353
public void onNext(ListResponse listResponse) {
354354
response.addListResponse(listResponse);

0 commit comments

Comments
 (0)