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