Pivotal Knowledge Base

Follow

ODBC connections to GPDB using DataDirect can hang after database restart

Environment

Product Version
Pivotal Greenplum (GPDB) All versions
DataDirect  7.1.3 & 7.1.4

Symptom

After GPDB restarts, many of the connections through ODBC get hung. The memory usage for 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.

Cause

The issue has been identified to be a bug with DataDirect Driver, where in 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.

Resolution

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

Comments

Powered by Zendesk