This content has been archived and is no longer being updated. Links may not function; however, this content may be relevant to outdated versions of the product.
LinkedIn
Copied!

Table of Contents

Troubleshooting: "Failed to resave page" with ReSaver Servlet

Symptom

When running the V4.2 ResaverServlet, messages similar to the following may occur:

Resaving instances of AtPega-Task (Class: 1 of 9)                Saved 0 instances of AtPega-Task         Resaved 0 instances for AtPega-Task (0 of 0) Resaving instances of AtPega-Task-Support (Class: 2 of 9)                Saved 0 instances of AtPega-Task-Support         Resaved 0 instances for AtPega-Task-Support (0 of 0)        
Resaving instances of AtPega-Task-Support-Request (Class: 3 of 9)
Error: Failed to resave page: Database-LockFailure-LockLost  ATPEGA-TASK null (Key: Resave)
Error: Failed to resave page: Database-LockFailure-LockLost  ATPEGA-TASK SR-1 null (Key: Resave)
Error: Failed to resave page: Database-LockFailure-LockLost  ATPEGA-TASK SR-10 null (Key: Resave)
Error: Failed to resave page: Database-LockFailure-LockLost  ATPEGA-TASK SR-100 null (Key: Resave)

Update: This issue is resolved in V5.1+.

Solution

Explanation

The Resaver Servlet opens each instance of a specified class and resaves them. In V4.2SP4 and earlier, this process does not involve locking any of the instances - just an open followed by a resave. However, as a result of security enhancements in V4.2SP2 SmartBuild, classes that have locking enabled must have a lock in order to save them, so errors occur.

Workaround for V4.2SP2, V4.2SP3, and V4.2SP4:

By default, the pegarules.xml file sets the transactionalLockManagement entry to Advanced, which enables the enhanced security. Setting this entry to Standard allows the system to save all classes without requiring locking.

NOTE: If the default setting is enabled, the entry may not be in the pegarules.xml file. To change the entry to Standard, add the following line to the database section of the pegarules.xml file:

<node name="database">
<map>
     <entry key="storageVersion" value="6"/>
     <entry key="transactionalLockManagement" value="Standard"/>
   </map>

Important: If you make this change, then be certain to:

  1. Stop and restart the Process Commander server
  2. Change the pegarules.xml file back to the Advanced setting after you finish using the ResaverServlet servlet.

If the you don't change the setting, then the data integrity of the system data is at risk.

Resolution For V4.2SP5:

Check the Lock instances check box.

If this check box is selected, then the ResaverServlet locks any (lockable) class instance that it is saving. Checking this box makes the ResaverServlet processing safer (although slower); you can run it while others are using the server.

If the box is not checked, then the ResaverServlet forces all instances to be saved without a lock. As a result, if a user is updating an instance while the ResaverServlet is running, then the user's updates may be overwritten.

Accordingly, as a best practice, check the Lock instances box.

Did you find this content helpful?

Have a question? Get answers now.

Visit the Collaboration Center to ask questions, engage in discussions, share ideas, and help others.