         #   patch     = string representation of a patch (since we don't want to de-JSON if not needed)
         #   is_first  = boolean; if true, start with this patch; used only to avoid race conditions when trimming history.
 
-        # WARNING!
-        # We first implement a very inefficient stupid version of this business, and
-        # will later implement things to make faster.  If this database sync thing
-        # turns out to be sensible.
-        #  SIMPLIFIED: ignore is_first and never trim.
-        @dbg("_process_updates", "process #{updates.length} updates")
-        #@dbg("_process_updates", "#{misc.to_json(updates)}")
+        if updates.length > 0
+            @dbg("_process_updates", "process #{updates.length} updates")
+            #@dbg("_process_updates", "#{misc.to_json(updates)}")
         new_patches = {}
         for update in updates
             update.timestamp = update.timestamp - 0  # better to key map based on string of timestamp as number

        @dbg("_process_updates", "#{misc.len(new_patches)} new patches")

        # There are new patches
        write_updates = false
        for string_id, patches of new_patches
            string = @strings[string_id]
            last_sync_before = string.last_sync

                    new_patches[update.string_id].push(update)

        if misc.len(new_patches) == 0
            #@dbg("_process_updates", "no new patches, so nothing further to do")
            cb(undefined, false)
            return

