Skip to content

Commit 9c8c99f

Browse files
committed
use weak references for events
1 parent d050d6c commit 9c8c99f

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

libs/micronaut-worker/src/main/java/com/agorapulse/worker/event/JobExecutionResultEvent.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919

2020
import io.micronaut.core.annotation.Introspected;
2121

22+
import java.lang.ref.WeakReference;
23+
2224
/**
2325
* Event dispatched after successful job execution.
2426
*/
@@ -27,16 +29,16 @@ public class JobExecutionResultEvent {
2729

2830
private final String name;
2931
private final String id;
30-
private final Object result;
32+
private final WeakReference<Object> result;
3133

3234
public JobExecutionResultEvent(String name, String id, Object result) {
3335
this.name = name;
3436
this.id = id;
35-
this.result = result;
37+
this.result = new WeakReference<>(result);
3638
}
3739

3840
public Object getResult() {
39-
return result;
41+
return result.get();
4042
}
4143

4244
public String getId() {
@@ -49,6 +51,6 @@ public String getName() {
4951

5052
@Override
5153
public String toString() {
52-
return "JobExecutionResultEvent{name='%s', id='%s', result=%s}".formatted(name, id, result);
54+
return "JobExecutionResultEvent{name='%s', id='%s', result=%s}".formatted(name, id, result.get());
5355
}
5456
}

libs/micronaut-worker/src/main/java/com/agorapulse/worker/queue/DefaultQueueMessage.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
*/
1818
package com.agorapulse.worker.queue;
1919

20+
import java.lang.ref.WeakReference;
21+
2022
class DefaultQueueMessage<T> implements QueueMessage<T> {
2123

2224
static <T> DefaultQueueMessage<T> alwaysRequeue(String id, T message, Runnable doDelete, Runnable doRequeue) {
@@ -28,15 +30,15 @@ static <T> DefaultQueueMessage<T> requeueIfDeleted(String id, T message, Runnabl
2830
}
2931

3032
private final String id;
31-
private final T message;
33+
private final WeakReference<T> message;
3234
private final Runnable doDelete;
3335
private final Runnable doRequeue;
3436
private final boolean alwaysRequeue;
3537
private boolean deleted;
3638

3739
private DefaultQueueMessage(String id, T message, Runnable doDelete, Runnable doRequeue, boolean alwaysRequeue) {
3840
this.id = id;
39-
this.message = message;
41+
this.message = new WeakReference<>(message);
4042
this.doDelete = doDelete;
4143
this.doRequeue = doRequeue;
4244
this.alwaysRequeue = alwaysRequeue;
@@ -49,7 +51,7 @@ public String getId() {
4951

5052
@Override
5153
public T getMessage() {
52-
return message;
54+
return message.get();
5355
}
5456

5557
@Override

0 commit comments

Comments
 (0)