use of dmg.cells.nucleus.NoRouteToCellException in project dcache by dCache.
the class InstanceData method loadStorage.
private OptionalLong loadStorage() {
PoolMonitor monitor;
OptionalLong space = OptionalLong.empty();
try {
monitor = poolManagerStub.sendAndWait(new PoolManagerGetPoolMonitor(), 20000, CellEndpoint.SendFlag.RETRY_ON_NO_ROUTE_TO_CELL).getPoolMonitor();
CostModule costModule = monitor.getCostModule();
Collection<PoolCostInfo> costInfos = costModule.getPoolCostInfos();
space = OptionalLong.of(costModule.getPoolCostInfos().stream().map(PoolCostInfo::getSpaceInfo).mapToLong(PoolCostInfo.PoolSpaceInfo::getTotalSpace).sum());
} catch (CacheException | InterruptedException | NoRouteToCellException e) {
LOGGER.error("Could not get storage information; set storage to -1.0. This was caused by: ", e);
}
return space;
}
use of dmg.cells.nucleus.NoRouteToCellException in project dcache by dCache.
the class AnsiTerminalCommand method runAsciiMode.
private void runAsciiMode() throws IOException {
Ansi.setEnabled(_useColors);
while (true) {
String prompt = Ansi.ansi().bold().a(_userAdminShell.getPrompt()).boldOff().toString();
Object result;
try {
String str = _console.readLine(prompt);
try {
if (str == null) {
throw new CommandExitException();
}
result = _userAdminShell.executeCommand(str);
} catch (IllegalArgumentException e) {
result = e.toString();
} catch (SerializationException e) {
result = "There is a bug here, please report to support@dcache.org";
LOGGER.error("This must be a bug, please report to support@dcache.org.", e);
} catch (CommandSyntaxException e) {
result = e;
} catch (CommandExitException e) {
break;
} catch (CommandPanicException e) {
result = "Command '" + str + "' triggered a bug (" + e.getTargetException() + "); the service log file contains additional information. Please " + "contact support@dcache.org.";
} catch (CommandException e) {
result = e.getMessage();
} catch (NoRouteToCellException e) {
result = "Cell name does not exist or cell is not started: " + e.getMessage();
LOGGER.warn("The cell the command was sent to is no " + "longer there: {}", e.getMessage());
} catch (RuntimeException e) {
result = String.format("Command '%s' triggered a bug (%s); please" + " locate this message in the log file of the admin service and" + " send an email to support@dcache.org with this line and the" + " following stack-trace", str, e);
LOGGER.error((String) result, e);
}
} catch (InterruptedIOException e) {
_console.getCursorBuffer().clear();
_console.println();
result = null;
} catch (InterruptedException e) {
_console.println("^C");
_console.flush();
_console.getCursorBuffer().clear();
result = null;
} catch (IOException e) {
throw e;
} catch (Exception e) {
result = e.getMessage();
if (result == null) {
result = e.getClass().getSimpleName() + ": (null)";
}
}
if (result != null) {
if (result instanceof CommandSyntaxException) {
CommandSyntaxException e = (CommandSyntaxException) result;
Ansi sb = Ansi.ansi();
sb.fg(RED).a("Syntax error: ").a(e.getMessage()).newline();
String help = e.getHelpText();
if (help != null) {
sb.fg(CYAN);
sb.a("Help : ").newline();
sb.a(help);
}
_console.println(sb.reset().toString());
} else {
String s;
s = Strings.toMultilineString(result);
if (!s.isEmpty()) {
_console.println(s);
_console.flush();
}
}
}
_console.flush();
}
}
use of dmg.cells.nucleus.NoRouteToCellException in project dcache by dCache.
the class DirectCommand method executeCommands.
private void executeCommands() {
for (String command : commands) {
Object error = null;
try {
Object result = shell.executeCommand(command);
String s = Strings.toString(result);
if (!s.isEmpty()) {
outWriter.println(s);
}
outWriter.flush();
} catch (IllegalArgumentException e) {
error = e.toString();
} catch (SerializationException e) {
error = "There is a bug here, please report to support@dcache.org";
LOGGER.error("This must be a bug, please report to support@dcache.org.", e);
} catch (CommandSyntaxException e) {
error = e;
} catch (CommandEvaluationException | CommandAclException e) {
error = e.getMessage();
} catch (CommandExitException e) {
break;
} catch (CommandPanicException e) {
error = String.format("Command '%s' triggered a bug (%s);" + "the service log file contains additional information. Please " + "contact support@dcache.org.", command, e.getTargetException());
} catch (CommandException e) {
error = e.getMessage();
} catch (NoRouteToCellException e) {
error = "Cell name does not exist or cell is not started: " + e.getMessage();
LOGGER.warn("Command cannot be executed in the cell, cell is gone {}", e.getMessage());
} catch (RuntimeException e) {
error = String.format("Command '%s' triggered a bug (%s); please" + " locate this message in the log file of the admin service and" + " send an email to support@dcache.org with this line and the" + " following stack-trace", command, e);
LOGGER.error((String) error, e);
} catch (Exception e) {
error = e.getMessage();
if (error == null) {
error = e.getClass().getSimpleName() + ": (null)";
}
}
if (error != null) {
if (error instanceof CommandSyntaxException) {
CommandSyntaxException e = (CommandSyntaxException) error;
errorWriter.append("Syntax error: ").println(e.getMessage());
} else {
errorWriter.println(error);
}
errorWriter.flush();
}
}
}
use of dmg.cells.nucleus.NoRouteToCellException in project dcache by dCache.
the class NoTerminalCommand method repl.
private void repl() throws IOException {
Ansi.setEnabled(false);
while (true) {
Object error = null;
try {
String str = _reader.readLine();
try {
if (str == null) {
throw new CommandExitException();
}
Object result = _userAdminShell.executeCommand(str);
String s = Strings.toString(result);
if (!s.isEmpty()) {
_writer.println(s);
}
_writer.flush();
} catch (IllegalArgumentException e) {
error = e.toString();
} catch (SerializationException e) {
error = "There is a bug here, please report to support@dcache.org";
LOGGER.error("This must be a bug, please report to support@dcache.org.", e);
} catch (CommandSyntaxException e) {
error = e;
} catch (CommandEvaluationException | CommandAclException e) {
error = e.getMessage();
} catch (CommandExitException e) {
break;
} catch (CommandPanicException e) {
error = "Command '" + str + "' triggered a bug (" + e.getTargetException() + "); the service log file contains additional information. Please " + "contact support@dcache.org.";
} catch (CommandException e) {
error = e.getMessage();
} catch (NoRouteToCellException e) {
error = "Cell name does not exist or cell is not started: " + e.getMessage();
LOGGER.warn("The cell the command was sent to is no " + "longer there: {}", e.getMessage());
} catch (RuntimeException e) {
error = String.format("Command '%s' triggered a bug (%s); please" + " locate this message in the log file of the admin service and" + " send an email to support@dcache.org with this line and the" + " following stack-trace", str, e);
LOGGER.error((String) error, e);
}
} catch (InterruptedException e) {
error = null;
} catch (IOException e) {
throw e;
} catch (Exception e) {
error = e.getMessage();
if (error == null) {
error = e.getClass().getSimpleName() + ": (null)";
}
}
if (error != null) {
if (error instanceof CommandSyntaxException) {
CommandSyntaxException e = (CommandSyntaxException) error;
_error.append("Syntax error: ").println(e.getMessage());
} else {
_error.println(error);
}
_error.flush();
}
}
}
use of dmg.cells.nucleus.NoRouteToCellException in project dcache by dCache.
the class UserAdminShell method completeRemote.
/**
* Completes remote commands using a particular cell as a source for completion candidates.
*/
private int completeRemote(CellPath cell, String buffer, int cursor, List<CharSequence> candidates) {
try {
Serializable help = sendObject(cell, "help");
if (help == null) {
return -1;
}
HelpCompleter completer = new HelpCompleter(String.valueOf(help));
return completer.complete(buffer, cursor, candidates);
} catch (NoRouteToCellException | CommandException | AclException e) {
LOGGER.info("Completion failed: {}", e.toString());
return -1;
} catch (InterruptedException e) {
return -1;
}
}
Aggregations