One followup question - how did you discover the answer to this, and how
would we discover answers to problems like these ourselves? I set
IGNITE_QUIET=false, and I increased logging level in
config/java.util.logging.properties and log4j2.xml on the client side to no
avail. Is following the tree of possible code execution paths with the help
of a debugger the only option?

On Thu, Jul 11, 2024 at 12:41 PM Raymond Liu <philosob...@gmail.com> wrote:

> Hey Pavel,
>
> That does the trick! Interestingly, if I change the return value of the
> entry processor to some other POJO and I register that POJO in the
> BinaryConfiguration instead of LightsaberColor, the duplicate processing
> still occurs. Perhaps this is related to the cache value rather than the
> return value - it just so happens that the original test used
> LightsaberColor as both. Thank you very much for looking into this!
>
> - Raymond
>
> On Thu, Jul 11, 2024 at 8:42 AM Pavel Tupitsyn <ptupit...@apache.org>
> wrote:
>
>> - Duplicate invocation happens due to automatic retry
>> for UnregisteredClassException caused by return value of type
>> LightsaberColor.
>> - Ignite handles the exception, registers the type automatically, and
>> re-runs the processor
>> - This only happens once, subsequent invocations are not duplicated
>> - To fix this, register the LightsaberColor explicitly in
>> BinaryConfiguration. Your code should be changed like this:
>>
>> static class DuplicateProcessingTestConfiguration {
>>     @Bean
>>     @SneakyThrows
>>     public Ignite ignite(ApplicationContext applicationContext) {
>>         IgniteConfiguration cfg = new IgniteConfiguration();
>>         cfg.setBinaryConfiguration(new 
>> BinaryConfiguration().setTypeConfigurations(Collections.singletonList(
>>             new BinaryTypeConfiguration(LightsaberColor.class.getName())
>>         )));
>>         return IgniteSpring.start(cfg, applicationContext);
>>     }
>>
>> ...
>>
>>
>> On Wed, Jul 10, 2024 at 7:58 PM Raymond Liu <philosob...@gmail.com>
>> wrote:
>>
>>> I've only tested the real deal with 2.16, but I just ran the sample repo
>>> test with 2.14, and the output is the same. I can test with even earlier
>>> versions if you'd like.
>>>
>>> On Wed, Jul 10, 2024 at 4:08 AM Stephen Darlington <
>>> sdarling...@apache.org> wrote:
>>>
>>>> Do you see the same behaviour with older versions of Ignite, or is this
>>>> unique to 2.16?
>>>>
>>>> On Tue, 9 Jul 2024 at 21:34, Raymond Liu <philosob...@gmail.com> wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> We're encountering an issue where entry processors execute twice.
>>>>> Executing twice is a problem for us because, for easier optimization, we
>>>>> would like our entry processors *not* to be idempotent.
>>>>>
>>>>> Here is a sample self-contained junit test on Github which
>>>>> demonstrates this issue: https://github.com/Philosobyte/ignite
>>>>> -duplicate-processing-test/blob/main/src/test/java/com/philosobyte/igniteduplicateprocessingtest/DuplicateProcessingTest.java
>>>>>
>>>>>
>>>>> (in case that link doesn't work, my github username is Philosobyte and
>>>>> the project is called "ignite-duplicate-processing-test")
>>>>>
>>>>> When the test is run, it will log two executions instead of just one.
>>>>>
>>>>> To rule out the entry processor executing on both a primary and backup
>>>>> partition, I set the number of backups to 0. I've also set atomicityMode 
>>>>> to
>>>>> ATOMIC.
>>>>>
>>>>> Does anyone have any ideas about why this might happen?
>>>>>
>>>>> Thank you,
>>>>> Raymond
>>>>>
>>>>

Reply via email to