Modify TargetPollEvent to be per batch update (not per target) (#2965)

* Modify TargetPollEvent to be per batch update (not per target)

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* Get use of remote event's timestame for targetPollEvent

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>

* Revert "Get use of remote event's timestame for targetPollEvent"

This reverts commit 27e3b740e2bb0b02cad1d5a6137db7928901f069.

---------

Signed-off-by: strailov <Stanislav.Trailov@bosch.io>
This commit is contained in:
Stanislav Trailov
2026-03-25 09:29:23 +02:00
committed by GitHub
parent 05058b9827
commit f2615fe812
2 changed files with 17 additions and 8 deletions

View File

@@ -10,6 +10,8 @@
package org.eclipse.hawkbit.repository.event.remote;
import java.io.Serial;
import java.util.Collections;
import java.util.List;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@@ -29,16 +31,22 @@ public class TargetPollEvent extends RemoteTenantAwareEvent {
@Serial
private static final long serialVersionUID = 1L;
private String controllerId;
private String targetAddress;
private long lastTargetPoll;
private List<String> controllerIds;
public TargetPollEvent(final String controllerId, final String tenant) {
super(tenant, controllerId);
this.controllerId = controllerId;
public TargetPollEvent(final List<String> controllerIds, final long lastTargetPoll, final String tenant) {
super(tenant, tenant); // source is tenant
this.lastTargetPoll = lastTargetPoll;
this.controllerIds = Collections.unmodifiableList(controllerIds);
}
public TargetPollEvent(final String controllerId, final long timestamp, final String tenant) {
this(List.of(controllerId), timestamp, tenant);
}
public TargetPollEvent(final Target target) {
this(target.getControllerId(), target.getTenant());
this(List.of(target.getControllerId()), target.getLastTargetQuery(), target.getTenant()); // here expect last target query to be already set
this.targetAddress = target.getAddress();
}
}

View File

@@ -712,9 +712,10 @@ public class JpaControllerManagement extends JpaActionManagement implements Cont
Constants.MAX_ENTRIES_IN_STATEMENT);
pollChunks.forEach(chunk -> {
setLastTargetQuery(tenant, java.lang.System.currentTimeMillis(), chunk);
chunk.forEach(controllerId -> afterCommit(() -> EventPublisherHolder.getInstance().getEventPublisher()
.publishEvent(new TargetPollEvent(controllerId, tenant))));
final long lastTargetQuery = java.lang.System.currentTimeMillis();
setLastTargetQuery(tenant, lastTargetQuery, chunk);
afterCommit(() -> EventPublisherHolder.getInstance().getEventPublisher()
.publishEvent(new TargetPollEvent(chunk, lastTargetQuery, tenant)));
});
return null;