Browse Source

lib/db: Use Commit() instead of commit() (#6330)

The readWriteTransaction offered both commit() (the one to use) and
Commit() (via embedding) where the latter didn't close the read
transaction. This removes the lower cased variant in order to prevent
the mistake.

The only place where the mistake was made was the new gc runner, where
it would leave a read snapshot open forever.
Jakob Borg 5 years ago
parent
commit
a728743c86
4 changed files with 17 additions and 17 deletions
  1. 2 2
      lib/db/blockmap_test.go
  2. 6 6
      lib/db/lowlevel.go
  3. 7 7
      lib/db/schemaupdater.go
  4. 2 2
      lib/db/transactions.go

+ 2 - 2
lib/db/blockmap_test.go

@@ -76,7 +76,7 @@ func addToBlockMap(db *Lowlevel, folder []byte, fs []protocol.FileInfo) error {
 			}
 			}
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func discardFromBlockMap(db *Lowlevel, folder []byte, fs []protocol.FileInfo) error {
 func discardFromBlockMap(db *Lowlevel, folder []byte, fs []protocol.FileInfo) error {
@@ -101,7 +101,7 @@ func discardFromBlockMap(db *Lowlevel, folder []byte, fs []protocol.FileInfo) er
 			}
 			}
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func TestBlockMapAddUpdateWipe(t *testing.T) {
 func TestBlockMapAddUpdateWipe(t *testing.T) {

+ 6 - 6
lib/db/lowlevel.go

@@ -129,7 +129,7 @@ func (db *Lowlevel) updateRemoteFiles(folder, device []byte, fs []protocol.FileI
 		}
 		}
 	}
 	}
 
 
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 // updateLocalFiles adds fileinfos to the db, and updates the global versionlist,
 // updateLocalFiles adds fileinfos to the db, and updates the global versionlist,
@@ -232,7 +232,7 @@ func (db *Lowlevel) updateLocalFiles(folder []byte, fs []protocol.FileInfo, meta
 		}
 		}
 	}
 	}
 
 
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *Lowlevel) dropFolder(folder []byte) error {
 func (db *Lowlevel) dropFolder(folder []byte) error {
@@ -290,7 +290,7 @@ func (db *Lowlevel) dropFolder(folder []byte) error {
 		return err
 		return err
 	}
 	}
 
 
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *Lowlevel) dropDeviceFolder(device, folder []byte, meta *metadataTracker) error {
 func (db *Lowlevel) dropDeviceFolder(device, folder []byte, meta *metadataTracker) error {
@@ -343,7 +343,7 @@ func (db *Lowlevel) dropDeviceFolder(device, folder []byte, meta *metadataTracke
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *Lowlevel) checkGlobals(folder []byte, meta *metadataTracker) error {
 func (db *Lowlevel) checkGlobals(folder []byte, meta *metadataTracker) error {
@@ -411,7 +411,7 @@ func (db *Lowlevel) checkGlobals(folder []byte, meta *metadataTracker) error {
 	}
 	}
 
 
 	l.Debugf("db check completed for %q", folder)
 	l.Debugf("db check completed for %q", folder)
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *Lowlevel) getIndexID(device, folder []byte) (protocol.IndexID, error) {
 func (db *Lowlevel) getIndexID(device, folder []byte) (protocol.IndexID, error) {
@@ -469,7 +469,7 @@ func (db *Lowlevel) dropPrefix(prefix []byte) error {
 	if err := t.deleteKeyPrefix(prefix); err != nil {
 	if err := t.deleteKeyPrefix(prefix); err != nil {
 		return err
 		return err
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *Lowlevel) gcRunner() {
 func (db *Lowlevel) gcRunner() {

+ 7 - 7
lib/db/schemaupdater.go

@@ -204,7 +204,7 @@ func (db *schemaUpdater) updateSchema0to1(_ int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 // updateSchema1to2 introduces a sequenceKey->deviceKey bucket for local items
 // updateSchema1to2 introduces a sequenceKey->deviceKey bucket for local items
@@ -240,7 +240,7 @@ func (db *schemaUpdater) updateSchema1to2(_ int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 // updateSchema2to3 introduces a needKey->nil bucket for locally needed files.
 // updateSchema2to3 introduces a needKey->nil bucket for locally needed files.
@@ -288,7 +288,7 @@ func (db *schemaUpdater) updateSchema2to3(_ int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 // updateSchemaTo5 resets the need bucket due to bugs existing in the v0.14.49
 // updateSchemaTo5 resets the need bucket due to bugs existing in the v0.14.49
@@ -314,7 +314,7 @@ func (db *schemaUpdater) updateSchemaTo5(prevVersion int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	if err := t.commit(); err != nil {
+	if err := t.Commit(); err != nil {
 		return err
 		return err
 	}
 	}
 
 
@@ -361,7 +361,7 @@ func (db *schemaUpdater) updateSchema5to6(_ int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 // updateSchema6to7 checks whether all currently locally needed files are really
 // updateSchema6to7 checks whether all currently locally needed files are really
@@ -418,7 +418,7 @@ func (db *schemaUpdater) updateSchema6to7(_ int) error {
 			return err
 			return err
 		}
 		}
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 func (db *schemaUpdater) updateSchema7to8(_ int) error {
 func (db *schemaUpdater) updateSchema7to8(_ int) error {
@@ -453,5 +453,5 @@ func (db *schemaUpdater) updateSchema7to8(_ int) error {
 
 
 	db.recordTime(blockGCTimeKey)
 	db.recordTime(blockGCTimeKey)
 
 
-	return t.commit()
+	return t.Commit()
 }
 }

+ 2 - 2
lib/db/transactions.go

@@ -443,7 +443,7 @@ func (db *Lowlevel) newReadWriteTransaction() (readWriteTransaction, error) {
 	}, nil
 	}, nil
 }
 }
 
 
-func (t readWriteTransaction) commit() error {
+func (t readWriteTransaction) Commit() error {
 	t.readOnlyTransaction.close()
 	t.readOnlyTransaction.close()
 	return t.WriteTransaction.Commit()
 	return t.WriteTransaction.Commit()
 }
 }
@@ -758,7 +758,7 @@ func (t *readWriteTransaction) withAllFolderTruncated(folder []byte, fn func(dev
 	if err := dbi.Error(); err != nil {
 	if err := dbi.Error(); err != nil {
 		return err
 		return err
 	}
 	}
-	return t.commit()
+	return t.Commit()
 }
 }
 
 
 type marshaller interface {
 type marshaller interface {