[JBoss JIRA] (ISPN-3509) Infinispan does not support postgresplus database
by Mircea Markus (JIRA)
[ https://issues.jboss.org/browse/ISPN-3509?page=com.atlassian.jira.plugin.... ]
Mircea Markus updated ISPN-3509:
--------------------------------
Priority: Major (was: Minor)
> Infinispan does not support postgresplus database
> -------------------------------------------------
>
> Key: ISPN-3509
> URL: https://issues.jboss.org/browse/ISPN-3509
> Project: Infinispan
> Issue Type: Bug
> Components: Loaders and Stores
> Affects Versions: 6.0.0.Alpha3, 6.0.0.Alpha4
> Reporter: Vitalii Chepeliuk
> Assignee: Mircea Markus
> Labels: jdg62blocker
> Fix For: 6.0.0.Beta2, 6.0.0.Final
>
> Attachments: server.log
>
>
> When I run our functional tests inside EAP server against postgresplus database following error occured
> 17:19:12,893 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (pool-1-thread-1) ISPN000136: Execution error: org.infinispan.commons.CacheConfigurationException: Unable to detect database type from JDBC driver name or connection metadata. Please provide this manually using the 'databaseType' property in your configuration. Supported database type strings are [MYSQL, POSTGRES, DERBY, HSQL, H2, SQLITE, DB2, DB2_390, INFORMIX, INTERBASE, FIREBIRD, SQL_SERVER, ACCESS, ORACLE, SYBASE]
> at org.infinispan.loaders.jdbc.TableManipulation.getDatabaseType(TableManipulation.java:412) [infinispan-cachestore-jdbc.jar:6.0.0.Alpha4-redhat-1]
> Jenkins job https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/JDG/view/FUNC/job/e...
>
--
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3224) RemoteCacheManager of HotRod client is not able connect to server because of wrong parsing IPv6 address for pure IPv6 machines and gets wrong address on dual stack machines
by Radim Vansa (JIRA)
[ https://issues.jboss.org/browse/ISPN-3224?page=com.atlassian.jira.plugin.... ]
Radim Vansa updated ISPN-3224:
------------------------------
Description:
########################Run hotrod client with pure IPv6#############################################
Hotrod client fails when want connect to server, below is exception from pure IPv6 machines it doesn't really undedstand IPv6 address it should connect."Could not connect to server: /0.0.10.60:52" Here should
be IPv6 address but it looks like some wrong IPv4 address it want to connect to and I use complicated address 2620:52:0:105f:0:0:ffff:32%2:11222 as host variable and it is not specified in /etc/hosts
{code}
public RemoteCacheManager(String host, int port, boolean start, ClassLoader classLoader) {
config = new ConfigurationProperties(host + ":" + port); <<< host=2620:52:0:105f:0:0:ffff:32%2 and port=11222
this.classLoader = classLoader;
if (start) start();
}
{code}
then in start method
{code}
@Override
public void start() {
// Workaround for JDK6 NPE: http://bugs.sun.com/view_bug.do?bug_id=6427854
SysPropertyActions.setProperty("sun.nio.ch.bugLevel", "\"\"");
forceReturnValueDefault = config.getForceReturnValues();
codec = CodecFactory.getCodec(config.getProtocolVersion());
String factory = config.getTransportFactory();
transportFactory = (TransportFactory) getInstance(factory, classLoader);
Collection<SocketAddress> servers = config.getServerList(); <<< we get list of servers but getServerList() method should be improved see below!
transportFactory.start(codec, config, servers, topologyId, classLoader); <<< and pass to transportFactory
if (marshaller == null) {
String marshallerName = config.getMarshaller();
setMarshaller((Marshaller) getInstance(marshallerName, classLoader));
}
if (asyncExecutorService == null) {
String asyncExecutorClass = config.getAsyncExecutorFactory();
ExecutorFactory executorFactory = (ExecutorFactory) getInstance(asyncExecutorClass, classLoader);
asyncExecutorService = executorFactory.getExecutor(config.getProperties());
}
synchronized (cacheName2RemoteCache) {
for (RemoteCacheHolder rcc : cacheName2RemoteCache.values()) {
startRemoteCache(rcc);
}
}
// Print version to help figure client version run
log.version(org.infinispan.Version.printVersion());
started = true;
}
{code}
and "servers" variable contain the same IP address 2620:52:0:105f:0:0:ffff:32%2:11222
{code}
public Collection<SocketAddress> getServerList() {
Set<SocketAddress> addresses = new HashSet<SocketAddress>();
String servers = props.getProperty(SERVER_LIST, "127.0.0.1:" + DEFAULT_HOTROD_PORT); <<< got 2620:52:0:105f:0:0:ffff:32%2:11222
for (String server : servers.split(";")) {
String[] components = server.trim().split(":"); <<< just only here the splitting it wrong, we devide address into 9 chunks
String host = components[0]; <<< host name shoud be 1 chunk 2620
int port = DEFAULT_HOTROD_PORT;
if (components.length > 1) port = Integer.parseInt(components[1]); <<< and port 52
addresses.add(new InetSocketAddress(host, port)); <<< and again we pass wrong parameteres to this constructor with IntetSocketAddress(2620, 52)
}
if (addresses.isEmpty()) throw new IllegalStateException("No Hot Rod servers specified!");
return addresses; << here we just get some strange IPv4 address as 0.0.10.60:52
}
{code}
and exception is the following
{code}
Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: /0.0.10.60:52
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
{code}
########################Other issue is when hotrod client connects in dual stack mode#################
/etc/hosts file is---------------------------------------------------------
127.0.0.1 myhost localhost.localdomain localhost
::1 myhost localhost6.localdomain6 localhost6
---------------------------------------------------------------------------
Then is the same problem in ConfigurationProperties.java getServerList() method we add address to addresses <<<addresses.add(new InetSocketAddress(host, port));>>>
so InetSocketAddress constructor is called
{code}
public InetSocketAddress(String hostname, int port) {
checkHost(hostname);
InetAddress addr = null;
String host = null;
try {
addr = InetAddress.getByName(hostname); <<< we should get InetAddress with hostname
} catch(UnknownHostException e) {
host = hostname;
}
holder = new InetSocketAddressHolder(host, addr, checkPort(
}
{code}
but we have 2! different inet addresses with the same hostname one is 127.0.0.1 and other ::1 and if i run it on IPv6 there should be ::1 and not 127.0.0.1!
And
public static InetAddress getByName(String host)
throws UnknownHostException {
return InetAddress.getAllByName(host)[0]; <<< but here we get only first address in array and got always 127.0.0.1
}
and then other exception is thrown
{code}
Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: vchepQA/127.0.0.1:11222
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
... 97 more
{code}
and i forget to add trace log just download it here http://dropmefiles.com/en/H5wvu
##################################################INFINISPAN 5.3.0.FINAL#####################################################################
org.infinispan.client.hotrod.configuration.ConfigurationBuilder has this method
{code}
@Override
public ConfigurationBuilder addServers(String servers) {
for (String server : servers.split(";")) {
String[] components = server.trim().split(":");
String host = components[0];
int port = ConfigurationProperties.DEFAULT_HOTROD_PORT;
if (components.length > 1)
port = Integer.parseInt(components[1]);
this.addServer().host(host).port(port);
}
return this;
}
{code}
And what if I put in <servers> argument something like addServers("[fe80::3e97:eff:fe19:3045]:11222;[fe80::3e97:eff:fe19:3046]:11322")? I think that It is not parsing correctly and we can use
<servers> argument something like addServers("localhost6:11222; localhost6.localdomain6:11322") or other ipv6 hostnames.
Because I want to use ip addresses and not hostnames and not to change /etc/hosts file only for mapping ipv6 address to some dummy hostname
was:
########################Run hotrod client with pure IPv6#############################################
Hotrod client fails when want connect to server, below is exception from pure IPv6 machines it doesn't really undedstand IPv6 address it should connect."Could not connect to server: /0.0.10.60:52" Here should
be IPv6 address but it looks like some wrong IPv4 address it want to connect to and I use complicated address 2620:52:0:105f:0:0:ffff:32%2:11222 as host variable and it is not specified in /etc/hosts
public RemoteCacheManager(String host, int port, boolean start, ClassLoader classLoader) {
config = new ConfigurationProperties(host + ":" + port); <<< host=2620:52:0:105f:0:0:ffff:32%2 and port=11222
this.classLoader = classLoader;
if (start) start();
}
then in start method
@Override
public void start() {
// Workaround for JDK6 NPE: http://bugs.sun.com/view_bug.do?bug_id=6427854
SysPropertyActions.setProperty("sun.nio.ch.bugLevel", "\"\"");
forceReturnValueDefault = config.getForceReturnValues();
codec = CodecFactory.getCodec(config.getProtocolVersion());
String factory = config.getTransportFactory();
transportFactory = (TransportFactory) getInstance(factory, classLoader);
Collection<SocketAddress> servers = config.getServerList(); <<< we get list of servers but getServerList() method should be improved see below!
transportFactory.start(codec, config, servers, topologyId, classLoader); <<< and pass to transportFactory
if (marshaller == null) {
String marshallerName = config.getMarshaller();
setMarshaller((Marshaller) getInstance(marshallerName, classLoader));
}
if (asyncExecutorService == null) {
String asyncExecutorClass = config.getAsyncExecutorFactory();
ExecutorFactory executorFactory = (ExecutorFactory) getInstance(asyncExecutorClass, classLoader);
asyncExecutorService = executorFactory.getExecutor(config.getProperties());
}
synchronized (cacheName2RemoteCache) {
for (RemoteCacheHolder rcc : cacheName2RemoteCache.values()) {
startRemoteCache(rcc);
}
}
// Print version to help figure client version run
log.version(org.infinispan.Version.printVersion());
started = true;
}
and "servers" variable contain the same IP address 2620:52:0:105f:0:0:ffff:32%2:11222
public Collection<SocketAddress> getServerList() {
Set<SocketAddress> addresses = new HashSet<SocketAddress>();
String servers = props.getProperty(SERVER_LIST, "127.0.0.1:" + DEFAULT_HOTROD_PORT); <<< got 2620:52:0:105f:0:0:ffff:32%2:11222
for (String server : servers.split(";")) {
String[] components = server.trim().split(":"); <<< just only here the splitting it wrong, we devide address into 9 chunks
String host = components[0]; <<< host name shoud be 1 chunk 2620
int port = DEFAULT_HOTROD_PORT;
if (components.length > 1) port = Integer.parseInt(components[1]); <<< and port 52
addresses.add(new InetSocketAddress(host, port)); <<< and again we pass wrong parameteres to this constructor with IntetSocketAddress(2620, 52)
}
if (addresses.isEmpty()) throw new IllegalStateException("No Hot Rod servers specified!");
return addresses; << here we just get some strange IPv4 address as 0.0.10.60:52
}
and exception is the following
Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: /0.0.10.60:52
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
########################Other issue is when hotrod client connects in dual stack mode#################
/etc/hosts file is---------------------------------------------------------
127.0.0.1 myhost localhost.localdomain localhost
::1 myhost localhost6.localdomain6 localhost6
---------------------------------------------------------------------------
Then is the same problem in ConfigurationProperties.java getServerList() method we add address to addresses <<<addresses.add(new InetSocketAddress(host, port));>>>
so InetSocketAddress constructor is called
public InetSocketAddress(String hostname, int port) {
checkHost(hostname);
InetAddress addr = null;
String host = null;
try {
addr = InetAddress.getByName(hostname); <<< we should get InetAddress with hostname
} catch(UnknownHostException e) {
host = hostname;
}
holder = new InetSocketAddressHolder(host, addr, checkPort(
}
but we have 2! different inet addresses with the same hostname one is 127.0.0.1 and other ::1 and if i run it on IPv6 there should be ::1 and not 127.0.0.1!
And
public static InetAddress getByName(String host)
throws UnknownHostException {
return InetAddress.getAllByName(host)[0]; <<< but here we get only first address in array and got always 127.0.0.1
}
and then other exception is thrown--------------------------------------
Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: vchepQA/127.0.0.1:11222
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
... 97 more
---------------------------------------------------------------------------
and i forget to add trace log just download it here http://dropmefiles.com/en/H5wvu
##################################################INFINISPAN 5.3.0.FINAL#####################################################################
org.infinispan.client.hotrod.configuration.ConfigurationBuilder has this method
@Override
public ConfigurationBuilder addServers(String servers) {
for (String server : servers.split(";")) {
String[] components = server.trim().split(":");
String host = components[0];
int port = ConfigurationProperties.DEFAULT_HOTROD_PORT;
if (components.length > 1)
port = Integer.parseInt(components[1]);
this.addServer().host(host).port(port);
}
return this;
}
And what if I put in <servers> argument something like addServers("[fe80::3e97:eff:fe19:3045]:11222;[fe80::3e97:eff:fe19:3046]:11322")? I think that It is not parsing correctly and we can use
<servers> argument something like addServers("localhost6:11222; localhost6.localdomain6:11322") or other ipv6 hostnames.
Because I want to use ip addresses and not hostnames and not to change /etc/hosts file only for mapping ipv6 address to some dummy hostname
> RemoteCacheManager of HotRod client is not able connect to server because of wrong parsing IPv6 address for pure IPv6 machines and gets wrong address on dual stack machines
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: ISPN-3224
> URL: https://issues.jboss.org/browse/ISPN-3224
> Project: Infinispan
> Issue Type: Bug
> Components: Remote protocols
> Affects Versions: 5.2.5.Final, 5.3.0.Final
> Reporter: Vitalii Chepeliuk
> Assignee: Tristan Tarrant
> Priority: Critical
> Fix For: 6.0.0.CR1
>
>
> ########################Run hotrod client with pure IPv6#############################################
> Hotrod client fails when want connect to server, below is exception from pure IPv6 machines it doesn't really undedstand IPv6 address it should connect."Could not connect to server: /0.0.10.60:52" Here should
> be IPv6 address but it looks like some wrong IPv4 address it want to connect to and I use complicated address 2620:52:0:105f:0:0:ffff:32%2:11222 as host variable and it is not specified in /etc/hosts
> {code}
> public RemoteCacheManager(String host, int port, boolean start, ClassLoader classLoader) {
> config = new ConfigurationProperties(host + ":" + port); <<< host=2620:52:0:105f:0:0:ffff:32%2 and port=11222
> this.classLoader = classLoader;
> if (start) start();
> }
> {code}
>
> then in start method
> {code}
> @Override
> public void start() {
> // Workaround for JDK6 NPE: http://bugs.sun.com/view_bug.do?bug_id=6427854
> SysPropertyActions.setProperty("sun.nio.ch.bugLevel", "\"\"");
> forceReturnValueDefault = config.getForceReturnValues();
> codec = CodecFactory.getCodec(config.getProtocolVersion());
> String factory = config.getTransportFactory();
> transportFactory = (TransportFactory) getInstance(factory, classLoader);
> Collection<SocketAddress> servers = config.getServerList(); <<< we get list of servers but getServerList() method should be improved see below!
>
> transportFactory.start(codec, config, servers, topologyId, classLoader); <<< and pass to transportFactory
> if (marshaller == null) {
> String marshallerName = config.getMarshaller();
> setMarshaller((Marshaller) getInstance(marshallerName, classLoader));
> }
> if (asyncExecutorService == null) {
> String asyncExecutorClass = config.getAsyncExecutorFactory();
> ExecutorFactory executorFactory = (ExecutorFactory) getInstance(asyncExecutorClass, classLoader);
> asyncExecutorService = executorFactory.getExecutor(config.getProperties());
> }
> synchronized (cacheName2RemoteCache) {
> for (RemoteCacheHolder rcc : cacheName2RemoteCache.values()) {
> startRemoteCache(rcc);
> }
> }
> // Print version to help figure client version run
> log.version(org.infinispan.Version.printVersion());
> started = true;
> }
> {code}
>
> and "servers" variable contain the same IP address 2620:52:0:105f:0:0:ffff:32%2:11222
> {code}
> public Collection<SocketAddress> getServerList() {
> Set<SocketAddress> addresses = new HashSet<SocketAddress>();
> String servers = props.getProperty(SERVER_LIST, "127.0.0.1:" + DEFAULT_HOTROD_PORT); <<< got 2620:52:0:105f:0:0:ffff:32%2:11222
> for (String server : servers.split(";")) {
> String[] components = server.trim().split(":"); <<< just only here the splitting it wrong, we devide address into 9 chunks
> String host = components[0]; <<< host name shoud be 1 chunk 2620
> int port = DEFAULT_HOTROD_PORT;
> if (components.length > 1) port = Integer.parseInt(components[1]); <<< and port 52
> addresses.add(new InetSocketAddress(host, port)); <<< and again we pass wrong parameteres to this constructor with IntetSocketAddress(2620, 52)
> }
> if (addresses.isEmpty()) throw new IllegalStateException("No Hot Rod servers specified!");
> return addresses; << here we just get some strange IPv4 address as 0.0.10.60:52
> }
> {code}
> and exception is the following
> {code}
> Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: /0.0.10.60:52
> at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
> at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
> at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
> at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
> at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
> {code}
> ########################Other issue is when hotrod client connects in dual stack mode#################
> /etc/hosts file is---------------------------------------------------------
> 127.0.0.1 myhost localhost.localdomain localhost
> ::1 myhost localhost6.localdomain6 localhost6
> ---------------------------------------------------------------------------
> Then is the same problem in ConfigurationProperties.java getServerList() method we add address to addresses <<<addresses.add(new InetSocketAddress(host, port));>>>
> so InetSocketAddress constructor is called
> {code}
> public InetSocketAddress(String hostname, int port) {
> checkHost(hostname);
> InetAddress addr = null;
> String host = null;
> try {
> addr = InetAddress.getByName(hostname); <<< we should get InetAddress with hostname
> } catch(UnknownHostException e) {
> host = hostname;
> }
> holder = new InetSocketAddressHolder(host, addr, checkPort(
> }
> {code}
> but we have 2! different inet addresses with the same hostname one is 127.0.0.1 and other ::1 and if i run it on IPv6 there should be ::1 and not 127.0.0.1!
> And
> public static InetAddress getByName(String host)
> throws UnknownHostException {
> return InetAddress.getAllByName(host)[0]; <<< but here we get only first address in array and got always 127.0.0.1
> }
> and then other exception is thrown
> {code}
> Caused by: org.infinispan.client.hotrod.exceptions.TransportException:: Could not connect to server: vchepQA/127.0.0.1:11222
> at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransport.<init>(TcpTransport.java:88)
> at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:57)
> at org.infinispan.client.hotrod.impl.transport.tcp.TransportObjectFactory.makeObject(TransportObjectFactory.java:38)
> at org.apache.commons.pool.impl.GenericKeyedObjectPool.borrowObject(GenericKeyedObjectPool.java:1220)
> at org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory.borrowTransportFromPool(TcpTransportFactory.java:271)
> ... 97 more
> {code}
> and i forget to add trace log just download it here http://dropmefiles.com/en/H5wvu
> ##################################################INFINISPAN 5.3.0.FINAL#####################################################################
> org.infinispan.client.hotrod.configuration.ConfigurationBuilder has this method
> {code}
> @Override
> public ConfigurationBuilder addServers(String servers) {
> for (String server : servers.split(";")) {
> String[] components = server.trim().split(":");
> String host = components[0];
> int port = ConfigurationProperties.DEFAULT_HOTROD_PORT;
> if (components.length > 1)
> port = Integer.parseInt(components[1]);
> this.addServer().host(host).port(port);
> }
> return this;
> }
> {code}
> And what if I put in <servers> argument something like addServers("[fe80::3e97:eff:fe19:3045]:11222;[fe80::3e97:eff:fe19:3046]:11322")? I think that It is not parsing correctly and we can use
> <servers> argument something like addServers("localhost6:11222; localhost6.localdomain6:11322") or other ipv6 hostnames.
> Because I want to use ip addresses and not hostnames and not to change /etc/hosts file only for mapping ipv6 address to some dummy hostname
--
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3457) Infinispan error running on IBM JDK
by Mircea Markus (JIRA)
[ https://issues.jboss.org/browse/ISPN-3457?page=com.atlassian.jira.plugin.... ]
Mircea Markus commented on ISPN-3457:
-------------------------------------
Reply from Luis on github:
<snip>
I saw this Unit Test class:
https://github.com/engagepoint/infinispan/blob/IBM_JDK_FIX/core/src/test/...
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3527) Transaction boundary commands can be completed before state transfer applies an active transaction
by Mircea Markus (JIRA)
[ https://issues.jboss.org/browse/ISPN-3527?page=com.atlassian.jira.plugin.... ]
Mircea Markus updated ISPN-3527:
--------------------------------
Fix Version/s: 6.0.0.Beta2
6.0.0.Final
> Transaction boundary commands can be completed before state transfer applies an active transaction
> --------------------------------------------------------------------------------------------------
>
> Key: ISPN-3527
> URL: https://issues.jboss.org/browse/ISPN-3527
> Project: Infinispan
> Issue Type: Bug
> Components: State transfer
> Affects Versions: 5.2.7.Final
> Reporter: Erik Salter
> Assignee: Mircea Markus
> Fix For: 6.0.0.Beta2, 6.0.0.Final
>
>
> There is a condition where a transaction boundary command, like a RollbackCommand, can be processed by the new owner of a tx-encapsulated key before it applies the active transaction.
> On a view change:
> The forwarding node waits until its transactions from the new topology ID is set before issuing the command.
> 2013-09-17 14:28:33,725 TRACE [org.infinispan.interceptors.InvocationContextInterceptor] (OOB-350,session-resource-cluster,east-dht5-60816(CMC-Denver-CO)) Invoked with command RollbackCommand {gtx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:local, cacheName='eigAllocation', topologyId=-1} and InvocationContext [org.infinispan.context.impl.LocalTxInvocationContext@1f225e51]
> 2013-09-17 14:28:33,727 TRACE [org.infinispan.statetransfer.StateTransferInterceptor] (OOB-350,session-resource-cluster,east-dht5-60816(CMC-Denver-CO)) handleTopologyAffectedCommand for command RollbackCommand {gtx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:local, cacheName='eigAllocation', topologyId=-1}
> 2013-09-17 14:28:33,727 TRACE [org.infinispan.statetransfer.StateTransferLockImpl] (OOB-350,session-resource-cluster,east-dht5-60816(CMC-Denver-CO)) Waiting for transaction data for topology 26, current topology is 25
> ...
> 2013-09-17 14:28:34,101 TRACE [org.infinispan.remoting.rpc.RpcManagerImpl] (OOB-350,session-resource-cluster,east-dht5-60816(CMC-Denver-CO)) east-dht5-60816(CMC-Denver-CO) broadcasting call RollbackCommand {gtx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:local, cacheName='eigAllocation', topologyId=26} to recipient list [west-dht4-48045(CH2-Chicago-IL), east-dht5-60816(CMC-Denver-CO), east-dht2-60243(CMC-Denver-CO)]
> However, the receiving node has not finished applying the transactions from the forwarding node yet for this topology ID. So the tx cannot be found, resulting in a stale tx and an unusable key.
> 2013-09-17 14:28:34,116 TRACE [org.infinispan.remoting.InboundInvocationHandlerImpl] (OOB-153,session-resource-cluster,west-dht4-48045(CH2-Chicago-IL)) Calling perform() on RollbackCommand {gtx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:remote, cacheName='eigAllocation', topologyId=26}
> 2013-09-17 14:28:34,116 TRACE [org.infinispan.commands.tx.AbstractTransactionBoundaryCommand] (OOB-153,session-resource-cluster,west-dht4-48045(CH2-Chicago-IL)) Did not find a RemoteTransaction for GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:remote
> 2013-09-17 14:28:34,116 TRACE [org.infinispan.remoting.InboundInvocationHandlerImpl] (OOB-153,session-resource-cluster,west-dht4-48045(CH2-Chicago-IL)) About to send back response SuccessfulResponse{responseValue=null} for command RollbackCommand {gtx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:remote, cacheName='eigAllocation', topologyId=26}
> ...
> 2013-09-17 14:28:34,161 TRACE [org.infinispan.transaction.TransactionTable] (OOB-408,session-resource-cluster,west-dht4-48045(CH2-Chicago-IL)) Created and registered remote transaction RemoteTransaction{modifications=[PutKeyValueCommand{key=EdgeResourceCacheKey[edgeDeviceId=4109,resourceId=16825], value=EdgeInputResource [edgeInputId=16825, currentBandwidth=0, maxBandwidth=1048576000], flags=null, putIfAbsent=false, lifespanMillis=-1, maxIdleTimeMillis=-1, successful=true, ignorePreviousValue=false}], lookedUpEntries={}, lockedKeys=null, backupKeyLocks=null, missingLookedUpEntries=false, isMarkedForRollback=false, tx=GlobalTransaction:<east-dht5-60816(CMC-Denver-CO)>:48002:remote}
> 2013-09-17 14:28:34,733 TRACE [org.infinispan.statetransfer.StateTransferLockImpl] (OOB-408,session-resource-cluster,west-dht4-48045(CH2-Chicago-IL)) Signalling transaction data received for topology 26
--
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3528) CacheLoaderTask implementation should be thread safe
by Mircea Markus (JIRA)
[ https://issues.jboss.org/browse/ISPN-3528?page=com.atlassian.jira.plugin.... ]
Mircea Markus updated ISPN-3528:
--------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request: https://github.com/infinispan/infinispan/pull/2086
> CacheLoaderTask implementation should be thread safe
> ----------------------------------------------------
>
> Key: ISPN-3528
> URL: https://issues.jboss.org/browse/ISPN-3528
> Project: Infinispan
> Issue Type: Bug
> Components: Locking and Concurrency
> Affects Versions: 6.0.0.Alpha4
> Reporter: Dan Berindei
> Assignee: Mircea Markus
> Priority: Critical
> Fix For: 6.0.0.Beta2
>
>
> {{PersistenceManager.processOnAllStores}} receives a {{CacheLoaderTask}} parameter and calls it on potentially many threads concurrently. So the task object must be thread-safe.
> The {{CacheLoaderTask}}‍s used by {{CacheLoaderInterceptor.visitEntrySetCommand}}/{{visitKeySetCommand}}/{{visitValuesCommand}} are not thread-safe. They use a {{HashSet}} without any synchronization, and when accessed from concurrent threads the map can be corrupted. When this happens, the thread will block in an infinite loop:
> {noformat}
> "testng-LocalModeNoPassivationTest" prio=10 tid=0x00007f19141ac800 nid=0x622c runnable [0x00007f1902a62000]
> java.lang.Thread.State: RUNNABLE
> at java.util.HashMap.put(HashMap.java:498)
> at java.util.HashSet.add(HashSet.java:217)
> at java.util.AbstractCollection.addAll(AbstractCollection.java:342)
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitEntrySetCommand(CacheLoaderInterceptor.java:195)
> ...
> {noformat}
--
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3528) CacheLoaderTask implementation should be thread safe
by Mircea Markus (JIRA)
[ https://issues.jboss.org/browse/ISPN-3528?page=com.atlassian.jira.plugin.... ]
Mircea Markus updated ISPN-3528:
--------------------------------
Summary: CacheLoaderTask implementation should be thread safe (was: CacheLoaderInterceptor.visitEntrySetCommand can hang)
> CacheLoaderTask implementation should be thread safe
> ----------------------------------------------------
>
> Key: ISPN-3528
> URL: https://issues.jboss.org/browse/ISPN-3528
> Project: Infinispan
> Issue Type: Bug
> Components: Locking and Concurrency
> Affects Versions: 6.0.0.Alpha4
> Reporter: Dan Berindei
> Assignee: Mircea Markus
> Priority: Critical
> Fix For: 6.0.0.Beta2
>
>
> {{PersistenceManager.processOnAllStores}} receives a {{CacheLoaderTask}} parameter and calls it on potentially many threads concurrently. So the task object must be thread-safe.
> The {{CacheLoaderTask}}‍s used by {{CacheLoaderInterceptor.visitEntrySetCommand}}/{{visitKeySetCommand}}/{{visitValuesCommand}} are not thread-safe. They use a {{HashSet}} without any synchronization, and when accessed from concurrent threads the map can be corrupted. When this happens, the thread will block in an infinite loop:
> {noformat}
> "testng-LocalModeNoPassivationTest" prio=10 tid=0x00007f19141ac800 nid=0x622c runnable [0x00007f1902a62000]
> java.lang.Thread.State: RUNNABLE
> at java.util.HashMap.put(HashMap.java:498)
> at java.util.HashSet.add(HashSet.java:217)
> at java.util.AbstractCollection.addAll(AbstractCollection.java:342)
> at org.infinispan.interceptors.CacheLoaderInterceptor.visitEntrySetCommand(CacheLoaderInterceptor.java:195)
> ...
> {noformat}
--
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: http://www.atlassian.com/software/jira
11 years, 3 months
[JBoss JIRA] (ISPN-3534) Investigate performance regressions in Infinispan 6.0.0
by Mircea Markus (JIRA)
Mircea Markus created ISPN-3534:
-----------------------------------
Summary: Investigate performance regressions in Infinispan 6.0.0
Key: ISPN-3534
URL: https://issues.jboss.org/browse/ISPN-3534
Project: Infinispan
Issue Type: Feature Request
Affects Versions: 5.3.0.Final, 6.0.0.CR1
Reporter: Mircea Markus
Assignee: Mircea Markus
As per QE:
30% performance regression in distributed, udp, tx, async library stress tests
20% performance regression in distributed, udp, tx, sync library stress tests
20% performance regression in memcached client stress tests
--
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: http://www.atlassian.com/software/jira
11 years, 3 months