OSDN Git Service

Correct sync bug where incorrect high sequence number might be saved when shutting...
authorRandy Baumgarte <randy@fbn.cx>
Wed, 19 Jan 2011 19:51:25 +0000 (14:51 -0500)
committerRandy Baumgarte <randy@fbn.cx>
Sun, 30 Jan 2011 13:37:12 +0000 (08:37 -0500)
src/cx/fbn/nevernote/sql/NoteResourceTable.java
src/cx/fbn/nevernote/sql/NoteTable.java
src/cx/fbn/nevernote/threads/SyncRunner.java

index 2c262cf..6200444 100644 (file)
@@ -511,6 +511,7 @@ public class NoteResourceTable  {
                query.bindValue(":recGuid", r.getGuid());\r
                query.exec();\r
                saveNoteResource(r, isDirty);\r
+               query = null;\r
                logger.log(logger.HIGH, "Leaving RNoteResourceTable.updateNoteResource");\r
        }\r
        // Update note resource GUID\r
index 598a648..1d12b07 100644 (file)
@@ -120,12 +120,18 @@ public class NoteTable {
                StringBuilder updated = new StringBuilder(simple.format(n.getUpdated()));                       \r
                StringBuilder deleted = new StringBuilder(simple.format(n.getDeleted()));\r
 \r
-               EnmlConverter enml = new EnmlConverter(logger);\r
+               \r
                \r
                query.bindValue(":guid", n.getGuid());\r
                query.bindValue(":updateSequenceNumber", n.getUpdateSequenceNum());\r
                query.bindValue(":title", n.getTitle());\r
-               query.bindValue(":content", enml.fixEnXMLCrap(enml.fixEnMediaCrap(n.getContent())));\r
+               if (isDirty) {\r
+                       EnmlConverter enml = new EnmlConverter(logger);\r
+                       query.bindValue(":content", enml.fixEnXMLCrap(enml.fixEnMediaCrap(n.getContent())));\r
+                       enml = null;\r
+               }\r
+               else\r
+                       query.bindValue(":content", n.getContent());\r
                query.bindValue(":contentHash", n.getContentHash());\r
                query.bindValue(":contentLength", n.getContentLength());\r
                query.bindValue(":created", created.toString());\r
@@ -158,6 +164,12 @@ public class NoteTable {
                        for (int i=0; i<n.getTagGuids().size(); i++) \r
                                noteTagsTable.saveNoteTag(n.getGuid(), n.getTagGuids().get(i));\r
                }\r
+               created = null;\r
+               updated = null;\r
+               deleted = null;\r
+               query = null;\r
+               simple = null;\r
+               \r
                logger.log(logger.EXTREME, "Leaving addNote");\r
        } \r
        // Setup queries for get to save time later\r
index 8ad6119..61a90bb 100644 (file)
@@ -740,6 +740,7 @@ public class SyncRunner extends QObject implements Runnable {
                                error = true;\r
                        }               \r
                }\r
+               remoteList = null;\r
                logger.log(logger.HIGH, "Leaving SyncRunner.syncLocalNotebooks");\r
 \r
        }\r
@@ -836,6 +837,7 @@ public class SyncRunner extends QObject implements Runnable {
                        enTag = findNextTag();\r
                }\r
                logger.log(logger.HIGH, "Leaving SyncRunner.syncLocalTags");\r
+               remoteList = null;\r
        }\r
        private void syncLocalLinkedNotebooks() {\r
                logger.log(logger.HIGH, "Entering SyncRunner.syncLocalLinkedNotebooks");\r
@@ -960,6 +962,9 @@ public class SyncRunner extends QObject implements Runnable {
                                error = true;\r
                        }               \r
                }\r
+               \r
+               remoteList = null;\r
+               searches = null;\r
                logger.log(logger.HIGH, "Entering SyncRunner.syncLocalSavedSearches");\r
        }       \r
 \r
@@ -1030,7 +1035,7 @@ public class SyncRunner extends QObject implements Runnable {
 \r
                        \r
                        // Save the chunk sequence number\r
-                       if (!error && chunk.getChunkHighUSN() > 0) {\r
+                       if (!error && chunk.getChunkHighUSN() > 0 && keepRunning) {\r
                                logger.log(logger.EXTREME, "emitting sequence number to main thread");\r
                                updateSequenceNumber = chunk.getChunkHighUSN();\r
                                conn.getSyncTable().setLastSequenceDate(chunk.getCurrentTime());\r
@@ -1046,6 +1051,7 @@ public class SyncRunner extends QObject implements Runnable {
                        }\r
                }\r
 \r
+               dirtyNoteGuids = null;\r
                logger.log(logger.HIGH, "Leaving SyncRunner.syncRemoteToLocal");\r
        }\r
        // Sync expunged notes\r