Я создал скрипт, который обрабатывает файлы в цикле, используя вызов процесса. Я проверяю код завершения указанного вызова, чтобы узнать, нужно ли мне перемещать файлы (в случае успеха.) Проблема в том, что когда процесс завершается с ошибкой, он никогда не завершается. Как мне обнаружить обнаруженное исключение, чтобы скрипт мог перейти к следующим файлам?
Соответствующая часть сценария
# Stream data
sstableloader -d $3 $tablepathfull
# On success, move data to target dir
if [[ $? != 0 ]]; then
echo "Error: Table failed - $tablepathfull"
else
echo "Table OK - $tablepathfull"
trgtdir="$2/$hostname/$keyspacename/$typename/$timestamp/$keyspacename/$tablename"
mkdir -p $trgtdir
mv $tablepathfull/* $trgtdir
rmdir $tablepathfull
fi
Если нет «официального» способа, возможно ли возможно захватить выходные данные (см. Ниже) вызова процесса и просто убить процесс один раз / если произойдет исключение?
Выход исключения
Exception in thread "STREAM-OUT-/XX.XX.XXX.88" Exception in thread "STREAM-OUT-/XX.XX.XXX.92" java.lang.NullPointerException
at org.apache.cassandra.streaming.ConnectionHandler$MessageHandler.signalCloseDone(ConnectionHandler.java:249)
at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:375)
at java.lang.Thread.run(Thread.java:744)
java.lang.NullPointerException
at org.apache.cassandra.streaming.ConnectionHandler$MessageHandler.signalCloseDone(ConnectionHandler.java:249)
at org.apache.cassandra.streaming.ConnectionHandler$OutgoingMessageHandler.run(ConnectionHandler.java:375)
at java.lang.Thread.run(Thread.java:744)