Merge pull request #6256 from elsa-workflows/bug/6255
Handle exceptions in variable loading and fix type checking.
This commit is contained in:
commit
d3af106c32
|
|
@ -104,7 +104,7 @@ public static class ObjectConverter
|
|||
return underlyingTargetType switch
|
||||
{
|
||||
{ } t when t == typeof(string) => jsonNode.ToString(),
|
||||
{ } t when t == typeof(ExpandoObject) => JsonSerializer.Deserialize<ExpandoObject>(jsonNode.ToJsonString()),
|
||||
{ } t when t == typeof(ExpandoObject) && jsonNode.GetValueKind() == JsonValueKind.Object => JsonSerializer.Deserialize<ExpandoObject>(jsonNode.ToJsonString()),
|
||||
{ } t when t != typeof(object) || converterOptions?.DeserializeJsonObjectToObject == true => jsonNode.Deserialize(targetType, serializerOptions),
|
||||
_ => jsonNode
|
||||
};
|
||||
|
|
|
|||
|
|
@ -40,18 +40,26 @@ public class VariablePersistenceManager(IStorageDriverManager storageDriverManag
|
|||
continue;
|
||||
|
||||
var id = GetStateId(variable);
|
||||
var value = await driver.ReadAsync(id, storageDriverContext);
|
||||
if (value == null) continue;
|
||||
|
||||
register.Declare(variable);
|
||||
|
||||
if (!variable.TryParseValue(value, out var parsedValue))
|
||||
try
|
||||
{
|
||||
logger.LogWarning("Failed to parse value for variable {VariableId} of type {VariableType} with value {Value}", variable.Id, variable.GetVariableType().FullName, value);
|
||||
continue;
|
||||
}
|
||||
var value = await driver.ReadAsync(id, storageDriverContext);
|
||||
if (value == null) continue;
|
||||
|
||||
variable.Set(register, parsedValue);
|
||||
register.Declare(variable);
|
||||
|
||||
if (!variable.TryParseValue(value, out var parsedValue))
|
||||
{
|
||||
logger.LogWarning("Failed to parse value for variable {VariableId} of type {VariableType} with value {Value}", variable.Id, variable.GetVariableType().FullName, value);
|
||||
continue;
|
||||
}
|
||||
|
||||
variable.Set(register, parsedValue);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
logger.LogError(e, "Failed to read variable {VariableId} from storage driver {StorageDriverType}", variable.Id, driver.GetType().FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue