Error occured in updating module structure. Propogated exception, Preconditon failed.
Hi Everyone,
Product : DNG 7.0.3 version
When we are trying to update module structure using PUT call of "/structure " api and using Doorsrp-Request-type public header along with other required headers. We added If-Match header in PUT call which having value of Etag that we got from response headers of previous GET call of "/structure" api. Most of times update is working fine but in some cases we are facing below error. Not able to understand why this is occurring intermittently and we can get success on the same module if we try again. Please help us in identifying the root cause of this error.
Sample error:
Propagated exception; original message [PreconditionFailedException: Propagated exception; original message [PreconditionFailedException: Propagated exception; original message [PreconditionFailedException: If-Match on _6wU5ALJfEe-dfMzSSHxwpg/_1dqvwLJjEe-dfMzSSHxwpg _1i3Y0LJjEe-dfMzSSHxwpg etag is _1dqvwLJjEe-dfMzSSHxwpg]]]
waiting for helping reply:
Thanks,
Jyothsna
One answer
The most obvious reason for this would be if someone else updated the module structure (which changes the ETag) since you read it and its then ETag - when you PUT with what is now an out of date ETag you will get this precondition error - it is perfectly reasonable behaviour.
Redoing the change might or might not be a good idea, depending on if the change you are making to the structure is conflicting with the intervening change by a user.
If you, and the users, worked in explicit changesets this might be easier to manage by comparison when changesets are delivered.
Comments
Thanks for reply @Ian ,
I agree. But we are doing through the custom application and doing GET and PUT calls on a specific changeset created programmatically. So there won't be a way that any other user can interfere and change the module between the GET and PUT call which can cause ETAG mis-match. It is very difficult for us to identify the root cause for this behaviour. Please help me to understand where we miss in analysis.
Thanks,
Jyothsna
Sounds like you should create a support case, with a detailed log of the sequence of HTTP operations (at least the GET and the PUT) with content of request+response headers and bodies.