litiansum
litiansum
当服务重启后,正常运行大约24小时以上,就会出现此问题: 
> @xuejmnet 这是我框架报错的吗 我只看到了StackOverflowException 异常信息里面有提示:ShardingCore组件。 目前我们使用了SQL Server和PostgreSQL两种类型数据库,在SQL Server中运行正常;在PostgreSQL中,每天就会出现这个问题,两边代码逻辑完全一致,经过排查没有发现其他问题。所以想咨询一下有没有什么排查的方向?
> @xuejmnet 是加了try catch的,这个异常无法通过try catch捕获,所以才导致崩溃的。我在检查一下相关逻辑,看看是否存在死循环,多谢回复。
@xuejmnet 这个是基于.NET 6的 Web服务,dbcontext都是通过默认的依赖注入方式获取。目前业务场景是有一个基于BackgroundService的后台任务定时清理数据,原来清理方法中会有循环分页批量清理的方法。昨天移除了循环测试,今天凌晨3点多还是出现异常,程序在这个时间点没有进行任何后台任务和异常日志。而且出现异常的时间都比较固定,日志如下: 
@xuejmnet 的确发现了一个循环的错误,这个是不是由于路由配置有问题导致的呢? `[07:23:21 INF] Repeat 24108 times: Executed DbCommand ( at ShardingCore.Core.VirtualRoutes.RoutePredicateExpression+c__DisplayClass10_0.b__0(System.String) 1 at System.Linq.Enumerable+WhereSelectListIterator`2[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext() ms) [Parameters=[ at System.Collections.Generic.List`1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral,...
@xuejmnet 非常感谢! 相关配置放在了这个库中: https://github.com/litiansum/ShardingCoreSolution.git 查询的代码较多,不方便放上来,我会仔细再检查一下是否有您上面所说的问题。因为我们是从旧表增加了分表,但是由于旧表中原来数据使用的GUID,无法根据路由定位到具体的表中,所以针对旧的ID查询会存在全表查询的情况。不知道这种情况是否有影响?
@xuejmnet 通过Contains条件查询,可能存在问题吗? `await _fileReferences.Where(x => newReferenceIds.Contains(x.ReferenceId)).AsNoTracking().ToListAsync();`
@xuejmnet 从崩溃异常信息来看和GetrerenceByIdsAsync()方法有关,异常截图:  完整的方法代码: ``` public async Task GetReferenceByIdsAsync(IEnumerable referenceIds) { List references = new List(); var newReferenceIds = referenceIds.Where(i => !Guid.TryParse(i, out _)).ToList(); var oldReferenceIds = referenceIds.Where(i => Guid.TryParse(i,...
@xuejmnet 是在构造方法中实例化的,IFileRepository的生命周期是Scoped: 
@xuejmnet 目前是基于.NET6.0和EF Core 7.0的版本,EF 和 npg驱动都是7.0的最新版本了,暂时还无法直接升级到8.0,我会用8.0最新版本测试一下看看