After GPDB restarts, many of the connections through Open Database Connectivity (ODBC) get hung. The memory usage of the client processes continuously increasing when checked through "top".
Some of the connections may exit with an Open Database Connectivity (ODBC) error like below:
[DataDirect][ODBC Greenplum Wire Protocol driver][Greenplum]FATAL: terminating connection due to administrator command(File postgres.c;Line 3521;Routine ProcessInterrupts;)
The stack (strace -p pid) for the hung process will keep on giving the same output as below:
brk(0x1fb3c000) = 0x1fb3c000 mmap(NULL, 1843200, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,-1, 0) = 0x2ac698b54000 munmap(0x2ac698b54000, 1843200) = 0 brk(0x1fcfd000) = 0x1fcfd000
The issue can be noticed when there is a large number of connections to GPDB is running through ODBC before restarting. Also, the issue exists only with DataDirect versions 7.1.3 and 7.1.4.
The issue has been identified to be a bug with DataDirect Driver, wherein if the GPDB system returns the error message to the client in the same IP packet as some of the results, then the ODBC driver does not parse the information correctly. The ODBC driver ignores the error message and does not drop the connection leaving it in a hanging state.
Download the DataDirect version '07.15.0227 (B0276, U0184) or higher which contain the fix for the bug
The patch is available under:
OEM -> patches -> connect64_odbc -> 7.1 -> PROGRESS_DATADIRECT_CONNECT64_ODBC_7.1.5.HOTFIX_LINUX_64.tar.Z