MantisBT - ParaView
View Issue Details
0009055ParaViewBugpublic2009-05-20 16:372009-06-09 20:36
Ken Moreland 
Utkarsh Ayachit 
normalminorhave not tried
closedfixed 
 
3.63.6 
0009055: Large data inappropriately collected to client in reset camera
Creating data in client/server mode, the decision to collect data is initially set based on the compositing decision for the previous render. The upshot is that ParaView will push large data to the client when first opened even when it should not. At best this slows things down a lot. At works, it saturates the client with geometry and crashes it.

To see the problem in operation, do the following.

1. Run the client in a debugger and attach to a server.
2. Set the compositing threshold to about 3 MB (in Edit->Settings). Verify that you are now not using compositing threshold.
3. Set a breakpoint (on the client) at vtkSMSimpleParallelStrategy::GetMoveMode().
4. Create a Sphere source. Set the Theta Resolution and Phi Resolution parameters to their maximum and then hit Apply. (This will create ~90MB of data.)
5. After hitting apply you will reach the breakpoint. Observe the compositing flag and stack trace.

Notice that although we are creating 90MB of geometry, the compositing mode is still set to off. The problem here is that the GetMoveMode is being called during a pipeline update for a reset camera. Since this is before a StillRender is being called (and probably before the geometry is actually created), the appropriate compositing determination has not been set yet. The compositing flag is based on the previous render when there was no geometry.
No tags attached.
Issue History
2009-05-20 16:37Ken MorelandNew Issue
2009-05-20 16:37Ken MorelandStatusbacklog => tabled
2009-05-20 16:37Ken MorelandAssigned To => Utkarsh Ayachit
2009-06-04 15:46Utkarsh AyachitNote Added: 0016636
2009-06-04 15:46Utkarsh AyachitStatustabled => @80@
2009-06-04 15:46Utkarsh AyachitFixed in Version => 3.6
2009-06-04 15:46Utkarsh AyachitResolutionopen => fixed
2009-06-09 20:36Alan ScottNote Added: 0016681
2009-06-09 20:36Alan ScottStatus@80@ => closed

Notes
(0016636)
Utkarsh Ayachit   
2009-06-04 15:46   
Dont' call UpdateAllRepresentations() explicitly in
ResetCamera(), since
UpdateAllRepresentations() results in delivering the data to rendering
nodes as well. All we want is for the pipeline to be updated until enough
information about the bounds can be known. That's already done by
vtkSMRepresentationProxy::GetBounds(). So we don't need to call update on
representations explicitly here. vtkSMRepresentationProxy has the fancy API to
update the pipelines without actually delivering the data anywhere. This gets
used when GetBounds() is called.

/cvsroot/ParaView3/ParaView3/Servers/ServerManager/vtkSMRenderViewProxy.cxx,v <-- Servers/ServerManager/vtkSMRenderViewProxy.cxx
new revision: 1.87; previous revision: 1.86


committed to 3.6 branch as well.

/cvsroot/ParaView3/ParaView3/Servers/ServerManager/vtkSMRenderViewProxy.cxx,v <-- Servers/ServerManager/vtkSMRenderViewProxy.cxx
new revision: 1.86.2.1; previous revision: 1.86
(0016681)
Alan Scott   
2009-06-09 20:36   
Internal to ParaView, assuming it is correct.