diff --git a/.github/.gitversion.yml b/.github/.gitversion.yml
index 9118c9871..ae6015301 100644
--- a/.github/.gitversion.yml
+++ b/.github/.gitversion.yml
@@ -29,4 +29,4 @@ branches:
ignore:
sha: []
merge-message-formats: {}
-next-version: 0.3.7
+next-version: 0.3.14
diff --git a/doc/dependency_decisions.yml b/doc/dependency_decisions.yml
index 3c8235479..c0d442e64 100644
--- a/doc/dependency_decisions.yml
+++ b/doc/dependency_decisions.yml
@@ -809,22 +809,21 @@
- :who: mocsharp
:why: Apache-2.0 (https://github.com/Project-MONAI/monai-deploy-storage/raw/main/LICENSE)
:versions:
- - 0.2.15
+ - 0.2.16
:when: 2022-08-16 23:06:21.988183476 Z
- - :approve
- Monai.Deploy.Storage.MinIO
- :who: mocsharp
:why: Apache-2.0 (https://github.com/Project-MONAI/monai-deploy-storage/raw/main/LICENSE)
:versions:
- - 0.2.15
+ - 0.2.16
:when: 2022-08-16 23:06:22.426838304 Z
- - :approve
- Monai.Deploy.Storage.S3Policy
- :who: mocsharp
:why: Apache-2.0 (https://github.com/Project-MONAI/monai-deploy-storage/raw/main/LICENSE)
:versions:
- - 0.2.13
- - 0.2.15
+ - 0.2.16
:when: 2022-08-16 23:06:22.881956546 Z
- - :approve
- Monai.Deploy.Security
@@ -2345,21 +2344,21 @@
- :who: mocsharp
:why: BSD 3-Clause License (https://github.com/NLog/NLog/raw/dev/LICENSE.txt)
:versions:
- - 5.1.2
+ - 5.1.3
:when: 2022-10-12 03:14:06.538744982 Z
- - :approve
- NLog.Extensions.Logging
- :who: mocsharp
:why: BSD 2-Clause Simplified License (https://github.com/NLog/NLog.Extensions.Logging/raw/master/LICENSE)
:versions:
- - 5.2.2
+ - 5.2.3
:when: 2022-10-12 03:14:06.964203977 Z
- - :approve
- NLog.Web.AspNetCore
- :who: mocsharp
:why: BSD 3-Clause License (https://github.com/NLog/NLog.Web/raw/master/LICENSE)
:versions:
- - 5.2.2
+ - 5.2.3
:when: 2022-10-12 03:14:07.396706995 Z
- - :approve
- fo-dicom.NLog
diff --git a/docs/changelog.md b/docs/changelog.md
index df31695e6..7aea4128f 100644
--- a/docs/changelog.md
+++ b/docs/changelog.md
@@ -17,6 +17,12 @@
# Changelog
+## 0.3.16
+
+[GitHub Milestone 0.3.16](https://github.com/Project-MONAI/monai-deploy-informatics-gateway/milestone/21)
+
+- gh-347 Set time limit when calling Storage List/Verify APIs
+
## 0.3.15
[GitHub Milestone 0.3.15](https://github.com/Project-MONAI/monai-deploy-informatics-gateway/milestone/20)
diff --git a/src/Api/Monai.Deploy.InformaticsGateway.Api.csproj b/src/Api/Monai.Deploy.InformaticsGateway.Api.csproj
index 2c63eb9f8..60fcb53d4 100644
--- a/src/Api/Monai.Deploy.InformaticsGateway.Api.csproj
+++ b/src/Api/Monai.Deploy.InformaticsGateway.Api.csproj
@@ -31,7 +31,7 @@
-
+
diff --git a/src/Api/Test/packages.lock.json b/src/Api/Test/packages.lock.json
index 3c90b40f9..fb65e89a2 100644
--- a/src/Api/Test/packages.lock.json
+++ b/src/Api/Test/packages.lock.json
@@ -273,22 +273,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1271,7 +1271,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
diff --git a/src/Api/packages.lock.json b/src/Api/packages.lock.json
index 17d64e4ac..bf469152e 100644
--- a/src/Api/packages.lock.json
+++ b/src/Api/packages.lock.json
@@ -31,16 +31,16 @@
},
"Monai.Deploy.Storage": {
"type": "Direct",
- "requested": "[0.2.15, )",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "requested": "[0.2.16, )",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
@@ -202,8 +202,8 @@
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
diff --git a/src/CLI/Test/packages.lock.json b/src/CLI/Test/packages.lock.json
index e753c3169..0cacb4101 100644
--- a/src/CLI/Test/packages.lock.json
+++ b/src/CLI/Test/packages.lock.json
@@ -521,22 +521,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1574,7 +1574,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client": {
diff --git a/src/CLI/packages.lock.json b/src/CLI/packages.lock.json
index 12a72bf98..b511d9ff1 100644
--- a/src/CLI/packages.lock.json
+++ b/src/CLI/packages.lock.json
@@ -457,22 +457,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1419,7 +1419,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client": {
diff --git a/src/Client/Test/packages.lock.json b/src/Client/Test/packages.lock.json
index 4201ee472..31e098d59 100644
--- a/src/Client/Test/packages.lock.json
+++ b/src/Client/Test/packages.lock.json
@@ -747,36 +747,36 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.MinIO": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "hyN7GuTp80y5cpY01IqbzkRCc0QB3y2v7Sppzarsnw6l6FgLJ1ZUgvMN4VDBwVyMNJytBeEKWfgn/FdidGNYaw==",
+ "resolved": "0.2.16",
+ "contentHash": "/J8fylX91D/ePPCHTCgY11nPdADR5MZO239ZZWrK7ZO2ngAvKRmTB4Q6q6JbSErDF1hSk11HGhWCWNDsnK1rAQ==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Minio": "4.0.7",
- "Monai.Deploy.Storage": "0.2.15",
- "Monai.Deploy.Storage.S3Policy": "0.2.15"
+ "Monai.Deploy.Storage": "0.2.16",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -846,25 +846,25 @@
},
"NLog": {
"type": "Transitive",
- "resolved": "5.1.2",
- "contentHash": "JfQY93ure3IPVTN3eabBewBGvrcXcWIlaesFEXdy5UzIymfIT9yCgLISYtM0cOhjWziIaUr/6Z9NC2RwtjwrsQ=="
+ "resolved": "5.1.3",
+ "contentHash": "rB8hwjBf1EZCfG5iPfsv3gPksLoJLr1cOrt7PBbJu6VpJgwYJchDzTUT1dhNDdPv0QakXJQJOhE59ErupcznQQ=="
},
"NLog.Extensions.Logging": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "V6sd+0Hrk2XlU//XbUizFYTE8Hf8+xFkhi81shIhsKl4tvWFUYmjBY/zBy/wlQCt0K6mfseaEKnayRJVhIz5Iw==",
+ "resolved": "5.2.3",
+ "contentHash": "TB8zPGV2nVpvWq5C8zIVHPSmnzOHMrXppjsAwHcuJq1Ehs8sC0llnAv5Ysf5Lf/vew9amV/+01MohtRFSDzKdQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
- "NLog": "5.1.2"
+ "NLog": "5.1.3"
}
},
"NLog.Web.AspNetCore": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "0Qa6V7LXgbWNxYdZDLcQz/TjGrSfx32XThxAL+xoAtjplC2uCIhy27WiMIjznuMAJR3zjElIiYzMmPSsQ4LZSQ==",
+ "resolved": "5.2.3",
+ "contentHash": "uP0KekbkswuMjo1dbaqu20TxH2Dc3ox2qJDIi837ob2Fq/BliZHuQY9nJdM3UArVrLrsl+xxsx0D6h8m3fOufg==",
"dependencies": {
- "NLog.Extensions.Logging": "5.2.2"
+ "NLog.Extensions.Logging": "5.2.3"
}
},
"NuGet.Frameworks": {
@@ -1689,10 +1689,10 @@
"Monai.Deploy.InformaticsGateway.DicomWeb.Client": "[1.0.0, )",
"Monai.Deploy.Messaging.RabbitMQ": "[0.1.22, )",
"Monai.Deploy.Security": "[0.1.3, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
- "Monai.Deploy.Storage.MinIO": "[0.2.15, )",
- "NLog": "[5.1.2, )",
- "NLog.Web.AspNetCore": "[5.2.2, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
+ "Monai.Deploy.Storage.MinIO": "[0.2.16, )",
+ "NLog": "[5.1.3, )",
+ "NLog.Web.AspNetCore": "[5.2.3, )",
"Polly": "[7.2.3, )",
"Swashbuckle.AspNetCore": "[6.5.0, )",
"fo-dicom": "[5.0.3, )",
@@ -1706,7 +1706,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client": {
@@ -1742,7 +1742,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Client/packages.lock.json b/src/Client/packages.lock.json
index c05865ed2..dafb40686 100644
--- a/src/Client/packages.lock.json
+++ b/src/Client/packages.lock.json
@@ -221,22 +221,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1180,7 +1180,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client.common": {
diff --git a/src/Common/packages.lock.json b/src/Common/packages.lock.json
index b25f865a0..e90e94f81 100644
--- a/src/Common/packages.lock.json
+++ b/src/Common/packages.lock.json
@@ -34,6 +34,12 @@
"resolved": "17.2.3",
"contentHash": "VcozGeE4SxIo0cnXrDHhbrh/Gb8KQnZ3BvMelvh+iw0PrIKtuuA46U2Xm4e4pgnaWFgT4RdZfTpWl/WPRdw0WQ=="
},
+ "System.IO.Abstractions": {
+ "type": "Direct",
+ "requested": "[17.2.3, )",
+ "resolved": "17.2.3",
+ "contentHash": "VcozGeE4SxIo0cnXrDHhbrh/Gb8KQnZ3BvMelvh+iw0PrIKtuuA46U2Xm4e4pgnaWFgT4RdZfTpWl/WPRdw0WQ=="
+ },
"System.Threading.Tasks.Dataflow": {
"type": "Direct",
"requested": "[6.0.0, )",
diff --git a/src/Configuration/Monai.Deploy.InformaticsGateway.Configuration.csproj b/src/Configuration/Monai.Deploy.InformaticsGateway.Configuration.csproj
index 60af37d7f..97441027b 100644
--- a/src/Configuration/Monai.Deploy.InformaticsGateway.Configuration.csproj
+++ b/src/Configuration/Monai.Deploy.InformaticsGateway.Configuration.csproj
@@ -30,7 +30,7 @@
-
+
diff --git a/src/Configuration/RetryConfiguration.cs b/src/Configuration/RetryConfiguration.cs
index f59f4cf5d..fa99b8125 100644
--- a/src/Configuration/RetryConfiguration.cs
+++ b/src/Configuration/RetryConfiguration.cs
@@ -29,7 +29,7 @@ public class RetryConfiguration
/// Default is 250, 500, 1000.
///
[ConfigurationKeyName("delays")]
- public int[] DelaysMilliseconds { get; set; } = new[] { 250, 500, 1000 };
+ public int[] DelaysMilliseconds { get; set; } = new[] { 750, 1200, 2500 };
// Gets the delays in TimeSpan objects
public IEnumerable RetryDelays
diff --git a/src/Configuration/StorageConfiguration.cs b/src/Configuration/StorageConfiguration.cs
index 4437a8cce..6a8575ad2 100644
--- a/src/Configuration/StorageConfiguration.cs
+++ b/src/Configuration/StorageConfiguration.cs
@@ -103,5 +103,12 @@ public class StorageConfiguration : StorageServiceConfiguration
///
[ConfigurationKeyName("concurrentUploads")]
public int ConcurrentUploads { get; set; } = 2;
+
+ ///
+ /// Gets or set the timeout value, in milliseconds, for calls made to the storage service. Default is 5000;
+ /// This applies to the following calls: ListObjectsAsync, VerifyObjectsExistAsync, VerifyObjectExistsAsync, ListObjectsWithCredentialsAsync.
+ ///
+ [ConfigurationKeyName("storageServiceListTimeout")]
+ public int StorageServiceListTimeout { get; set; } = 5000;
}
}
diff --git a/src/Configuration/Test/packages.lock.json b/src/Configuration/Test/packages.lock.json
index 5010223f6..6d012e0f0 100644
--- a/src/Configuration/Test/packages.lock.json
+++ b/src/Configuration/Test/packages.lock.json
@@ -281,22 +281,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1284,7 +1284,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -1304,7 +1304,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
}
diff --git a/src/Configuration/packages.lock.json b/src/Configuration/packages.lock.json
index ed42e7206..955303f12 100644
--- a/src/Configuration/packages.lock.json
+++ b/src/Configuration/packages.lock.json
@@ -35,16 +35,16 @@
},
"Monai.Deploy.Storage": {
"type": "Direct",
- "requested": "[0.2.15, )",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "requested": "[0.2.16, )",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
@@ -208,8 +208,8 @@
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -278,7 +278,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
diff --git a/src/Database/Api/Test/packages.lock.json b/src/Database/Api/Test/packages.lock.json
index 61c16d29f..94e0f6020 100644
--- a/src/Database/Api/Test/packages.lock.json
+++ b/src/Database/Api/Test/packages.lock.json
@@ -294,22 +294,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1305,7 +1305,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -1325,7 +1325,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Database/Api/packages.lock.json b/src/Database/Api/packages.lock.json
index fbf1432b0..c9d55d740 100644
--- a/src/Database/Api/packages.lock.json
+++ b/src/Database/Api/packages.lock.json
@@ -230,22 +230,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -327,7 +327,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -347,7 +347,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
}
diff --git a/src/Database/EntityFramework/Test/packages.lock.json b/src/Database/EntityFramework/Test/packages.lock.json
index 09f501314..f3cacb2ec 100644
--- a/src/Database/EntityFramework/Test/packages.lock.json
+++ b/src/Database/EntityFramework/Test/packages.lock.json
@@ -407,22 +407,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1465,7 +1465,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -1485,7 +1485,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Database/EntityFramework/packages.lock.json b/src/Database/EntityFramework/packages.lock.json
index 3edfc9e3c..83b19f909 100644
--- a/src/Database/EntityFramework/packages.lock.json
+++ b/src/Database/EntityFramework/packages.lock.json
@@ -330,22 +330,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -474,7 +474,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -494,7 +494,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Database/MongoDB/Integration.Test/packages.lock.json b/src/Database/MongoDB/Integration.Test/packages.lock.json
index e849a980d..6232d5932 100644
--- a/src/Database/MongoDB/Integration.Test/packages.lock.json
+++ b/src/Database/MongoDB/Integration.Test/packages.lock.json
@@ -337,22 +337,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1435,7 +1435,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -1455,7 +1455,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Database/MongoDB/packages.lock.json b/src/Database/MongoDB/packages.lock.json
index 09b6a78e4..4971a9653 100644
--- a/src/Database/MongoDB/packages.lock.json
+++ b/src/Database/MongoDB/packages.lock.json
@@ -269,22 +269,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -413,7 +413,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -433,7 +433,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/Database/packages.lock.json b/src/Database/packages.lock.json
index 2627faa1c..ceeec7977 100644
--- a/src/Database/packages.lock.json
+++ b/src/Database/packages.lock.json
@@ -373,22 +373,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -586,7 +586,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.common": {
@@ -606,7 +606,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/DicomWebClient/API/DicomWebClientException.cs b/src/DicomWebClient/API/DicomWebClientException.cs
index 8e571d4dd..256b266cc 100644
--- a/src/DicomWebClient/API/DicomWebClientException.cs
+++ b/src/DicomWebClient/API/DicomWebClientException.cs
@@ -1,5 +1,5 @@
/*
- * Copyright 2021-2022 MONAI Consortium
+ * Copyright 2021-2023 MONAI Consortium
* Copyright 2019-2020 NVIDIA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -44,7 +44,7 @@ public override void GetObjectData(SerializationInfo info, StreamingContext cont
{
if (info == null)
{
- throw new ArgumentNullException("info");
+ throw new ArgumentNullException(nameof(info));
}
info.AddValue(nameof(StatusCode), StatusCode, typeof(HttpStatusCode?));
diff --git a/src/DicomWebClient/Common/HttpResponseMessageExtension.cs b/src/DicomWebClient/Common/HttpResponseMessageExtension.cs
index bd95e9d01..016f2a5ec 100644
--- a/src/DicomWebClient/Common/HttpResponseMessageExtension.cs
+++ b/src/DicomWebClient/Common/HttpResponseMessageExtension.cs
@@ -1,5 +1,5 @@
/*
- * Copyright 2021-2022 MONAI Consortium
+ * Copyright 2021-2023 MONAI Consortium
* Copyright 2019-2020 NVIDIA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -51,7 +51,7 @@ public static async IAsyncEnumerable ToDicomAsyncEnumerable(this Http
{
using (var memoryStream = new MemoryStream(buffer))
{
- yield return await DicomFile.OpenAsync(memoryStream, FileReadOption.ReadAll);
+ yield return await DicomFile.OpenAsync(memoryStream, FileReadOption.ReadAll).ConfigureAwait(false);
}
}
}
@@ -63,7 +63,7 @@ public static async Task ToBinaryData(this HttpResponseMessage response)
{
await foreach (var buffer in DecodeMultipartMessage(response))
{
- await memoryStream.WriteAsync(buffer, 0, buffer.Length);
+ await memoryStream.WriteAsync(buffer, 0, buffer.Length).ConfigureAwait(false);
}
return memoryStream.ToArray();
}
diff --git a/src/DicomWebClient/packages.lock.json b/src/DicomWebClient/packages.lock.json
index de6c58765..b052b6522 100644
--- a/src/DicomWebClient/packages.lock.json
+++ b/src/DicomWebClient/packages.lock.json
@@ -1248,8 +1248,8 @@
"monai.deploy.informaticsgateway.client.common": {
"type": "Project",
"dependencies": {
- "Ardalis.GuardClauses": "[4.0.1, )",
- "System.Text.Json": "[6.0.7, )"
+ "Ardalis.GuardClauses": "4.0.1",
+ "System.Text.Json": "6.0.7"
}
}
}
diff --git a/src/InformaticsGateway/Logging/Log.4000.ObjectUploadService.cs b/src/InformaticsGateway/Logging/Log.4000.ObjectUploadService.cs
index e75d85a44..e6e9957c4 100644
--- a/src/InformaticsGateway/Logging/Log.4000.ObjectUploadService.cs
+++ b/src/InformaticsGateway/Logging/Log.4000.ObjectUploadService.cs
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 MONAI Consortium
+ * Copyright 2023 MONAI Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -53,5 +53,8 @@ public static partial class Log
[LoggerMessage(EventId = 4010, Level = LogLevel.Debug, Message = "File {path} exists={exists}.")]
public static partial void VerifyFileExists(this ILogger logger, string path, bool exists);
+
+ [LoggerMessage(EventId = 4011, Level = LogLevel.Information, Message = "Initializing Object Uploser service with {threads} workers.")]
+ public static partial void InitializeThreads(this ILogger logger, int threads);
}
}
diff --git a/src/InformaticsGateway/Monai.Deploy.InformaticsGateway.csproj b/src/InformaticsGateway/Monai.Deploy.InformaticsGateway.csproj
index a687f2cf0..09e251133 100644
--- a/src/InformaticsGateway/Monai.Deploy.InformaticsGateway.csproj
+++ b/src/InformaticsGateway/Monai.Deploy.InformaticsGateway.csproj
@@ -51,10 +51,10 @@
-
-
-
-
+
+
+
+
diff --git a/src/InformaticsGateway/Services/Connectors/PayloadExtensions.cs b/src/InformaticsGateway/Services/Connectors/PayloadExtensions.cs
index 0a22006a8..255964b7a 100644
--- a/src/InformaticsGateway/Services/Connectors/PayloadExtensions.cs
+++ b/src/InformaticsGateway/Services/Connectors/PayloadExtensions.cs
@@ -30,7 +30,7 @@ public static bool IsUploadCompleted(this Payload payload)
public static bool IsUploadCompletedWithFailures(this Payload payload)
{
- return (payload.FilesFailedToUpload + payload.FilesUploaded) == payload.Count; ;
+ return (payload.FilesFailedToUpload + payload.FilesUploaded) >= payload.Count; ;
}
public static bool IsMoveCompleted(this Payload payload)
diff --git a/src/InformaticsGateway/Services/Connectors/PayloadMoveActionHandler.cs b/src/InformaticsGateway/Services/Connectors/PayloadMoveActionHandler.cs
index 59f10c332..5a2cb375e 100644
--- a/src/InformaticsGateway/Services/Connectors/PayloadMoveActionHandler.cs
+++ b/src/InformaticsGateway/Services/Connectors/PayloadMoveActionHandler.cs
@@ -1,5 +1,5 @@
/*
- * Copyright 2022 MONAI Consortium
+ * Copyright 2023 MONAI Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,13 +26,13 @@
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
-using Minio.Exceptions;
using Monai.Deploy.InformaticsGateway.Api.Storage;
using Monai.Deploy.InformaticsGateway.Common;
using Monai.Deploy.InformaticsGateway.Configuration;
using Monai.Deploy.InformaticsGateway.Database.Api.Repositories;
using Monai.Deploy.InformaticsGateway.Logging;
using Monai.Deploy.Storage.API;
+using Polly;
namespace Monai.Deploy.InformaticsGateway.Services.Connectors
{
@@ -185,13 +185,13 @@ await _storageService.CopyObjectAsync(
await VerifyFileExists(payloadId, file, cancellationToken).ConfigureAwait(false);
}
- catch (ObjectNotFoundException ex) when (ex.ServerMessage.Contains("Not found", StringComparison.OrdinalIgnoreCase)) // TODO: StorageLib shall not throw any errors from MINIO
+ catch (StorageObjectNotFoundException ex) when (ex.Message.Contains("Not found", StringComparison.OrdinalIgnoreCase)) // TODO: StorageLib shall not throw any errors from MINIO
{
// when file cannot be found on the Storage Service, we assume file has been moved previously by verifying the file exists on destination.
_logger.FileMissingInPayload(payloadId, file.GetTempStoragPath(_options.Value.Storage.RemoteTemporaryStoragePath), ex);
await VerifyFileExists(payloadId, file, cancellationToken).ConfigureAwait(false);
}
- catch (ConnectionException ex) // TODO: StorageLib shall not throw any errors from MINIO
+ catch (StorageConnectionException ex)
{
_logger.StorageServiceConnectionError(ex);
throw new PayloadNotifyException(PayloadNotifyException.FailureReason.ServiceUnavailable);
@@ -220,20 +220,35 @@ await _storageService.CopyObjectAsync(
private async Task VerifyFileExists(Guid payloadId, StorageObjectMetadata file, CancellationToken cancellationToken)
{
- var exists = await _storageService.VerifyObjectExistsAsync(_options.Value.Storage.StorageServiceBucketName, file.GetPayloadPath(payloadId), cancellationToken).ConfigureAwait(false);
-
- if (!exists)
- {
- _logger.FileMovedVerificationFailure(payloadId, file.UploadPath);
- throw new PayloadNotifyException(PayloadNotifyException.FailureReason.MoveFailure, false);
- }
+ await Policy
+ .Handle()
+ .WaitAndRetryAsync(
+ _options.Value.Storage.Retries.RetryDelays,
+ (exception, timeSpan, retryCount, context) =>
+ {
+ _logger.ErrorUploadingFileToTemporaryStore(timeSpan, retryCount, exception);
+ })
+ .ExecuteAsync(async () =>
+ {
+ var internalCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
+ internalCancellationTokenSource.CancelAfter(_options.Value.Storage.StorageServiceListTimeout);
+ var exists = await _storageService.VerifyObjectExistsAsync(_options.Value.Storage.StorageServiceBucketName, file.GetPayloadPath(payloadId), cancellationToken).ConfigureAwait(false);
+ if (!exists)
+ {
+ _logger.FileMovedVerificationFailure(payloadId, file.UploadPath);
+ throw new PayloadNotifyException(PayloadNotifyException.FailureReason.MoveFailure, false);
+ }
+ })
+ .ConfigureAwait(false);
}
private async Task LogFilesInMinIo(string bucketName, CancellationToken cancellationToken)
{
try
{
- var listingResults = await _storageService.ListObjectsAsync(bucketName, recursive: true, cancellationToken: cancellationToken).ConfigureAwait(false);
+ var internalCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
+ internalCancellationTokenSource.CancelAfter(_options.Value.Storage.StorageServiceListTimeout);
+ var listingResults = await _storageService.ListObjectsAsync(bucketName, recursive: true, cancellationToken: internalCancellationTokenSource.Token).ConfigureAwait(false);
_logger.FilesFounddOnStorageService(bucketName, listingResults.Count);
var files = new List();
foreach (var item in listingResults)
diff --git a/src/InformaticsGateway/Services/Http/Startup.cs b/src/InformaticsGateway/Services/Http/Startup.cs
index 4e0624a2d..f498e3545 100644
--- a/src/InformaticsGateway/Services/Http/Startup.cs
+++ b/src/InformaticsGateway/Services/Http/Startup.cs
@@ -1,5 +1,5 @@
/*
- * Copyright 2021-2022 MONAI Consortium
+ * Copyright 2021-2023 MONAI Consortium
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,7 +30,6 @@
using Microsoft.OpenApi.Models;
using Monai.Deploy.InformaticsGateway.Api.Rest;
using Monai.Deploy.InformaticsGateway.Database;
-using Monai.Deploy.InformaticsGateway.Database.EntityFramework;
using Monai.Deploy.InformaticsGateway.Services.Fhir;
using Monai.Deploy.Security.Authentication.Extensions;
diff --git a/src/InformaticsGateway/Services/Storage/ObjectUploadService.cs b/src/InformaticsGateway/Services/Storage/ObjectUploadService.cs
index f7a05aad4..89159e3a2 100644
--- a/src/InformaticsGateway/Services/Storage/ObjectUploadService.cs
+++ b/src/InformaticsGateway/Services/Storage/ObjectUploadService.cs
@@ -66,21 +66,22 @@ public ObjectUploadService(
_storageService = _scope.ServiceProvider.GetService() ?? throw new ServiceNotFoundException(nameof(IStorageService));
}
- private void BackgroundProcessing(CancellationToken cancellationToken)
+ private void BackgroundProcessingAsync(CancellationToken cancellationToken)
{
_logger.ServiceRunning(ServiceName);
var tasks = new List();
try
{
+ _logger.InitializeThreads(_configuration.Value.Storage.ConcurrentUploads);
for (var i = 0; i < _configuration.Value.Storage.ConcurrentUploads; i++)
{
tasks.Add(Task.Run(async () =>
{
- await StartWorker(i, cancellationToken).ConfigureAwait(false);
+ await StartWorker(i, _cancellationTokenSource.Token).ConfigureAwait(false);
}, cancellationToken));
}
- Task.WaitAll(tasks.ToArray(), cancellationToken);
+ Task.WaitAll(tasks.ToArray(), _cancellationTokenSource.Token);
}
catch (ObjectDisposedException ex)
{
@@ -104,7 +105,7 @@ private async Task StartWorker(int thread, CancellationToken cancellationToken)
try
{
var item = await _uplaodQueue.Dequeue(cancellationToken).ConfigureAwait(false);
- await ProcessObject(item).ConfigureAwait(false);
+ await ProcessObject(thread, item).ConfigureAwait(false);
}
catch (OperationCanceledException ex)
{
@@ -116,13 +117,15 @@ private async Task StartWorker(int thread, CancellationToken cancellationToken)
_logger.ErrorUploading(ex);
}
}
+ Status = ServiceStatus.Stopped;
+ _logger.ServiceStopping(ServiceName);
}
public Task StartAsync(CancellationToken cancellationToken)
{
var task = Task.Run(() =>
{
- BackgroundProcessing(cancellationToken);
+ BackgroundProcessingAsync(cancellationToken);
}, CancellationToken.None);
Status = ServiceStatus.Running;
@@ -140,11 +143,11 @@ public Task StopAsync(CancellationToken cancellationToken)
return Task.CompletedTask;
}
- private async Task ProcessObject(FileStorageMetadata blob)
+ private async Task ProcessObject(int thread, FileStorageMetadata blob)
{
Guard.Against.Null(blob);
- using var loggerScope = _logger.BeginScope(new LoggingDataDictionary { { "File ID", blob.Id }, { "CorrelationId", blob.CorrelationId } });
+ using var loggerScope = _logger.BeginScope(new LoggingDataDictionary { { "Thread", thread }, { "File ID", blob.Id }, { "CorrelationId", blob.CorrelationId } });
var stopwatch = new Stopwatch();
try
{
@@ -194,23 +197,28 @@ private async Task UploadFileAndConfirm(string identifier, StorageObjectMetadata
{
throw new FileUploadException($"Failed to upload file after retries {identifier}.");
}
- } while (!(await VerifyExists(storageObjectMetadata.GetTempStoragPath(_configuration.Value.Storage.RemoteTemporaryStoragePath)).ConfigureAwait(false)));
+ } while (!(await VerifyExists(storageObjectMetadata.GetTempStoragPath(_configuration.Value.Storage.RemoteTemporaryStoragePath), cancellationToken).ConfigureAwait(false)));
}
- private async Task VerifyExists(string path)
+ private async Task VerifyExists(string path, CancellationToken cancellationToken)
{
- try
- {
- var exists = await _storageService.VerifyObjectExistsAsync(_configuration.Value.Storage.TemporaryStorageBucket, path).ConfigureAwait(false);
-
- _logger.VerifyFileExists(path, exists);
- return exists;
- }
- catch (Exception ex)
- {
- _logger.FailedToVerifyFileExistence(path, ex);
- throw;
- }
+ return await Policy
+ .Handle()
+ .WaitAndRetryAsync(
+ _configuration.Value.Storage.Retries.RetryDelays,
+ (exception, timeSpan, retryCount, context) =>
+ {
+ _logger.ErrorUploadingFileToTemporaryStore(timeSpan, retryCount, exception);
+ })
+ .ExecuteAsync(async () =>
+ {
+ var internalCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(cancellationToken);
+ internalCancellationTokenSource.CancelAfter(_configuration.Value.Storage.StorageServiceListTimeout);
+ var exists = await _storageService.VerifyObjectExistsAsync(_configuration.Value.Storage.TemporaryStorageBucket, path).ConfigureAwait(false);
+ _logger.VerifyFileExists(path, exists);
+ return exists;
+ })
+ .ConfigureAwait(false);
}
private async Task UploadFile(StorageObjectMetadata storageObjectMetadata, string source, List workflows, CancellationToken cancellationToken)
@@ -232,6 +240,8 @@ await Policy
})
.ExecuteAsync(async () =>
{
+ if (storageObjectMetadata.IsUploaded) { return; }
+
storageObjectMetadata.Data.Seek(0, System.IO.SeekOrigin.Begin);
await _storageService.PutObjectAsync(
_configuration.Value.Storage.TemporaryStorageBucket,
@@ -242,9 +252,9 @@ await _storageService.PutObjectAsync(
metadata,
cancellationToken).ConfigureAwait(false);
storageObjectMetadata.SetUploaded(_configuration.Value.Storage.TemporaryStorageBucket);
+ _logger.UploadedFileToTemporaryStore(storageObjectMetadata.TemporaryPath);
})
.ConfigureAwait(false);
- _logger.UploadedFileToTemporaryStore(storageObjectMetadata.TemporaryPath);
}
protected virtual void Dispose(bool disposing)
diff --git a/src/InformaticsGateway/Test/packages.lock.json b/src/InformaticsGateway/Test/packages.lock.json
index 26d8cc094..c2d88800f 100644
--- a/src/InformaticsGateway/Test/packages.lock.json
+++ b/src/InformaticsGateway/Test/packages.lock.json
@@ -986,36 +986,36 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.MinIO": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "hyN7GuTp80y5cpY01IqbzkRCc0QB3y2v7Sppzarsnw6l6FgLJ1ZUgvMN4VDBwVyMNJytBeEKWfgn/FdidGNYaw==",
+ "resolved": "0.2.16",
+ "contentHash": "/J8fylX91D/ePPCHTCgY11nPdADR5MZO239ZZWrK7ZO2ngAvKRmTB4Q6q6JbSErDF1hSk11HGhWCWNDsnK1rAQ==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Minio": "4.0.7",
- "Monai.Deploy.Storage": "0.2.15",
- "Monai.Deploy.Storage.S3Policy": "0.2.15"
+ "Monai.Deploy.Storage": "0.2.16",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -1085,25 +1085,25 @@
},
"NLog": {
"type": "Transitive",
- "resolved": "5.1.2",
- "contentHash": "JfQY93ure3IPVTN3eabBewBGvrcXcWIlaesFEXdy5UzIymfIT9yCgLISYtM0cOhjWziIaUr/6Z9NC2RwtjwrsQ=="
+ "resolved": "5.1.3",
+ "contentHash": "rB8hwjBf1EZCfG5iPfsv3gPksLoJLr1cOrt7PBbJu6VpJgwYJchDzTUT1dhNDdPv0QakXJQJOhE59ErupcznQQ=="
},
"NLog.Extensions.Logging": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "V6sd+0Hrk2XlU//XbUizFYTE8Hf8+xFkhi81shIhsKl4tvWFUYmjBY/zBy/wlQCt0K6mfseaEKnayRJVhIz5Iw==",
+ "resolved": "5.2.3",
+ "contentHash": "TB8zPGV2nVpvWq5C8zIVHPSmnzOHMrXppjsAwHcuJq1Ehs8sC0llnAv5Ysf5Lf/vew9amV/+01MohtRFSDzKdQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
- "NLog": "5.1.2"
+ "NLog": "5.1.3"
}
},
"NLog.Web.AspNetCore": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "0Qa6V7LXgbWNxYdZDLcQz/TjGrSfx32XThxAL+xoAtjplC2uCIhy27WiMIjznuMAJR3zjElIiYzMmPSsQ4LZSQ==",
+ "resolved": "5.2.3",
+ "contentHash": "uP0KekbkswuMjo1dbaqu20TxH2Dc3ox2qJDIi837ob2Fq/BliZHuQY9nJdM3UArVrLrsl+xxsx0D6h8m3fOufg==",
"dependencies": {
- "NLog.Extensions.Logging": "5.2.2"
+ "NLog.Extensions.Logging": "5.2.3"
}
},
"NuGet.Frameworks": {
@@ -1917,10 +1917,10 @@
"Monai.Deploy.InformaticsGateway.DicomWeb.Client": "[1.0.0, )",
"Monai.Deploy.Messaging.RabbitMQ": "[0.1.22, )",
"Monai.Deploy.Security": "[0.1.3, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
- "Monai.Deploy.Storage.MinIO": "[0.2.15, )",
- "NLog": "[5.1.2, )",
- "NLog.Web.AspNetCore": "[5.2.2, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
+ "Monai.Deploy.Storage.MinIO": "[0.2.16, )",
+ "NLog": "[5.1.3, )",
+ "NLog.Web.AspNetCore": "[5.2.3, )",
"Polly": "[7.2.3, )",
"Swashbuckle.AspNetCore": "[6.5.0, )",
"fo-dicom": "[5.0.3, )",
@@ -1934,7 +1934,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client.common": {
@@ -1961,7 +1961,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/src/InformaticsGateway/appsettings.Development.json b/src/InformaticsGateway/appsettings.Development.json
index c8146c334..d2e0ba1b4 100644
--- a/src/InformaticsGateway/appsettings.Development.json
+++ b/src/InformaticsGateway/appsettings.Development.json
@@ -32,6 +32,7 @@
}
},
"storage": {
+ "concurrentUploads": 5,
"localTemporaryStoragePath": "./payloads",
"settings": {
"endpoint": "localhost:9000",
diff --git a/src/InformaticsGateway/packages.lock.json b/src/InformaticsGateway/packages.lock.json
index cfd8553d2..5c5e8d40f 100644
--- a/src/InformaticsGateway/packages.lock.json
+++ b/src/InformaticsGateway/packages.lock.json
@@ -199,47 +199,47 @@
},
"Monai.Deploy.Storage": {
"type": "Direct",
- "requested": "[0.2.15, )",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "requested": "[0.2.16, )",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.MinIO": {
"type": "Direct",
- "requested": "[0.2.15, )",
- "resolved": "0.2.15",
- "contentHash": "hyN7GuTp80y5cpY01IqbzkRCc0QB3y2v7Sppzarsnw6l6FgLJ1ZUgvMN4VDBwVyMNJytBeEKWfgn/FdidGNYaw==",
+ "requested": "[0.2.16, )",
+ "resolved": "0.2.16",
+ "contentHash": "/J8fylX91D/ePPCHTCgY11nPdADR5MZO239ZZWrK7ZO2ngAvKRmTB4Q6q6JbSErDF1hSk11HGhWCWNDsnK1rAQ==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Minio": "4.0.7",
- "Monai.Deploy.Storage": "0.2.15",
- "Monai.Deploy.Storage.S3Policy": "0.2.15"
+ "Monai.Deploy.Storage": "0.2.16",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16"
}
},
"NLog": {
"type": "Direct",
- "requested": "[5.1.2, )",
- "resolved": "5.1.2",
- "contentHash": "JfQY93ure3IPVTN3eabBewBGvrcXcWIlaesFEXdy5UzIymfIT9yCgLISYtM0cOhjWziIaUr/6Z9NC2RwtjwrsQ=="
+ "requested": "[5.1.3, )",
+ "resolved": "5.1.3",
+ "contentHash": "rB8hwjBf1EZCfG5iPfsv3gPksLoJLr1cOrt7PBbJu6VpJgwYJchDzTUT1dhNDdPv0QakXJQJOhE59ErupcznQQ=="
},
"NLog.Web.AspNetCore": {
"type": "Direct",
- "requested": "[5.2.2, )",
- "resolved": "5.2.2",
- "contentHash": "0Qa6V7LXgbWNxYdZDLcQz/TjGrSfx32XThxAL+xoAtjplC2uCIhy27WiMIjznuMAJR3zjElIiYzMmPSsQ4LZSQ==",
+ "requested": "[5.2.3, )",
+ "resolved": "5.2.3",
+ "contentHash": "uP0KekbkswuMjo1dbaqu20TxH2Dc3ox2qJDIi837ob2Fq/BliZHuQY9nJdM3UArVrLrsl+xxsx0D6h8m3fOufg==",
"dependencies": {
- "NLog.Extensions.Logging": "5.2.2"
+ "NLog.Extensions.Logging": "5.2.3"
}
},
"Polly": {
@@ -753,8 +753,8 @@
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -824,12 +824,12 @@
},
"NLog.Extensions.Logging": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "V6sd+0Hrk2XlU//XbUizFYTE8Hf8+xFkhi81shIhsKl4tvWFUYmjBY/zBy/wlQCt0K6mfseaEKnayRJVhIz5Iw==",
+ "resolved": "5.2.3",
+ "contentHash": "TB8zPGV2nVpvWq5C8zIVHPSmnzOHMrXppjsAwHcuJq1Ehs8sC0llnAv5Ysf5Lf/vew9amV/+01MohtRFSDzKdQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
- "NLog": "5.1.2"
+ "NLog": "5.1.3"
}
},
"RabbitMQ.Client": {
@@ -1567,7 +1567,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client.common": {
@@ -1594,7 +1594,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},
diff --git a/tests/Integration.Test/Monai.Deploy.InformaticsGateway.Integration.Test.csproj b/tests/Integration.Test/Monai.Deploy.InformaticsGateway.Integration.Test.csproj
index 90ae6bb79..eea628e76 100644
--- a/tests/Integration.Test/Monai.Deploy.InformaticsGateway.Integration.Test.csproj
+++ b/tests/Integration.Test/Monai.Deploy.InformaticsGateway.Integration.Test.csproj
@@ -35,7 +35,7 @@
-
+
diff --git a/tests/Integration.Test/packages.lock.json b/tests/Integration.Test/packages.lock.json
index 2a7ea4b36..a7b910c66 100644
--- a/tests/Integration.Test/packages.lock.json
+++ b/tests/Integration.Test/packages.lock.json
@@ -140,17 +140,17 @@
},
"Monai.Deploy.Storage.MinIO": {
"type": "Direct",
- "requested": "[0.2.15, )",
- "resolved": "0.2.15",
- "contentHash": "hyN7GuTp80y5cpY01IqbzkRCc0QB3y2v7Sppzarsnw6l6FgLJ1ZUgvMN4VDBwVyMNJytBeEKWfgn/FdidGNYaw==",
+ "requested": "[0.2.16, )",
+ "resolved": "0.2.16",
+ "contentHash": "/J8fylX91D/ePPCHTCgY11nPdADR5MZO239ZZWrK7ZO2ngAvKRmTB4Q6q6JbSErDF1hSk11HGhWCWNDsnK1rAQ==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Minio": "4.0.7",
- "Monai.Deploy.Storage": "0.2.15",
- "Monai.Deploy.Storage.S3Policy": "0.2.15"
+ "Monai.Deploy.Storage": "0.2.16",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16"
}
},
"Moq": {
@@ -833,22 +833,22 @@
},
"Monai.Deploy.Storage": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "5VCzUVZek/1LB+4V7l2Ubg1gqzxn4wVPrpZG9SqCsUYtXBzpY73ohmyCXE0PpgO1z6WpWKH3IaYOJqWvAUeFXw==",
+ "resolved": "0.2.16",
+ "contentHash": "UVu9yyiJf4mYlz1H6g29LXdYv5RRFcttudTczA3w3SuGQ5u3fEIRbDaWuTjFjaaLor+IuibGaob6c1L6ACH7kg==",
"dependencies": {
"AWSSDK.SecurityToken": "3.7.101.26",
"Ardalis.GuardClauses": "4.0.1",
"Microsoft.Extensions.Configuration": "6.0.1",
"Microsoft.Extensions.Diagnostics.HealthChecks": "6.0.15",
"Microsoft.Extensions.Logging": "6.0.0",
- "Monai.Deploy.Storage.S3Policy": "0.2.15",
+ "Monai.Deploy.Storage.S3Policy": "0.2.16",
"System.IO.Abstractions": "17.2.3"
}
},
"Monai.Deploy.Storage.S3Policy": {
"type": "Transitive",
- "resolved": "0.2.15",
- "contentHash": "0+FCC5nltIDEXuBAJSDba2DUTm+yQ7KgZLavASt5wyF842VtTcLTG2uPHfHy+nJ6hfT7zCoBEsVup3g9KGC56w==",
+ "resolved": "0.2.16",
+ "contentHash": "KfiAW28llXSlDLgGwAeBCZGns9/5D/wHVOKt2NxzeiJpp0fR3VspQIbuHO1cbn4GcDM7tL0Se4gR494rHGoz4g==",
"dependencies": {
"Ardalis.GuardClauses": "4.0.1",
"Newtonsoft.Json": "13.0.3"
@@ -918,25 +918,25 @@
},
"NLog": {
"type": "Transitive",
- "resolved": "5.1.2",
- "contentHash": "JfQY93ure3IPVTN3eabBewBGvrcXcWIlaesFEXdy5UzIymfIT9yCgLISYtM0cOhjWziIaUr/6Z9NC2RwtjwrsQ=="
+ "resolved": "5.1.3",
+ "contentHash": "rB8hwjBf1EZCfG5iPfsv3gPksLoJLr1cOrt7PBbJu6VpJgwYJchDzTUT1dhNDdPv0QakXJQJOhE59ErupcznQQ=="
},
"NLog.Extensions.Logging": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "V6sd+0Hrk2XlU//XbUizFYTE8Hf8+xFkhi81shIhsKl4tvWFUYmjBY/zBy/wlQCt0K6mfseaEKnayRJVhIz5Iw==",
+ "resolved": "5.2.3",
+ "contentHash": "TB8zPGV2nVpvWq5C8zIVHPSmnzOHMrXppjsAwHcuJq1Ehs8sC0llnAv5Ysf5Lf/vew9amV/+01MohtRFSDzKdQ==",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
- "NLog": "5.1.2"
+ "NLog": "5.1.3"
}
},
"NLog.Web.AspNetCore": {
"type": "Transitive",
- "resolved": "5.2.2",
- "contentHash": "0Qa6V7LXgbWNxYdZDLcQz/TjGrSfx32XThxAL+xoAtjplC2uCIhy27WiMIjznuMAJR3zjElIiYzMmPSsQ4LZSQ==",
+ "resolved": "5.2.3",
+ "contentHash": "uP0KekbkswuMjo1dbaqu20TxH2Dc3ox2qJDIi837ob2Fq/BliZHuQY9nJdM3UArVrLrsl+xxsx0D6h8m3fOufg==",
"dependencies": {
- "NLog.Extensions.Logging": "5.2.2"
+ "NLog.Extensions.Logging": "5.2.3"
}
},
"NuGet.Frameworks": {
@@ -1812,10 +1812,10 @@
"Monai.Deploy.InformaticsGateway.DicomWeb.Client": "[1.0.0, )",
"Monai.Deploy.Messaging.RabbitMQ": "[0.1.22, )",
"Monai.Deploy.Security": "[0.1.3, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
- "Monai.Deploy.Storage.MinIO": "[0.2.15, )",
- "NLog": "[5.1.2, )",
- "NLog.Web.AspNetCore": "[5.2.2, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
+ "Monai.Deploy.Storage.MinIO": "[0.2.16, )",
+ "NLog": "[5.1.3, )",
+ "NLog.Web.AspNetCore": "[5.2.3, )",
"Polly": "[7.2.3, )",
"Swashbuckle.AspNetCore": "[6.5.0, )",
"fo-dicom": "[5.0.3, )",
@@ -1829,7 +1829,7 @@
"Microsoft.EntityFrameworkCore.Abstractions": "[6.0.15, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )"
+ "Monai.Deploy.Storage": "[0.2.16, )"
}
},
"monai.deploy.informaticsgateway.client": {
@@ -1865,7 +1865,7 @@
"Monai.Deploy.InformaticsGateway.Api": "[1.0.0, )",
"Monai.Deploy.InformaticsGateway.Common": "[1.0.0, )",
"Monai.Deploy.Messaging": "[0.1.22, )",
- "Monai.Deploy.Storage": "[0.2.15, )",
+ "Monai.Deploy.Storage": "[0.2.16, )",
"System.IO.Abstractions": "[17.2.3, )"
}
},