@Override public synchronized void close() { if (!isOpen()) { return; } try { closeEventSink(); Utils.close(selector); logger.log(OpLevel.DEBUG, "Tracker closed vm.name={0}, tid={1}, event.sink={2}, source={3}", Utils.getVMName(), Thread.currentThread().getId(), eventSink, getSource()); } catch (Throwable e) { errorCount.incrementAndGet(); logger.log(OpLevel.ERROR, "Failed to close tracker vm.name={0}, tid={1}, event.sink={2}, source={3}", Utils.getVMName(), Thread.currentThread().getId(), eventSink, getSource(), e); } }