|
|
@@ -6,6 +6,7 @@ import java.io.FileNotFoundException;
|
|
|
import java.io.FileReader;
|
|
|
import java.io.IOException;
|
|
|
import java.io.PrintWriter;
|
|
|
+import java.sql.SQLRecoverableException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
|
@@ -111,6 +112,9 @@ public class IndexServiceImpl implements IndexService {
|
|
|
createIndexesFromFiles(ClassAndTableNameUtils.toClass(tableName));
|
|
|
}
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 防止SQLRecoverableException导致应用终止
|
|
|
+ throw new SearchException(e).setDetailedMessage(e);
|
|
|
} finally {
|
|
|
creatingIndex = false;
|
|
|
}
|
|
|
@@ -270,10 +274,15 @@ public class IndexServiceImpl implements IndexService {
|
|
|
SearchUtils.deleteDir(new File(luceneProperties.getDataDir()));
|
|
|
}
|
|
|
Long size = 0L;
|
|
|
- for (Table_name tableName : tableNames) {
|
|
|
- // 指定的表数目为1时才起作用
|
|
|
- size += downloadDataFromDatabase(ClassAndTableNameUtils.toClass(tableName),
|
|
|
- tableNames.size() == 1 ? startFileIndex : null);
|
|
|
+ try {
|
|
|
+ for (Table_name tableName : tableNames) {
|
|
|
+ // 指定的表数目为1时才起作用
|
|
|
+ size += downloadDataFromDatabase(ClassAndTableNameUtils.toClass(tableName),
|
|
|
+ tableNames.size() == 1 ? startFileIndex : null);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 防止SQLRecoverableException导致应用终止
|
|
|
+ throw new SearchException(e).setDetailedMessage(e);
|
|
|
}
|
|
|
Long endTime = new Date().getTime();
|
|
|
logger.info(size + "条,耗时 " + (endTime - startTime) + " ms\n");
|
|
|
@@ -366,7 +375,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
indexWriter = indexWriterManager.get(ClassAndTableNameUtils.toTableName(obj.getClass()));
|
|
|
indexWriter.addDocument(document);
|
|
|
indexWriter.commit();
|
|
|
- logger.info("Saved... " + obj + "\n");
|
|
|
return obj;
|
|
|
} catch (IOException | InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -390,7 +398,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
indexWriter.updateDocument(new Term(ClassAndTableNameUtils.getIdField(obj.getClass()),
|
|
|
String.valueOf(ClassAndTableNameUtils.getId(obj))), document);
|
|
|
indexWriter.commit();
|
|
|
- logger.info("Updated... " + obj + "\n");
|
|
|
return obj;
|
|
|
} catch (IOException | InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -412,7 +419,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
indexWriter.deleteDocuments(new Term(ClassAndTableNameUtils.getIdField(obj.getClass()),
|
|
|
String.valueOf(ClassAndTableNameUtils.getId(obj))));
|
|
|
indexWriter.commit();
|
|
|
- logger.info("Deleted... " + obj + "\n");
|
|
|
return obj;
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -484,12 +490,20 @@ public class IndexServiceImpl implements IndexService {
|
|
|
|
|
|
@Override
|
|
|
public SPage<LuceneQueueMessage> getListenDetails(Integer page, Integer size, String searchContent) {
|
|
|
- return luceneQueueMessageDao.findAll(page, size, searchContent);
|
|
|
+ try {
|
|
|
+ return luceneQueueMessageDao.findAll(page, size, searchContent);
|
|
|
+ } catch (SQLRecoverableException e) {
|
|
|
+ throw new SearchException(e).setDetailedMessage(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean dequeueLuceneQueueMessage(String messageId) {
|
|
|
- return luceneQueueMessageDao.dequeueLuceneQueueMessage(messageId);
|
|
|
+ try {
|
|
|
+ return luceneQueueMessageDao.dequeueLuceneQueueMessage(messageId);
|
|
|
+ } catch (SQLRecoverableException e) {
|
|
|
+ throw new SearchException(e).setDetailedMessage(e);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|