| 
					
				 | 
			
			
				@@ -440,3 +440,40 @@ func TestDowngrade(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		t.Fatalf("Error has %v as min Syncthing version, expected %v", err.minSyncthingVersion, dbMinSyncthingVersion) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestCheckGlobals(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	db := NewLowlevel(backend.OpenMemory()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer db.Close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fs := NewFileSet("test", fs.NewFilesystem(fs.FilesystemTypeFake, ""), db) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Add any file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	name := "foo" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	fs.Update(protocol.LocalDeviceID, []protocol.FileInfo{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Name:    name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Type:    protocol.FileInfoTypeFile, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			Version: protocol.Vector{Counters: []protocol.Counter{{ID: 1, Value: 1001}}}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Remove just the file entry 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := db.dropPrefix([]byte{KeyTypeDevice}); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Fatal(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Clean up global entry of the now missing file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err := db.checkGlobals([]byte(fs.folder), fs.meta); err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Fatal(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Check that the global entry is gone 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	gk, err := db.keyer.GenerateGlobalVersionKey(nil, []byte(fs.folder), []byte(name)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Fatal(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = db.Get(gk) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if !backend.IsNotFound(err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		t.Error("Expected key missing error, got", err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |