|
|
@@ -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;
|
|
|
@@ -171,14 +172,12 @@ public class IndexServiceImpl implements IndexService {
|
|
|
Long endTime = new Date().getTime();
|
|
|
logger.info(String.format("索引创建成功, 共用时间%.2fs\n", (endTime - startTime) / 1000.0));
|
|
|
return endTime - startTime;
|
|
|
- } catch (IOException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } catch (InterruptedException e) {
|
|
|
- e.printStackTrace();
|
|
|
+ } catch (Exception e) {
|
|
|
+ // 防止SQLRecoverableException导致应用终止
|
|
|
+ throw new SearchException(e).setDetailedMessage(e);
|
|
|
} finally {
|
|
|
creatingIndex = false;
|
|
|
}
|
|
|
- return null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -369,30 +368,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
return count;
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Object save(Object obj) {
|
|
|
- if (obj != null) {
|
|
|
- String tableName = SearchUtils.getTableName(obj.getClass());
|
|
|
- Document document = ObjectToDocumentUtils.toDocument(obj);
|
|
|
- if (document != null) {
|
|
|
- try {
|
|
|
- indexWriter = indexWriterManager.get(tableName);
|
|
|
- indexWriter.addDocument(document);
|
|
|
- indexWriter.commit();
|
|
|
- logger.info("Saved... " + obj + "\n");
|
|
|
- return obj;
|
|
|
- } catch (IOException | InterruptedException e) {
|
|
|
- e.printStackTrace();
|
|
|
- } finally {
|
|
|
- indexWriterManager.release(tableName);
|
|
|
- }
|
|
|
- } else {
|
|
|
- logger.info("对象转为Document时为null:" + obj);
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public Long downloadComponentDataFromDatabase(Integer startFileIndex) {
|
|
|
int fileIndex = 1;
|
|
|
@@ -463,6 +438,29 @@ public class IndexServiceImpl implements IndexService {
|
|
|
return endTime - startTime;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Object save(Object obj) {
|
|
|
+ if (obj != null) {
|
|
|
+ String tableName = SearchUtils.getTableName(obj.getClass());
|
|
|
+ Document document = ObjectToDocumentUtils.toDocument(obj);
|
|
|
+ if (document != null) {
|
|
|
+ try {
|
|
|
+ indexWriter = indexWriterManager.get(tableName);
|
|
|
+ indexWriter.addDocument(document);
|
|
|
+ indexWriter.commit();
|
|
|
+ return obj;
|
|
|
+ } catch (IOException | InterruptedException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } finally {
|
|
|
+ indexWriterManager.release(tableName);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ logger.info("对象转为Document时为null:" + obj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Object update(Object obj) {
|
|
|
if (obj != null) {
|
|
|
@@ -497,7 +495,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
throw new SearchException("Message parsing failed!");
|
|
|
}
|
|
|
indexWriter.commit();
|
|
|
- logger.info("Updated... " + obj + "\n");
|
|
|
return obj;
|
|
|
} catch (IOException | InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -542,7 +539,6 @@ public class IndexServiceImpl implements IndexService {
|
|
|
throw new SearchException("Message parsing failed!");
|
|
|
}
|
|
|
indexWriter.commit();
|
|
|
- logger.info("Deleted... " + obj + "\n");
|
|
|
return obj;
|
|
|
} catch (IOException e) {
|
|
|
e.printStackTrace();
|
|
|
@@ -614,12 +610,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);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|