public void run() {
    Message message = null;
    try {
      message = Message.serializer().deserialize(new DataInputStream(bytes));
    } catch (IOException e) {
      throw new RuntimeException(e);
    }

    if (message != null) {
      message = SinkManager.processServerMessageSink(message);
      MessagingService.receive(message);
    }
  }
示例#2
0
  @Test
  public void testRemoveHostId() throws InterruptedException {
    ReplicationSink rSink = new ReplicationSink();
    SinkManager.add(rSink);

    // start removal in background and send replication confirmations
    final AtomicBoolean success = new AtomicBoolean(false);
    Thread remover =
        new Thread() {
          public void run() {
            try {
              ss.removeNode(removalId.toString());
            } catch (Exception e) {
              System.err.println(e);
              e.printStackTrace();
              return;
            }
            success.set(true);
          }
        };
    remover.start();

    Thread.sleep(1000); // make sure removal is waiting for confirmation

    assertTrue(tmd.isLeaving(removalhost));
    assertEquals(1, tmd.getLeavingEndpoints().size());

    for (InetAddress host : hosts) {
      MessageOut msg =
          new MessageOut(
              host,
              MessagingService.Verb.REPLICATION_FINISHED,
              null,
              null,
              Collections.<String, byte[]>emptyMap());
      MessagingService.instance().sendRR(msg, FBUtilities.getBroadcastAddress());
    }

    remover.join();

    assertTrue(success.get());
    assertTrue(tmd.getLeavingEndpoints().isEmpty());
  }
示例#3
0
 @After
 public void tearDown() {
   SinkManager.clear();
   MessagingService.instance().clearCallbacksUnsafe();
   MessagingService.instance().shutdown();
 }