Add error recovery around FileLocations.json to handle file corruption
This commit is contained in:
parent
0312786721
commit
1e24df626a
@ -208,7 +208,7 @@ namespace FileManager
|
|||||||
{
|
{
|
||||||
var msg = "Unrecoverable error. Settings file cannot be found";
|
var msg = "Unrecoverable error. Settings file cannot be found";
|
||||||
var ex = new FileNotFoundException(msg, Filepath);
|
var ex = new FileNotFoundException(msg, Filepath);
|
||||||
Serilog.Log.Logger.Error(msg, ex);
|
Serilog.Log.Logger.Error(ex, msg);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -226,7 +226,7 @@ namespace FileManager
|
|||||||
{
|
{
|
||||||
var msg = "Unrecoverable error. Unable to read settings from Settings file";
|
var msg = "Unrecoverable error. Unable to read settings from Settings file";
|
||||||
var ex = new NullReferenceException(msg);
|
var ex = new NullReferenceException(msg);
|
||||||
Serilog.Log.Logger.Error(msg, ex);
|
Serilog.Log.Logger.Error(ex, msg);
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -26,6 +26,18 @@ namespace LibationFileManager
|
|||||||
if (File.Exists(jsonFile))
|
if (File.Exists(jsonFile))
|
||||||
{
|
{
|
||||||
var list = JsonConvert.DeserializeObject<List<CacheEntry>>(File.ReadAllText(jsonFile));
|
var list = JsonConvert.DeserializeObject<List<CacheEntry>>(File.ReadAllText(jsonFile));
|
||||||
|
|
||||||
|
// file exists but deser is null. this will never happen when file is healthy
|
||||||
|
if (list is null)
|
||||||
|
{
|
||||||
|
lock (locker)
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Error("Error deserializing file. Wrong format. Possibly corrupt. Deleting file. {@DebugInfo}", new { jsonFile });
|
||||||
|
File.Delete(jsonFile);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cache = new Cache<CacheEntry>(list);
|
cache = new Cache<CacheEntry>(list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user