collision detected on asset being updated
The following exception was thrown when updating asset via API:
This is one asset among ~1000 other assets being updated and it's the only one triggering this exception. There is nothing special about this asset.
Can someone shed some light on the meaning and how to avoid it?
Thanks,
****************************************************
15 Nov 2012 12:13:03 ERROR [com.ibm.ram.client.RAMSession] - 6 Is latest asset revision of asset - collision detected on asset being updated.
com.ibm.ram.internal.client.RAMServiceException: 6 Is latest asset revision of asset - collision detected on asset being updated.[409]
at com.ibm.ram.internal.client.RAMClient.uploadAsset(RAMClient.java:1511)
at com.ibm.ram.client.RAMSession.putAsset(RAMSession.java:3150)
at com.ibm.ram.client.RAMSession.access$2(RAMSession.java:2931)
at com.ibm.ram.client.RAMSession$1.run(RAMSession.java:2691)
at java.lang.Thread.run(Unknown Source)
15 Nov 2012 12:13:03 ERROR [com.ibm.ram.client.RAMSession] - The asset ARGETOL[1.0] was not updated.
2 answers
There are two possibilities.
1) There was an actual collision. This would occur if you download the asset, updated on the client server, and then sent it to the host, but someone else updated the asset between the time you downloaded and when you sent it to the host. In that case get the asset again and make your updates and try again.
2) There is a problem with Web Servers. The default configuration of the web server has post msgs as timing out after two minutes if there is no response, and then immediately it posts the request again. When this occurs on a browser submit of a large asset it can be updated again, while it is still being updated the first time. This causes a permanent collision. You can tell this occurred for an asset if you try to just browse the asset details on the web and you get an error about collision. The workaround to prevent this is to tell the web server to not timeout on a post. Once an asset goes bad like this it requires a DBA to update a field in the database.
1) There was an actual collision. This would occur if you download the asset, updated on the client server, and then sent it to the host, but someone else updated the asset between the time you downloaded and when you sent it to the host. In that case get the asset again and make your updates and try again.
2) There is a problem with Web Servers. The default configuration of the web server has post msgs as timing out after two minutes if there is no response, and then immediately it posts the request again. When this occurs on a browser submit of a large asset it can be updated again, while it is still being updated the first time. This causes a permanent collision. You can tell this occurred for an asset if you try to just browse the asset details on the web and you get an error about collision. The workaround to prevent this is to tell the web server to not timeout on a post. Once an asset goes bad like this it requires a DBA to update a field in the database.