Skip to content

Commit ace2d0c

Browse files
committed
移除补偿cron表达式
1 parent dfc3984 commit ace2d0c

10 files changed

+49
-34
lines changed

samples/Sample.SqlServer/Startup.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System;
1111
using System.Collections.Generic;
1212
using System.Diagnostics;
13+
using ShardingCore.Helpers;
1314
using ShardingCore.Sharding.ReadWriteConfigurations;
1415

1516
namespace Sample.SqlServer

src/ShardingCore/VirtualRoutes/Abstractions/AbstractShardingAutoCreateOperatorVirtualTableRoute.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,11 @@ public override void Initialize(EntityMetadata entityMetadata, IShardingProvider
9191
/// </summary>
9292
public virtual int IncrementMinutes => 10;
9393

94-
public string[] GetJobCronExpressions()
94+
public virtual string[] GetJobCronExpressions()
9595
{
96-
var cronExpressions = GetCronExpressions();
97-
var compensateCronExpressions = GetCompensateCronExpressions();
98-
return cronExpressions.Concat(compensateCronExpressions).Distinct().ToArray();
96+
return GetCronExpressions();
9997
}
10098
/// <summary>
101-
/// 补偿cron防止提前创建后没有添加tail到内存中从而无法识别
102-
/// </summary>
103-
/// <returns></returns>
104-
public abstract string[] GetCompensateCronExpressions();
105-
/// <summary>
10699
/// 重写改方法后请一起重写IncrementMinutes值,比如你按月分表但是你设置cron表达式为月中的时候建表,
107100
/// 那么会在月中的时候 <code>DateTime.Now.AddMinutes(IncrementMinutes);</code>来获取tail会导致还是当月的所以不会建表
108101
/// </summary>

src/ShardingCore/VirtualRoutes/Days/AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute.cs

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using ShardingCore.VirtualRoutes.Abstractions;
33
using System;
44
using System.Collections.Generic;
5+
using System.Linq;
56

67
namespace ShardingCore.VirtualRoutes.Days
78
{
@@ -11,13 +12,16 @@ namespace ShardingCore.VirtualRoutes.Days
1112
* @Date: Wednesday, 27 January 2021 08:41:05
1213
* @Email: 326308290@qq.com
1314
*/
14-
public abstract class AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute<TEntity>:AbstractShardingTimeKeyDateTimeVirtualTableRoute<TEntity> where TEntity:class
15+
public abstract class
16+
AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute<TEntity> :
17+
AbstractShardingTimeKeyDateTimeVirtualTableRoute<TEntity> where TEntity : class
1518
{
1619
/// <summary>
1720
/// begin time use fixed time eg.new DateTime(20xx,xx,xx)
1821
/// </summary>
1922
/// <returns></returns>
2023
public abstract DateTime GetBeginTime();
24+
2125
/// <summary>
2226
/// 这个方法会在程序启动的时候被调用,后续整个生命周期将不会被调用,仅用来告诉框架启动的时候有多少张TEntity对象的后缀表,
2327
/// 然后会在启动的时候添加到 <see cref="IVirtualTable{TEntity}.AddPhysicTable(IPhysicTable physicTable)"/>
@@ -26,8 +30,8 @@ public abstract class AbstractSimpleShardingDayKeyDateTimeVirtualTableRoute<TEnt
2630
protected override List<string> CalcTailsOnStart()
2731
{
2832
var beginTime = GetBeginTime().Date;
29-
30-
var tails=new List<string>();
33+
34+
var tails = new List<string>();
3135
//提前创建表
3236
var nowTimeStamp = DateTime.Now.Date;
3337
if (beginTime > nowTimeStamp)
@@ -39,8 +43,10 @@ protected override List<string> CalcTailsOnStart()
3943
tails.Add(tail);
4044
currentTimeStamp = currentTimeStamp.AddDays(1);
4145
}
46+
4247
return tails;
4348
}
49+
4450
protected override string TimeFormatToTail(DateTime time)
4551
{
4652
return $"{time:yyyyMMdd}";
@@ -53,22 +59,22 @@ public override Func<string, bool> GetRouteToFilter(DateTime shardingKey, Shardi
5359
{
5460
case ShardingOperatorEnum.GreaterThan:
5561
case ShardingOperatorEnum.GreaterThanOrEqual:
56-
return tail =>String.Compare(tail, t, StringComparison.Ordinal) >= 0;
62+
return tail => String.Compare(tail, t, StringComparison.Ordinal) >= 0;
5763
case ShardingOperatorEnum.LessThan:
5864
{
5965
var shardingKeyDate = shardingKey.Date;
6066
//处于临界值 o=>o.time < [2021-01-01 00:00:00] 尾巴20210101不应该被返回
6167
if (shardingKeyDate == shardingKey)
62-
return tail =>String.Compare(tail, t, StringComparison.Ordinal) < 0;
63-
return tail =>String.Compare(tail, t, StringComparison.Ordinal) <= 0;
68+
return tail => String.Compare(tail, t, StringComparison.Ordinal) < 0;
69+
return tail => String.Compare(tail, t, StringComparison.Ordinal) <= 0;
6470
}
6571
case ShardingOperatorEnum.LessThanOrEqual:
66-
return tail =>String.Compare(tail, t, StringComparison.Ordinal) <= 0;
72+
return tail => String.Compare(tail, t, StringComparison.Ordinal) <= 0;
6773
case ShardingOperatorEnum.Equal: return tail => tail == t;
6874
default:
6975
{
7076
#if DEBUG
71-
Console.WriteLine($"shardingOperator is not equal scan all table tail");
77+
Console.WriteLine($"shardingOperator is not equal scan all table tail");
7278
#endif
7379
return tail => true;
7480
}
@@ -85,10 +91,10 @@ public override string[] GetCronExpressions()
8591
};
8692
}
8793

88-
public override string[] GetCompensateCronExpressions()
94+
public override string[] GetJobCronExpressions()
8995
{
90-
return new[] { "0 0 0 * * ?" };
96+
var crons = base.GetJobCronExpressions().Concat(new[] { "0 0 0 * * ?" }).Distinct().ToArray();
97+
return crons;
9198
}
92-
9399
}
94100
}

src/ShardingCore/VirtualRoutes/Days/AbstractSimpleShardingDayKeyLongVirtualTableRoute.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67
using System.Linq.Expressions;
78

89
namespace ShardingCore.VirtualRoutes.Days
@@ -80,9 +81,11 @@ public override string[] GetCronExpressions()
8081
"0 1 0 * * ?",
8182
};
8283
}
83-
public override string[] GetCompensateCronExpressions()
84+
85+
public override string[] GetJobCronExpressions()
8486
{
85-
return new[] { "0 0 0 * * ?" };
87+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 * * ?" }).Distinct().ToArray();
88+
return crons;
8689
}
8790
}
8891
}

src/ShardingCore/VirtualRoutes/Months/AbstractSimpleShardingMonthKeyDateTimeVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67
using System.Linq.Expressions;
78

89
namespace ShardingCore.VirtualRoutes.Months
@@ -76,9 +77,10 @@ public override string[] GetCronExpressions()
7677
"0 1 0 1 * ?",
7778
};
7879
}
79-
public override string[] GetCompensateCronExpressions()
80+
public override string[] GetJobCronExpressions()
8081
{
81-
return new[] { "0 0 0 1 * ?" };
82+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 1 * ?"}).Distinct().ToArray();
83+
return crons;
8284
}
8385

8486
}

src/ShardingCore/VirtualRoutes/Months/AbstractSimpleShardingMonthKeyLongVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67
using System.Linq.Expressions;
78

89
namespace ShardingCore.VirtualRoutes.Months
@@ -79,9 +80,10 @@ public override string[] GetCronExpressions()
7980
"0 1 0 1 * ?",
8081
};
8182
}
82-
public override string[] GetCompensateCronExpressions()
83+
public override string[] GetJobCronExpressions()
8384
{
84-
return new[] { "0 0 0 1 * ?" };
85+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 1 * ?"}).Distinct().ToArray();
86+
return crons;
8587
}
8688
}
8789
}

src/ShardingCore/VirtualRoutes/Weeks/AbstractSimpleShardingWeekKeyDateTimeVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67
using System.Linq.Expressions;
78

89
namespace ShardingCore.VirtualRoutes.Weeks
@@ -78,9 +79,10 @@ public override string[] GetCronExpressions()
7879
"0 1 0 ? * 2",
7980
};
8081
}
81-
public override string[] GetCompensateCronExpressions()
82+
public override string[] GetJobCronExpressions()
8283
{
83-
return new[] { "0 0 0 ? * 2" };
84+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 ? * 2"}).Distinct().ToArray();
85+
return crons;
8486
}
8587

8688
}

src/ShardingCore/VirtualRoutes/Weeks/AbstractSimpleShardingWeekKeyLongVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67

78
namespace ShardingCore.VirtualRoutes.Weeks
89
{
@@ -81,9 +82,10 @@ public override string[] GetCronExpressions()
8182
"0 1 0 ? * 2",
8283
};
8384
}
84-
public override string[] GetCompensateCronExpressions()
85+
public override string[] GetJobCronExpressions()
8586
{
86-
return new[] { "0 0 0 ? * 2" };
87+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 ? * 2"}).Distinct().ToArray();
88+
return crons;
8789
}
8890
}
8991
}

src/ShardingCore/VirtualRoutes/Years/AbstractSimpleShardingYearKeyDateTimeVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using ShardingCore.VirtualRoutes.Abstractions;
33
using System;
44
using System.Collections.Generic;
5+
using System.Linq;
56
using System.Linq.Expressions;
67

78
namespace ShardingCore.VirtualRoutes.Years
@@ -78,9 +79,10 @@ public override string[] GetCronExpressions()
7879
"0 1 0 1 1 ?",
7980
};
8081
}
81-
public override string[] GetCompensateCronExpressions()
82+
public override string[] GetJobCronExpressions()
8283
{
83-
return new[] { "0 0 0 1 1 ?" };
84+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 1 1 ?"}).Distinct().ToArray();
85+
return crons;
8486
}
8587
}
8688
}

src/ShardingCore/VirtualRoutes/Years/AbstractSimpleShardingYearKeyLongVirtualTableRoute.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using ShardingCore.VirtualRoutes.Abstractions;
44
using System;
55
using System.Collections.Generic;
6+
using System.Linq;
67
using System.Linq.Expressions;
78

89
namespace ShardingCore.VirtualRoutes.Years
@@ -102,9 +103,10 @@ public override string[] GetCronExpressions()
102103
"0 1 0 1 1 ?",
103104
};
104105
}
105-
public override string[] GetCompensateCronExpressions()
106+
public override string[] GetJobCronExpressions()
106107
{
107-
return new[] { "0 0 0 1 1 ?" };
108+
var crons = base.GetJobCronExpressions().Concat(new []{"0 0 0 1 1 ?"}).Distinct().ToArray();
109+
return crons;
108110
}
109111
}
110112
}

0 commit comments

Comments
 (0)