use of sun.misc.Signal in project orientdb by orientechnologies.
the class OSignalHandler method listenTo.
public void listenTo(final String name, final SignalHandler iListener) {
Signal signal = new Signal(name);
SignalHandler redefinedHandler = Signal.handle(signal, iListener);
if (redefinedHandler != null) {
redefinedHandlers.put(signal, redefinedHandler);
}
}
use of sun.misc.Signal in project modules-extra by CubeEngine.
the class ControlC method onEnable.
@Listener
public void onEnable(GamePreInitializationEvent event) {
this.logger = this.mm.getLoggerFor(ControlC.class);
try {
Class.forName("sun.misc.Signal");
Signal.handle(new Signal("INT"), this);
} catch (ClassNotFoundException ignored) {
}
}
use of sun.misc.Signal in project batfish by batfish.
the class Driver method mainRunWorkService.
private static void mainRunWorkService() {
if (_mainSettings.getTracingEnable() && !GlobalTracer.isRegistered()) {
initTracer();
}
String protocol = _mainSettings.getSslDisable() ? "http" : "https";
String baseUrl = String.format("%s://%s", protocol, _mainSettings.getServiceBindHost());
URI baseUri = UriBuilder.fromUri(baseUrl).port(_mainSettings.getServicePort()).build();
_mainLogger.debug(String.format("Starting server at %s\n", baseUri));
ResourceConfig rc = new ResourceConfig(Service.class).register(new JettisonFeature());
if (_mainSettings.getTracingEnable()) {
rc.register(ServerTracingDynamicFeature.class);
}
try {
if (_mainSettings.getSslDisable()) {
GrizzlyHttpServerFactory.createHttpServer(baseUri, rc);
} else {
CommonUtil.startSslServer(rc, baseUri, _mainSettings.getSslKeystoreFile(), _mainSettings.getSslKeystorePassword(), _mainSettings.getSslTrustAllCerts(), _mainSettings.getSslTruststoreFile(), _mainSettings.getSslTruststorePassword(), ConfigurationLocator.class, Driver.class);
}
if (_mainSettings.getCoordinatorRegister()) {
// this function does not return until registration succeeds
registerWithCoordinatorPersistent();
}
if (_mainSettings.getParentPid() > 0) {
if (SystemUtils.IS_OS_WINDOWS) {
_mainLogger.errorf("Parent process monitoring is not supported on Windows. We'll live without it.");
} else {
Executors.newScheduledThreadPool(1).scheduleAtFixedRate(new CheckParentProcessTask(_mainSettings.getParentPid()), 0, PARENT_CHECK_INTERVAL_MS, TimeUnit.MILLISECONDS);
SignalHandler handler = signal -> _mainLogger.infof("BFS: Ignoring signal %s\n", signal);
Signal.handle(new Signal("INT"), handler);
}
}
// sleep indefinitely, check for parent pid and coordinator each time
while (true) {
Thread.sleep(COORDINATOR_CHECK_INTERVAL_MS);
/*
* every time we wake up, we check if the coordinator has polled us recently
* if not, re-register the service. the coordinator might have died and come back.
*/
if (_mainSettings.getCoordinatorRegister() && new Date().getTime() - _lastPollFromCoordinator.getTime() > COORDINATOR_POLL_TIMEOUT_MS) {
// this function does not return until registration succeeds
registerWithCoordinatorPersistent();
}
}
} catch (ProcessingException e) {
String msg = "FATAL ERROR: " + e.getMessage() + "\n";
_mainLogger.error(msg);
System.exit(1);
} catch (Exception ex) {
String stackTrace = ExceptionUtils.getStackTrace(ex);
_mainLogger.error(stackTrace);
System.exit(1);
}
}
use of sun.misc.Signal in project batfish by batfish.
the class Client method runInteractive.
private void runInteractive() {
SignalHandler handler = signal -> _logger.debugf("Client: Ignoring signal: %s\n", signal);
Signal.handle(new Signal("INT"), handler);
try {
while (!_exit) {
try {
String rawLine = _reader.readLine("batfish> ");
if (rawLine == null) {
break;
}
processCommand(rawLine);
} catch (UserInterruptException e) {
continue;
}
}
} catch (EndOfFileException e) {
// ignored
} catch (Throwable t) {
t.printStackTrace();
} finally {
try {
_reader.getHistory().save();
} catch (IOException e) {
e.printStackTrace();
}
}
}
use of sun.misc.Signal in project alluxio by Alluxio.
the class AlluxioFuse method launchFuse.
/**
* Launches Fuse application.
*
* @param fs file system for Fuse client to communicate to servers
* @param conf the alluxio configuration to create Fuse file system
* @param opts the fuse mount options
* @param blocking whether the Fuse application is blocking or not
* @return the Fuse application handler for future Fuse umount operation
*/
public static FuseUmountable launchFuse(FileSystem fs, AlluxioConfiguration conf, FuseMountOptions opts, boolean blocking) throws IOException {
Preconditions.checkNotNull(opts, "Fuse mount options should not be null to launch a Fuse application");
try {
String mountPoint = opts.getMountPoint();
if (!FileUtils.exists(mountPoint)) {
LOG.warn("Mount point on local fs does not exist, creating {}", mountPoint);
FileUtils.createDir(mountPoint);
}
final List<String> fuseOpts = opts.getFuseOpts();
if (conf.getBoolean(PropertyKey.FUSE_JNIFUSE_ENABLED)) {
final AlluxioJniFuseFileSystem fuseFs = new AlluxioJniFuseFileSystem(fs, opts, conf);
FuseSignalHandler fuseSignalHandler = new FuseSignalHandler(fuseFs);
Signal.handle(new Signal("TERM"), fuseSignalHandler);
try {
LOG.info("Mounting AlluxioJniFuseFileSystem: mount point=\"{}\", OPTIONS=\"{}\"", opts.getMountPoint(), fuseOpts.toArray(new String[0]));
fuseFs.mount(blocking, opts.isDebug(), fuseOpts.toArray(new String[0]));
return fuseFs;
} catch (FuseException e) {
// only try to umount file system when exception occurred.
// jni-fuse registers JVM shutdown hook to ensure fs.umount()
// will be executed when this process is exiting.
String errorMessage = String.format("Failed to mount alluxio path %s to mount point %s", opts.getAlluxioRoot(), opts.getMountPoint());
LOG.error(errorMessage, e);
try {
fuseFs.umount(true);
} catch (FuseException fe) {
LOG.error("Failed to unmount Fuse", fe);
}
throw new IOException(errorMessage, e);
}
} else {
// Force direct_io in JNR-FUSE: writes and reads bypass the kernel page
// cache and go directly to alluxio. This avoids extra memory copies
// in the write path.
// TODO(binfan): support kernel_cache (issues#10840)
fuseOpts.add("-odirect_io");
final AlluxioFuseFileSystem fuseFs = new AlluxioFuseFileSystem(fs, opts, conf);
try {
fuseFs.mount(Paths.get(opts.getMountPoint()), blocking, opts.isDebug(), fuseOpts.toArray(new String[0]));
return fuseFs;
} catch (ru.serce.jnrfuse.FuseException e) {
// only try to umount file system when exception occurred.
// jnr-fuse registers JVM shutdown hook to ensure fs.umount()
// will be executed when this process is exiting.
fuseFs.umount();
throw new IOException(String.format("Failed to mount alluxio path %s to mount point %s", opts.getAlluxioRoot(), opts.getMountPoint()), e);
}
}
} catch (Throwable e) {
throw new IOException("Failed to mount Alluxio file system", e);
}
}
Aggregations