Salesforce

DSRUTIL APPLYEXTENT causes a memory violation in the replication agent

« Go Back

Information

 
TitleDSRUTIL APPLYEXTENT causes a memory violation in the replication agent
URL NameP122566
Article Number000177887
EnvironmentProduct: OpenEdge Replication
Version: 10.0x, 10.1A, 10.1B
OS: All supported platforms
Other: DSRUTIL
Question/Problem Description
DSRUTIL APPLYEXTENT causes a memory violation in the Replication Agent.
dsrutil applyextent command is run from a directory other than the directory where the target database was started
No errors displayed on screen.
Steps to Reproduce
Clarifying Information
Manually applying Locked After Image (AI) files to a replication target database.
The Target database is in PRE-TRANSITION state when the 'applyextent' command is run.

Stack trace for _rpagent on Solaris reads:
rpAGT_PollControlIPC() 
rpAGT_AgentLoop() 
Replication_Agent() 
 
Error MessageSYSTEM ERROR: Memory Violation Error (49)
Disconnecting dead user <userid>. (2527)
Defect NumberDefect OE00147281 /PSC00183447
Enhancement Number
Cause
Relative path names for the AI extent name are recognised by the dsrutil -C applyextent utility.
Resolution
Upgrade to OpenEdge 10.1C where relative path names for the AI extent name are recognised by DSRUTIL -C APPLYEXTENT.
Workaround
Once the error has occurred, the target database will need to be stopped and restarted using the normal target database startup parameters before being able to re-attempt applying AI files.

Assuming that either the source database is inoperable or the replication server (RPLS) has been stopped.

1. Stop the target database and restart it manually, using the normal target database startup parameters.  
Do not use the force option when stopping the target.

$   proshut target -by
$   proserve target [+ startup parameters ] -DBService replagent

2. Once the target database is started, run the following commands from the same directory as the '<target>.db' file:

a.  TriggerTransition so that the target database agent goes into the pre-transition state, which allows AI files to be applied.

$  dsrutil <dbname> -C triggerTransition

b.  Find the next ai file that needs to be rolled forward. For detailed information, please refer to Article  How to determine the correct ai extent number to apply to target first?   

$  dsrutil target -C recovery agent

c.  Since this issue only occurs when the dsrutil applyextent command is run from a directory other than the directory where the database was started from. Apply the needed ai files with the fully qualified path to the ai extent and from the same directory that the database Control Structure file is in (.db).

$   dsrutil <dbname> -C applyextent <path>/<ai_extent.a#>

d.  Transition the target if this is the intent, otherwise restart the target database for communications to resume between the RPLS and RPLA once synchronisation has completed.
Notes
Progress Article: 

 What is DSRUTIL applyextent?   
 
Keyword Phrase
Last Modified Date11/20/2020 7:23 AM

Powered by