diff --git a/NineChronicles.Headless.AccessControlCenter/Controllers/AccessControlServiceController.cs b/NineChronicles.Headless.AccessControlCenter/Controllers/AccessControlServiceController.cs index 2e9658ecb..4888a6458 100644 --- a/NineChronicles.Headless.AccessControlCenter/Controllers/AccessControlServiceController.cs +++ b/NineChronicles.Headless.AccessControlCenter/Controllers/AccessControlServiceController.cs @@ -27,7 +27,7 @@ public AccessControlServiceController(IMutableAccessControlService accessControl [HttpGet("entries/{address}")] public ActionResult GetTxQuota(string address) { - var result = _accessControlService.GetTxQuota(new Address(address)); + var result = _accessControlService.GetTxQuotaAsync(new Address(address)).Result; return result != null ? result : NotFound(); } diff --git a/NineChronicles.Headless/Services/RedisAccessControlService.cs b/NineChronicles.Headless/Services/RedisAccessControlService.cs index 4dce4a4f3..78a3aec7c 100644 --- a/NineChronicles.Headless/Services/RedisAccessControlService.cs +++ b/NineChronicles.Headless/Services/RedisAccessControlService.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; using StackExchange.Redis; using Libplanet.Crypto; using Nekoyume.Blockchain; @@ -23,18 +24,17 @@ public RedisAccessControlService(string storageUri) _db = redis.GetDatabase(); } - public int? GetTxQuota(Address address) + public async Task GetTxQuotaAsync(Address address) { try { - RedisValue result = _db.StringGet(address.ToString()); - + RedisValue result = await _db.StringGetAsync(address.ToString()); return !result.IsNull ? Convert.ToInt32(result) : null; } - catch (RedisTimeoutException) + catch (RedisTimeoutException ex) { Log.ForContext("Source", nameof(IAccessControlService)) - .Error("\"{Address}\" Redis timeout.", address); + .Error(ex, "\"{Address}\" Redis timeout encountered.", address); return null; } } diff --git a/NineChronicles.Headless/Services/RestAPIAccessControlService.cs b/NineChronicles.Headless/Services/RestAPIAccessControlService.cs index 733159334..73c39d306 100644 --- a/NineChronicles.Headless/Services/RestAPIAccessControlService.cs +++ b/NineChronicles.Headless/Services/RestAPIAccessControlService.cs @@ -21,7 +21,7 @@ public RestAPIAccessControlService(string baseUrl) }; } - public int? GetTxQuota(Address address) + public Task GetTxQuotaAsync(Address address) { try { @@ -31,7 +31,7 @@ public RestAPIAccessControlService(string baseUrl) if (response.IsSuccessStatusCode) { string resultString = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); - return Convert.ToInt32(resultString); + return Task.FromResult(Convert.ToInt32(resultString)); } } catch (TaskCanceledException) @@ -45,7 +45,7 @@ public RestAPIAccessControlService(string baseUrl) .Error(ex, "HttpRequestException occurred for \"{Address}\".", address); } - return null; + return Task.FromResult(null); } } } diff --git a/NineChronicles.Headless/Services/SQLiteAccessControlService.cs b/NineChronicles.Headless/Services/SQLiteAccessControlService.cs index 1ddfaac65..1d370432d 100644 --- a/NineChronicles.Headless/Services/SQLiteAccessControlService.cs +++ b/NineChronicles.Headless/Services/SQLiteAccessControlService.cs @@ -1,4 +1,5 @@ using System; +using System.Threading.Tasks; using Microsoft.Data.Sqlite; using Libplanet.Crypto; using Nekoyume.Blockchain; @@ -34,7 +35,7 @@ public SQLiteAccessControlService(string connectionString) } } - public int? GetTxQuota(Address address) + public Task GetTxQuotaAsync(Address address) { try { @@ -49,7 +50,7 @@ public SQLiteAccessControlService(string connectionString) if (queryResult != null && queryResult != DBNull.Value) { - return Convert.ToInt32(queryResult); + return Task.FromResult(Convert.ToInt32(queryResult)); } } catch (Exception ex) @@ -57,7 +58,7 @@ public SQLiteAccessControlService(string connectionString) Log.Error(ex, "An error occurred while getting transaction quota."); } - return null; + return Task.FromResult(null); } private void ExecuteNonQuery(SqliteConnection connection, string commandText)