Skip to content

Commit 5854626

Browse files
[git] improve start end stop
1 parent 0ffee2e commit 5854626

4 files changed

Lines changed: 59 additions & 37 deletions

File tree

consul-populate-core/src/main/java/com/frogdevelopment/consul/populate/git/GitCleanUp.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.apache.commons.io.FileUtils;
1111

1212
import io.micronaut.context.annotation.Requires;
13+
import io.micronaut.core.annotation.Blocking;
1314
import io.micronaut.core.util.StringUtils;
1415
import io.micronaut.runtime.event.annotation.EventListener;
1516
import io.micronaut.runtime.server.event.ServerShutdownEvent;
@@ -35,6 +36,7 @@ public class GitCleanUp {
3536
*
3637
* @param ignored the server shutdown event
3738
*/
39+
@Blocking
3840
@EventListener
3941
public void onServerShutdownEvent(final ServerShutdownEvent ignored) {
4042
try {

consul-populate-core/src/main/java/com/frogdevelopment/consul/populate/git/GitImportJob.java

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import lombok.RequiredArgsConstructor;
44
import lombok.extern.slf4j.Slf4j;
55

6+
import java.util.concurrent.ScheduledFuture;
7+
import java.util.concurrent.atomic.AtomicBoolean;
8+
import java.util.concurrent.atomic.AtomicReference;
9+
610
import jakarta.inject.Named;
711
import jakarta.inject.Singleton;
812

913
import org.eclipse.jgit.api.Git;
10-
import org.eclipse.jgit.api.errors.GitAPIException;
1114

1215
import com.frogdevelopment.consul.populate.PopulateService;
1316

@@ -32,7 +35,10 @@ public class GitImportJob {
3235
private final TaskScheduler taskScheduler;
3336
private final Git git;
3437

35-
public void init() throws GitAPIException {
38+
private final AtomicReference<ScheduledFuture<?>> scheduledFutureRef = new AtomicReference<>();
39+
private final AtomicBoolean stopping = new AtomicBoolean(false);
40+
41+
public void start() {
3642
log.info("Populating Consul with repository");
3743
populateService.populate();
3844

@@ -50,10 +56,15 @@ private void listenForRepositoryChanges() {
5056

5157
final var polling = gitProperties.getPolling();
5258
log.debug("Scheduling pull command with fixed delay={}", polling.getDelay());
53-
taskScheduler.scheduleWithFixedDelay(polling.getDelay(), polling.getDelay(), this::pull);
59+
final var scheduledFuture = taskScheduler.scheduleWithFixedDelay(polling.getDelay(), polling.getDelay(), this::pull);
60+
scheduledFutureRef.set(scheduledFuture);
5461
}
5562

5663
private void pull() {
64+
if (stopping.get()) {
65+
log.debug("Job stopped, skipping polling");
66+
return;
67+
}
5768
try {
5869
log.debug("Pull repository");
5970
final var result = git.pull()
@@ -63,4 +74,15 @@ private void pull() {
6374
log.error("Scheduled task encountered an error. Please check logs", e);
6475
}
6576
}
77+
78+
public void stop() {
79+
if (gitProperties.getPolling().isEnabled()) {
80+
log.info("Stoping polling job");
81+
stopping.set(true);
82+
final var scheduledFuture = scheduledFutureRef.get();
83+
if (scheduledFuture != null) {
84+
scheduledFuture.cancel(true);
85+
}
86+
}
87+
}
6688
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.frogdevelopment.consul.populate.git;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import lombok.extern.slf4j.Slf4j;
5+
6+
import jakarta.inject.Singleton;
7+
8+
import io.micronaut.core.annotation.Blocking;
9+
import io.micronaut.runtime.event.annotation.EventListener;
10+
import io.micronaut.runtime.server.event.ServerShutdownEvent;
11+
import io.micronaut.runtime.server.event.ServerStartupEvent;
12+
import io.micronaut.scheduling.annotation.Async;
13+
14+
@Slf4j
15+
@Singleton
16+
@RequiredArgsConstructor
17+
public class ServerEventsListener {
18+
19+
private final GitImportJob gitImportJob;
20+
21+
@Async
22+
@EventListener
23+
public void onServerStartupEvent(final ServerStartupEvent ignored) {
24+
gitImportJob.start();
25+
}
26+
27+
@Blocking
28+
@EventListener
29+
public void onServerShutdownEvent(final ServerShutdownEvent ignored) {
30+
gitImportJob.stop();
31+
}
32+
}

consul-populate-server/src/main/java/com/frogdevelopment/consul/populate/event/ServerListener.java

Lines changed: 0 additions & 34 deletions
This file was deleted.

0 commit comments

Comments
 (0)