<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div><br></div><div>I have two server postgresql 10.X configured with streaming replication and two pgpool server in front of pg, watchdog to control pgpool ha and vip to access pgpool service.</div><div>I am getting this error at pgpool log:</div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20193-1] 2018-12-17 03:18:01: pid 12142: LOG: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 24931 statement: &quot;SAVEPOINT _EXEC_SVP_0x55594d617a10&quot; message: &quot;la orden SAVEPOINT sólo puede ser usada en bloques de transacción&quot; </div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20193-2] 2018-12-17 03:18:01: pid 12142: LOCATION: pool_proto_modules.c:3317</div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20194-1] 2018-12-17 03:18:01: pid 12142: WARNING: packet kind of backend 1 [&#39;E&#39;] does not match with master/majority nodes packet kind [&#39;C&#39;]</div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20194-2] 2018-12-17 03:18:01: pid 12142: LOCATION: pool_process_query.c:3635</div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20195-1] 2018-12-17 03:18:01: pid 12142: FATAL: failed to read kind from backend</div><div>Dec 17 03:18:01 XXXX1 pgpool12142: [20195-2] 2018-12-17 03:18:01: pid 12142: DETAIL: kind mismatch among backends. Possible last query was: &quot;SAVEPOINT _EXEC_SVP_0x55594d617a10&quot; kind details are: 0[C] 1[E: la orden SAVEPOINT sólo puede ser usada en bloques de transacción]</div><div><br></div><div>I think that there is an application that is connecting to pgpool using postgresql odbc driver because I have found the same savepoint name pattern at psqlodbc repository:</div><div><a href="https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=execute.c;hb=e0e512f5c18750e747164d9110bcf6752d013126#l399">https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=execute.c;hb=e0e512f5c18750e747164d9110bcf6752d013126#l399</a><br></div><div><a href="https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=execute.c;hb=e0e512f5c18750e747164d9110bcf6752d013126#l599">https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=execute.c;hb=e0e512f5c18750e747164d9110bcf6752d013126#l599</a></div><div>And I suppose that the Level of rollback on errors, it was set as Statement =2 </div><div><br></div><div>Config doc of odbc driver ( <a href="https://odbc.postgresql.org/docs/config.html">https://odbc.postgresql.org/docs/config.html</a> )</div><div>Specifies what to rollback should an error occur.</div><div>Nop(0): Don&#39;t rollback anything and let the application handle the error.<br></div><div>Transaction(1): Rollback the entire transaction.<br></div><div>Statement(2): Rollback the statement.<br></div><div>Setup note: This specification is set up with the PROTOCOL option parameter.<br></div><div>PROTOCOL=7.4-(0|1|2)<br></div><div>default value is Statement (it is Transaction for servers before 8.0).</div><div> </div><div>Looking at the log, backend 1 is got an Error  [&#39;E&#39;]  and backend 0 had a complete command [&#39;C&#39;] packet kind to there was a kind mismatch among backends. But I don&#39;t understand why pgpool was getting that error. Under my knowledge our pgpool cluster has enabled load balancing so if a connection start/begin a transaction pgpool routes this to master node and routes the whole transaction to the master node and the previous error hasn&#39;t be thrown by pgpool.  Could you help to find out why is failing ?</div><div><br></div><div>Thanks</div><div><br></div><div><br></div><div><br></div></div></div></div></div></div>