-
Notifications
You must be signed in to change notification settings - Fork 3.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Projection with nested projection hangs/does not complete in 2.0 Preview 2 #9128
Comments
+1 I am also facing the same issue in -preview2 with many queries involving nested projections. FYI using npgsql. |
@bridgesquared Thanks for reporting this--we will investigate, but we will not be able to get a fix in for 2.0. Some workarounds to try:
|
I think that this should be on high priority. |
In my personal opinion, this is quite a major issue and 2.0 shouldn't be released until async queries with nested projections can be safely written without deadlocking. It worked in preview1, it should not result in a deadlock in an RTM release... |
We should consider the specific scenario form #8208 when we work on this. |
Hi, This is a major concern for us, all our framework is based on async/await, and queries are blocked. Do you have a time frame? Thanks in advance |
@shlomiw do not move to EF 6. I have the same issue using EF 6.1.3 |
…in 2.0 Preview 2 Removes blocking by making async projections fully async even when nested queries are using sync operators.
…in 2.0 Preview 2 Removes blocking by making async projections fully async even when nested queries are using sync operators.
…in 2.0 Preview 2 Removes blocking by making async projections fully async even when nested queries are using sync operators.
@anpete Do we need a new issue for patch approval? |
- Update TaskLiftingExpressionVisitor to detect blocking introduced by TaskBlockingExpressionVisitor.- Switched Include Compiler to use TaskBlockingExpressionVisitor instead of .Result. - Reverted previous changes to TaskBlockingExpressionVisitor.
This patch bug is approved for the 2.0.x patch. Please send a PR to the |
I can confirm that the workaround @spdjudd mentioned that uses |
How can we install the 2.0.3 release to take this fix? It appears to be complete: https://github.com/aspnet/EntityFrameworkCore/milestone/35 However, it's not in the list of official releases, and I don't see it in the myget builds either...? When will the first official 2.0.x release drop? An earlier post suggested it would be early October. |
@danobri we're working on setting up a MyGet feed with a preview of the patch for people to try out. I'll update this issue when we have that ready. |
@Eilon Thanks! Any idea when the official release will happen? |
@danobri should be November, but with the patch feed people should be able to at least verify the fixes and use the bits as a temporary solution. |
Hi, we have a public test feed that you can use to try out the ASP.NET/EF Core 2.0.3 patch! To try out the pre-release patch, please refer to the following guide:
We are looking for feedback on this patch. We'd like to know if you have any issues with this patch by updating your apps and libraries to the latest packages and seeing if it fixes the issues you've had, or if it introduces any new issues. If you have any issues or questions, please reply on this issue to let us know as soon as possible. Thanks, |
@Eilon I was experiencing that specific bug with EF Core 2.0. After updating to the preview bits, it works as expected and I haven't noticed any regression. Thanks for pushing that preview, looking forward to the stable patch release. |
@mderriey thanks for trying it out and reporting back! |
@Eilon I'm still face deadlock ToListAsync issue on this 2.03-* version. Example cuery |
@kodelapan did this issue also affect the 2.0.0 RTM release? Or is it a new issue with the 2.0.3 patch? |
@ajcvickers / @anpete - can someone take a look at this issue? |
@kodelapan would it be possible for you to provide a project that reproduces the error? |
@Eilon : yes, i'm already using 2.0.3 |
@smitpatel @maumar Could one of you investigate this--the repro code is linked above. (We'll likely need a new issue to track it.) |
I have isolated the issue and filed #10188 @kodelapan - Use following query as work-around var result = (from a in DnaCoreContext.Article
join c in DnaCoreContext.ArticleCategory on a.CategoryId equals c.Id
where status.Contains(a.Status) && c.IsVisible == true
orderby a.CreatedDate descending
select new Article
{
Id = a.Id,
ShortDescription = a.ShortDescription,
Slug = a.Slug,
Title = a.Title,
CategoryId = a.CategoryId,
CreatedById = a.CreatedById,
Category = new ArticleCategory
{
Id = c.Id,
Name = c.Name
},
ImageMaps = (from map in a.ImageMaps
join i in DnaCoreContext.Image on map.ImageId equals i.Id
where i.IsPrimary == true
select new ArticleImage
{
Id = map.Id,
Image = new Image
{
Id = i.Id,
FileName = i.FileName,
FileExtension = i.FileExtension,
ImageUrl = i.ImageUrl
}
}).ToList()
});
if(staffId > 0 )
{
result = result.Where(x => x.CreatedById == staffId);
}
return new PaginationEntity<Article>
{
Page = pageIndex,
PageSize = pageSize,
TotalCount = await result.CountAsync(),
Items = await result.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync()
}; (it worked for me). |
@smitpatel : thanks for your information. It's work now |
When we updated our code base to 2.0 Preview-2 we had significant problems with a number of our queries hanging. We initially flagged this as AutoMapper/AutoMapper/#2184. But during discussions it has become apparent that this is a change at the EF Core 2 level.
The following style of query with an inner projection now fails to complete / hangs:
It used to work in 2.0 Preview 1 (and 1.x.x) but now hangs in 2.0 Preview 2.
I appreciate that it is a problematic query, in the sense that the inner projection uses
ToList()
whilst the outer projection isFirstAsync()
and I have some ideas for workaroundsBut overall I feel that this should continue to work, it feels natural, it is not unreasonable to request nested data and a projection in one step (we are trying to reduce the data retrieved from the db server) and I can't see how you could rewrite the inner projection as
async
.It seems not unreasonable to ask EF Core to resolve this type of query correctly and return the data requested asynchronously regardless of how inefficient / ugly it is.
I have created the following gists to repro this.
Discussions on the AutoMapper repo have suggested that this is related to #8208 and possibly #9029.
Meanwhile, we've gone back to 2.0 Preview 1 and are trying to work out how we are going to address this in 2.0 Final. So any thoughts/fixes etc. would be much appreciated. Many thanks.
The text was updated successfully, but these errors were encountered: