[ https://issues.apache.org/jira/browse/IGNITE-24165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Aleksandr resolved IGNITE-24165. -------------------------------- Resolution: Duplicate IGNITE-24163 > EventLog interface refactoring. > ------------------------------- > > Key: IGNITE-24165 > URL: https://issues.apache.org/jira/browse/IGNITE-24165 > Project: Ignite > Issue Type: Bug > Components: general > Reporter: Andrey Mashenkov > Priority: Critical > Labels: ignite-3 > > As for now, `EventLog.log(Supplier<Event>)` method javadoc doesn't describe > the method purposes, contract and Supplier parameter limitations. > AFAIK, the lamda is passed for performance reasons, avoiding Event object > instantiation when not needed. As a fact, the implementation creates an Event > in-place unconditionally. > So, the optimization just doesn't work. > On the other hand, the interface claims nothing if implementation can be sync > or async. > So, should the user bother with lamda thread-safety. > Let's fix javadoc and method signature. I'd expect one of these: > 1. The event is constructed outside the method and the method signature is > straightforward. > {code:java} > void log(Event event); > {code} > 2. The factory and EventType is passed to the method. Javadoc declares the > factory may be called synchronously in the same thread, or not called at all > (if no listeners for the EventType was registered). > {code:java} > void log(EventType type, Supplier<Event> factory); > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)