Hi,

I may have found a bug with accumulate and 'modify(..)' function call. It seems that once the modify(..) is called it indirectly calls AccumulateFunction.init() which invalidates accumulated data. I have included a simple test case:

I am using the latest snapshot of Drools 5.1.SNAPSHOT

I have created a sample Drools project and just modified the Sample.drl with this:
-------------------------------------------------------------
import java.util.List;
import java.util.ArrayList;
 
declare Holder
  list : List
end 
 
rule "Hello World"
when
m : Message( )
then
insert(new Holder());
end

rule "GoodBye"
when
$holder : Holder( list == null )
$messages : List() from accumulate(
$message: Message(), collectList($message) )
then
System.out.println($messages); //<-- here the $messages list has one element
modify($holder) {
setList($messages)
}
System.out.println($messages); //<-- here the $messages list is empty
end
-----------------------------------------------------

Let me know if you need more information. I can create a JIRA if needed.

Thank you!
Best regards,
Michal