protected synchronized void doKill() {
   if (hasMover()) {
     Integer moverId = getMoverId();
     String pool = getPool();
     CellAddressCore poolAddress = getPoolAddress();
     try {
       PoolMoverKillMessage message = new PoolMoverKillMessage(pool, moverId);
       message.setReplyRequired(false);
       _pool.notify(new CellPath(poolAddress), message);
     } catch (NoRouteToCellException e) {
       _log.error("Failed to kill mover " + pool + "/" + moverId + ": " + e.getMessage());
     }
   }
 }
Пример #2
0
  @Override
  public void messageArrived(CellMessage msg) {
    Object obj = msg.getMessageObject();
    _requests++;
    if (obj instanceof PoolFlushGainControlMessage) {

      poolFlushGainControlMessageArrived((PoolFlushGainControlMessage) obj);

    } else if (obj instanceof PoolFlushDoFlushMessage) {

      poolFlushDoFlushMessageArrived((PoolFlushDoFlushMessage) obj);

    } else if (obj instanceof PoolManagerPoolModeMessage) {

      poolModeInfoArrived((PoolManagerPoolModeMessage) obj);

    } else if (obj instanceof PoolStatusChangedMessage) {

      poolStatusChanged((PoolStatusChangedMessage) obj);

    } else if (obj instanceof NoRouteToCellException) {

      NoRouteToCellException nrtc = (NoRouteToCellException) obj;
      CellPath path = nrtc.getDestinationPath();
      CellAddressCore core = path.getDestinationAddress();
      String cellName = core.getCellName();
      _log.warn("NoRouteToCell : " + cellName + " (" + path + ")");

      poolFlushGainControlMessageDidntArrive(cellName);

    } else {
      _log.warn(
          "Unknown message arrived (" + msg.getSourcePath() + ") : " + msg.getMessageObject());
      _failed++;
    }
  }
Пример #3
0
  private void repl() {
    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 [email protected]";
          _logger.error("This must be a bug, please report to [email protected].", 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 [email protected].";
        } catch (CommandThrowableException e) {
          Throwable cause = e.getTargetException();
          if (cause instanceof CacheException) {
            error = cause.getMessage();
          } else {
            error = cause.toString();
          }
        } catch (CommandException e) {
          error = "There is a bug here, please report to [email protected]: " + e.getMessage();
          _logger.warn("Unexpected exception, please report this " + "bug to [email protected]");
        } 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 [email protected] with this line and the"
                      + " following stack-trace",
                  str, e);
          _logger.error((String) error, e);
        }
      } catch (InterruptedException e) {
        error = null;
      } 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();
      }
    }
  }
Пример #4
0
  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 [email protected]";
          _logger.error("This must be a bug, please report to [email protected].", 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 [email protected].";
        } 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 [email protected] 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();
    }
  }