ParaView 6.2.0-RC1 throws errors for non unique nodes

Hello,

I am getting this error while testing ParaView 6.2.0-RC1:

(   2.503s) [pvbatch         ]    vtkDataAssembly.cxx:591    ERR| vtkDataAssembly (0x7c87cc2a7f40): A child node with name 'SIDEWALL' already exists under parent with id=4
(   2.504s) [pvbatch         ]    vtkDataAssembly.cxx:591    ERR| vtkDataAssembly (0x7c87cc2cdda0): A child node with name 'STREAM_00_SIDEWALL' already exists under parent with id=0
(   2.505s) [pvbatch         ]    vtkDataAssembly.cxx:591    ERR| vtkDataAssembly (0x7c87cc296820): A child node with name 'STREAM_00_SIDEWALL' already exists under parent with id=0
(   2.505s) [pvbatch         ]    vtkDataAssembly.cxx:591    ERR| vtkDataAssembly (0x7c87cc296ac0): A child node with name 'STREAM_00_SIDEWALL' already exists under parent with id=0
(   2.511s) [pvbatch         ]    vtkDataAssembly.cxx:591    ERR| vtkDataAssembly (0x7c87cc20a900): A child node with name 'STREAM_00_SIDEWALL' already exists under parent with id=0

My guess is that it coming from the Conduit Source. Has something changed there?

Thanks,
Alexandre

Hi Alexandre,

Duplicate node names aren’t allowed among siblings sharing the same parent node in a vtkDataAssembly. This error message is new in ParaView 6.2, but it’s probably pointing out a problem with duplicate names that has existed in the data assembly construction for a while.

In fact, I just checked the CONVERGE CFD dataset in the VTK test data suite (https://gitlab.kitware.com/vtk/vtk/-/tree/master/Testing/Data/CONVERGETimeSeries?ref_type=heads) in ParaView 6.2.0-RC1, 6.1.1, 6.0.1, and 5.13, and I get errors similar to yours in 6.2.0-RC1 on startup, but in the other versions I don’t get error messages until I click on a SIDEWALL node in the Information Panel, when I get

Warning: In vtkSMOutputPort.cxx, line 95
vtkSMOutputPort (0x3027424c0): GetSubsetDataInformation selector matched multiple nodes. Only first one is used.

So this new error message is reporting a situation that will lead to the warning you could see in older versions of ParaView, namely, that there are two SIDEWALL siblings under a node - they should be named uniquely. Note that in the vtkCONVERGECFD reader, we are not doing anything to ensure sibling node names are unique - we should fix that. There is a secondary issue where we shouldn’t set the block meta information NAME() key in the partitioned dataset collection the reader produces.

Since you mentioned Conduit Source, the solution for this case is to ensure SIDEWALL and STREAM_00_SIDEWALL are not repeated among sibling nodes. Is that possible to do?

Thanks for your answer. They are unique in the Conduit Source, but one is named SIDEWALL, and the other SIDEWALL@. ParaView strips the @ somewhere. We have stopped adding @ to our names, but we still have cases out there that have them.

My question was why is it an error now? But I guess the answer is simply that an error was added.

I’ll figure something out on our end, thanks.

Thanks

The ‘@’ is not a valid character for selector expressions, so when the data assembly node is added, the ‘@’ is stripped away. Maybe not the most graceful thing to do, and it results in the duplication in question.

I am thinking the new error and discarding of the node with the duplicate name, may be too severe as it changes the tree structure constructed by different data sources later on. We should warn about that case for sure, but not adding the node to the data assembly likely goes too far. What do you think, @spyridon97 ?

Yes, I think taking the first node rather than none makes sense. Especially since ParaView strips a lot of characters.

Adding 2 nodes with the same name can lead to several problems in paraview… metadata information is wrong, block selection is wrong. multiblock inspector not working. Many things are wrong in general.

Conforming by the requirements of what VTK instructs is the right call IMHO, i.e. not using invalid charachters.

As far as resolving name duplication, there are 2 solutions.

  1. the user is responsible for providing unique names that abide by the VTK guidelines
  2. the reader will make sure that each node will have a unique legal node name.

Personally, i think the first is the right solution, but if the second is needed, it could be implemented.

Very true.

I’m not sure who the user is in this case - the writer of the file that VTK reads? VTK’s data assembly has the unique sibling name requirement, not a file format, so I don’t think this is practical.

I have this MR up that ensures uniqueness in a bunch of readers in VTK and the vtkConduitSource. https://gitlab.kitware.com/vtk/vtk/-/merge_requests/13651

Note that the MR doesn’t cover other VTK readers defined outside VTK. We should augment the error message to suggest how to create a unique node name, once there is a function available in vtkDataAssembly to determine one. I wonder if we should even downgrade the error behavior to a warning and add the duplicate-name child anyway for a release and change it to an error in the next release.

Hey Cory,

I think this is a good change, thanks for working on it. I don’t see the change implemented in the CGNSReader. Did I miss it?

Alexandre

vtkCGNSReader produces a vtkMultiBlockDataSet, so duplicate sibling names would come into play when creating a vtkDataAssembly from the vtkMultiBlockDataSet meta information. That’s handled by

bool vtkDataAssemblyUtilities::GenerateHierarchyInternal(
  vtkMultiBlockDataSet* input, vtkDataAssembly* hierarchy, vtkPartitionedDataSetCollection* output)

and duplicate names are addressed there. So vtkCGNSReader should be covered.

@gsabhishek , can you make a note to potentially implement Cory’s change in your new CGNS reader to partitioned datasets?

Thanks

You can still make those changes, but we have realized that vtkDataAssembly never had a unique sibling node name requirement, and have instead addressed ParaView’s complaints related to selectors that select more than one node.

We have reverted the error message and the refusal of vtkDataAssembly to add nodes only if their name is unique in https://gitlab.kitware.com/vtk/vtk/-/merge_requests/13663. That fix for this issue will be i ParaView 6.2.0-RC2.