Search in sources :

Example 56 with Member

use of org.apache.catalina.tribes.Member in project tomcat70 by apache.

the class SimpleTcpCluster method messageReceived.

public void messageReceived(ClusterMessage message) {
    if (log.isDebugEnabled() && message != null)
        log.debug("Assuming clocks are synched: Replication for " + message.getUniqueId() + " took=" + (System.currentTimeMillis() - (message).getTimestamp()) + " ms.");
    // invoke all the listeners
    boolean accepted = false;
    if (message != null) {
        for (Iterator<ClusterListener> iter = clusterListeners.iterator(); iter.hasNext(); ) {
            ClusterListener listener = iter.next();
            if (listener.accept(message)) {
                accepted = true;
                listener.messageReceived(message);
            }
        }
        if (!accepted && notifyLifecycleListenerOnFailure) {
            Member dest = message.getAddress();
            // Notify our interested LifecycleListeners
            fireLifecycleEvent(RECEIVE_MESSAGE_FAILURE_EVENT, new SendMessageData(message, dest, null));
            if (log.isDebugEnabled()) {
                log.debug("Message " + message.toString() + " from type " + message.getClass().getName() + " transfered but no listener registered");
            }
        }
    }
    return;
}
Also used : ClusterListener(org.apache.catalina.ha.ClusterListener) Member(org.apache.catalina.tribes.Member)

Example 57 with Member

use of org.apache.catalina.tribes.Member in project tomcat70 by apache.

the class TestNonBlockingCoordinator method testCoord1.

@Test
public void testCoord1() throws Exception {
    int expectedCount = channels[0].getMembers().length;
    for (int i = 1; i < CHANNEL_COUNT; i++) {
        Assert.assertEquals("Message count expected to be equal.", expectedCount, channels[i].getMembers().length);
    }
    Member member = coordinators[0].getCoordinator();
    int cnt = 0;
    while (member == null && (cnt++ < 100)) {
        try {
            Thread.sleep(100);
            member = coordinators[0].getCoordinator();
        } catch (Exception x) {
        /* Ignore */
        }
    }
    for (int i = 0; i < CHANNEL_COUNT; i++) {
        Assert.assertEquals(member, coordinators[i].getCoordinator());
    }
    System.out.println("Coordinator[1] is:" + member);
}
Also used : Member(org.apache.catalina.tribes.Member) Test(org.junit.Test)

Example 58 with Member

use of org.apache.catalina.tribes.Member in project tomcat70 by apache.

the class TestNonBlockingCoordinator method testCoord2.

@Test
public void testCoord2() throws Exception {
    Member member = coordinators[1].getCoordinator();
    System.out.println("Coordinator[2a] is:" + member);
    int index = -1;
    for (int i = 0; i < CHANNEL_COUNT; i++) {
        if (channels[i].getLocalMember(false).equals(member)) {
            System.out.println("Shutting down:" + channels[i].getLocalMember(true).toString());
            channels[i].stop(Channel.DEFAULT);
            index = i;
        }
    }
    int dead = index;
    Thread.sleep(1000);
    if (index == 0) {
        index = 1;
    } else {
        index = 0;
    }
    System.out.println("Member count:" + channels[index].getMembers().length);
    member = coordinators[index].getCoordinator();
    for (int i = 1; i < CHANNEL_COUNT; i++) {
        if (i != dead) {
            Assert.assertEquals(member, coordinators[i].getCoordinator());
        }
    }
    System.out.println("Coordinator[2b] is:" + member);
}
Also used : Member(org.apache.catalina.tribes.Member) Test(org.junit.Test)

Example 59 with Member

use of org.apache.catalina.tribes.Member in project tomcat70 by apache.

the class TestMulticastPackages method testDataSendASYNCM.

@Test
public void testDataSendASYNCM() throws Exception {
    final AtomicInteger counter = new AtomicInteger(0);
    ReceiverBase rb1 = (ReceiverBase) channel1.getChannelReceiver();
    ReceiverBase rb2 = (ReceiverBase) channel2.getChannelReceiver();
    rb1.setUdpRxBufSize(1024 * 1024 * 10);
    rb2.setUdpRxBufSize(1024 * 1024 * 10);
    rb1.setUdpTxBufSize(1024 * 1024 * 10);
    rb2.setUdpTxBufSize(1024 * 1024 * 10);
    System.err.println("Starting NO_ACK");
    Thread[] threads = new Thread[threadCount];
    for (int x = 0; x < threads.length; x++) {
        threads[x] = new Thread() {

            @Override
            public void run() {
                try {
                    long start = System.currentTimeMillis();
                    for (int i = 0; i < msgCount; i++) {
                        int cnt = counter.getAndAdd(1);
                        channel1.send(new Member[] { channel2.getLocalMember(false) }, Data.createRandomData(1024, cnt), Channel.SEND_OPTIONS_MULTICAST | Channel.SEND_OPTIONS_ASYNCHRONOUS);
                    // Thread.currentThread().sleep(10);
                    }
                    System.out.println("Thread[" + this.getName() + "] sent " + msgCount + " messages in " + (System.currentTimeMillis() - start) + " ms.");
                } catch (Exception x) {
                    x.printStackTrace();
                    return;
                }
            }
        };
    }
    for (int x = 0; x < threads.length; x++) {
        threads[x].start();
    }
    for (int x = 0; x < threads.length; x++) {
        threads[x].join();
    }
    // sleep for 50 sec, let the other messages in
    long start = System.currentTimeMillis();
    while ((System.currentTimeMillis() - start) < 25000 && msgCount * threadCount != listener1.count.get()) Thread.sleep(500);
    System.err.println("Finished NO_ACK [" + listener1.count + "]");
    System.out.println("Sent " + counter.get() + " messages. Received " + listener1.count + " Highest msg received:" + listener1.maxIdx);
    System.out.print("Missing messages:");
    printMissingMsgs(listener1.nrs, counter.get());
    Assert.assertEquals("Checking success messages.", msgCount * threadCount, listener1.count.get());
}
Also used : ReceiverBase(org.apache.catalina.tribes.transport.ReceiverBase) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Member(org.apache.catalina.tribes.Member) Test(org.junit.Test)

Example 60 with Member

use of org.apache.catalina.tribes.Member in project tomcat70 by apache.

the class TestOrderInterceptor method testOrder1.

@Test
public void testOrder1() throws Exception {
    Member[] dest = channels[0].getMembers();
    final AtomicInteger value = new AtomicInteger(0);
    for (int i = 0; i < 100; i++) {
        channels[0].send(dest, Integer.valueOf(value.getAndAdd(1)), 0);
    }
    Thread.sleep(5000);
    for (int i = 0; i < test.length; i++) {
        Assert.assertFalse(test[i].fail);
    }
}
Also used : AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Member(org.apache.catalina.tribes.Member) Test(org.junit.Test)

Aggregations

Member (org.apache.catalina.tribes.Member)93 ChannelException (org.apache.catalina.tribes.ChannelException)28 FaultyMember (org.apache.catalina.tribes.ChannelException.FaultyMember)17 Test (org.junit.Test)17 IOException (java.io.IOException)16 MemberImpl (org.apache.catalina.tribes.membership.MemberImpl)15 ReceiverBase (org.apache.catalina.tribes.transport.ReceiverBase)11 ArrayList (java.util.ArrayList)10 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)10 UniqueId (org.apache.catalina.tribes.UniqueId)9 Serializable (java.io.Serializable)6 BigDecimal (java.math.BigDecimal)6 DecimalFormat (java.text.DecimalFormat)6 Response (org.apache.catalina.tribes.group.Response)6 ChannelData (org.apache.catalina.tribes.io.ChannelData)6 XByteBuffer (org.apache.catalina.tribes.io.XByteBuffer)6 SelectionKey (java.nio.channels.SelectionKey)4 Selector (java.nio.channels.Selector)4 Membership (org.apache.catalina.tribes.membership.Membership)4 StaticMember (org.apache.catalina.tribes.membership.StaticMember)4