Reduce build queue log spam by only logging high priority items (5 and above).

This commit is contained in:
CalDescent 2022-02-11 15:28:41 +00:00
parent 49b307db60
commit a6aabaa7f0
3 changed files with 25 additions and 14 deletions

View File

@ -1,5 +1,7 @@
package org.qortal.arbitrary;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.qortal.arbitrary.exception.MissingDataException;
import org.qortal.arbitrary.ArbitraryDataFile.*;
import org.qortal.arbitrary.misc.Service;
@ -10,12 +12,16 @@ import java.io.IOException;
public class ArbitraryDataBuildQueueItem extends ArbitraryDataResource {
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataBuildQueueItem.class);
private final Long creationTimestamp;
private Long buildStartTimestamp = null;
private Long buildEndTimestamp = null;
private Integer priority = 0;
private boolean failed = false;
private static int HIGH_PRIORITY_THRESHOLD = 5;
/* The maximum amount of time to spend on a single build */
// TODO: interrupt an in-progress build
public static long BUILD_TIMEOUT = 60*1000L; // 60 seconds
@ -89,6 +95,19 @@ public class ArbitraryDataBuildQueueItem extends ArbitraryDataResource {
this.priority = priority;
}
public boolean isHighPriority() {
return this.priority >= HIGH_PRIORITY_THRESHOLD;
}
public void log(String message) {
if (this.isHighPriority()) {
LOGGER.info(message);
}
else {
LOGGER.debug(message);
}
}
public void setFailed(boolean failed) {
this.failed = failed;
}

View File

@ -1,7 +1,5 @@
package org.qortal.controller.arbitrary;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.qortal.arbitrary.ArbitraryDataBuildQueueItem;
import org.qortal.utils.NTP;
@ -13,8 +11,6 @@ import java.util.concurrent.Executors;
public class ArbitraryDataBuildManager extends Thread {
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataBuildManager.class);
private static ArbitraryDataBuildManager instance;
private volatile boolean isStopping = false;
@ -106,7 +102,7 @@ public class ArbitraryDataBuildManager extends Thread {
return true;
}
LOGGER.info("Added {} to build queue", queueItem);
queueItem.log(String.format("Added %s to build queue", queueItem));
// Added to queue
return true;
@ -154,7 +150,7 @@ public class ArbitraryDataBuildManager extends Thread {
return true;
}
LOGGER.info("Added {} to failed builds list", queueItem);
queueItem.log(String.format("Added %s to failed builds list", queueItem));
// Added to queue
return true;

View File

@ -1,7 +1,5 @@
package org.qortal.controller.arbitrary;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.qortal.arbitrary.ArbitraryDataBuildQueueItem;
import org.qortal.arbitrary.exception.MissingDataException;
import org.qortal.controller.Controller;
@ -15,8 +13,6 @@ import java.util.Map;
public class ArbitraryDataBuilderThread implements Runnable {
private static final Logger LOGGER = LogManager.getLogger(ArbitraryDataBuilderThread.class);
public ArbitraryDataBuilderThread() {
}
@ -75,19 +71,19 @@ public class ArbitraryDataBuilderThread implements Runnable {
try {
// Perform the build
LOGGER.info("Building {}...", queueItem);
queueItem.log(String.format("Building %s... priority: %d", queueItem, queueItem.getPriority()));
queueItem.build();
this.removeFromQueue(queueItem);
LOGGER.info("Finished building {}", queueItem);
queueItem.log(String.format("Finished building %s", queueItem));
} catch (MissingDataException e) {
LOGGER.info("Missing data for {}: {}", queueItem, e.getMessage());
queueItem.log(String.format("Missing data for %s: %s", queueItem, e.getMessage()));
queueItem.setFailed(true);
this.removeFromQueue(queueItem);
// Don't add to the failed builds list, as we may want to retry sooner
} catch (IOException | DataException | RuntimeException e) {
LOGGER.info("Error building {}: {}", queueItem, e.getMessage());
queueItem.log(String.format("Error building %s: %s", queueItem, e.getMessage()));
// Something went wrong - so remove it from the queue, and add to failed builds list
queueItem.setFailed(true);
buildManager.addToFailedBuildsList(queueItem);