diff --git a/aspnet-core/modules/task-management/LINGYUN.Abp.Elasticsearch.Jobs/LINGYUN/Abp/Elasticsearch/Jobs/ExpiredIndicesCleanupJob.cs b/aspnet-core/modules/task-management/LINGYUN.Abp.Elasticsearch.Jobs/LINGYUN/Abp/Elasticsearch/Jobs/ExpiredIndicesCleanupJob.cs
index 8817d765f..3500ea0b6 100644
--- a/aspnet-core/modules/task-management/LINGYUN.Abp.Elasticsearch.Jobs/LINGYUN/Abp/Elasticsearch/Jobs/ExpiredIndicesCleanupJob.cs
+++ b/aspnet-core/modules/task-management/LINGYUN.Abp.Elasticsearch.Jobs/LINGYUN/Abp/Elasticsearch/Jobs/ExpiredIndicesCleanupJob.cs
@@ -1,5 +1,5 @@
-using LINGYUN.Abp.BackgroundTasks;
-using System;
+using Elastic.Transport.Products.Elasticsearch;
+using LINGYUN.Abp.BackgroundTasks;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Timing;
@@ -20,10 +20,6 @@ public class ExpiredIndicesCleanupJob : IJobRunnable
PropertyIndexPrefix,
LocalizableStatic.Create("Indices:IndexPrefix"),
required: true),
- new JobDefinitionParamter(
- PropertyTimeZone,
- LocalizableStatic.Create("Indices:TimeZone"),
- LocalizableStatic.Create("Indices:TimeZoneDesc")),
new JobDefinitionParamter(
PropertyExpirationTime,
LocalizableStatic.Create("Indices:ExpirationTime")),
@@ -35,10 +31,6 @@ public class ExpiredIndicesCleanupJob : IJobRunnable
///
private const string PropertyIndexPrefix = "IndexPrefix";
///
- /// 计算时差的时区, 默认Utc
- ///
- private const string PropertyTimeZone = "TimeZone";
- ///
/// 过期时间, 单位秒, 默认 5184000 (60天)
///
private const string PropertyExpirationTime = "ExpirationTime";
@@ -49,26 +41,14 @@ public class ExpiredIndicesCleanupJob : IJobRunnable
{
#region Initializes Job Parameters
- var timeZone = TimeZoneInfo.Utc;
var indexPrefix = context.GetString(PropertyIndexPrefix);
- var timeZoneString = context.GetOrDefaultString(PropertyTimeZone, "utc");
var expirationSecond = context.GetOrDefaultJobData(PropertyExpirationTime, 5184000L);
- if (!timeZoneString.IsNullOrWhiteSpace())
- {
- timeZone = timeZoneString.ToLowerInvariant() switch
- {
- "local" => TimeZoneInfo.Local,
- _ => TimeZoneInfo.Utc,
- };
- }
-
var elasticClientFactory = context.GetRequiredService();
var elasticClient = elasticClientFactory.Create();
var clock = context.GetRequiredService();
var expirationTime = clock.Now.AddSeconds(-expirationSecond);
- var startTime = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc), timeZone);
var removeIndices = new List();
#endregion
@@ -76,23 +56,21 @@ public class ExpiredIndicesCleanupJob : IJobRunnable
#region ES indices.get_settings API
// GET demo*/_settings
- var settingResponse = await elasticClient.Indices.GetSettingsAsync(indexPrefix);
- if (!settingResponse.IsValid)
+ var indexResponse = await elasticClient.Indices.GetAsync(indexPrefix);
+ if (!indexResponse.IsValidResponse)
{
- throw new AbpJobExecutionException(GetType(), settingResponse.ServerError.ToString(), settingResponse.OriginalException);
+ indexResponse.TryGetOriginalException(out var originalException);
+ indexResponse.TryGetElasticsearchServerError(out var elasticsearchServerError);
+ throw new AbpJobExecutionException(GetType(), elasticsearchServerError?.ToString(), originalException);
}
- foreach (var indexSet in settingResponse.Indices)
+ foreach (var index in indexResponse.Indices)
{
// 索引创建日期
- if (indexSet.Value.Settings.TryGetValue("index.creation_date", out var indexSetV) &&
- long.TryParse(indexSetV.ToString(), out var timestamp))
+ if (index.Value.Settings?.CreationDate <= expirationTime ||
+ index.Value.Settings?.Index?.CreationDate <= expirationTime)
{
- var indexCreationDate = startTime.AddMilliseconds(timestamp);
- if (indexCreationDate <= expirationTime)
- {
- removeIndices.Add(indexSet.Key.Name);
- }
+ removeIndices.Add(index.Key);
}
}
@@ -103,9 +81,11 @@ public class ExpiredIndicesCleanupJob : IJobRunnable
foreach (var index in removeIndices)
{
var delResponse = await elasticClient.Indices.DeleteAsync(index);
- if (!delResponse.IsValid)
+ if (!delResponse.IsValidResponse)
{
- throw new AbpJobExecutionException(GetType(), delResponse.ServerError.ToString(), delResponse.OriginalException);
+ delResponse.TryGetOriginalException(out var originalException);
+ delResponse.TryGetElasticsearchServerError(out var elasticsearchServerError);
+ throw new AbpJobExecutionException(GetType(), elasticsearchServerError?.ToString(), originalException);
}
}