Hi all, I recently noticed that there is wrong entry order in file using FileIdempotentRepository implementation. The effect is that instead of having order like:
file1.txt.20171123 file2.txt.20171123 file1.txt.20171124 file3.txt.20171125 file2.txt.20171126 we have: file1.txt.20171123 file1.txt.20171124 file2.txt.20171123 file2.txt.20171126 file3.txt.20171125 where date extension represents order in which particular file was consumed by the idempotent file consumer. As a consequence instead of initializing memory cache with newest values, it is initialized (probably) based on hash function from truncStore method and we consume same file more than once: protected void trunkStore() { LOG.info("Trunking idempotent filestore: {}", fileStore); FileOutputStream fos = null; try { fos = new FileOutputStream(fileStore); for (String key : *cache.keySet()*) { fos.write(key.getBytes()); fos.write(STORE_DELIMITER.getBytes()); } } catch (IOException e) { throw ObjectHelper.wrapRuntimeCamelException(e); } finally { IOHelper.close(fos, "Trunking file idempotent repository", LOG); } } LRUCache: @Override public Set<K> keySet() { return map.keySet(); } where previously it was: @Override public Set<K> keySet() { return map.*ascendingKeySet*(); } Regards Kris -- Pozdrawiam Krzysztof Hołdanowicz