Skip to main content

ATG Order update - InvalidVersionException and ConcurrentUpdateException

ATG repository item descriptor can have the version property. The atg.adapter.gsa.ItemTransactionState holds this version information. For example consider the Order item-descriptor. It has the version property defined against the table dcspp_order. Means, the dcspp_order table has the column version which defines which version of order is currently in the DB. Each order update flow will update this column.

 <property name="version" display-name-resource="version" data-type="int" queryable="true" readable="true" column-name="version" hidden="false" category-resource="categoryInfo" expert="true" required="false" cache-mode="inherit" writable="true">
    <attribute name="uiwritable" value="false"/>
    <attribute name="propertySortPriority" value="30"/>
  </property>


-------------------------------

During the OrderManager.updateOrder() call, validation is done to compare the vesion of the Order object to the one in repository and the exception atg.commerce.order.InvalidVersionException is thrown.
 
2012-09-08 11:38:24,213 99015942 ERROR [nucleusNamespace.atg.commerce.order.OrderManager] (TP-Processor77:) InvalidVersionException: Unable to update order for :6226680554
2012-09-08 11:38:24,213 99015942 ERROR [nucleusNamespace.atg.commerce.order.OrderManager] (TP-Processor77:)
atg.commerce.order.InvalidVersionException: This order (6226680554) is out of date. Changes have been made to the order and the operation should be resubmitted. Order version 136, Repository item version 138.
    at atg.commerce.order.OrderManager.updateOrder(OrderManager.java:2557)


--------------------------------   


During the order update @ GSAItemDescriptor, atg.repository.ConcurrentUpdateException is thrown if no row got updated based on the "where" condition. If the table is having a version property, the where condition includes the version also. And in case of Order, this exception may occurs if the version in the DB not matches with the one in order object.
   
Caused by: atg.repository.ConcurrentUpdateException: no rows updated oldVersion=3 for item=order:6284190656 in GSATransaction=atg.adapter.gsa.GSATransaction@1ccdb05    thread=TP-Processor86 transaction=TransactionImpl:XidImpl[FormatId=257, BranchQual=, localId=4931830]
    at atg.adapter.gsa.GSAItemDescriptor.updateItem(GSAItemDescriptor.java:6070)
    at atg.adapter.gsa.GSARepository.updateItem(GSARepository.java:949)
    at atg.commerce.order.processor.ProcSaveOrderObject.runProcess(ProcSaveOrderObject.java:180)
    at atg.service.pipeline.PipelineManager.runProcess(PipelineManager.java:453)
    at atg.commerce.order.OrderManager.updateOrder(OrderManager.java:2586)


-------------------------------

Comments

  1. This comment has been removed by the author.

    ReplyDelete
  2. How to avoid InvalidVersionException and ConcurrentUpdateException ? Does one need to wrap all update, insert order statements in begin and end transaction code ?

    ReplyDelete
  3. InvalidVersionException and ConcurrentUpdateException will occur due to bad coding/ bad server configuration / clustering.

    ReplyDelete

Post a Comment

Popular posts from this blog

How to convert your Blogger Blog to PDF ?

You can use a website called "blogbooker" @  http://www.blogbooker.com/blogger.php   to convert your Blogger Blog to a PDF . Please find the steps below : 1. Save your blog as an xml using Blogger Settings - Other - Export Blog option 2. Go to the website " http://www.blogbooker.com/blogger.php " and select this XML , give your blog address and select the options like date range, page size, font, ... 3. Click the  "Create Your BlogBook" button to view and save your blog as PDF

Basic design decisions for a commerce search setup ( with an ATG Search view)

In this blog I would like to explain the basic set of configuration/design decisions needed to setup an ATG search project. Most of these design decisions are common for all Enterprise search applications. 1. Decide the searchable properties :   This means the properties that the business want the user to search in the ecommerce platform. In ATG search these are configured as the text properties in the product-catalog-output-config.xml ( the definitionFile of the \atg\commerce\search\ProductCatalogOutputConfig). Usually the displayName of product/sku, displayName of department/category/sub-category, skuId, brandName are the properties configured as searchable. 2. Decide the search refinement properties or the faceted properties :   After a user search for a keyword, search refinement is the next step done to filter his results. ATG supports the search refinement using the Faceted Search concept. Read more about facted search @...

Eclipse plugin: InstaSearch – for quick search

InstaSearch is an Eclipse plug-in for performing quick and advanced search of workspace files. This will index the files and when you search for some file contents, it will look with in this index and the search results will be faster, just like the Goolge instant search. It uses Lucene ( http://lucene.apache.org/ ) for indexing and fast searching of files in the workspace. Each search result file then can be previewed using few most matching and relevant lines. A double-click on the match leads to the matching line in the file. Main Features Instantly shows search results Shows a preview using relevant lines Periodically updates the index Matches partial words (e.g. case in CamelCase) Opens and highlights matches in files Searches JAR source attachments Supports filtering by extension/project/working set Download / Installation In Eclipse Helios (3.6) please install using the  Eclipse Marketplace from the Help menu http://marketplace.eclipse.org/s...

Google Chrome shortcut keys

If you are a Google Chromey guy, please find below the list of shortcut keys for some of the most used features  :-) Find more shortcut keys @  http://www.google.com/support/chrome/bin/static.py?page=guide.cs&guide=25799&topic=28650

ATG - how to create and deploy a new atg module

ATG products are packaged as a number of separate application modules. Application modules exist in the ATG installation as a set of directories defined by a manifest file. To create a new module, follow the below steps : Create a module directory within your ATG installation.  Create a META-INF directory within the module directory. Note that this directory must be named META-INF.  Create a manifest file named MANIFEST.MF and include it in the META-INF directory for the module. The manifest contains the meta-data describing the module. A module located at <ATG2007.1dir>/MyModule is named MyModule and a module located at <ATG2007.1dir>/CustomModules/MyModule is named CustomModules.MyModule. Within the subdirectory that holds the module, any number of files may reside in any desired order. These files are the module resources (EAR files for J2EE applications, WAR files for web applications, EJB-JAR files for Enterprise JavaBeans, JAR files of Java class...