The following panic occurs in segment host while inserting data into internal table from gpdb external table though data collected by hive running query on gpdb.
For reference the external table has been created only for pxf:hive and hdfs parquet file is read in hive.
At the master hosts:
2021-xx-xx 10:30:05.950276 PXF server error : Recv failure: Connection reset by peer (seg26 slice1 xxx.xxx.xx.xx:x0002 pid=14308)
At the segment host:
2021-xx-xx xx:xx:xx.146912 xST|xxxx_app|xxxx|p28186|th-139233152|xxx.xxx.xx.xxx|55802|2021-xx-xx xx:xx:xx xST|0|con1482385|cmd34|seg-1||dx109673||sx1|ERROR: |58M01|Error on receive from seg50 slice2 xxx.xxx.xx.xx:xxxxx pid=18407: server closed the connection unexpectedly ~~ snip 2021-xx-xx xx:xx:xx.022169 xST|||p11916|th0|||2021-xx-xx 14:57:54 xST|0|con1562189|cmd23|segXX|slice1||||PANIC: |XX000|Unexpected internal error: Segment process received signal SIGSEGV|||||||0||||1 0x7f436b14a630 libpthread.so.0 <symbol not found> + 0x6b14a630 2 0x75865b postgres <symbol not found> (discriminator 2) 3 0x75abd3 postgres external_getnext (fileam.c:1141) 4 0x8fefd1 postgres <symbol not found> (nodeExternalscan.c:148) 5 0x8cf0d9 postgres ExecScan (execScan.c:84) 6 0x8c16d8 postgres ExecProcNode (execProcnode.c:1009) 7 0x900b80 postgres ExecMotion (tuptable.h:159) 8 0x8c1538 postgres ExecProcNode (execProcnode.c:1121) 9 0x8b8959 postgres <symbol not found> (tuptable.h:159) 10 0x8b9684 postgres standard_ExecutorRun (execMain.c:2962) 11 0xa8da67 postgres <symbol not found> (pquery.c:1152) 12 0xa8fa51 postgres PortalRun (pquery.c:999) 13 0xa87e59 postgres <symbol not found> (postgres.c:1374) 14 0xa8ca9c postgres PostgresMain (postgres.c:5388)
Refer the following diagram for a better understanding:
hdfs : parquet file --> hive --> PXF --> gpdb:external ( pxf://s1_xxxrt.tbxxx?PROFILE=hive)
What's the cause and resolution for this issue?
It is not determined yet whether it is a bug or not at the side of GPDB.
In this case inserting the data from the external PXF table into target table partition has been performed, which contains default value for the last column (xxx_xx) and this value is a sequence.
At some point of the insert process, one segment awaits to get the next value of the sequence from the master however, for some reason does not get it.
As a workaround to fix this issue, recreating the target table without this default sequence value is required and then inserting data would be successfully completed.