1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one 3 * or more contributor license agreements. See the NOTICE file 4 * distributed with this work for additional information 5 * regarding copyright ownership. The ASF licenses this file 6 * to you under the Apache License, Version 2.0 (the 7 * "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 package org.apache.omid.tso; 19 20 import org.slf4j.Logger; 21 import org.slf4j.LoggerFactory; 22 23 public class SystemExitPanicker implements Panicker { 24 25 private static final Logger LOG = LoggerFactory.getLogger(SystemExitPanicker.class); 26 27 @Override 28 public void panic(String reason) { 29 panic(reason, new Throwable("TSO Error")); 30 } 31 32 @Override 33 public void panic(String reason, Throwable cause) { 34 LOG.error(reason, cause); 35 // Execute the shutdown sequence from a different thread to avoid deadlocks during the shutdown hooks 36 Runnable shutdown = new Runnable() { 37 @Override 38 public void run() { 39 System.exit(-1); 40 } 41 }; 42 Thread panicThread = new Thread(shutdown, "SystemExitPanicker Thread"); 43 panicThread.setDaemon(true); 44 panicThread.start(); 45 } 46 47 }