-
由 Pengzhou Tang 提交于
Formerly, GPDB do dispatch/interconnect cleanup on executor level which means once an error occurs within executor, it will be catched and dispatch/interconnect will be cleaned. The problem is if an error occurs after an executor started but before the executor run, dispatch/interconnect has no chance to be cleaned up. A problem is that outbound UDP interconnect packets still think the interconnect is active and will access the memory that has been freed. This commit add a few cleanup points on portal level, a higher call level than executor to cover more cases shown as above. mppExecutorCleanup() is reentrant, so it's ok to do double check on both level.
bc563630