add more logging output to diagnose an issue describe by a user where merge conflicts seem to be detected even if they are not there

This commit is contained in:
Philipp Crocoll
2020-11-30 11:55:07 +01:00
parent 3dcb8ed32b
commit fec0e7768a
3 changed files with 28 additions and 12 deletions

View File

@@ -120,10 +120,14 @@ namespace keepass2android.Io
public bool IsCached(IOConnectionInfo ioc) public bool IsCached(IOConnectionInfo ioc)
{ {
return File.Exists(CachedFilePath(ioc)) bool result = File.Exists(CachedFilePath(ioc))
&& File.Exists(VersionFilePath(ioc)) && File.Exists(VersionFilePath(ioc))
&& File.Exists(BaseVersionFilePath(ioc)); && File.Exists(BaseVersionFilePath(ioc));
}
Kp2aLog.Log(ioc.GetDisplayName() + " isCached = " + result);
return result;
}
public void Delete(IOConnectionInfo ioc) public void Delete(IOConnectionInfo ioc)
{ {
@@ -593,11 +597,15 @@ namespace keepass2android.Io
public string GetBaseVersionHash(IOConnectionInfo ioc) public string GetBaseVersionHash(IOConnectionInfo ioc)
{ {
return File.ReadAllText(BaseVersionFilePath(ioc)); string hash = File.ReadAllText(BaseVersionFilePath(ioc));
} Kp2aLog.Log(ioc.GetDisplayName() + " baseVersionHash = " + hash);
return hash;
}
public string GetLocalVersionHash(IOConnectionInfo ioc) public string GetLocalVersionHash(IOConnectionInfo ioc)
{ {
return File.ReadAllText(VersionFilePath(ioc)); string hash = File.ReadAllText(VersionFilePath(ioc));
Kp2aLog.Log(ioc.GetDisplayName() + " localVersionHash = " + hash);
return hash;
} }
public bool HasLocalChanges(IOConnectionInfo ioc) public bool HasLocalChanges(IOConnectionInfo ioc)
{ {

View File

@@ -43,17 +43,21 @@ namespace keepass2android
try try
{ {
remoteData = cachingFileStorage.GetRemoteDataAndHash(ioc, out hash); remoteData = cachingFileStorage.GetRemoteDataAndHash(ioc, out hash);
Kp2aLog.Log("Checking for file change. Current hash = " + hash);
} }
catch (FileNotFoundException) catch (FileNotFoundException)
{ {
StatusLogger.UpdateSubMessage(_app.GetResourceString(UiStringKey.RestoringRemoteFile)); StatusLogger.UpdateSubMessage(_app.GetResourceString(UiStringKey.RestoringRemoteFile));
cachingFileStorage.UpdateRemoteFile(ioc, _app.GetBooleanPreference(PreferenceKey.UseFileTransactions)); cachingFileStorage.UpdateRemoteFile(ioc, _app.GetBooleanPreference(PreferenceKey.UseFileTransactions));
Finish(true, _app.GetResourceString(UiStringKey.SynchronizedDatabaseSuccessfully)); Finish(true, _app.GetResourceString(UiStringKey.SynchronizedDatabaseSuccessfully));
Kp2aLog.Log("Checking for file change: file not found");
return; return;
} }
//check if remote file was modified: //check if remote file was modified:
if (cachingFileStorage.GetBaseVersionHash(ioc) != hash) var baseVersionHash = cachingFileStorage.GetBaseVersionHash(ioc);
Kp2aLog.Log("Checking for file change. baseVersionHash = " + baseVersionHash);
if (baseVersionHash != hash)
{ {
//remote file is modified //remote file is modified
if (cachingFileStorage.HasLocalChanges(ioc)) if (cachingFileStorage.HasLocalChanges(ioc))

View File

@@ -118,12 +118,16 @@ namespace keepass2android
} }
if ( bool hasStreamForOrigFile = (_streamForOrigFile != null);
(_streamForOrigFile != null) bool hasChangeFast = hasStreamForOrigFile ||
|| fileStorage.CheckForFileChangeFast(ioc, _db.LastFileVersion) //first try to use the fast change detection fileStorage.CheckForFileChangeFast(ioc, _db.LastFileVersion); //first try to use the fast change detection;
|| (FileHashChanged(ioc, _db.KpDatabase.HashOfFileOnDisk) == FileHashChange.Changed) //if that fails, hash the file and compare: bool hasHashChanged = hasChangeFast ||
) (FileHashChanged(ioc, _db.KpDatabase.HashOfFileOnDisk) ==
FileHashChange.Changed); //if that fails, hash the file and compare:
if (hasHashChanged)
{ {
Kp2aLog.Log("Conflict. " + hasStreamForOrigFile + " " + hasChangeFast + " " + hasHashChanged);
//ask user... //ask user...
_app.AskYesNoCancel(UiStringKey.TitleSyncQuestion, UiStringKey.MessageSyncQuestion, _app.AskYesNoCancel(UiStringKey.TitleSyncQuestion, UiStringKey.MessageSyncQuestion,