[
https://issues.apache.org/jira/browse/IOTDB-573?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17080484#comment-17080484
]
SailingR commented on IOTDB-573:
--------------------------------
https://github.com/apache/incubator-iotdb/pull/1015
> Construct AbstractIoTDBThread and catch all Exception
> ------------------------------------------------------
>
> Key: IOTDB-573
> URL: https://issues.apache.org/jira/browse/IOTDB-573
> Project: Apache IoTDB
> Issue Type: Improvement
> Components: Core/Engine
> Reporter: Jialin Qiao
> Priority: Major
>
> Hi, in current IoTDB codes, threads are created without any constraints.
> RuntimeExceptions are not caught in the run method. Therefore, we usually
> miss the stack information and only get a NullPointerException in the parent
> thread.
>
> Therefore, we need a base thread AbstractIoTDBThread that manages all
> threads. In the IoTDBThead, all exceptions are caught and logged. Here is an
> example.
>
> import java.util.concurrent.Callable;
> import org.slf4j.Logger;
> import org.slf4j.LoggerFactory;
> public abstract class AbstractIoTDBThread<T> implements Callable<T> {
> protected Logger logger = null;
> public AbstractIoTDBThread() {
> initLogger();
> }
> @Override
> public T call() throws Exception {
> try {
> return internalRun();
> } catch (Exception e) {
> logger.error("Meet error in sub thread", e);
> throw e;
> }
> }
> abstract void initLogger();
> abstract T internalRun();
> }
> class MyThread extends AbstractIoTDBThread<Long> {
> @Override
> void initLogger() {
> logger = LoggerFactory.getLogger(MyThread.class);
> }
> @Override
> Long internalRun() {
> return 0L;
> }
> }
>
> This issue contains two tasks:
> (1) Create and enrich AbstractIoTDBThread
> (2) Make all threads in IoTDB to extend AbstractIoTDBThread.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)