Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
61b94b9ea5 | ||
|
|
6fb3c5ccf2 |
@@ -591,9 +591,9 @@
|
||||
<span class="fa fa-lock"></span> <!-- Avoid stray space...
|
||||
--></span><!-- Avoid stray space...
|
||||
--><span ng-switch="completion[device.deviceID][folder.id].remoteState"><!-- Avoid stray space...
|
||||
--><span ng-switch-when="notSharing" data-original-title="{{'The remote device has not accepted sharing this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>1</sup></span><!-- Avoid stray space...
|
||||
--><span ng-switch-when="paused" data-original-title="{{'The remote device has paused this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>2</sup></span><!-- Avoid stray space...
|
||||
--><span ng-switch-default><a href="" ng-click="editDeviceExisting(devices[device.deviceID])">{{deviceName(devices[device.deviceID])}}</a></span><!-- Avoid stray space...
|
||||
--><a ng-switch-when="notSharing" href="" ng-click="editDeviceExisting(devices[device.deviceID])" data-original-title="{{'The remote device has not accepted sharing this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>1</sup></a><!-- Avoid stray space...
|
||||
--><a ng-switch-when="paused" href="" ng-click="editDeviceExisting(devices[device.deviceID])" data-original-title="{{'The remote device has paused this folder.' | translate}}" tooltip>{{deviceName(devices[device.deviceID])}}<sup>2</sup></a><!-- Avoid stray space...
|
||||
--><a ng-switch-default href="" ng-click="editDeviceExisting(devices[device.deviceID])">{{deviceName(devices[device.deviceID])}}</a><!-- Avoid stray space...
|
||||
--><span ng-if="!$last">,</span>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
@@ -103,6 +103,7 @@ type keyer interface {
|
||||
// index IDs
|
||||
GenerateIndexIDKey(key, device, folder []byte) (indexIDKey, error)
|
||||
FolderFromIndexIDKey(key []byte) ([]byte, bool)
|
||||
DeviceFromIndexIDKey(key []byte) ([]byte, bool)
|
||||
|
||||
// Mtimes
|
||||
GenerateMtimesKey(key, folder []byte) (mtimesKey, error)
|
||||
@@ -308,6 +309,10 @@ func (k defaultKeyer) FolderFromIndexIDKey(key []byte) ([]byte, bool) {
|
||||
return k.folderIdx.Val(binary.BigEndian.Uint32(key[keyPrefixLen+keyDeviceLen:]))
|
||||
}
|
||||
|
||||
func (k defaultKeyer) DeviceFromIndexIDKey(key []byte) ([]byte, bool) {
|
||||
return k.folderIdx.Val(binary.BigEndian.Uint32(key[keyPrefixLen : keyPrefixLen+keyDeviceLen]))
|
||||
}
|
||||
|
||||
type mtimesKey []byte
|
||||
|
||||
func (k defaultKeyer) GenerateMtimesKey(key, folder []byte) (mtimesKey, error) {
|
||||
|
||||
@@ -665,6 +665,24 @@ func (db *Lowlevel) dropIndexIDs() error {
|
||||
return t.Commit()
|
||||
}
|
||||
|
||||
// dropOtherDeviceIndexIDs drops all index IDs for devices other than the
|
||||
// local device. This means we will resend our indexes to all other devices,
|
||||
// but they don't have to resend to us.
|
||||
func (db *Lowlevel) dropOtherDeviceIndexIDs() error {
|
||||
t, err := db.newReadWriteTransaction()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer t.close()
|
||||
if err := t.deleteKeyPrefixMatching([]byte{KeyTypeIndexID}, func(key []byte) bool {
|
||||
dev, _ := t.keyer.DeviceFromIndexIDKey(key)
|
||||
return !bytes.Equal(dev, protocol.LocalDeviceID[:])
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return t.Commit()
|
||||
}
|
||||
|
||||
func (db *Lowlevel) dropMtimes(folder []byte) error {
|
||||
key, err := db.keyer.GenerateMtimesKey(nil, folder)
|
||||
if err != nil {
|
||||
|
||||
+11
-6
@@ -20,7 +20,7 @@ import (
|
||||
// do not put restrictions on downgrades (e.g. for repairs after a bugfix).
|
||||
const (
|
||||
dbVersion = 14
|
||||
dbMigrationVersion = 19
|
||||
dbMigrationVersion = 20
|
||||
dbMinSyncthingVersion = "v1.9.0"
|
||||
)
|
||||
|
||||
@@ -102,7 +102,8 @@ func (db *schemaUpdater) updateSchema() error {
|
||||
{14, 14, "v1.9.0", db.updateSchemaTo14},
|
||||
{14, 16, "v1.9.0", db.checkRepairMigration},
|
||||
{14, 17, "v1.9.0", db.migration17},
|
||||
{14, 19, "v1.9.0", db.dropIndexIDsMigration},
|
||||
{14, 19, "v1.9.0", db.dropAllIndexIDsMigration},
|
||||
{14, 20, "v1.9.0", db.dropOutgoingIndexIDsMigration},
|
||||
}
|
||||
|
||||
for _, m := range migrations {
|
||||
@@ -130,13 +131,13 @@ func (db *schemaUpdater) updateSchema() error {
|
||||
}
|
||||
|
||||
func (*schemaUpdater) writeVersions(m migration, miscDB *NamespacedKV) error {
|
||||
if err := miscDB.PutInt64("dbVersion", m.schemaVersion); err != nil && err == nil {
|
||||
if err := miscDB.PutInt64("dbVersion", m.schemaVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := miscDB.PutString("dbMinSyncthingVersion", m.minSyncthingVersion); err != nil && err == nil {
|
||||
if err := miscDB.PutString("dbMinSyncthingVersion", m.minSyncthingVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := miscDB.PutInt64("dbMigrationVersion", m.migrationVersion); err != nil && err == nil {
|
||||
if err := miscDB.PutInt64("dbMigrationVersion", m.migrationVersion); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@@ -831,10 +832,14 @@ func (db *schemaUpdater) migration17(prev int) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (db *schemaUpdater) dropIndexIDsMigration(_ int) error {
|
||||
func (db *schemaUpdater) dropAllIndexIDsMigration(_ int) error {
|
||||
return db.dropIndexIDs()
|
||||
}
|
||||
|
||||
func (db *schemaUpdater) dropOutgoingIndexIDsMigration(_ int) error {
|
||||
return db.dropOtherDeviceIndexIDs()
|
||||
}
|
||||
|
||||
func rewriteGlobals(t readWriteTransaction) error {
|
||||
it, err := t.NewPrefixIterator([]byte{KeyTypeGlobal})
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user