mirror of https://github.com/halo-dev/halo
Show stack trace while failing to start plugin
parent
18105cbe44
commit
b2848a683a
|
@ -14,6 +14,8 @@ import static run.halo.app.plugin.PluginUtils.isDevelopmentMode;
|
||||||
|
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.StringWriter;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -302,25 +304,34 @@ public class PluginReconciler implements Reconciler<Request> {
|
||||||
return Result.requeue(Duration.ofSeconds(1));
|
return Result.requeue(Duration.ofSeconds(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginState pluginState;
|
||||||
try {
|
try {
|
||||||
var pluginState = pluginManager.startPlugin(pluginName);
|
pluginState = pluginManager.startPlugin(pluginName);
|
||||||
if (!PluginState.STARTED.equals(pluginState)) {
|
|
||||||
throw new IllegalStateException("""
|
|
||||||
Failed to start plugin %s(%s).\
|
|
||||||
""".formatted(pluginName, pluginState));
|
|
||||||
}
|
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
log.debug("Error occurred when starting plugin {}", pluginName, e);
|
log.debug("Error occurred when starting plugin {}", pluginName, e);
|
||||||
|
var writer = new StringWriter();
|
||||||
|
e.printStackTrace(new PrintWriter(writer));
|
||||||
conditions.addAndEvictFIFO(Condition.builder()
|
conditions.addAndEvictFIFO(Condition.builder()
|
||||||
.type(ConditionType.READY)
|
.type(ConditionType.READY)
|
||||||
.status(ConditionStatus.FALSE)
|
.status(ConditionStatus.FALSE)
|
||||||
.reason(ConditionReason.START_ERROR)
|
.reason(ConditionReason.START_ERROR)
|
||||||
.message(e.getMessage())
|
.message(writer.toString())
|
||||||
.lastTransitionTime(clock.instant())
|
.lastTransitionTime(clock.instant())
|
||||||
.build());
|
.build());
|
||||||
status.setPhase(Plugin.Phase.FAILED);
|
status.setPhase(Plugin.Phase.FAILED);
|
||||||
return Result.doNotRetry();
|
return Result.doNotRetry();
|
||||||
}
|
}
|
||||||
|
if (!PluginState.STARTED.equals(pluginState)) {
|
||||||
|
conditions.addAndEvictFIFO(Condition.builder()
|
||||||
|
.type(ConditionType.READY)
|
||||||
|
.status(ConditionStatus.FALSE)
|
||||||
|
.reason(ConditionReason.START_ERROR)
|
||||||
|
.message("Failed to start plugin " + pluginName + "(" + pluginState + ").")
|
||||||
|
.lastTransitionTime(clock.instant())
|
||||||
|
.build());
|
||||||
|
status.setPhase(Plugin.Phase.FAILED);
|
||||||
|
return Result.doNotRetry();
|
||||||
|
}
|
||||||
|
|
||||||
removeConditionBy(conditions, ConditionType.PROGRESSING);
|
removeConditionBy(conditions, ConditionType.PROGRESSING);
|
||||||
status.setLastStartTime(clock.instant());
|
status.setLastStartTime(clock.instant());
|
||||||
|
|
Loading…
Reference in New Issue