A call to SetSessionId must occur before getting/setting a session or transaction
While i was packaging a large set of documents and images (image cropper), this error occured about halfway there.
Could anyone please describe what may be the error here?
Also i am using UaaS.
As an offtopic, how would you go about packaging/deploying ~2000 documents in UaaS?
Something went wrong :(
Here is some technical information that might help shed some light on whats happened:
{
"id": "fa239647-c8ff-4f02-bafc-260dc5b31867",
"currentActivity": "Packaging: Document Dessertgrød med kaffe og chokolade Property Data",
"name": "Umbraco.Courier.Core.Tasks.PackagingTask",
"description": "Packaging revision: {0}",
"total": 4510,
"done": 2346,
"complete": false,
"error": false,
"exception": null,
"errors": null
}
Message: An error has occurred.
Exception Message: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error retrieving item [0d825241-1fb1-4945-bab3-bd0637a5dc39] from provider [e0472594-e73b-11df-9492-0800200c9a66]. ---> System.InvalidOperationException: A call to SetSessionId must occur before getting/setting a session or transaction at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.get_ThreadSession() at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateSessionManagerBase.GetSession(IInterceptor interceptor) at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.GetSession() at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateProvider.GetCurrentSession() at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.NHibernateItemCrud1.GetCurrentSession() at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.ContentPropertyDataItem.RetrieveItem(ItemIdentifier itemId) at Umbraco.Courier.Core.ItemCrud1.RetrieveItem[T1](ItemIdentifier itemId) at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId) --- End of inner exception stack trace --- at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId) at Umbraco.Courier.ItemProviders.PropertyItemProvider.HandlePack(ItemIdentifier id) at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) at Umbraco.Courier.RepositoryProviders.Local.Hash(ItemIdentifier itemId) at Umbraco.Courier.RepositoryProviders.Webservices.Repository.GetItemHash(String sessionKey, ItemIdentifier itemId, String user, String pass) --- End of inner exception stack trace ---
Stack Trace: at Concorde.CacheHandler.UI.Controllers.DeployController.GetProcessedTask(Guid id)
at Concorde.CacheHandler.UI.Controllers.DeployController.GetTask(Guid id)
at Concorde.CacheHandler.UI.Controllers.DeployController.CurrentTaskStatus()
at lambdamethod(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>cDisplayClass10.9(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ApiControllerActionInvoker._1.MoveNext()
Just a though on this topic, would it be an idea to implement some sort of continuos process, so you dont have to start over packaging from the beginning?
Even when it finally created the package, but something went wrong during the deployment to the target site, you have to start all over again instead of just reusing the package..
The same issue occurs periodically during couriering.
On target:
2016-04-29 15:04:18,113 [74] ERROR Umbraco.Courier.Core.Diagnostics.Logging.RevisionLog - [Thread 66] [Error]; Item Id: 22d48523-ab01-4d06-828e-92107f4ef46c; Caller: Umbraco.Courier.Persistence.V6.NHibernate.NHibernateProvider; Process: PersistenceManager; Msg: Could not retrieve item:
System.InvalidOperationException: A call to SetSessionId must occur before getting/setting a session or transaction
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.get_ThreadSession()
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateSessionManagerBase.GetSession(IInterceptor interceptor)
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.GetSession()
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateProvider.GetCurrentSession()
at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.MediaItem.RetrieveItem(ItemIdentifier itemId)
at Umbraco.Courier.Core.ItemCrud`1.RetrieveItem[T1](ItemIdentifier itemId)
at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId);
System.Exception: Error logged
2016-04-29 15:04:18,113 [74] ERROR Umbraco.Courier.Core.ItemCrudProvider - [Thread 66] An error occurred in RetrieveItem<T>
System.InvalidOperationException: A call to SetSessionId must occur before getting/setting a session or transaction
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.get_ThreadSession()
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateSessionManagerBase.GetSession(IInterceptor interceptor)
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.GetSession()
at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateProvider.GetCurrentSession()
at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.MediaItem.RetrieveItem(ItemIdentifier itemId)
at Umbraco.Courier.Core.ItemCrud`1.RetrieveItem[T1](ItemIdentifier itemId)
at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId)
On source:
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Transaction not successfully started
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
The only workaround is to recycle app pool or restart appdomain on the target machine.
A call to SetSessionId must occur before getting/setting a session or transaction
While i was packaging a large set of documents and images (image cropper), this error occured about halfway there.
Could anyone please describe what may be the error here?
Also i am using UaaS.
As an offtopic, how would you go about packaging/deploying ~2000 documents in UaaS?
Something went wrong :(
Here is some technical information that might help shed some light on whats happened:
{ "id": "fa239647-c8ff-4f02-bafc-260dc5b31867", "currentActivity": "Packaging: Document Dessertgrød med kaffe og chokolade Property Data", "name": "Umbraco.Courier.Core.Tasks.PackagingTask", "description": "Packaging revision: {0}", "total": 4510, "done": 2346, "complete": false, "error": false, "exception": null, "errors": null } Message: An error has occurred.
Exception Message: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error retrieving item [0d825241-1fb1-4945-bab3-bd0637a5dc39] from provider [e0472594-e73b-11df-9492-0800200c9a66]. ---> System.InvalidOperationException: A call to SetSessionId must occur before getting/setting a session or transaction at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.get_ThreadSession() at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateSessionManagerBase.GetSession(IInterceptor interceptor) at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateGlobalSessionManager.GetSession() at Umbraco.Courier.Persistence.V6.NHibernate.NHibernateProvider.GetCurrentSession() at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.NHibernateItemCrud
1.GetCurrentSession() at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.ContentPropertyDataItem.RetrieveItem(ItemIdentifier itemId) at Umbraco.Courier.Core.ItemCrud
1.RetrieveItem[T1](ItemIdentifier itemId) at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId) --- End of inner exception stack trace --- at Umbraco.Courier.Core.ItemCrudProvider.RetrieveItem[T](ItemIdentifier itemId) at Umbraco.Courier.ItemProviders.PropertyItemProvider.HandlePack(ItemIdentifier id) at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) at Umbraco.Courier.RepositoryProviders.Local.Hash(ItemIdentifier itemId) at Umbraco.Courier.RepositoryProviders.Webservices.Repository.GetItemHash(String sessionKey, ItemIdentifier itemId, String user, String pass) --- End of inner exception stack trace ---Exception Type: System.Web.Services.Protocols.SoapException
Stack Trace: at Concorde.CacheHandler.UI.Controllers.DeployController.GetProcessedTask(Guid id) at Concorde.CacheHandler.UI.Controllers.DeployController.GetTask(Guid id) at Concorde.CacheHandler.UI.Controllers.DeployController.CurrentTaskStatus() at lambdamethod(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>cDisplayClass10.9(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker._1.MoveNext()
This just happened again, but with a JPG file.
Just a though on this topic, would it be an idea to implement some sort of continuos process, so you dont have to start over packaging from the beginning?
Even when it finally created the package, but something went wrong during the deployment to the target site, you have to start all over again instead of just reusing the package..
The same issue occurs periodically during couriering.
On target:
On source:
The only workaround is to recycle app pool or restart appdomain on the target machine.
Umbraco 7.3.4, Courier 2.51.4
is working on a reply...