-
Notifications
You must be signed in to change notification settings - Fork 11
Process_OutputDataReceived trigger an exception for JobsListAsync #14
Description
With azcopy.exe version 10.12.1, JobsListAsync trigger an exception in Process_OutputDataReceived:
Newtonsoft.Json.JsonSerializationException
HResult=0x80131500
Message=Required property 'JobStatus' not found in JSON. Path '', line 1, position 13776.
Source=Newtonsoft.Json
StackTrace:
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EndProcessProperty(Object newObject, JsonReader reader, JsonObjectContract contract, Int32 initialDepth, JsonProperty property, PropertyPresence presence, Boolean setDefaultValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at AzCopy.Client.AZCopyClient.Process_OutputDataReceived(Object sender, DataReceivedEventArgs e) in D:\Temp\AzCopyNet-main\src\AzCopy.Client\AZCopyClient.cs:line 228This exception was originally thrown at this call stack:
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EndProcessProperty(object, Newtonsoft.Json.JsonReader, Newtonsoft.Json.Serialization.JsonObjectContract, int, Newtonsoft.Json.Serialization.JsonProperty, Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PropertyPresence, bool)
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(object, Newtonsoft.Json.JsonReader, Newtonsoft.Json.Serialization.JsonObjectContract, Newtonsoft.Json.Serialization.JsonProperty, string)
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(Newtonsoft.Json.JsonReader, System.Type, Newtonsoft.Json.Serialization.JsonContract, Newtonsoft.Json.Serialization.JsonProperty, Newtonsoft.Json.Serialization.JsonContainerContract, Newtonsoft.Json.Serialization.JsonProperty, object)
Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(Newtonsoft.Json.JsonReader, System.Type, bool)
Newtonsoft.Json.JsonSerializer.DeserializeInternal(Newtonsoft.Json.JsonReader, System.Type)
Newtonsoft.Json.JsonSerializer.Deserialize(Newtonsoft.Json.JsonReader, System.Type)
Newtonsoft.Json.JsonConvert.DeserializeObject(string, System.Type, Newtonsoft.Json.JsonSerializerSettings)
Newtonsoft.Json.JsonConvert.DeserializeObject(string, Newtonsoft.Json.JsonSerializerSettings)
Newtonsoft.Json.JsonConvert.DeserializeObject(string)
AzCopy.Client.AZCopyClient.Process_OutputDataReceived(object, System.Diagnostics.DataReceivedEventArgs) in AZCopyClient.cs
The content of message.MessageContent:
{
"ErrorMessage": "",
"JobIDDetails": [
{
"JobId": "7fde53c1-e158-0c44-4331-dd337533a865",
"CommandString": "copy https://x.blob.core.windows.net/files/x.zip?se=2021-10-15t19%3A47%3A11z\u0026sig=REDACTED\u0026sp=rl\u0026sr=c\u0026sv=2020-04-08 C:\\Users\\p\\Downloads\\x.zip --output-type=json --cancel-from-stdin --overwrite=prompt --check-md5 FailIfDifferent --from-to=BlobLocal --recursive --trusted-microsoft-suffixes= --log-level=INFO ",
"StartTime": 1631735231393907100,
"JobStatus": "Completed"
},
{
"JobId": "1d5e2bd7-8a5d-6d4a-77c3-5e2562ced9dd",
"CommandString": "remove https://x.blob.core.windows.net/files/x.zip?se=2021-10-15t19%3A46%3A07z\u0026sig=REDACTED\u0026sp=rdl\u0026sr=c\u0026sv=2020-04-08 --output-type=json --cancel-from-stdin --recursive --trusted-microsoft-suffixes= --log-level=INFO ",
"StartTime": 1631735170230821700,
"JobStatus": "Completed"
},
{
"JobId": "1d7b2b65-b5c5-b64b-592a-0d50fceec9fe",
"CommandString": "copy D:\\Sources\\x.zip https://x.blob.core.windows.net/files/x.zip?se=2021-10-15t19%3A45%3A49z\u0026sig=REDACTED\u0026sp=rwl\u0026sr=c\u0026sv=2020-04-08 --output-type=json --cancel-from-stdin --overwrite=prompt --from-to=LocalBlob --blob-type Detect --follow-symlinks --put-md5 --follow-symlinks --recursive --trusted-microsoft-suffixes= --log-level=INFO ",
"StartTime": 1631735149828609400,
"JobStatus": "Completed"
}
]
}So, the output is an array, but the code tries to deserialize a single object:
