Browse Source

Merge pull request #16335 from abpframework/auto-merge/rel-7-2/1882

Merge branch dev with rel-7.2
pull/16351/head
Halil İbrahim Kalkan 4 years ago
committed by GitHub
parent
commit
b30d14be80
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs
  2. 54
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/StaticFeatureSaver.cs
  3. 9
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs
  4. 59
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs

9
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/AbpFeatureManagementDomainModule.cs

@ -133,7 +133,14 @@ public class AbpFeatureManagementDomainModule : AbpModule
await Policy await Policy
.Handle<Exception>() .Handle<Exception>()
.WaitAndRetryAsync(8, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt) * 10)) .WaitAndRetryAsync(
8,
retryAttempt => TimeSpan.FromSeconds(
RandomHelper.GetRandom(
(int)Math.Pow(2, retryAttempt) * 8,
(int)Math.Pow(2, retryAttempt) * 12)
)
)
.ExecuteAsync(async _ => .ExecuteAsync(async _ =>
{ {
try try

54
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain/Volo/Abp/FeatureManagement/StaticFeatureSaver.cs

@ -27,6 +27,8 @@ public class StaticFeatureSaver : IStaticFeatureSaver, ITransientDependency
protected AbpFeatureOptions FeatureOptions { get; } protected AbpFeatureOptions FeatureOptions { get; }
protected ICancellationTokenProvider CancellationTokenProvider { get; } protected ICancellationTokenProvider CancellationTokenProvider { get; }
protected AbpDistributedCacheOptions CacheOptions { get; } protected AbpDistributedCacheOptions CacheOptions { get; }
protected IUnitOfWorkManager UnitOfWorkManager { get; }
public StaticFeatureSaver( public StaticFeatureSaver(
IStaticFeatureDefinitionStore staticStore, IStaticFeatureDefinitionStore staticStore,
@ -38,7 +40,8 @@ public class StaticFeatureSaver : IStaticFeatureSaver, ITransientDependency
IApplicationInfoAccessor applicationInfoAccessor, IApplicationInfoAccessor applicationInfoAccessor,
IAbpDistributedLock distributedLock, IAbpDistributedLock distributedLock,
IOptions<AbpFeatureOptions> featureManagementOptions, IOptions<AbpFeatureOptions> featureManagementOptions,
ICancellationTokenProvider cancellationTokenProvider) ICancellationTokenProvider cancellationTokenProvider,
IUnitOfWorkManager unitOfWorkManager)
{ {
StaticStore = staticStore; StaticStore = staticStore;
FeatureGroupRepository = featureGroupRepository; FeatureGroupRepository = featureGroupRepository;
@ -48,12 +51,12 @@ public class StaticFeatureSaver : IStaticFeatureSaver, ITransientDependency
ApplicationInfoAccessor = applicationInfoAccessor; ApplicationInfoAccessor = applicationInfoAccessor;
DistributedLock = distributedLock; DistributedLock = distributedLock;
CancellationTokenProvider = cancellationTokenProvider; CancellationTokenProvider = cancellationTokenProvider;
UnitOfWorkManager = unitOfWorkManager;
FeatureOptions = featureManagementOptions.Value; FeatureOptions = featureManagementOptions.Value;
CacheOptions = cacheOptions.Value; CacheOptions = cacheOptions.Value;
} }
[UnitOfWork] public async Task SaveAsync()
public virtual async Task SaveAsync()
{ {
await using var applicationLockHandle = await DistributedLock.TryAcquireAsync( await using var applicationLockHandle = await DistributedLock.TryAcquireAsync(
GetApplicationDistributedLockKey() GetApplicationDistributedLockKey()
@ -99,19 +102,40 @@ public class StaticFeatureSaver : IStaticFeatureSaver, ITransientDependency
throw new AbpException("Could not acquire distributed lock for saving static features!"); throw new AbpException("Could not acquire distributed lock for saving static features!");
} }
var hasChangesInGroups = await UpdateChangedFeatureGroupsAsync(featureGroupRecords); using (var unitOfWork = UnitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
var hasChangesInFeatures = await UpdateChangedFeaturesAsync(featureRecords);
if (hasChangesInGroups ||hasChangesInFeatures)
{ {
await Cache.SetStringAsync( try
GetCommonStampCacheKey(), {
Guid.NewGuid().ToString(), var hasChangesInGroups = await UpdateChangedFeatureGroupsAsync(featureGroupRecords);
new DistributedCacheEntryOptions { var hasChangesInFeatures = await UpdateChangedFeaturesAsync(featureRecords);
SlidingExpiration = TimeSpan.FromDays(30) //TODO: Make it configurable?
}, if (hasChangesInGroups ||hasChangesInFeatures)
CancellationTokenProvider.Token {
); await Cache.SetStringAsync(
GetCommonStampCacheKey(),
Guid.NewGuid().ToString(),
new DistributedCacheEntryOptions {
SlidingExpiration = TimeSpan.FromDays(30) //TODO: Make it configurable?
},
CancellationTokenProvider.Token
);
}
}
catch
{
try
{
await unitOfWork.RollbackAsync();
}
catch
{
/* ignored */
}
throw;
}
await unitOfWork.CompleteAsync();
} }
} }

9
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/AbpPermissionManagementDomainModule.cs

@ -118,7 +118,14 @@ public class AbpPermissionManagementDomainModule : AbpModule
await Policy await Policy
.Handle<Exception>() .Handle<Exception>()
.WaitAndRetryAsync(8, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt) * 10)) .WaitAndRetryAsync(
8,
retryAttempt => TimeSpan.FromSeconds(
RandomHelper.GetRandom(
(int)Math.Pow(2, retryAttempt) * 8,
(int)Math.Pow(2, retryAttempt) * 12)
)
)
.ExecuteAsync(async _ => .ExecuteAsync(async _ =>
{ {
try try

59
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain/Volo/Abp/PermissionManagement/StaticPermissionSaver.cs

@ -28,6 +28,8 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
protected ICancellationTokenProvider CancellationTokenProvider { get; } protected ICancellationTokenProvider CancellationTokenProvider { get; }
protected AbpDistributedCacheOptions CacheOptions { get; } protected AbpDistributedCacheOptions CacheOptions { get; }
protected IUnitOfWorkManager UnitOfWorkManager { get; }
public StaticPermissionSaver( public StaticPermissionSaver(
IStaticPermissionDefinitionStore staticStore, IStaticPermissionDefinitionStore staticStore,
IPermissionGroupDefinitionRecordRepository permissionGroupRepository, IPermissionGroupDefinitionRecordRepository permissionGroupRepository,
@ -38,8 +40,10 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
IApplicationInfoAccessor applicationInfoAccessor, IApplicationInfoAccessor applicationInfoAccessor,
IAbpDistributedLock distributedLock, IAbpDistributedLock distributedLock,
IOptions<AbpPermissionOptions> permissionOptions, IOptions<AbpPermissionOptions> permissionOptions,
ICancellationTokenProvider cancellationTokenProvider) ICancellationTokenProvider cancellationTokenProvider,
IUnitOfWorkManager unitOfWorkManager)
{ {
UnitOfWorkManager = unitOfWorkManager;
StaticStore = staticStore; StaticStore = staticStore;
PermissionGroupRepository = permissionGroupRepository; PermissionGroupRepository = permissionGroupRepository;
PermissionRepository = permissionRepository; PermissionRepository = permissionRepository;
@ -52,8 +56,7 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
CacheOptions = cacheOptions.Value; CacheOptions = cacheOptions.Value;
} }
[UnitOfWork] public async Task SaveAsync()
public virtual async Task SaveAsync()
{ {
await using var applicationLockHandle = await DistributedLock.TryAcquireAsync( await using var applicationLockHandle = await DistributedLock.TryAcquireAsync(
GetApplicationDistributedLockKey() GetApplicationDistributedLockKey()
@ -99,19 +102,40 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
throw new AbpException("Could not acquire distributed lock for saving static permissions!"); throw new AbpException("Could not acquire distributed lock for saving static permissions!");
} }
var hasChangesInGroups = await UpdateChangedPermissionGroupsAsync(permissionGroupRecords); using (var unitOfWork = UnitOfWorkManager.Begin(requiresNew: true, isTransactional: true))
var hasChangesInPermissions = await UpdateChangedPermissionsAsync(permissionRecords);
if (hasChangesInGroups ||hasChangesInPermissions)
{ {
await Cache.SetStringAsync( try
GetCommonStampCacheKey(), {
Guid.NewGuid().ToString(), var hasChangesInGroups = await UpdateChangedPermissionGroupsAsync(permissionGroupRecords);
new DistributedCacheEntryOptions { var hasChangesInPermissions = await UpdateChangedPermissionsAsync(permissionRecords);
SlidingExpiration = TimeSpan.FromDays(30) //TODO: Make it configurable?
}, if (hasChangesInGroups || hasChangesInPermissions)
CancellationTokenProvider.Token {
); await Cache.SetStringAsync(
GetCommonStampCacheKey(),
Guid.NewGuid().ToString(),
new DistributedCacheEntryOptions {
SlidingExpiration = TimeSpan.FromDays(30) //TODO: Make it configurable?
},
CancellationTokenProvider.Token
);
}
}
catch
{
try
{
await unitOfWork.RollbackAsync();
}
catch
{
/* ignored */
}
throw;
}
await unitOfWork.CompleteAsync();
} }
} }
@ -136,7 +160,8 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
foreach (var permissionGroupRecord in permissionGroupRecords) foreach (var permissionGroupRecord in permissionGroupRecords)
{ {
var permissionGroupRecordInDatabase = permissionGroupRecordsInDatabase.GetOrDefault(permissionGroupRecord.Name); var permissionGroupRecordInDatabase =
permissionGroupRecordsInDatabase.GetOrDefault(permissionGroupRecord.Name);
if (permissionGroupRecordInDatabase == null) if (permissionGroupRecordInDatabase == null)
{ {
/* New group */ /* New group */
@ -291,4 +316,4 @@ public class StaticPermissionSaver : IStaticPermissionSaver, ITransientDependenc
.ToString() .ToString()
.ToMd5(); .ToMd5();
} }
} }
Loading…
Cancel
Save