Skip to main content
Delphix

File Masking Job Fails With: Cannot Add Self-Loop Edge on Node RECTYPE_Filter Rows (KBA5393)

 

KBA

KBA# 5393

 

Issue

This knowledge document explains the Cannot Add Self-Loop Edge on Node RECTYPE_Filter Rows file masking failure.

Applicable Delphix Versions

Click here to view the versions of the Delphix engine to which this article applies

Major Release

All Sub Releases

6.0 6.0.0.0, 6.0.1.0, 6.0.1.1, 6.0.2.0
5.3 5.3.0.0, 5.3.0.1, 5.3.0.2, 5.3.0.3, 5.3.1.0, 5.3.1.1, 5.3.1.2, 5.3.2.0, 5.3.3.0, 5.3.3.1, 5.3.4.0, 5.3.5.0 5.3.6.0, 5.3.7.0, 5.3.7.1, 5.3.8.0, 5.3.8.1, 5.3.9.0
5.2 5.2.2.0, 5.2.2.1, 5.2.3.0, 5.2.4.0, 5.2.5.0, 5.2.5.1, 5.2.6.0, 5.2.6.1

5.1

5.1.0.0, 5.1.1.0, 5.1.2.0, 5.1.3.0, 5.1.4.0, 5.1.5.0, 5.1.5.1, 5.1.6.0, 5.1.7.0, 5.1.8.0, 5.1.8.1, 5.1.9.0, 5.1.10.0

5.0

5.0.1.0, 5.0.1.1, 5.0.2.0, 5.0.2.1, 5.0.2.2, 5.0.2.3, 5.0.3.0, 5.0.3.1, 5.0.4.0, 5.0.4.1 ,5.0.5.0, 5.0.5.1, 5.0.5.2, 5.0.5.3, 5.0.5.4

Resolution

This error is caused by having two Record types set to the same section.

In the example screenshot, the Record type All Records and Body both exist in the inventory :

clipboard_ead84c4db50d463b73bfc33f82cd84a7a.png

 

The two Records have the same configuration:

Body:


All Records:

A loop is caused between the two record types, which in turn generates the error.

The corrective action is to remove one of the record types. This can be done by selecting the Record Types button and pressing the red X on the unwanted record.

 

clipboard_e79f59b172eee397d381a28de34d65f64.png

 

 

 


Troubleshooting

The masking job will fail very early in the job before any masking has taken place.

 

The masking logs will show the following error message:

ERROR c.d.d.m.t.MaskingMarshalling - error :
java.lang.IllegalArgumentException: Cannot add self-loop edge on node RECTYPE_Filter rows, as self-loops are not allowed. To construct a graph that allows self-loops, call allowsSelfLoops(true) on the Builder.
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:210)
        at com.google.common.graph.ConfigurableMutableValueGraph.putEdgeValue(ConfigurableMutableValueGraph.java:82)
        at com.google.common.graph.ConfigurableMutableGraph.putEdge(ConfigurableMutableGraph.java:51)
        at com.dmsuite.dmsApplicator.xmlartist.XmlArtist.buildGraph(XmlArtist.java:107)
        at com.dmsuite.dmsApplicator.xmlartist.XmlArtist.enhance(XmlArtist.java:318)
        at com.dmsuite.dmsApplicator.xmlartist.XmlArtist.safeEnhance(XmlArtist.java:293)
        at com.dmsuite.dmsApplicator.JaxbUtil.marshal(JaxbUtil.java:86)
        at com.dmsuite.dmsApplicator.masking.transformation.MaskingMarshalling.generateXMLForFile(MaskingMarshalling.java:2989)
        at com.dmsuite.dmsApplicator.masking.transformation.MaskingMarshalling.createKettleXMLForFile(MaskingMarshalling.java:3132)
        at com.dmsuite.dmsApplicator.masking.transformation.RunServiceImpl.run(RunServiceImpl.java:988)
        at com.dmsuite.threads.JobExecutorService$JobCallable.call(JobExecutorService.java:147)
        at com.dmsuite.threads.JobExecutorService$JobCallable.call(JobExecutorService.java:135)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
        at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

 


Related Articles

The following articles may provide more information or related information to this article:

  • n/a