Page 1 of 1

R6 error with subscription.aspx page

Posted: Thu Nov 07, 2013 8:15 pm
by AbleMods
We are seeing a substantial number of errors on the subscription.aspx page when a shopper clicks the verification link in the list signup confirmation email. I don't have full source for this client so I can't track this one down myself.

Any suggestions?
2013-11-07 20:49:19,544 WARN e.Engine.ForeignKeys Unable to determine if CommerceBuilder.Marketing.EmailListUser with assigned identifier CommerceBuilder.Marketing.EmailListUserKey is transient or detached; querying the database. Use explicit Save() or Update() in session to prevent this.
2013-11-07 20:49:29,668 WARN e.Engine.ForeignKeys Unable to determine if CommerceBuilder.Marketing.EmailListUser with assigned identifier CommerceBuilder.Marketing.EmailListUserKey is transient or detached; querying the database. Use explicit Save() or Update() in session to prevent this.
2013-11-07 20:49:29,668 ERROR AbleCommerce An error has occured at http://www.
System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> NHibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: CommerceBuilder.Marketing.EmailListUserKey, of entity: CommerceBuilder.Marketing.EmailListUser
at NHibernate.Engine.StatefulPersistenceContext.CheckUniqueness(EntityKey key, Object obj)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformUpdate(SaveOrUpdateEvent event, Object entity, IEntityPersister persister)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.EntityIsDetached(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
at CommerceBuilder.DomainModel.SaveOrUpdateEventListener.PerformSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Event.Default.DefaultSaveOrUpdateEventListener.OnSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.FireSaveOrUpdate(SaveOrUpdateEvent event)
at NHibernate.Impl.SessionImpl.SaveOrUpdate(String entityName, Object obj)
at NHibernate.Engine.CascadingAction.SaveUpdateCascadingAction.Cascade(IEventSource session, Object child, String entityName, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeToOne(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeAssociation(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeProperty(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeCollectionElements(Object parent, Object child, CollectionType collectionType, CascadeStyle style, IType elemType, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeCollection(Object parent, Object child, CascadeStyle style, Object anything, CollectionType type)
at NHibernate.Engine.Cascade.CascadeAssociation(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeProperty(Object parent, Object child, IType type, CascadeStyle style, Object anything, Boolean isCascadeDeleteEnabled)
at NHibernate.Engine.Cascade.CascadeOn(IEntityPersister persister, Object parent, Object anything)
at NHibernate.Event.Default.AbstractFlushingEventListener.CascadeOnFlush(IEventSource session, IEntityPersister persister, Object key, Object anything)
at NHibernate.Event.Default.AbstractFlushingEventListener.PrepareEntityFlushes(IEventSource session)
at NHibernate.Event.Default.AbstractFlushingEventListener.FlushEverythingToExecutions(FlushEvent event)
at NHibernate.Event.Default.DefaultFlushEventListener.OnFlush(FlushEvent event)
at NHibernate.Impl.SessionImpl.Flush()
at CommerceBuilder.DomainModel.RepositoryWithTypedId`2.Save(TEntity item)
--- End of inner exception stack trace ---
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
at CommerceBuilder.DomainModel.EntityWithTypedId`1.Save()
at CommerceBuilder.Marketing.EmailListSignup.Activate()
at AbleCommerce._Subscription.Page_Load(Object sender, EventArgs e)
at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.UI.Control.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.subscription_aspx.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
2013-11-07 20:49:29,700 WARN e.Engine.ForeignKeys Unable to determine if CommerceBuilder.Marketing.EmailListUser with assigned identifier CommerceBuilder.Marketing.EmailListUserKey is transient or detached; querying the database. Use explicit Save() or Update() in session to prevent this.

Re: R6 error with subscription.aspx page

Posted: Fri Nov 08, 2013 4:32 am
by mazhar
Wrap the code in a transaction. In subscription.aspx.cs file try something like

Code: Select all

            if (action == "remove")
            {
                AbleContext.Current.Database.BeginTransaction();
                .....................
                .....................
                AbleContext.Current.Database.CommitTransaction();
            }
            else if (action == "confirm")
            {
                AbleContext.Current.Database.BeginTransaction();
                .....................
                .....................
                AbleContext.Current.Database.CommitTransaction();
            }

Re: R6 error with subscription.aspx page

Posted: Fri Nov 08, 2013 8:58 am
by Katie
Is this a bug then?

Re: R6 error with subscription.aspx page

Posted: Fri Nov 08, 2013 9:01 am
by Katie
Nevermind, I found the issue in Jira just now.

Re: R6 error with subscription.aspx page

Posted: Sat Nov 09, 2013 12:19 am
by ForumsAdmin
Yes it was a bug. Reported and fixed already.

Re: R6 error with subscription.aspx page

Posted: Mon Nov 11, 2013 7:42 am
by AbleMods
Thanks guys!