OSDN Git Service

Add logic to disable dead thread messages after first notification.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / NeverNote.java
index 0eb192a..d6a4b8a 100644 (file)
@@ -299,6 +299,12 @@ public class NeverNote extends QMainWindow{
     int                                        tagDeadCount=0;                         // number of consecutive dead times for the tag thread
     int                                        trashDeadCount=0;                       // number of consecutive dead times for the trash thread
     int                                saveThreadDeadCount=0;          // number of consecutive dead times for the save thread
+    boolean                            disableTagThreadCheck=false;
+    boolean                            disableNotebookThreadCheck=false;
+    boolean                            disableTrashThreadCheck=false;
+    boolean                            disableSaveThreadCheck=false;
+    boolean                            disableSyncThreadCheck=false;
+    boolean                            disableIndexThreadCheck=false;
     
     HashMap<String, String>            noteCache;                      // Cash of note content 
     HashMap<String, Boolean>   readOnlyCache;          // List of cashe notes that are read-only
@@ -390,7 +396,9 @@ public class NeverNote extends QMainWindow{
         listManager = new ListManager(conn, logger);
         
                logger.log(logger.EXTREME, "Building index runners & timers");
-        indexRunner = new IndexRunner("indexRunner.log", Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
+        indexRunner = new IndexRunner("indexRunner.log", 
+                       Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),
+                       Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
                indexThread = new QThread(indexRunner, "Index Thread");
         indexRunner.indexAttachmentsLocally = Global.indexAttachmentsLocally();
                indexThread.start();
@@ -407,7 +415,9 @@ public class NeverNote extends QMainWindow{
                                
                logger.log(logger.EXTREME, "Setting sync thread & timers");
                syncThreadsReady=1;
-               syncRunner = new SyncRunner("syncRunner.log", Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
+               syncRunner = new SyncRunner("syncRunner.log", 
+                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
                syncTime = new SyncTimes().timeValue(Global.getSyncInterval());
                syncTimer = new QTimer();
                syncTimer.timeout.connect(this, "syncTimer()");
@@ -429,7 +439,9 @@ public class NeverNote extends QMainWindow{
                
                logger.log(logger.EXTREME, "Starting thumnail thread");
                pdfReadyQueue = new ArrayList<String>();
-               thumbnailRunner = new ThumbnailRunner("thumbnailRunner.log", Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
+               thumbnailRunner = new ThumbnailRunner("thumbnailRunner.log", 
+                               Global.getDatabaseUrl(), Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);
                thumbnailThread = new QThread(thumbnailRunner, "Thumbnail Thread");
                thumbnailRunner.noteSignal.thumbnailPageReady.connect(this, "thumbnailHTMLReady(String,QByteArray,Integer)");
                thumbnailThread.start();
@@ -437,7 +449,7 @@ public class NeverNote extends QMainWindow{
                thumbnailTimer = new QTimer();
                thumbnailTimer.timeout.connect(this, "thumbnailTimer()");
                thumbnailTimer();
-               thumbnailTimer.setInterval(60*1000);  // Thumbnail every minute
+               thumbnailTimer.setInterval(500*1000);  // Thumbnail every minute
                thumbnailTimer.start();
                
                logger.log(logger.EXTREME, "Starting authentication timer");
@@ -774,7 +786,9 @@ public class NeverNote extends QMainWindow{
                         Global.getDatabaseUserPassword(), Global.cipherPassword);
             }
         }
-               DatabaseConnection dbConn = new DatabaseConnection(logger,Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword, 0);
+               DatabaseConnection dbConn = new DatabaseConnection(logger,Global.getDatabaseUrl(), 
+                               Global.getIndexDatabaseUrl(), Global.getResourceDatabaseUrl(),
+                               Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword, 0);
        return dbConn;
     }
     
@@ -1441,7 +1455,8 @@ public class NeverNote extends QMainWindow{
                if (guid.equalsIgnoreCase("STACK")) {
                        conn.getNotebookTable().renameStacks(currentSelection.text(0), edit.getNotebook());
                        for (int j=0; j<listManager.getNotebookIndex().size(); j++) {
-                               if (listManager.getNotebookIndex().get(j).getStack().equalsIgnoreCase(currentSelection.text(0)))
+                               if (listManager.getNotebookIndex().get(j).getStack() != null && 
+                                       listManager.getNotebookIndex().get(j).getStack().equalsIgnoreCase(currentSelection.text(0)))
                                                listManager.getNotebookIndex().get(j).setStack(edit.getNotebook());
                        }
                        conn.getNotebookTable().renameStacks(currentSelection.text(0), edit.getNotebook());
@@ -2400,6 +2415,7 @@ public class NeverNote extends QMainWindow{
        @SuppressWarnings("unused")
        private void databaseStatus() {
                waitCursor(true);
+               indexRunner.interrupt = true;
                int dirty = conn.getNoteTable().getDirtyCount();
                int unindexed = conn.getNoteTable().getUnindexedCount();
                DatabaseStatus status = new DatabaseStatus();
@@ -3950,6 +3966,7 @@ public class NeverNote extends QMainWindow{
     @SuppressWarnings("unused")
        private void setNoteDirty() {
                logger.log(logger.EXTREME, "Entering NeverNote.setNoteDirty()");
+               
                // Find if the note is being edited externally.  If it is, update it.
                if (externalWindows.containsKey(currentNoteGuid)) {
                        QTextCodec codec = QTextCodec.codecForName("UTF-8");
@@ -5082,7 +5099,7 @@ public class NeverNote extends QMainWindow{
                        syncRunner.syncDeletedContent = Global.synchronizeDeletedContent();
                        
                        if (syncThreadsReady > 0) {
-                               indexRunner.interrupt = true;
+                               thumbnailRunner.interrupt = true;
                                saveNoteIndexWidth();
                                saveNoteColumnPositions();
                                if (syncRunner.addWork("SYNC")) {
@@ -5187,6 +5204,7 @@ public class NeverNote extends QMainWindow{
                if (syncRunning) 
                        return;
                if (!indexDisabled && indexRunner.idle) { 
+                       thumbnailRunner.interrupt = true;
                        indexRunner.addWork("SCAN");
                }
                logger.log(logger.EXTREME, "Leaving neverNote index timer");
@@ -5221,47 +5239,64 @@ public class NeverNote extends QMainWindow{
                alive = listManager.threadCheck(Global.tagCounterThreadId);
                if (!alive) {
                        tagDeadCount++;
-                       if (tagDeadCount > MAX)
+                       if (tagDeadCount > MAX && !disableTagThreadCheck) {
                                QMessageBox.information(this, tr("A thread his died."), tr("It appears as the tag counter thread has died.  I recommend "+
                                "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableTagThreadCheck = true;
+                       }
                } else
                        tagDeadCount=0;
                
                alive = listManager.threadCheck(Global.notebookCounterThreadId);
                if (!alive) {
                        notebookThreadDeadCount++;
-                       QMessageBox.information(this, tr("A thread his died."), tr("It appears as the notebook counter thread has died.  I recommend "+
-                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                       if (notebookThreadDeadCount > MAX && !disableNotebookThreadCheck) {
+                               QMessageBox.information(this, tr("A thread his died."), tr("It appears as the notebook counter thread has died.  I recommend "+
+                                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableNotebookThreadCheck=true;
+                       }
                } else
                        notebookThreadDeadCount=0;
                
                alive = listManager.threadCheck(Global.trashCounterThreadId);
                if (!alive) {
                        trashDeadCount++;
-                       QMessageBox.information(this, tr("A thread his died."), ("It appears as the trash counter thread has died.  I recommend "+
-                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                       if (trashDeadCount > MAX && !disableTrashThreadCheck) {
+                               QMessageBox.information(this, tr("A thread his died."), ("It appears as the trash counter thread has died.  I recommend "+
+                                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableTrashThreadCheck = true;
+                       }
                } else
                        trashDeadCount = 0;
 
                alive = listManager.threadCheck(Global.saveThreadId);
                if (!alive) {
                        saveThreadDeadCount++;
-                       QMessageBox.information(this, tr("A thread his died."), tr("It appears as the note saver thread has died.  I recommend "+
-                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                       if (saveThreadDeadCount > MAX && !disableSaveThreadCheck) {
+                               QMessageBox.information(this, tr("A thread his died."), tr("It appears as the note saver thread has died.  I recommend "+
+                                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableSaveThreadCheck = true;
+                       }
                } else
                        saveThreadDeadCount=0;
 
                if (!syncThread.isAlive()) {
                        syncThreadDeadCount++;
-                       QMessageBox.information(this, tr("A thread his died."), tr("It appears as the synchronization thread has died.  I recommend "+
-                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                       if (syncThreadDeadCount > MAX && !disableSyncThreadCheck) {
+                               QMessageBox.information(this, tr("A thread his died."), tr("It appears as the synchronization thread has died.  I recommend "+
+                                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableSyncThreadCheck = true;
+                       }
                } else
                        syncThreadDeadCount=0;
 
                if (!indexThread.isAlive()) {
                        indexThreadDeadCount++;
-                       QMessageBox.information(this, tr("A thread his died."), tr("It appears as the index thread has died.  I recommend "+
-                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                       if (indexThreadDeadCount > MAX && !disableIndexThreadCheck) {
+                               QMessageBox.information(this, tr("A thread his died."), tr("It appears as the index thread has died.  I recommend "+
+                                       "checking stopping NeverNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableIndexThreadCheck = true;
+                       }
                } else
                        indexThreadDeadCount=0;
 
@@ -5269,11 +5304,8 @@ public class NeverNote extends QMainWindow{
        }
 
        private void thumbnailTimer() {
-               if (Global.enableThumbnails() && conn.getNoteTable().getThumbnailNeededCount() > 1) {
-                       thumbnailTimer.setInterval(10*1000);
+               if (Global.enableThumbnails() && !syncRunning && indexRunner.idle) {
                        thumbnailRunner.addWork("SCAN");
-               } else {
-                       thumbnailTimer.setInterval(60*1000);
                }
        }