We have moved to GitHub Issues
Created by Shannon Deminick 16 Jan 2017, 04:25:13 Updated by Stephan 17 Jan 2017, 07:19:09Tags: Unscheduled
Is duplicated by: U4-9372
Relates to: deploy-132
Relates to: U4-9322
This problem isn't immediately bubbled to the surface but the problem definitely exist and is probably causing other unwanted issues.
In some cases when you click on a user we get a YSOD
[Error] Invalid attempt to Read when reader is closed. [Stack Trace] [InvalidOperationException: Invalid attempt to Read when reader is closed.] System.Data.SqlServerCe.SqlCeDataReader.Read() +189 umbraco.DataLayer.RecordsReaderAdapter`1.Read() +23 umbraco.cms.businesslogic.propertytype.PropertyType.GetPropertyTypes() +139 umbraco.cms.presentation.user.EditUser.SetupChannel() +729 umbraco.cms.presentation.user.EditUser.Page_Load(Object sender, EventArgs e) +6029 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +95 umbraco.BasePages.BasePage.OnLoad(EventArgs e) +14 System.Web.UI.Control.LoadRecursive() +59 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
and it's because in the legacy
propertytype.GetPropertyTypes method, it does an ExecuteReader and inside of this reader it will execute another reader, however that read is actually the 'same' reader instance and therefore the inner reader closes the outer reader! Pretty sure it's something to do with the changes that was made in order for the legacy business logic layer to use the correct SqlConnection instance. That said, if you use the 7.6 source you won't see this YSOD because the exception is swallowed!! So, we need to:
RecordsReaderAdapter.Readand check if we are ever executing a reader inside of a reader
@sebastiaan if you are happy having it in 7.5.next I'll merge the PR
@zpqrtbnk Yes please! Marked for 7.5.8 now.
Backwards Compatible: True
Due in version: 7.5.8
Sprint: Sprint 50