Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ambiguous DXA exception for PCA DXA model addon #75

Open
jhorsman opened this issue Jun 6, 2019 · 0 comments
Open

Ambiguous DXA exception for PCA DXA model addon #75

jhorsman opened this issue Jun 6, 2019 · 0 comments

Comments

@jhorsman
Copy link
Contributor

jhorsman commented Jun 6, 2019

When using DXA 2.1 with Sites 9 and DXD 11, DXA can raise pretty ambiguous exceptions, making it hard to troubleshoot.

For example, when a page or dynamic component presentation does not contain the expected DXA JSON, the following exception will be raised. This is a common use case, for example when old non-DXA content is published, or when there is additional data in the page content and component presentation content added by a TBB like the SI4T TBBs.

DxaException in the DXA website:

 PCA client returned an unexpected response when retrieving enity model data for id 6336-805.
 
 Exception of type 'Sdl.Tridion.Api.GraphQL.Client.Exceptions.GraphQLClientException' was thrown.
 GraphQLError : Exception while fetching data (/componentPresentation/rawContent) : Error occurred while transforming component presentation content at Line : 5 Column :4

Under the hood, the DXA framework uses the Sdl.Tridion.Api.Client to call the PCA service with DXA model addon, calling this service returns a much clearer exception which explains the cause of the error:

...
"errors":[
  {
	 "message":"Exception while fetching data (/componentPresentation/rawContent) : Error occurred while transforming component presentation content",
	 "path":[
		"componentPresentation",
		"rawContent"
	 ],
	 ...
	 "extensions":{
		"0849e23e-bfaa-41c4-b1d0-2e2fd4ee2a81":"Error occurred while transforming component presentation content",
		"334d162d-0e6c-491f-ae53-5a293cb5442e":"            Couldn't deserialize content '<!-- INDEX-DATA-START:            <indexdata><url>tcm:9-6336            </url><title>08-0001</title><publicationid>9</publicationid><schemaid>770</schemaid><itemtype>16</itemtype><parentsgid>0</parentsgid><type>0</type><body>...

From the last error message it is clear: my SI4T TBB has left some XML data in the component presentation content, and the PCA DXA plugin cannot read this data. Now I need to know what to fix. This information is not visible in the DxaException.

Solution A
The error handling in the DXA framework or in the Sdl.Tridion.Api.Client could be improved so that this crucial error detail bubbles up in the chain of errors and exceptions.

Solution B
The detailed error complains about not being able to de-serialize the content. Since this and expected scenario (DXA can only read DXA/DD4T data but technically other data could be present in the Content Delivery data store) the PCA DXA plugin could handle the situation better and raise a specific error message which explains that the page or component presentation content is not the expected DXA or DD4T content.

Workaround
I could get the additional error detail by reproducing the error locally in a website running in Visual Studio, and configuring the Web.config to use a proxy. With Fiddler I could inspect the PCA service calls, and inspect the error detail.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant