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?
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.
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 ?
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.
the user is responsible for providing unique names that abide by the VTK guidelines
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.
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.
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.
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
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.