[ 
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)

Reply via email to