]
Gustavo Fernandes updated ISPN-6771:
------------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request:
HotRod Client - TcpTransportFactory - update topology issue with
multiple caches
--------------------------------------------------------------------------------
Key: ISPN-6771
URL:
https://issues.jboss.org/browse/ISPN-6771
Project: Infinispan
Issue Type: Bug
Components: Remote Protocols
Affects Versions: 9.0.0.Alpha2, 8.2.2.Final
Environment: Infinispan server 8.2.2.Final
Hot rod client (Java) : 8.2.2.Final
Reporter: Jean-Francois LARTAUD
Assignee: Gustavo Fernandes
After debugging :
In TcpTransportFactory, the topologyInfo is global (whatever the number of caches), the
balancing strategies are defined by cache.
* For the 1st cache, the servers list is updated
(org.infinispan.client.hotrod.impl.transport.tcp.TcpTransportFactory#updateServers(java.util.Collection<java.net.SocketAddress>,
byte[], boolean), the topologyInfo is updated.
** The new servers list is returned only if servers have been added.
** As this list is not empty, the balancy strategy for the first cache is updated.
* For the other caches, the server list is updated by calling the same
"updateServers" method, the "updateTopologyInfo" method is called
** But as the topologyInfo has been already updated for the 1st cache, it returns
"Collections.emptyList();"
** The associated balancing strategies are not updated.
{code}
public void updateServers(Collection<SocketAddress> newServers, byte[] cacheName,
boolean quiet) {
synchronized (lock) {
Collection<SocketAddress> servers = updateTopologyInfo(newServers,
quiet);
if (!servers.isEmpty()) {
FailoverRequestBalancingStrategy balancer =
getOrCreateIfAbsentBalancer(cacheName);
balancer.setServers(servers);
}
}
}
{code}