]
Mircea Markus commented on ISPN-3457:
-------------------------------------
Reply from Luis on github:
<snip>
I saw this Unit Test class:
Using this test case, running it with the IBM JDK (I'm using the JDK
included into WAS 8.0.0.6) the issue can be replicated. (without the
changes I propose)
Please let me know how I can provide you with more information and more
details in order to show you this replication
</snip>
Infinispan error running on IBM JDK
-----------------------------------
Key: ISPN-3457
URL:
https://issues.jboss.org/browse/ISPN-3457
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 6.0.0.Alpha3
Environment: WAS 8.0.0.6 JDK, Windows 7 Professional
Reporter: Luis Montoya
Assignee: Mircea Markus
Fix For: 6.0.0.Alpha3
I created a sample application using infinispan on standar JDK (Sun/Oracle). This app
works fine using this JDK.
I tried to run the app on IBM JDK (the needed for WAS), but I get the below error:
org.infinispan.commons.CacheException: Unable to construct a GlobalComponentRegistry!
at
org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:129)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:276)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:246)
at
org.infinispan.quickstart.clusteredcache.replication.AbstractNode.createCacheManagerProgramatically(AbstractNode.java:41)
at
org.infinispan.quickstart.clusteredcache.replication.AbstractNode.<init>(AbstractNode.java:62)
at org.infinispan.quickstart.clusteredcache.replication.Node0.main(Node0.java:32)
Caused by: org.infinispan.commons.CacheException: Unable to invoke method public void
org.infinispan.topology.LocalTopologyManagerImpl.inject(org.infinispan.remoting.transport.Transport,java.util.concurrent.ExecutorService,org.infinispan.factories.GlobalComponentRegistry,org.infinispan.util.TimeService)
on object of type LocalTopologyManagerImpl with parameters
[org.infinispan.executors.LazyInitializingExecutorService@96d7b55b,
org.infinispan.executors.LazyInitializingExecutorService@96d7b55b,
org.infinispan.factories.GlobalComponentRegistry@9fd5a559,
org.infinispan.util.DefaultTimeService@725adace]
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:188)
at
org.infinispan.factories.AbstractComponentRegistry.invokeInjectionMethod(AbstractComponentRegistry.java:229)
at
org.infinispan.factories.AbstractComponentRegistry.access$000(AbstractComponentRegistry.java:65)
at
org.infinispan.factories.AbstractComponentRegistry$Component.injectDependencies(AbstractComponentRegistry.java:797)
at
org.infinispan.factories.AbstractComponentRegistry.registerComponentInternal(AbstractComponentRegistry.java:201)
at
org.infinispan.factories.AbstractComponentRegistry.registerComponent(AbstractComponentRegistry.java:156)
at
org.infinispan.factories.AbstractComponentRegistry.getOrCreateComponent(AbstractComponentRegistry.java:277)
at
org.infinispan.factories.AbstractComponentRegistry.getOrCreateComponent(AbstractComponentRegistry.java:253)
at
org.infinispan.factories.GlobalComponentRegistry.<init>(GlobalComponentRegistry.java:125)
... 5 more
Caused by: java.lang.IllegalArgumentException: discrepancia en el tipo de argumento
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:48)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:600)
at org.infinispan.commons.util.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:183)
... 13 more
It seems that a method which is being invoked through reflection is receiving incorrectly
the first parameter, which should be a org.infinispan.remoting.transport.Transport
instance, but it is receiving a
org.infinispan.executors.LazyInitializingExecutorService@96d7b55b instance
The code which launch the error is the next:
new DefaultCacheManager(
GlobalConfigurationBuilder.defaultClusteredBuilder().globalJmxStatistics().allowDuplicateDomains(true)
.transport().addProperty("configurationFile",
"jgroups.xml")
.build(),
new ConfigurationBuilder()
.clustering().cacheMode(CacheMode.REPL_SYNC)
.build()
);
Making a review and debug of the code, the next behavior was seen which produce the
error:
if a map called map contains something like this {1=some.class.type}, and you try to get
a value using the 0 as the key ( map.get(0), it doens't return null rather it returns
the value for the 1 key, it means, for map.get(0) it returns "some.class.type",
as if map.get(1) was called)
Also, when the contains method of Map interface is called ( map.contains(0)), it returns
true, which is incorrect because the map only has the 1 key
This behavior is happening on this class and method:
class: org.infinispan.factories.components.ComponentMetadata$InjectMetadata
methods: getParameterName, isParameterNameSet
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: