public void run() { byte[] buf; DatagramPacket packet; while(Thread.currentThread().equals(thread)) { buf=new byte[10000]; // requests are small (responses might be bigger) packet=new DatagramPacket(buf, 0, buf.length); try { diag_sock.receive(packet); int payloadStartOffset = 0; if(isAuthorizationRequired()){ payloadStartOffset = authorizeProbeRequest(packet); } handleDiagnosticProbe(packet.getSocketAddress(), diag_sock, new String(packet.getData(), packet.getOffset() + payloadStartOffset, packet.getLength())); } catch(IOException socket_ex) { } catch(Throwable e) { log.error(Util.getMessage("FailureHandlingDiagnosticsRequest"), e); } } }
public void start() throws IOException { // https://jira.jboss.org/jira/browse/JGRP-777 - this doesn't work on MacOS, and we don't have // cross talking on Windows anyway, so we just do it for Linux. (How about Solaris ?) // if(can_bind_to_mcast_addr) // diag_sock=Util.createMulticastSocket(getSocketFactory(), // Global.TP_DIAG_MCAST_SOCK, diagnostics_addr, diagnostics_port, log); //else diag_sock=socket_factory.createMulticastSocket("jgroups.tp.diag.mcast_sock", diagnostics_port); diag_sock.setTimeToLive(ttl); List<NetworkInterface> interfaces=bind_interfaces != null? bind_interfaces : Util.getAllAvailableInterfaces(); bindToInterfaces(interfaces, diag_sock); if(thread == null || !thread.isAlive()) { thread=thread_factory.newThread(this, THREAD_NAME); thread.setDaemon(true); thread.start(); } }
if(!sameCluster(req)) return; continue; transport.getClusterName(), Version.description); sendResponse(sock, sender, default_rsp.getBytes()); StringBuilder info=new StringBuilder(defaultHeaders()); for(Map.Entry<String,String> entry: map.entrySet()) info.append(String.format("%s=%s\r\n", entry.getKey(), entry.getValue())); sendResponse(sock, sender, diag_rsp);
protected void startDiagnostics() throws Exception { if(enable_diagnostics) { diag_handler.registerProbeHandler(this); diag_handler.start(); synchronized(preregistered_probe_handlers) { for(DiagnosticsHandler.ProbeHandler handler : preregistered_probe_handlers) diag_handler.registerProbeHandler(handler); } } synchronized(preregistered_probe_handlers) { preregistered_probe_handlers.clear(); // https://issues.jboss.org/browse/JGRP-1834 } }
diag_handler=new DiagnosticsHandler(diagnostics_addr, diagnostics_port, diagnostics_bind_interfaces, diagnostics_ttl, log, getSocketFactory(), getThreadFactory(), diagnostics_passcode) .transport(this);
protected void unsetThreadNames() { if(diag_handler != null && diag_handler.getThread() != null) diag_handler.getThread().setName(DiagnosticsHandler.THREAD_NAME); if(bundler instanceof TransferQueueBundler) { Thread thread=((TransferQueueBundler)bundler).getThread(); if(thread != null) thread_factory.renameThread(TransferQueueBundler.THREAD_NAME, thread); } else if(bundler instanceof RingBufferBundler) { Thread thread=((RingBufferBundler)bundler).getThread(); if(thread != null) thread_factory.renameThread(RingBufferBundler.THREAD_NAME, thread); } }
public TP registerProbeHandler(DiagnosticsHandler.ProbeHandler handler) { if(diag_handler != null) diag_handler.registerProbeHandler(handler); else { synchronized(preregistered_probe_handlers) { preregistered_probe_handlers.add(handler); } } return this; }
@ManagedAttribute(description="Whether the diagnostics handler is running or not") public boolean isDiagnosticsHandlerRunning() {return diag_handler != null && diag_handler.isRunning();}
case "keys": StringBuilder sb=new StringBuilder(); for(DiagnosticsHandler.ProbeHandler handler : diag_handler.getProbeHandlers()) { String[] tmp=handler.supportedKeys(); if(tmp != null && tmp.length > 0) {
protected void startDiagnostics() throws Exception { if(enable_diagnostics) { diag_handler.registerProbeHandler(this); diag_handler.start(); synchronized(preregistered_probe_handlers) { for(DiagnosticsHandler.ProbeHandler handler : preregistered_probe_handlers) diag_handler.registerProbeHandler(handler); } } synchronized(preregistered_probe_handlers) { preregistered_probe_handlers.clear(); // https://issues.jboss.org/browse/JGRP-1834 } }
diag_handler=new DiagnosticsHandler(diagnostics_addr, diagnostics_port, diagnostics_bind_interfaces, diagnostics_ttl, log, getSocketFactory(), getThreadFactory(), diagnostics_passcode) .transport(this);
protected void setThreadNames() { if(diag_handler != null) thread_factory.renameThread(DiagnosticsHandler.THREAD_NAME, diag_handler.getThread()); if(bundler instanceof TransferQueueBundler) { thread_factory.renameThread(TransferQueueBundler.THREAD_NAME, ((TransferQueueBundler)bundler).getThread()); } }
public TP registerProbeHandler(DiagnosticsHandler.ProbeHandler handler) { if(diag_handler != null) diag_handler.registerProbeHandler(handler); else { synchronized(preregistered_probe_handlers) { preregistered_probe_handlers.add(handler); } } return this; }
@ManagedAttribute(description="Whether the diagnostics handler is running or not") public boolean isDiagnosticsHandlerRunning() {return diag_handler != null && diag_handler.isRunning();}
case "keys": StringBuilder sb=new StringBuilder(); for(DiagnosticsHandler.ProbeHandler handler : diag_handler.getProbeHandlers()) { String[] tmp=handler.supportedKeys(); if(tmp != null && tmp.length > 0) {
public void run() { byte[] buf; DatagramPacket packet; while(Thread.currentThread().equals(thread)) { buf=new byte[10000]; // requests are small (responses might be bigger) packet=new DatagramPacket(buf, 0, buf.length); try { diag_sock.receive(packet); int payloadStartOffset = 0; if(isAuthorizationRequired()){ payloadStartOffset = authorizeProbeRequest(packet); } handleDiagnosticProbe(packet.getSocketAddress(), diag_sock, new String(packet.getData(), packet.getOffset() + payloadStartOffset, packet.getLength())); } catch(IOException socket_ex) { } catch(Throwable e) { log.error(Util.getMessage("FailureHandlingDiagnosticsRequest"), e); } } }
if(!sameCluster(req)) return; continue; transport.getClusterName(), Version.description); sendResponse(sock, sender, default_rsp.getBytes()); StringBuilder info=new StringBuilder(defaultHeaders()); for(Map.Entry<String,String> entry: map.entrySet()) info.append(String.format("%s=%s\r\n", entry.getKey(), entry.getValue())); sendResponse(sock, sender, diag_rsp);
protected void unsetThreadNames() { if(diag_handler != null && diag_handler.getThread() != null) diag_handler.getThread().setName(DiagnosticsHandler.THREAD_NAME); if(bundler instanceof TransferQueueBundler) { Thread thread=((TransferQueueBundler)bundler).getThread(); if(thread != null) thread_factory.renameThread(TransferQueueBundler.THREAD_NAME, thread); } else if(bundler instanceof RingBufferBundler) { Thread thread=((RingBufferBundler)bundler).getThread(); if(thread != null) thread_factory.renameThread(RingBufferBundler.THREAD_NAME, thread); } }
public void start() throws IOException { // https://jira.jboss.org/jira/browse/JGRP-777 - this doesn't work on MacOS, and we don't have // cross talking on Windows anyway, so we just do it for Linux. (How about Solaris ?) // if(can_bind_to_mcast_addr) // diag_sock=Util.createMulticastSocket(getSocketFactory(), // Global.TP_DIAG_MCAST_SOCK, diagnostics_addr, diagnostics_port, log); //else diag_sock=socket_factory.createMulticastSocket("jgroups.tp.diag.mcast_sock", diagnostics_port); diag_sock.setTimeToLive(ttl); List<NetworkInterface> interfaces=bind_interfaces != null? bind_interfaces : Util.getAllAvailableInterfaces(); bindToInterfaces(interfaces, diag_sock); if(thread == null || !thread.isAlive()) { thread=thread_factory.newThread(this, THREAD_NAME); thread.setDaemon(true); thread.start(); } }
protected void setThreadNames() { if(diag_handler != null) thread_factory.renameThread(DiagnosticsHandler.THREAD_NAME, diag_handler.getThread()); if(bundler instanceof TransferQueueBundler) { thread_factory.renameThread(TransferQueueBundler.THREAD_NAME, ((TransferQueueBundler)bundler).getThread()); } }