Okey, first beta on the 2.6 branch, moving beyond just maintance, which is the reason for the jump in the version number.
Big thing is the improved comparison engine which replaces the old, slightly slow and unstable one, if you ever tried to open a revision, and get a null error while comparing to your installation, then thats the one to blame. This new engine saves time by storing item hashes during packaging, these end up in a .couriercompare file which is then used for faster UI loading and pinging the target repository for a comparison (to determine if it should install or not)
Other thing is a big speed improvement on packaging, on one of the bigger test packages we've been able to decrease packaging time from avg. 220sec to around 45sec.
Theres been some fixes in regard to transfering resources to a network storage repo
And finally added a layer of caching iDatatypes, iData and other umbraco business objects
I would really appreciate any feedback, big or small issues or just running a test deployment of your content, so we get as many usecases covered as possible
One major issue I am seeing in 2.6.5 is it cannot transfer data twice.
Basically if you transfer document A, then later (in the same AppPool session) transfer Item B which has a dependency on item A, it will try and transfer item A and B. When it does this, it will throw an nHibernate Error like the following:
Umbraco.Courier.Core.Exceptions.ExtractionManagerException: There was a problem with extracting database information for the item: Name:Media PDFs Property Data | Id:f2d4e73d-98de-40b4-a96e-0794554f18c8 | Provider:PropertyData. Stacktrace: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> NHibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: -38, of entity: Umbraco.Courier.Persistence.V4.NHibernate.EntityClasses.UmbracoNode 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.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.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 NHibernate.Transaction.AdoTransaction.Commit() at Umbraco.Courier.Core.PersistenceManager.CommitTransaction() --- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Umbraco.Courier.RepositoryProviders.CourierWebserviceRepositoryProvider.Commit(String sessionKey) in c:\Program Files (x86)\teamcity\buildAgent\work\51d185ff47ab530d\Umbraco.Courier.RepositoryProviders\WebserviceProvider\CourierWebserviceRepositoryProvider.cs:line 417 at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() ---> System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> NHibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: -38, of entity: Umbraco.Courier.Persistence.V4.NHibernate.EntityClasses.UmbracoNode 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.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.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 NHibernate.Transaction.AdoTransaction.Commit() at Umbraco.Courier.Core.PersistenceManager.CommitTransaction() --- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Umbraco.Courier.RepositoryProviders.CourierWebserviceRepositoryProvider.Commit(String sessionKey) in c:\Program Files (x86)\teamcity\buildAgent\work\51d185ff47ab530d\Umbraco.Courier.RepositoryProviders\WebserviceProvider\CourierWebserviceRepositoryProvider.cs:line 417 at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() --- End of inner exception stack trace --- at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() at Umbraco.Courier.Core.Tasks.ExtractionTask.Run() at Umbraco.Courier.Core.TaskManager.(IRevisionTask value) 3/2/2012 9:59:50 AM
thanks for the error message and description, on how to replicate. As the last finetuning of the beta, I'm going through the nhibernate layer to fix these issues with nonUniques, so will be fixed in the final version
Courier 2.6 Beta 1
Okey, first beta on the 2.6 branch, moving beyond just maintance, which is the reason for the jump in the version number.
Big thing is the improved comparison engine which replaces the old, slightly slow and unstable one, if you ever tried to open a revision, and get a null error while comparing to your installation, then thats the one to blame.
This new engine saves time by storing item hashes during packaging, these end up in a .couriercompare file which is then used for faster UI loading and pinging the target repository for a comparison (to determine if it should install or not)
Other thing is a big speed improvement on packaging, on one of the bigger test packages we've been able to decrease packaging time from avg. 220sec to around 45sec.
Theres been some fixes in regard to transfering resources to a network storage repo
And finally added a layer of caching iDatatypes, iData and other umbraco business objects
Screenshot of the new compare UI:
The 2.6 Beta release is available on nightly as usual
http://nightly.umbraco.org/UmbracoCourier/2.6/nightly%20builds/
I would really appreciate any feedback, big or small issues or just running a test deployment of your content, so we get as many usecases covered as possible
Hi Per,
Will there be no more activity on the 2.5 branch? Is 2.6 recommended over working with 2.5?
What is the recommended way to upgrade from 2.5?
-- Paul
OK just did a drag-copy of the hotfix, upgraded from 2.5. OK.
Yes, simple copy of hotfix to your site is the intended upgrade, so couldn't be easier
Unless some major flaw is found in 2.6, so I have to postpone the release, then I can't imagine that 2.5 willl receive any further updates.
So 2.6 is the way forward
Per -
One major issue I am seeing in 2.6.5 is it cannot transfer data twice.
Basically if you transfer document A, then later (in the same AppPool session) transfer Item B which has a dependency on item A, it will try and transfer item A and B. When it does this, it will throw an nHibernate Error like the following:
Umbraco.Courier.Core.Exceptions.ExtractionManagerException: There was a problem with extracting database information for the item: Name:Media PDFs Property Data | Id:f2d4e73d-98de-40b4-a96e-0794554f18c8 | Provider:PropertyData. Stacktrace: System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> NHibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: -38, of entity: Umbraco.Courier.Persistence.V4.NHibernate.EntityClasses.UmbracoNode 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.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.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 NHibernate.Transaction.AdoTransaction.Commit() at Umbraco.Courier.Core.PersistenceManager.CommitTransaction() --- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Umbraco.Courier.RepositoryProviders.CourierWebserviceRepositoryProvider.Commit(String sessionKey) in c:\Program Files (x86)\teamcity\buildAgent\work\51d185ff47ab530d\Umbraco.Courier.RepositoryProviders\WebserviceProvider\CourierWebserviceRepositoryProvider.cs:line 417 at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() ---> System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> NHibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: -38, of entity: Umbraco.Courier.Persistence.V4.NHibernate.EntityClasses.UmbracoNode 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.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.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 NHibernate.Transaction.AdoTransaction.Commit() at Umbraco.Courier.Core.PersistenceManager.CommitTransaction() --- End of inner exception stack trace --- at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters) at Umbraco.Courier.RepositoryProviders.CourierWebserviceRepositoryProvider.Commit(String sessionKey) in c:\Program Files (x86)\teamcity\buildAgent\work\51d185ff47ab530d\Umbraco.Courier.RepositoryProviders\WebserviceProvider\CourierWebserviceRepositoryProvider.cs:line 417 at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() --- End of inner exception stack trace --- at Umbraco.Courier.Core.Extraction.RevisionExtraction.Extract() at Umbraco.Courier.Core.Tasks.ExtractionTask.Run() at Umbraco.Courier.Core.TaskManager.(IRevisionTask value) 3/2/2012 9:59:50 AM
Hi Scott
thanks for the error message and description, on how to replicate. As the last finetuning of the beta, I'm going through the nhibernate layer to fix these
issues with nonUniques, so will be fixed in the final version
/per
is working on a reply...