Where to start understanding courier errors in packaging?
Hi,
I'd successfully deployed from one site to another. Now trying to package this version back to the previous I get the error below. Could someone offer any advice on what I am supposed to do with the error? The only major change I made to to the site was to enable MVC could this have had anything to do with it? Any advice on the best way to deploy when the deployment tool doesn't work?
Thanks for any help. Loving the power of Umbraco but I wish it just "worked" :)
Umbraco.Courier.Core.Exceptions.PackageException: Unable to load item
with id '50d985c6-41fe-4bf2-90c1-e421907f54d2' from provider 'Datatypes'
---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error
retrieving item [50d985c6-41fe-4bf2-90c1-e421907f54d2] from provider
[e0472592-e73b-11df-9492-0800200c9a66]. ---> System.Exception: Could
not load assembly for datatype Author Picker with dataEditorId
e66af4a0-e8b4-11de-8a39-0800200c9a66 --->
System.NullReferenceException: Object reference not set to an instance
of an object.
at
Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier
itemId) in c:\Program Files
(x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line
125
--- End of inner exception stack trace ---
at
Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier
itemId) in c:\Program Files
(x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line
130
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.DataTypeProvider.HandlePack(ItemIdentifier
id)
at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id)
at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier
itemId)
at
Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier
itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue)
--- End of inner exception stack trace ---
at
Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier
itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue)
at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageBatch()
at Umbraco.Courier.Core.Packaging.RevisionPackaging.Package()
at Umbraco.Courier.Core.Tasks.PackagingTask.Run()
at Umbraco.Courier.Core.TaskManager.manageTask(IRevisionTask value)
6/16/2013 9:23:41 PM
2.7.8
Fixes:
- Dublicate published items in cmsDocument table in 4.x
2.7.7
Fixes:
- faster media lookup based on a media file path
2.7.6
Fixes:
- Adds lookup for determining previous publishing status
- Ensures dependencies are always hash-checked
- Items with child-dependencies are always included to avoid broken dependency chains
- Adds resource hash-checks to property collections
- Fixes license Url in package
- Registers sorting changes and pushes to cache properly
2.7.5.2
Fixes: licensing issue with express version on 6.0.2
2.7.5
- Media lucene reset for v6 sites
Hmmm... now I get the error below. Maybe this is overkill. I simply want a tool that package up the whole Umbraco install and deploy to a new server and DB. Is there anything that can do that? Courier is working for me on an individual node basis (right-click and select courier from contextual) but I can't package anything from the courier area without errors, both from "package all" and "adding" individually.
Umbraco.Courier.Core.Exceptions.PackageException: Unable to load item with id '50d985c6-41fe-4bf2-90c1-e421907f54d2' from provider 'Datatypes' ---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error retrieving item [50d985c6-41fe-4bf2-90c1-e421907f54d2] from provider [e0472592-e73b-11df-9492-0800200c9a66]. ---> System.Exception: Could not load assembly for datatype Author Picker with dataEditorId e66af4a0-e8b4-11de-8a39-0800200c9a66 ---> System.NullReferenceException: Object reference not set to an instance of an object. at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 125 --- End of inner exception stack trace --- at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 130 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.DataTypeProvider.HandlePack(ItemIdentifier id) at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) --- End of inner exception stack trace --- at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageBatch() at Umbraco.Courier.Core.Packaging.RevisionPackaging.Package() at Umbraco.Courier.Core.Tasks.PackagingTask.Run() at Umbraco.Courier.Core.TaskManager.manageTask(IRevisionTask value) 6/17/2013 9:26:18 AM
The issue I have is with courier and Umbraco site B. This is a deplyment of site A
If I manually deploy the problem datatypes that stop site B packaging itself up from site A (my original build) to site B, then courier allows me to make a full package of B.
This would suggest that the original A to B didn't deploy correctly? Any yet through up no errors. Do I always need to keep a backup site in order to deploy individual problem files I wonder. Anyway, seems like a fix
I've never managed to succesfully package an entire site and transfer it. It usually errors somewhere.
I tend to build a site, zip it up along with the database, deploy it twice and set up Courier from there and leave Courier for content editors. I just dont trust it enough for deploying dev. changes.
Sending over smaller amounts of nodes and single nodes via right click usually works without issue. Results vary depending on the complexity of your project and which version of Courier and Umbraco being used.
This seems like a sensible work flow. My issue at the moment is I am working on a default framework that will be the foundation for 3 unique services. While I build my understand of what is the best set of packages to use AND having to start to build these services up as individual project I was hoping to have use courier to be able to deploy my latest initiative to the other sites.
As Laurence suggested, it's most likely a package you've installed. Umbraco is only default if you dont load up any packages (other than courier).
Custom datatypes are usually the biggest culprit so you have to check carefully that Courier will be able to transfer them, and it will always require a tweak to the courier.config accordingly.
I'd actually disagree with that, if you can't deploy everything, then something is broken. If something is broken, one day somebody (i.e. not you), could encounter this. As someone who encounters other peoples broken code on a daily basis....... >.<
Once I was in a lecture from a highly intelligent Nucular scientist. He said Nucular waste is no problem. Because, we would tell our children where it was.
Ahem. ;)
My understanding is Courier is a one-way deployment tool. Designed to take content from a Staging enviroment into a Live enviroment. It plugs a hole with a fundemental issue in the way the data is mixed with meta in the database. In an ideal world, this tool wouldn't even be needed, because there would be a clear seperation between content & meta. E.g. you could just deploy content changes by coping a db/folder.
Anyway... I'm getting off-topic, what did my suggestions above reveal?
Like an "ideal world" Courier is far from an ideal tool!
I completely agree you should be able to deploy everything isnt that the whole point? And the result should be repeatable entirely or individually.
But if Courier physically wont let you deploy the entire site what alternative is there?
Alarm bells should be ringing if at first sight a package fails and I do agree this suggests the tool will give you grief when deploying a single node at some point in the future (and for me it indeed has).
Unfortunately there are no other tools available to do this kind of work, so all you can do is work with what you've got and try to keep moving forward if improvements are made/offered by the team. I test Courier upgrades as often as updates are made available, as staying on the upgrade path has helped alleviate some of the issues i've encountered.
Much like your off-topic muse I believe something needs to change in the relationship between Umbraco and Courier, along with its customer support, so please check out my post here..
Hmmm ... I assumed as I am only installing packages promoted on the Umbraco Projects area and have coded nothing other than creating a structure of template and doc types, that there would be nothing to break. I buy intothe logic of your statement, but I wonder where the broken code is .. broken. Whether through the install of the package or deployment in courier. Is courier highlighting an error that it created... does it really matter?
Does Courier not also transfer over the installed pacdkages? It certainly transfers over the doctypes, datatypes installed by the packages, but the packages themselves do not appear in "installed packages"
To ensure as few problems as possible SiteA and SiteB should be a mirror of one another in terms of the installation. So you really should make sure all packages are installed on both sides before you attempt to transfer anything.
Custom datatypes are not guaranteed to transfer by default and the theory is if Courier is unaware of them, they wont transfer at all! You need to open the Courier settings file and add in the GUIDs for any custom datatypes you have installed and then cross your fingers!
I dont think Per has ever stated Courier is able to transfer any custom datatype, So view all third party packages that use custom datatypes with caution (and much testing)!
Just to append to this discussion, as everything is pretty much spot on, the core of the issue here, is that authorpicker requires a dll, this fails for some reason, maybe the dll was locked, missing or courier couldnt find it based on its name, or maybe the code-behind for the picker is in app_code.
The thing with data types, is that there are no set conventions for handling configuration, pre-values, Id referecences, data storage, and so on, so there cannot be a generic model for support this, this there is no recommended approach from the core.
So, follow the excellent advice from Martin, and get your datatypes, doctypes, and so on deployed first, then on a day-to-day basis you should only worry about transfering content+media + their property data.
Longer term, we're working on getting a proper baselines for datatypes,and moving that support directly into the core datalayer instead of having that logic in courier.
Custom datatypes can be transfered, and normally it should be able to find dll's and transfer the data, if its stored as property data, but in cases where it stores nodeId references, there needs to be a resolver, which can intercept the value and convert it on packaging, and back again when deployed. more details here:
Where to start understanding courier errors in packaging?
Hi,
I'd successfully deployed from one site to another. Now trying to package this version back to the previous I get the error below. Could someone offer any advice on what I am supposed to do with the error? The only major change I made to to the site was to enable MVC could this have had anything to do with it? Any advice on the best way to deploy when the deployment tool doesn't work?
Thanks for any help. Loving the power of Umbraco but I wish it just "worked" :)
Umbraco.Courier.Core.Exceptions.PackageException: Unable to load item with id '50d985c6-41fe-4bf2-90c1-e421907f54d2' from provider 'Datatypes' ---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error retrieving item [50d985c6-41fe-4bf2-90c1-e421907f54d2] from provider [e0472592-e73b-11df-9492-0800200c9a66]. ---> System.Exception: Could not load assembly for datatype Author Picker with dataEditorId e66af4a0-e8b4-11de-8a39-0800200c9a66 ---> System.NullReferenceException: Object reference not set to an instance of an object. at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 125 --- End of inner exception stack trace --- at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 130 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.DataTypeProvider.HandlePack(ItemIdentifier id) at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) --- End of inner exception stack trace --- at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageBatch() at Umbraco.Courier.Core.Packaging.RevisionPackaging.Package() at Umbraco.Courier.Core.Tasks.PackagingTask.Run() at Umbraco.Courier.Core.TaskManager.manageTask(IRevisionTask value) 6/16/2013 9:23:41 PM
Hi Scott
What version of Umbraco and Courier are you using?
Martin
I would try and find out what '50d985c6-41fe-4bf2-90c1-e421907f54d2' is.
Try running the following in SQL Management Studio:
select * from umbracoNode where uniqueId = '50d985c6-41fe-4bf2-90c1-e421907f54d2'
That should show you what the guid is for.
Umbraco 6.0.6
Courier - 2.7.5.1.90
So, thae latest recommended zip on the projects area.
Laurence,
Thanks for you comment. Once finding the GUID what do I do with that information? Sorry, this is probably beginers guide to courier.
My advice is to keep up-to-date with the Courier nightlies.
As you'll see below, there's quite a few 'fixes' since 2.7.5.x
Unfortunately, as is common in Courier, some things get fixed but then other 'problems' arise! :-(
http://nightly.umbraco.org/UmbracoCourier/2.7.8/nightly%20builds/
http://nightly.umbraco.org/UmbracoCourier/
http://nightly.umbraco.org/UmbracoCourier/changes.txt
Hmmm... now I get the error below. Maybe this is overkill. I simply want a tool that package up the whole Umbraco install and deploy to a new server and DB. Is there anything that can do that? Courier is working for me on an individual node basis (right-click and select courier from contextual) but I can't package anything from the courier area without errors, both from "package all" and "adding" individually.
Umbraco.Courier.Core.Exceptions.PackageException: Unable to load item with id '50d985c6-41fe-4bf2-90c1-e421907f54d2' from provider 'Datatypes' ---> Umbraco.Courier.Core.Exceptions.RetrieveException: Error retrieving item [50d985c6-41fe-4bf2-90c1-e421907f54d2] from provider [e0472592-e73b-11df-9492-0800200c9a66]. ---> System.Exception: Could not load assembly for datatype Author Picker with dataEditorId e66af4a0-e8b4-11de-8a39-0800200c9a66 ---> System.NullReferenceException: Object reference not set to an instance of an object. at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 125 --- End of inner exception stack trace --- at Umbraco.Courier.Persistence.V6.NHibernate.Persisters.DataTypeItem.RetrieveItem[T](ItemIdentifier itemId) in c:\Program Files (x86)\teamcity\buildAgent\work\650bafc4b83aa858\Core\Umbraco.Courier.Persistence.V6.NHibernate\Persisters\Datatype.cs:line 130 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.DataTypeProvider.HandlePack(ItemIdentifier id) at Umbraco.Courier.Core.ItemProvider.Package(ItemIdentifier id) at Umbraco.Courier.RepositoryProviders.Local.Package(ItemIdentifier itemId) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) --- End of inner exception stack trace --- at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageItem(ItemIdentifier itemId, ItemProvider provider, QueuedItemIdentifier itemInQueue) at Umbraco.Courier.Core.Packaging.RevisionPackaging.PackageBatch() at Umbraco.Courier.Core.Packaging.RevisionPackaging.Package() at Umbraco.Courier.Core.Tasks.PackagingTask.Run() at Umbraco.Courier.Core.TaskManager.manageTask(IRevisionTask value) 6/17/2013 9:26:18 AM
I seem to be reaching some resolution.
The issue I have is with courier and Umbraco site B. This is a deplyment of site A
If I manually deploy the problem datatypes that stop site B packaging itself up from site A (my original build) to site B, then courier allows me to make a full package of B.
This would suggest that the original A to B didn't deploy correctly? Any yet through up no errors. Do I always need to keep a backup site in order to deploy individual problem files I wonder. Anyway, seems like a fix
The stack trace says:
Could not load assembly for datatype Author Picker with dataEditorId e66af4a0-e8b4-11de-8a39-0800200c9a66
I'd check that that datatype is working properly
I've never managed to succesfully package an entire site and transfer it. It usually errors somewhere.
I tend to build a site, zip it up along with the database, deploy it twice and set up Courier from there and leave Courier for content editors. I just dont trust it enough for deploying dev. changes.
Sending over smaller amounts of nodes and single nodes via right click usually works without issue. Results vary depending on the complexity of your project and which version of Courier and Umbraco being used.
Martin,
This seems like a sensible work flow. My issue at the moment is I am working on a default framework that will be the foundation for 3 unique services. While I build my understand of what is the best set of packages to use AND having to start to build these services up as individual project I was hoping to have use courier to be able to deploy my latest initiative to the other sites.
I can find a work around though.
Hi Scott
As Laurence suggested, it's most likely a package you've installed. Umbraco is only default if you dont load up any packages (other than courier).
Custom datatypes are usually the biggest culprit so you have to check carefully that Courier will be able to transfer them, and it will always require a tweak to the courier.config accordingly.
M.
I'd actually disagree with that, if you can't deploy everything, then something is broken.
If something is broken, one day somebody (i.e. not you), could encounter this.
As someone who encounters other peoples broken code on a daily basis....... >.<
Once I was in a lecture from a highly intelligent Nucular scientist. He said Nucular waste is no problem. Because, we would tell our children where it was.
Ahem. ;)
My understanding is Courier is a one-way deployment tool. Designed to take content from a Staging enviroment into a Live enviroment. It plugs a hole with a fundemental issue in the way the data is mixed with meta in the database. In an ideal world, this tool wouldn't even be needed, because there would be a clear seperation between content & meta. E.g. you could just deploy content changes by coping a db/folder.
Anyway... I'm getting off-topic, what did my suggestions above reveal?
Hi Laurence
Like an "ideal world" Courier is far from an ideal tool!
I completely agree you should be able to deploy everything isnt that the whole point? And the result should be repeatable entirely or individually.
But if Courier physically wont let you deploy the entire site what alternative is there?
Alarm bells should be ringing if at first sight a package fails and I do agree this suggests the tool will give you grief when deploying a single node at some point in the future (and for me it indeed has).
Unfortunately there are no other tools available to do this kind of work, so all you can do is work with what you've got and try to keep moving forward if improvements are made/offered by the team. I test Courier upgrades as often as updates are made available, as staying on the upgrade path has helped alleviate some of the issues i've encountered.
Much like your off-topic muse I believe something needs to change in the relationship between Umbraco and Courier, along with its customer support, so please check out my post here..
http://our.umbraco.org/forum/umbraco-pro/courier/41759-LOBBY-THE-UMBRACO-TEAM!!!-COURIER-IS-LETTING-UMBRACO-DOWN!!
Martin
Hmmm ... I assumed as I am only installing packages promoted on the Umbraco Projects area and have coded nothing other than creating a structure of template and doc types, that there would be nothing to break. I buy intothe logic of your statement, but I wonder where the broken code is .. broken. Whether through the install of the package or deployment in courier. Is courier highlighting an error that it created... does it really matter?
Hi Scott
Just to be clear can you list the packages you've installed?
M.
One site B:
Standardwebsite MVC
DoctypesMixins
However on Site A (which B was deployed from):
uComponents
Business Site
Google Maps for Umbraco
Does Courier not also transfer over the installed pacdkages? It certainly transfers over the doctypes, datatypes installed by the packages, but the packages themselves do not appear in "installed packages"
Scott
Hi Scott
To ensure as few problems as possible SiteA and SiteB should be a mirror of one another in terms of the installation. So you really should make sure all packages are installed on both sides before you attempt to transfer anything.
Custom datatypes are not guaranteed to transfer by default and the theory is if Courier is unaware of them, they wont transfer at all! You need to open the Courier settings file and add in the GUIDs for any custom datatypes you have installed and then cross your fingers!
I dont think Per has ever stated Courier is able to transfer any custom datatype, So view all third party packages that use custom datatypes with caution (and much testing)!
M.
Just to append to this discussion, as everything is pretty much spot on, the core of the issue here, is that authorpicker requires a dll, this fails for some reason, maybe the dll was locked, missing or courier couldnt find it based on its name, or maybe the code-behind for the picker is in app_code.
The thing with data types, is that there are no set conventions for handling configuration, pre-values, Id referecences, data storage, and so on, so there cannot be a generic model for support this, this there is no recommended approach from the core.
So, follow the excellent advice from Martin, and get your datatypes, doctypes, and so on deployed first, then on a day-to-day basis you should only worry about transfering content+media + their property data.
Longer term, we're working on getting a proper baselines for datatypes,and moving that support directly into the core datalayer instead of having that logic in courier.
And an additonal comment:
Custom datatypes can be transfered, and normally it should be able to find dll's and transfer the data, if its stored as property data, but in cases where it stores nodeId references, there needs to be a resolver, which can intercept the value and convert it on packaging, and back again when deployed. more details here:
https://github.com/umbraco/Courier/blob/master/Documentation/Developer%20Documentation/Data%20Resolvers.md
is working on a reply...