Commit b81541eb authored by Utkarsh Ayachit's avatar Utkarsh Ayachit

Fixed issues with exodus reader in parallel.

PMProperty should never call UpdateInformation() or Update() or any such
pipeline calls in Pull(). The reason being that Pull() is only called on
root-node in parallel and if the filter is doing parallel communication in any
of those methods then it will hang!!!

Also vtkPMSourceProxy needed to call UpdateInformation() on all subproxies.
Fixed that. This made the code in vtkPMCompoundSourceProxy::UpdateInformation()
obsolete and hence it was removed.
parent b6f798c0
......@@ -192,20 +192,6 @@ bool vtkPMCompoundSourceProxy::ReadXMLAttributes(vtkPVXMLElement* element)
return true;
}
//----------------------------------------------------------------------------
void vtkPMCompoundSourceProxy::UpdateInformation()
{
for (unsigned int cc=0; cc < this->GetNumberOfSubProxyHelpers(); cc++)
{
vtkPMSourceProxy* subproxy = vtkPMSourceProxy::SafeDownCast(
this->GetSubProxyHelper(cc));
if (subproxy)
{
subproxy->UpdateInformation();
}
}
}
//----------------------------------------------------------------------------
void vtkPMCompoundSourceProxy::PrintSelf(ostream& os, vtkIndent indent)
{
......
......@@ -49,11 +49,6 @@ protected:
// Create the output ports and add post filters for each output port.
virtual bool CreateOutputPorts();
// Description:
// Triggers UpdateInformation(). Overridden to call UpdateInformation() on the
// internal "real" source proxies.
virtual void UpdateInformation();
private:
vtkPMCompoundSourceProxy(const vtkPMCompoundSourceProxy&); // Not implemented
void operator=(const vtkPMCompoundSourceProxy&); // Not implemented
......
......@@ -89,7 +89,6 @@ bool vtkPMSILProperty::Pull(vtkSMMessage* msgToFill)
vtkWarningMacro("Could not get the reader.");
return false;
}
reader->UpdateInformation();
vtkInformation* info =
reader->GetExecutive()->GetOutputInformation(this->OutputPort);
if (!info || !info->Has(vtkDataObject::SIL()))
......
......@@ -278,9 +278,23 @@ void vtkPMSourceProxy::Invoke(vtkSMMessage* message)
//----------------------------------------------------------------------------
void vtkPMSourceProxy::UpdateInformation()
{
vtkAlgorithm* algo = vtkAlgorithm::SafeDownCast(this->GetVTKObject());
assert(algo);
algo->UpdateInformation();
if (this->GetVTKObject())
{
vtkAlgorithm* algo = vtkAlgorithm::SafeDownCast(this->GetVTKObject());
assert(algo);
algo->UpdateInformation();
}
// Call UpdateInformation() on all subproxies.
for (unsigned int cc=0; cc < this->GetNumberOfSubProxyHelpers(); cc++)
{
vtkPMSourceProxy* src = vtkPMSourceProxy::SafeDownCast(
this->GetSubProxyHelper(cc));
if (src)
{
src->UpdateInformation();
}
}
}
//----------------------------------------------------------------------------
......
......@@ -187,14 +187,11 @@ void vtkSMSourceProxy::UpdatePipelineInformation()
{
vtkSMMessage message;
message << pvstream::InvokeRequest() << "UpdateInformation";
// vtkPMSourceProxy ensures that it calls UpdateInformation() on each of the
// subproxies as well.
this->Invoke(&message);
}
// This is no longer applicable since subproxies don't exists on the
// client-side.
// This simply iterates over subproxies and calls UpdatePropertyInformation();
// this->Superclass::UpdatePipelineInformation();
this->InvokeEvent(vtkCommand::UpdateInformationEvent);
// this->MarkModified(this);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment