Reviewing a very bad performance on an installation using ASP (SaaS) module, noticed that the caches distributed using hazelcast are killing the peformance.
The cause is that every call to the cache is returning a different object, and the cache of ASP fields is implemented as an array of the object - trusting that every call returns the same object.
So, in practice every call to MClient.get is returning a different MClient object and forcing a new expensive query in MClient.isDisplayField
Two solutions analyzed:
1 - make the cache of MClient non distributed
2 - implement near-cache in hazelcast.