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, )" } },