Problem Note 70892: SAS® Infrastructure for Risk Management cycles fail to run with the error “duplicate key value violates unique constraint “ix_data_path””
SAS Infrastructure for Risk Management cycles fails to run on the Data Processing step. The following errors occur in the SASIRMServer.log file:
IRM [Thread-442] [date-time],730 ERROR org.hibernate.util.JDBCExceptionReporter - Batch entry 0 insert into data_path (DATA_PATH, DATA_PATH_KEY) values ('/opt/SAS/Config/Lev1/AppData/SASIRM/pa/pool/_2789872/GLOBAL.SYSTEM_OPTION.SAS7BDAT', 2744922) was aborted: ERROR: duplicate key value violates unique constraint "ix_data_path"
Detail: Key (data_path)=(/opt/SAS/Config/Lev1/AppData/SASIRM/pa/pool/_2789872/GLOBAL.SYSTEM_OPTION.SAS7BDAT) already exists. Call getNextException to see other errors in the batch.
During the SASServer8_1 start-up, SAS Infrastructure for Risk Management (IRM) loads all graph paths from the 'out_pool' table of the IRM database, generates hash values for each path, and caches them in the heap memory to increase throughput later.
This issue can occur if there is an entry in the IRM database with a null graph path. The IRM mid-tier code attempts to create a hash value from a null graph path using the org.apache.commons.codec.digest.DigestUtils.sha256(String graphPath) API, which fails.
Troubleshooting
The following errors occur during the SASServer8_1 start-up in the server.log file:
[date-time],528 [localhost-startStop-3] ERROR [unknown] com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService -
java.lang.NullPointerException
at java.security.MessageDigest.update(MessageDigest.java:335)
at java.security.MessageDigest.digest(MessageDigest.java:410)
at org.apache.commons.codec.digest.DigestUtils.sha256(DigestUtils.java:471)
at org.apache.commons.codec.digest.DigestUtils.sha256(DigestUtils.java:503)
at org.apache.commons.codec.digest.DigestUtils.sha256Hex(DigestUtils.java:550)
at com.sas.solutions.risk.irm.server.pooling.GraphPathHash.<init>(GraphPathHash.java:17)
at com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService.loadOutputsPage(PoolingDataAccessService.java:595)
at com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService.loadOutputs(PoolingDataAccessService.java:716)
[…]
[date-time],442 [localhost-startStop-3] ERROR [unknown] com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService - key cannot be null
java.lang.NullPointerException: key cannot be null
at com.gemstone.gemfire.internal.cache.LocalRegion.validateKey(LocalRegion.java:3155)
at com.gemstone.gemfire.internal.cache.LocalRegion.validateArguments(LocalRegion.java:3146)
at com.gemstone.gemfire.internal.cache.LocalRegion.newUpdateEntryEvent(LocalRegion.java:1620)
at com.gemstone.gemfire.internal.cache.LocalRegion.put(LocalRegion.java:1581)
at com.gemstone.gemfire.internal.cache.AbstractRegion.put(AbstractRegion.java:327)
at com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService.loadOutputsPage(PoolingDataAccessService.java:601)
at com.sas.solutions.risk.irm.server.persistence.PoolingDataAccessService.loadOutputs(PoolingDataAccessService.java:716)
at com.sas.solutions.risk.irm.server.pooling.OutputPool.loadOutputs(OutputPool.java:115)
at com.sas.solutions.risk.irm.server.pooling.OutputPool.<init>(OutputPool.java:55)
at com.sas.solutions.risk.irm.server.pooling.OutputPool.getInstance(OutputPool.java:127)
at com.sas.solutions.risk.irm.server.pooling.DataObjectPoolingService.removeUnusedPoolFolderAboveHighWaterMarkOnStartup(DataObjectPoolingService.java:286)
at com.sas.solutions.risk.irm.server.pooling.DataObjectPoolingService.start(DataObjectPoolingService.java:222)
at com.sas.solutions.risk.irm.server.engine.ComputationServerEngine.start(ComputationServerEngine.java:227)
at com.sas.solutions.risk.irm.server.ComputationServer.start(ComputationServer.java:65)
at com.sas.solutions.risk.irm.server.ComputationServer.init(ComputationServer.java:92)
[…]
Solution
A code fix for the issue was included in the following hot fixes. Apply the latest hot fix to obtain the code fix.
- SAS® Infrastructure for Risk Management 3.7 M2Q003
- SAS® Infrastructure for Risk Management 3.6 G2T017
Click the Hot Fix tab in this note to access the hot fix for this issue.
Operating System and Release Information
SAS System | SAS Infrastructure for Risk Management | Linux for x64 | 3.6 | | 9.4 TS1M6 | |
Microsoft® Windows® for x64 | 3.6 | | 9.4 TS1M6 | |
*
For software releases that are not yet generally available, the Fixed
Release is the software release in which the problem is planned to be
fixed.
SAS Infrastructure for Risk Management cycles fails to run on Data Processing step.
Type: | Problem Note |
Priority: | medium |
Date Modified: | 2024-08-23 12:10:27 |
Date Created: | 2024-07-16 14:52:34 |