{"id":3325,"date":"2013-10-30T08:33:20","date_gmt":"2013-10-30T13:33:20","guid":{"rendered":"http:\/\/appcrawler.com\/wordpress\/?p=3325"},"modified":"2013-10-30T08:33:20","modified_gmt":"2013-10-30T13:33:20","slug":"difference-between-invalidversionexception-and-concurrentupdateexception","status":"publish","type":"post","link":"http:\/\/appcrawler.com\/wordpress\/2013\/10\/30\/difference-between-invalidversionexception-and-concurrentupdateexception\/","title":{"rendered":"Difference between InvalidVersionException and ConcurrentUpdateException"},"content":{"rendered":"<p>ATG is a very cache heavy application.  Given its chatty database design, this is a good thing.  One area that uses cache heavily and depends upon a proper configuration of the repository layer is the OrderRepository.  Two common exceptions that are frequently misunderstood, or at least ill defined, are InvalidVersionException and ConcurrentUpdateException.<\/p>\n<p>The short answer is this:<\/p>\n<p>InvalidVersionException (&#8220;IVE&#8221;) means the users session has a version value for the current order that differs from what the repository on the <u>same<\/u> application server thinks is the current version for that same order.<\/p>\n<p>ConcurrentUpdateException (&#8220;CUE&#8221;) means the version in the <u>database<\/u> differs from what the repository on an application server thinks it should be.<\/p>\n<p>CUE is almost always related to either activity occurring in the database outside of the repository layer, or different caching mechanisms between application servers.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>ATG is a very cache heavy application. Given its chatty database design, this is a good thing. One area that uses cache heavily and depends upon a proper configuration of the repository layer is the OrderRepository. Two common exceptions that&hellip;<\/p>\n<p class=\"more-link-p\"><a class=\"more-link\" href=\"http:\/\/appcrawler.com\/wordpress\/2013\/10\/30\/difference-between-invalidversionexception-and-concurrentupdateexception\/\">Read more &rarr;<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_mi_skip_tracking":false,"footnotes":""},"categories":[37,38],"tags":[],"_links":{"self":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3325"}],"collection":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/comments?post=3325"}],"version-history":[{"count":5,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3325\/revisions"}],"predecessor-version":[{"id":3343,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/posts\/3325\/revisions\/3343"}],"wp:attachment":[{"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/media?parent=3325"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/categories?post=3325"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/appcrawler.com\/wordpress\/wp-json\/wp\/v2\/tags?post=3325"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}