diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetPollEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetPollEvent.java index 69f489429..f692b740f 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetPollEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/event/remote/TargetPollEvent.java @@ -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 controllerIds; - public TargetPollEvent(final String controllerId, final String tenant) { - super(tenant, controllerId); - this.controllerId = controllerId; + public TargetPollEvent(final List 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(); } } \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java index 2f7772512..505edc9af 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java @@ -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;