Pivotal Knowledge Base

Follow

ODBC Connections to Greenplum using DataDirect can Hang after Database Restart

Environment

  • Pivotal Greenplum Database (GPDB) all versions
  • DataDirect 7.1.3 and 7.1.4

Symptom

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.

Cause

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.

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