Skip to content

Commit 96bf899

Browse files
SNOW-2882054 fixed retries for failures scenarios during blob upload
1 parent 80f8d9c commit 96bf899

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#### For the official .NET Release Notes please refer to https://docs.snowflake.com/en/release-notes/clients-drivers/dotnet
22

33
# Changelog
4+
- v5.2.1
5+
- Bug fix: Fixed for intermittent network issues during Azure blob storage upload operations
46
- v5.2.0
57
- Added multi-targeting support. The appropriate build is selected by NuGet based on target framework and OS.
68
- Fixed CRL validation to reject newly downloaded CRLs if their NextUpdate has already expired.

Snowflake.Data/Core/FileTransfer/StorageClient/SFSnowflakeAzureClient.cs

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public FileHeader GetFileHeader(SFFileMetadata fileMetadata)
116116
catch (Exception ex)
117117
{
118118
Logger.Error("Blob client unknown get file header error: " + ex.Message);
119-
fileMetadata.resultStatus = ex.Message;
119+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
120120
return null;
121121
}
122122

@@ -145,7 +145,13 @@ public async Task<FileHeader> GetFileHeaderAsync(SFFileMetadata fileMetadata, Ca
145145
}
146146
catch (RequestFailedException ex)
147147
{
148-
fileMetadata = HandleFileHeaderErr(ex, fileMetadata);
148+
HandleFileHeaderErr(ex, fileMetadata);
149+
return null;
150+
}
151+
catch (Exception ex)
152+
{
153+
Logger.Error("Blob client unknown get file header error: " + ex.Message);
154+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
149155
return null;
150156
}
151157

@@ -174,6 +180,11 @@ internal FileHeader HandleFileHeaderResponse(ref SFFileMetadata fileMetadata, Bl
174180
};
175181
}
176182

183+
if (fileMetadata.stageInfo.isClientSideEncrypted && encryptionMetadata == null)
184+
{
185+
Logger.Error("File is expected to be client-side encrypted but no encryption metadata found.");
186+
}
187+
177188
return new FileHeader
178189
{
179190
digest = GetMetadataValueCaseInsensitive(response, "sfcdigest", false),
@@ -236,7 +247,7 @@ public void UploadFile(SFFileMetadata fileMetadata, Stream fileBytesStream, SFEn
236247
catch (Exception ex)
237248
{
238249
Logger.Error("Blob client unknown upload error: " + ex.Message);
239-
fileMetadata.resultStatus = ex.Message;
250+
fileMetadata.resultStatus = ResultStatus.NEED_RETRY.ToString();
240251
return;
241252
}
242253

@@ -265,7 +276,7 @@ public async Task UploadFileAsync(SFFileMetadata fileMetadata, Stream fileBytesS
265276
{
266277
Metadata = metadata
267278
};
268-
blobClient.UploadAsync(fileBytesStream, uploadOptions, cancellationToken).ConfigureAwait(false);
279+
await blobClient.UploadAsync(fileBytesStream, uploadOptions, cancellationToken).ConfigureAwait(false);
269280
}
270281
catch (RequestFailedException ex)
271282
{
@@ -276,7 +287,7 @@ public async Task UploadFileAsync(SFFileMetadata fileMetadata, Stream fileBytesS
276287
catch (Exception ex)
277288
{
278289
Logger.Error("Blob client unknown upload error: " + ex.Message);
279-
fileMetadata.resultStatus = ex.Message;
290+
fileMetadata.resultStatus = ResultStatus.NEED_RETRY.ToString();
280291
return;
281292
}
282293

@@ -364,7 +375,7 @@ public void DownloadFile(SFFileMetadata fileMetadata, string fullDstPath, int ma
364375
{
365376
File.Delete(fullDstPath);
366377
Logger.Error("Blob client unknown download error: " + ex.Message);
367-
fileMetadata.resultStatus = ex.Message;
378+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
368379
return;
369380
}
370381

@@ -404,7 +415,7 @@ public async Task DownloadFileAsync(SFFileMetadata fileMetadata, string fullDstP
404415
{
405416
File.Delete(fullDstPath);
406417
Logger.Error("Blob client unknown download error: " + ex.Message);
407-
fileMetadata.resultStatus = ex.Message;
418+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
408419
return;
409420
}
410421

@@ -449,7 +460,7 @@ private SFFileMetadata HandleUploadFileErr(RequestFailedException ex, SFFileMeta
449460
{
450461
String error = $"Unexpected HTTP status for file upload operation: {ex.Status}";
451462
Logger.Error(error);
452-
fileMetadata.resultStatus = error;
463+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
453464
}
454465
return fileMetadata;
455466
}
@@ -470,7 +481,7 @@ private SFFileMetadata HandleDownloadFileErr(RequestFailedException ex, SFFileMe
470481
{
471482
String error = $"Unexpected HTTP status for file download operation: {ex.Status}";
472483
Logger.Error(error);
473-
fileMetadata.resultStatus = error;
484+
fileMetadata.resultStatus = ResultStatus.ERROR.ToString();
474485
}
475486
return fileMetadata;
476487
}

0 commit comments

Comments
 (0)