use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class StaticMembershipProvider method stopMembership.
protected void stopMembership(Member[] members) {
if (members.length == 0) {
return;
}
Member localmember = service.getLocalMember(false);
localmember.setCommand(Member.SHUTDOWN_PAYLOAD);
MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_STOP, localmember);
try {
channel.send(members, msg, sendOptions);
} catch (ChannelException e) {
log.error(sm.getString("staticMembershipProvider.stopMembership.sendFailed"), e);
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class StaticMembershipProvider method ping.
protected void ping() throws ChannelException {
// send ping
Member[] members = getAliveMembers(staticMembers.toArray(new Member[0]));
if (members.length > 0) {
try {
MemberMessage msg = new MemberMessage(membershipId, MemberMessage.MSG_PING, service.getLocalMember(true));
Response[] resp = rpcChannel.send(members, msg, RpcChannel.ALL_REPLY, sendOptions, rpcTimeout);
for (Response response : resp) {
messageReceived(response.getMessage(), response.getSource());
}
} catch (ChannelException ce) {
// Handle known failed members
FaultyMember[] faultyMembers = ce.getFaultyMembers();
for (FaultyMember faultyMember : faultyMembers) {
memberDisappeared(faultyMember.getMember());
}
throw ce;
}
}
// expire
checkExpired();
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class StaticMembershipProvider method getAliveMembers.
private Member[] getAliveMembers(Member[] members) {
List<Member> aliveMembers = new ArrayList<>();
for (Member member : members) {
try (Socket socket = new Socket()) {
InetAddress ia = InetAddress.getByAddress(member.getHost());
InetSocketAddress addr = new InetSocketAddress(ia, member.getPort());
socket.connect(addr, connectTimeout);
aliveMembers.add(member);
} catch (Throwable t) {
ExceptionUtils.handleThrowable(t);
// Otherwise ignore
}
}
return aliveMembers.toArray(new Member[0]);
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class ParallelNioSender method close.
private synchronized void close() throws ChannelException {
ChannelException x = null;
Iterator<Map.Entry<Member, NioSender>> iter = state.nioSenders.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry<Member, NioSender> entry = iter.next();
try {
entry.getValue().disconnect();
} catch (Exception e) {
if (x == null) {
x = new ChannelException(e);
}
x.addFaultyMember(entry.getKey(), e);
}
iter.remove();
}
if (x != null) {
throw x;
}
}
use of org.apache.catalina.tribes.Member in project tomcat by apache.
the class Arrays method merge.
public static Member[] merge(Member[] m1, Member[] m2) {
AbsoluteOrder.absoluteOrder(m1);
AbsoluteOrder.absoluteOrder(m2);
ArrayList<Member> list = new ArrayList<>(java.util.Arrays.asList(m1));
for (Member member : m2) {
if (!list.contains(member)) {
list.add(member);
}
}
Member[] result = new Member[list.size()];
list.toArray(result);
AbsoluteOrder.absoluteOrder(result);
return result;
}
Aggregations