Skip to content

Commit bab0bf1

Browse files
committed
Updates to Infinispan 16.0
1 parent af88e59 commit bab0bf1

File tree

8 files changed

+38
-78
lines changed

8 files changed

+38
-78
lines changed

bom/application/pom.xml

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@
130130
<shrinkwrap.version>1.2.6</shrinkwrap.version>
131131
<hamcrest.version>2.2</hamcrest.version><!-- The version needs to be compatible with both REST Assured and Awaitility -->
132132
<junit.jupiter.version>5.13.4</junit.jupiter.version>
133-
<infinispan.version>15.0.19.Final</infinispan.version>
134-
<infinispan.protostream.version>5.0.13.Final</infinispan.protostream.version>
133+
<infinispan.version>16.0.1</infinispan.version>
134+
<infinispan.protostream.version>6.0.1</infinispan.protostream.version>
135135
<caffeine.version>3.2.3</caffeine.version>
136136
<netty.version>4.1.128.Final</netty.version>
137137
<brotli4j.version>1.16.0</brotli4j.version>
@@ -5842,16 +5842,6 @@
58425842
<artifactId>infinispan-client-hotrod</artifactId>
58435843
<version>${infinispan.version}</version>
58445844
</dependency>
5845-
<dependency>
5846-
<groupId>org.infinispan</groupId>
5847-
<artifactId>infinispan-remote-query-client</artifactId>
5848-
<version>${infinispan.version}</version>
5849-
</dependency>
5850-
<dependency>
5851-
<groupId>org.infinispan</groupId>
5852-
<artifactId>infinispan-query-dsl</artifactId>
5853-
<version>${infinispan.version}</version>
5854-
</dependency>
58555845
<dependency>
58565846
<groupId>org.infinispan</groupId>
58575847
<artifactId>infinispan-server-hotrod</artifactId>

extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
import java.util.function.Supplier;
1717

1818
import org.infinispan.client.hotrod.RemoteCache;
19-
import org.infinispan.client.hotrod.impl.protocol.Codec27;
19+
import org.infinispan.client.hotrod.impl.protocol.Codec41;
2020
import org.infinispan.commons.util.NullValue;
2121
import org.reactivestreams.FlowAdapters;
2222

@@ -288,7 +288,7 @@ public CompletionStage<Void> get() {
288288
@Override
289289
public Uni<Void> invalidateIf(Predicate<Object> predicate) {
290290
Flow.Publisher<Map.Entry> entriesPublisher = FlowAdapters
291-
.toFlowPublisher(remoteCache.publishEntries(Codec27.EMPTY_VALUE_CONVERTER, null, null, 512));
291+
.toFlowPublisher(remoteCache.publishEntries(Codec41.EMPTY_VALUE_CONVERTER, null, null, 512));
292292
return Uni.createFrom().multi(Multi.createFrom().publisher(entriesPublisher)
293293
.map(e -> ((Map.Entry<Object, Object>) e).getKey())
294294
.filter(key -> predicate.test(key))

extensions/infinispan-client/deployment/src/main/java/io/quarkus/infinispan/client/deployment/InfinispanClientProcessor.java

Lines changed: 12 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.infinispan.client.hotrod.RemoteCache;
3434
import org.infinispan.client.hotrod.RemoteCacheManager;
3535
import org.infinispan.client.hotrod.annotation.ClientListener;
36-
import org.infinispan.client.hotrod.configuration.NearCacheMode;
36+
import org.infinispan.client.hotrod.configuration.RemoteCacheConfiguration;
3737
import org.infinispan.client.hotrod.exceptions.HotRodClientException;
3838
import org.infinispan.client.hotrod.impl.ConfigurationProperties;
3939
import org.infinispan.client.hotrod.logging.Log;
@@ -46,7 +46,6 @@
4646
import org.infinispan.protostream.FileDescriptorSource;
4747
import org.infinispan.protostream.GeneratedSchema;
4848
import org.infinispan.protostream.MessageMarshaller;
49-
import org.infinispan.protostream.SerializationContextInitializer;
5049
import org.infinispan.protostream.WrappedMessage;
5150
import org.infinispan.protostream.schema.Schema;
5251
import org.jboss.jandex.AnnotationInstance;
@@ -190,7 +189,7 @@ InfinispanPropertiesBuildItem setup(ApplicationArchivesBuildItem applicationArch
190189
additionalBeans.produce(AdditionalBeanBuildItem.builder().addBeanClass(InfinispanClientName.class).build());
191190
additionalBeans.produce(AdditionalBeanBuildItem.builder().addBeanClass(Remote.class).build());
192191

193-
resourceBuildItem.produce(new NativeImageResourceBuildItem("proto/generated/query.proto"));
192+
resourceBuildItem.produce(new NativeImageResourceBuildItem("org/infinispan/commons/query/client/query.proto"));
194193
resourceBuildItem.produce(new NativeImageResourceBuildItem(WrappedMessage.PROTO_FILE));
195194
hotDeployment
196195
.produce(new HotDeploymentWatchedFileBuildItem(META_INF + File.separator + DEFAULT_HOTROD_CLIENT_PROPERTIES));
@@ -249,26 +248,26 @@ InfinispanPropertiesBuildItem setup(ApplicationArchivesBuildItem applicationArch
249248
}
250249
}
251250
properties.putAll(marshallingBuildItem.getProperties());
252-
Collection<ClassInfo> initializerClasses = index.getAllKnownImplementations(DotName.createSimple(
253-
SerializationContextInitializer.class.getName()));
254-
initializerClasses
251+
Collection<ClassInfo> schemaClasses = index.getAllKnownImplementations(DotName.createSimple(
252+
Schema.class.getName()));
253+
schemaClasses
255254
.addAll(index.getAllKnownImplementations(DotName.createSimple(GeneratedSchema.class.getName())));
256255

257-
Set<SerializationContextInitializer> initializers = new HashSet<>(initializerClasses.size());
258-
for (ClassInfo ci : initializerClasses) {
256+
Set<Schema> schemas = new HashSet<>(schemaClasses.size());
257+
for (ClassInfo ci : schemaClasses) {
259258
Class<?> initializerClass = Thread.currentThread().getContextClassLoader().loadClass(ci.toString());
260259
try {
261-
SerializationContextInitializer sci = (SerializationContextInitializer) initializerClass
260+
Schema sci = (Schema) initializerClass
262261
.getDeclaredConstructor().newInstance();
263-
initializers.add(sci);
262+
schemas.add(sci);
264263
} catch (InstantiationException | IllegalAccessException | InvocationTargetException
265264
| NoSuchMethodException e) {
266265
// This shouldn't ever be possible as annotation processor should generate empty constructor
267266
throw new RuntimeException(e);
268267
}
269268
}
270-
if (!initializers.isEmpty()) {
271-
properties.put(InfinispanClientProducer.PROTOBUF_INITIALIZERS, initializers);
269+
if (!schemas.isEmpty()) {
270+
properties.put(InfinispanClientProducer.PROTOBUF_SCHEMAS, schemas);
272271
}
273272
}
274273
}
@@ -338,14 +337,6 @@ private void handlePerCacheFileConfig(InfinispanClientBuildTimeConfig config,
338337
BeanContainerListenerBuildItem build(InfinispanRecorder recorder, InfinispanPropertiesBuildItem builderBuildItem) {
339338
Map<String, Properties> propertiesMap = builderBuildItem.getProperties();
340339

341-
addMaxEntries(DEFAULT_INFINISPAN_CLIENT_NAME,
342-
infinispanClientsBuildTimeConfig.defaultInfinispanClient(), propertiesMap.get(DEFAULT_INFINISPAN_CLIENT_NAME));
343-
for (Map.Entry<String, InfinispanClientBuildTimeConfig> config : infinispanClientsBuildTimeConfig
344-
.namedInfinispanClients()
345-
.entrySet()) {
346-
addMaxEntries(config.getKey(), config.getValue(), propertiesMap.get(config.getKey()));
347-
}
348-
349340
// This is necessary to be done for Protostream Marshaller init in native
350341
return new BeanContainerListenerBuildItem(recorder.configureInfinispan(propertiesMap));
351342
}
@@ -424,7 +415,7 @@ private Properties loadHotrodProperties(String clientName,
424415
}
425416

426417
// We use caffeine for bounded near cache - so register that reflection if we have a bounded near cache
427-
if (properties.containsKey(ConfigurationProperties.NEAR_CACHE_MAX_ENTRIES)) {
418+
if (properties.containsKey(RemoteCacheConfiguration.NEAR_CACHE_MAX_ENTRIES)) {
428419
reflectiveClass
429420
.produce(ReflectiveClassBuildItem.builder("com.github.benmanes.caffeine.cache.SSMS").build());
430421
reflectiveClass
@@ -450,20 +441,6 @@ private Properties loadFromStream(InputStream stream) {
450441
return properties;
451442
}
452443

453-
private void addMaxEntries(String clientName, InfinispanClientBuildTimeConfig config, Properties properties) {
454-
if (log.isDebugEnabled()) {
455-
log.debugf("Applying micro profile configuration: %s", config);
456-
}
457-
// Only write the entries if it is a valid number and it isn't already configured
458-
if (config.nearCacheMaxEntries() > 0 && !properties.containsKey(ConfigurationProperties.NEAR_CACHE_MODE)) {
459-
// This is already empty so no need for putIfAbsent
460-
if (InfinispanClientUtil.isDefault(clientName)) {
461-
properties.put(ConfigurationProperties.NEAR_CACHE_MODE, NearCacheMode.INVALIDATED.toString());
462-
properties.putIfAbsent(ConfigurationProperties.NEAR_CACHE_MAX_ENTRIES, config.nearCacheMaxEntries());
463-
}
464-
}
465-
}
466-
467444
@BuildStep
468445
UnremovableBeanBuildItem ensureBeanLookupAvailable() {
469446
return UnremovableBeanBuildItem.beanTypes(BaseMarshaller.class, EnumMarshaller.class, MessageMarshaller.class,

extensions/infinispan-client/runtime/pom.xml

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -117,15 +117,6 @@
117117
<groupId>org.infinispan</groupId>
118118
<artifactId>infinispan-api</artifactId>
119119
</dependency>
120-
<dependency>
121-
<groupId>org.infinispan</groupId>
122-
<artifactId>infinispan-remote-query-client</artifactId>
123-
</dependency>
124-
<!-- This dependency is required as otherwise the RemoteCacheImpl substitution fails-->
125-
<dependency>
126-
<groupId>org.infinispan</groupId>
127-
<artifactId>infinispan-query-dsl</artifactId>
128-
</dependency>
129120
<dependency>
130121
<groupId>jakarta.annotation</groupId>
131122
<artifactId>jakarta.annotation-api</artifactId>

extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/InfinispanClientProducer.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.infinispan.client.hotrod.logging.Log;
2727
import org.infinispan.client.hotrod.logging.LogFactory;
2828
import org.infinispan.commons.configuration.StringConfiguration;
29+
import org.infinispan.commons.internal.InternalCacheNames;
2930
import org.infinispan.commons.marshall.Marshaller;
3031
import org.infinispan.commons.marshall.ProtoStreamMarshaller;
3132
import org.infinispan.counter.api.CounterManager;
@@ -34,7 +35,6 @@
3435
import org.infinispan.protostream.SerializationContext;
3536
import org.infinispan.protostream.SerializationContextInitializer;
3637
import org.infinispan.protostream.schema.Schema;
37-
import org.infinispan.query.remote.client.ProtobufMetadataManagerConstants;
3838

3939
import io.quarkus.arc.Arc;
4040

@@ -48,7 +48,7 @@ public class InfinispanClientProducer {
4848
public static final StringConfiguration DEFAULT_CONFIG = new StringConfiguration(
4949
"<distributed-cache><encoding media-type=\"application/x-protostream\"/></distributed-cache>");
5050
public static final String PROTOBUF_FILE_PREFIX = "infinispan.client.hotrod.protofile.";
51-
public static final String PROTOBUF_INITIALIZERS = "infinispan.client.hotrod.proto-initializers";
51+
public static final String PROTOBUF_SCHEMAS = "infinispan.client.hotrod.proto-schemas";
5252

5353
private final Map<String, RemoteCacheManager> remoteCacheManagers = new HashMap<>();
5454

@@ -66,27 +66,27 @@ private void registerSchemaInServer(String infinispanConfigName,
6666
RemoteCacheManager cacheManager) {
6767
RemoteCache<String, String> protobufMetadataCache = null;
6868
Properties namedProperties = properties.get(infinispanConfigName);
69-
Set<SerializationContextInitializer> initializers = (Set) namedProperties.remove(PROTOBUF_INITIALIZERS);
69+
Set<Schema> schemas = (Set) namedProperties.remove(PROTOBUF_SCHEMAS);
7070
InfinispanClientRuntimeConfig runtimeConfig = this.infinispanClientsRuntimeConfigHandle.get()
7171
.getInfinispanClientRuntimeConfig(infinispanConfigName);
72-
if (initializers != null) {
73-
for (SerializationContextInitializer initializer : initializers) {
72+
if (schemas != null) {
73+
for (Schema schema : schemas) {
7474
if (protobufMetadataCache == null) {
7575
protobufMetadataCache = cacheManager.getCache(
76-
ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME);
76+
InternalCacheNames.PROTOBUF_METADATA_CACHE_NAME);
7777
}
78-
protobufMetadataCache.put(initializer.getProtoFileName(), initializer.getProtoFile());
78+
protobufMetadataCache.put(schema.getName(), schema.getContent());
7979
}
8080
runtimeConfig.backupCluster().entrySet().forEach(backup -> {
8181
if (backup.getValue().useSchemaRegistration().orElse(true)) {
8282
cacheManager.switchToCluster(backup.getKey());
83-
for (SerializationContextInitializer initializer : initializers) {
83+
for (Schema schema : schemas) {
8484
RemoteCache<String, String> backupProtobufMetadataCache = null;
8585
if (backupProtobufMetadataCache == null) {
8686
backupProtobufMetadataCache = cacheManager.getCache(
87-
ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME);
87+
InternalCacheNames.PROTOBUF_METADATA_CACHE_NAME);
8888
}
89-
backupProtobufMetadataCache.put(initializer.getProtoFileName(), initializer.getProtoFile());
89+
backupProtobufMetadataCache.put(schema.getName(), schema.getContent());
9090
}
9191
cacheManager.switchToDefaultCluster();
9292
}
@@ -102,7 +102,7 @@ private void registerSchemaInServer(String infinispanConfigName,
102102
String fileContents = (String) property.getValue();
103103
if (protobufMetadataCache == null) {
104104
protobufMetadataCache = cacheManager.getCache(
105-
ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME);
105+
InternalCacheNames.PROTOBUF_METADATA_CACHE_NAME);
106106
}
107107
protobufMetadataCache.put(fileName, fileContents);
108108
}
@@ -122,7 +122,7 @@ private void registerSchemaInServer(String infinispanConfigName,
122122
String fileContents = (String) property.getValue();
123123
if (backupProtobufMetadataCache == null) {
124124
backupProtobufMetadataCache = cacheManager.getCache(
125-
ProtobufMetadataManagerConstants.PROTOBUF_METADATA_CACHE_NAME);
125+
InternalCacheNames.PROTOBUF_METADATA_CACHE_NAME);
126126
}
127127
backupProtobufMetadataCache.put(fileName, fileContents);
128128
}
@@ -393,7 +393,7 @@ private static void handleProtoStreamMarshaller(ProtoStreamMarshaller marshaller
393393
SerializationContext serializationContext = marshaller.getSerializationContext();
394394

395395
Set<SerializationContextInitializer> initializers = (Set) properties
396-
.get(PROTOBUF_INITIALIZERS);
396+
.get(PROTOBUF_SCHEMAS);
397397
if (initializers != null) {
398398
for (SerializationContextInitializer initializer : initializers) {
399399
initializer.registerSchema(serializationContext);

extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/graal/SubstituteRemoteCacheImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import org.infinispan.client.hotrod.configuration.Configuration;
66
import org.infinispan.client.hotrod.impl.RemoteCacheImpl;
7-
import org.infinispan.client.hotrod.impl.operations.OperationsFactory;
7+
import org.infinispan.client.hotrod.impl.transport.netty.OperationDispatcher;
88

99
import com.oracle.svm.core.annotate.Delete;
1010
import com.oracle.svm.core.annotate.Substitute;
@@ -31,6 +31,6 @@ private void unregisterMBean() {
3131
// Sadly this method is public, so technically a user could get a Runtime error if they were referencing
3232
// it before - but it is the only way to make graal happy
3333
@Delete
34-
public void init(OperationsFactory operationsFactory, Configuration configuration, ObjectName jmxParent) {
34+
public void init(Configuration configuration, OperationDispatcher operationDispatcher, ObjectName jmxParent) {
3535
}
3636
}

extensions/infinispan-client/runtime/src/main/java/io/quarkus/infinispan/client/runtime/graal/SubstituteRemoteCacheManager.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.infinispan.client.hotrod.RemoteCacheManager;
44
import org.infinispan.client.hotrod.configuration.Configuration;
55
import org.infinispan.client.hotrod.impl.InternalRemoteCache;
6-
import org.infinispan.client.hotrod.impl.operations.OperationsFactory;
6+
import org.infinispan.client.hotrod.impl.transport.netty.OperationDispatcher;
77
import org.infinispan.commons.marshall.Marshaller;
88
import org.infinispan.commons.marshall.ProtoStreamMarshaller;
99
import org.infinispan.protostream.SerializationContext;
@@ -24,11 +24,13 @@ public final class SubstituteRemoteCacheManager {
2424
private Marshaller marshaller;
2525
@Alias
2626
private Configuration configuration;
27+
@Alias
28+
private OperationDispatcher dispatcher;
2729

2830
@Substitute
29-
private void initRemoteCache(InternalRemoteCache<?, ?> remoteCache, OperationsFactory operationsFactory) {
31+
private void initRemoteCache(InternalRemoteCache<?, ?> remoteCache) {
3032
// Invoke the init method that doesn't have the JMX ObjectName argument
31-
remoteCache.init(operationsFactory, configuration);
33+
remoteCache.init(configuration, dispatcher);
3234
}
3335

3436
@Substitute

integration-tests/infinispan-client/src/main/java/io/quarkus/it/infinispan/client/CacheSetup.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import org.infinispan.client.hotrod.event.ClientCacheEntryRemovedEvent;
2525
import org.infinispan.client.hotrod.logging.Log;
2626
import org.infinispan.client.hotrod.logging.LogFactory;
27-
import org.infinispan.query.api.continuous.ContinuousQuery;
28-
import org.infinispan.query.api.continuous.ContinuousQueryListener;
27+
import org.infinispan.commons.api.query.ContinuousQuery;
28+
import org.infinispan.commons.api.query.ContinuousQueryListener;
2929
import org.infinispan.query.dsl.Query;
3030
import org.infinispan.query.dsl.QueryFactory;
3131

0 commit comments

Comments
 (0)