Skip to content

Commit b06e91e

Browse files
committed
Add an optional limit to init-sync
1 parent d8cf17d commit b06e91e

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

src/main/java/org/hibernate/infra/replicate/jira/service/jira/HandlerProjectContext.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ public void createNextPlaceholderBatch(Long upToKeyNumber) {
138138
JiraIssueBulkResponse response = destinationJiraClient.create(bulk);
139139
response.issues.stream().mapToLong(i -> JiraIssue.keyToLong(i.key)).max()
140140
.ifPresent(currentIssueKeyNumber::set);
141+
Log.infof(
142+
"Created more sync placeholders for %s; Current latest Jira key number is %s while required key is %s",
143+
projectName, currentIssueKeyNumber.get(), upToKeyNumber);
141144
} while (currentIssueKeyNumber.get() < upToKeyNumber);
142145
} finally {
143146
lock.unlock();

src/main/java/org/hibernate/infra/replicate/jira/service/jira/JiraService.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import java.util.Objects;
88
import java.util.Optional;
99
import java.util.Set;
10+
import java.util.concurrent.atomic.AtomicInteger;
1011
import java.util.concurrent.atomic.AtomicLong;
12+
import java.util.function.BooleanSupplier;
1113

1214
import org.hibernate.infra.replicate.jira.JiraConfig;
1315
import org.hibernate.infra.replicate.jira.service.jira.client.JiraRestClient;
@@ -109,6 +111,10 @@ public void registerManagementRoutes(@Observes ManagementInterface mi) {
109111
// TODO: we can remove this one once we figure out why POST management does not
110112
// work correctly...
111113
String project = rc.pathParam("project");
114+
List<String> maxToSyncList = rc.queryParam("maxToSync");
115+
AtomicInteger maxToSync = maxToSyncList.isEmpty()
116+
? null
117+
: new AtomicInteger(Integer.parseInt(maxToSyncList.get(0)) + 1);
112118

113119
HandlerProjectContext context = contextPerProject.get(project);
114120

@@ -117,14 +123,14 @@ public void registerManagementRoutes(@Observes ManagementInterface mi) {
117123
}
118124

119125
AtomicLong largestSyncedJiraIssueKeyNumber = new AtomicLong(context.getLargestSyncedJiraIssueKeyNumber());
120-
126+
BooleanSupplier continueSyncing = maxToSync == null ? () -> true : () -> maxToSync.decrementAndGet() > 0;
121127
String identity = "Init Sync for project %s".formatted(project);
122128
scheduler.newJob(identity).setConcurrentExecution(Scheduled.ConcurrentExecution.SKIP)
123129
// every 10 seconds:
124130
.setCron("0/10 * * * * ?").setTask(executionContext -> {
125131
Optional<JiraIssue> issueToSync = context
126132
.getNextIssueToSync(largestSyncedJiraIssueKeyNumber.get());
127-
if (issueToSync.isEmpty()) {
133+
if (issueToSync.isEmpty() || !continueSyncing.getAsBoolean()) {
128134
scheduler.unscheduleJob(identity);
129135
} else {
130136
triggerSyncEvent(issueToSync.get(), context);

src/main/java/org/hibernate/infra/replicate/jira/service/jira/handler/JiraEventHandler.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.hibernate.infra.replicate.jira.service.reporting.FailureCollector;
1717
import org.hibernate.infra.replicate.jira.service.reporting.ReportingConfig;
1818

19+
import io.quarkus.logging.Log;
1920
import jakarta.ws.rs.core.UriBuilder;
2021

2122
public abstract class JiraEventHandler implements Runnable {
@@ -158,6 +159,8 @@ public final void run() {
158159
Thread.currentThread().interrupt();
159160
} finally {
160161
failureCollector.close();
162+
Log.infof("Pending events in %s to process: %s", context.projectGroupName(),
163+
context.pendingEventsInCurrentContext());
161164
}
162165
}
163166

src/main/java/org/hibernate/infra/replicate/jira/service/reporting/LoggingFailureCollector.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public void warning(String details) {
1616

1717
@Override
1818
public void warning(String details, Exception exception) {
19-
Log.warn(details, exception);
19+
Log.warnf(exception, details);
2020
}
2121

2222
@Override
@@ -26,7 +26,7 @@ public void critical(String details) {
2626

2727
@Override
2828
public void critical(String details, Exception exception) {
29-
Log.error(details, exception);
29+
Log.errorf(exception, details);
3030
}
3131

3232
@Override

0 commit comments

Comments
 (0)