Referências em objetos armazenados como valores no ehcache estão desaparecendo

Referências em objetos armazenados como valores no ehcache estão desaparecendo

Estou usando o ehcache (3.8.0) com Java (1.8.0_222) para armazenar valores no heap que são recuperados de um banco de dados SQL. O problema que estou tendo é que os valores armazenados são listas de objetos, e esses objetos também contêm listas e, com o tempo, as referências nessas listas mais internas parecem estar se tornando nulas. Tentei recriá-lo em um programa menor, sem sucesso, então acho que é algo estúpido que esqueci, em vez de um problema com o ehcache.

O código que estou usando para configurar o cache é

final long cacheSize = 1L;
final MemoryUnit cacheUnits = MemoryUnit.GB;

ResourcePoolsBuilder resourcePools = ResourcePoolsBuilder
  .newResourcePoolsBuilder()
  .heap(cacheSize, cacheUnits);
CacheConfigurationBuilder<Key, List<MyInterface>> cacheConfigurationBuilder = CacheConfigurationBuilder
  .newCacheConfigurationBuilder(Key.class, (Class<List<MyInterface>>)(Class<?>)List.class, resourcePools)
  .withSizeOfMaxObjectGraph(Long.MAX_VALUE);
cacheManager = CacheManagerBuilder
  .newCacheManagerBuilder()
  .withCache(cachesName, cacheConfigurationBuilder)
  .build();
cacheManager.init();
cache = cacheManager.createCache(cacheName, cacheConfigurationBuilder);

Responder1

Resolveu o problema. Acontece que se você usar o heap, os objetos armazenados não serão imutáveis. Então o que estava acontecendo era que o programa estava pegando um objeto do cache, limpando alguns de seus campos quando terminava de usá-lo, e quando mais tarde pegou o objeto, esses campos ainda estavam limpos.

informação relacionada