Hi

Ah well spotted.
I think we should for loop via Map.Entry (or (k,v) via lambda) which I
think will be in the correct order.

You are welcome to log a JIRA. And also work on unit test and patch.
http://camel.apache.org/contributing

On Tue, Nov 28, 2017 at 8:55 AM, Krzysztof Hołdanowicz
<holdanow...@gmail.com> wrote:
> 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



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Reply via email to