08V01/5181: Unexpected message type 0x43
Hello.
I'm using 7.2, an app works via ODBC interface. Sometimes (in a one from my use cases this is fairly reproducible) i see that inserted rows are lost!
I've caught an issue with inserts. In one transaction I'm doing couple of selects and couple of inserts. After that, I may find 2 rows in the table (test performed on an empty table), but may find only one! No errors is reported back via ODBC fuctions return codes.
Sequence from ODBC point view is standard - SQLPrepare, BindParameter, Execute. After SQLExecute i check result with SQLGetrowCount - it's always 1 and result is SQL_SUCCESS. But in query_requests i see status 'fail' and in vertica.log lines like following:
2016-03-17 06:42:07.545 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [PQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) select count(*) as co from "OBJ43012588" where DIM = ? and CL = ? and CD = ?
2016-03-17 06:42:07.553 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [BQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) select count(*) as co from "OBJ43012588" where DIM = ? and CL = ? and CD = ?
2016-03-17 06:42:07.554 Init Session:0x7fe148011ea0-a0000000045a1e <LOG> @v_test_base_node0001: 00000/3316: Executing statement: 'select count(*) as co from "OBJ43012588" where DIM = '1'::Integer and CL = '1'::Integer and CD = '2016-01-01 00:00:00''
2016-03-17 06:42:07.564 Init Session:0x7fe148011ea0-a0000000045a1e [EE] <INFO> Thread pool exited. Max Requested 2, peak 0, created 0, removed 0
2016-03-17 06:42:07.572 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [PQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) insert into "OBJ43012588"(VALUE, DIM, CL, CD) values (?, ?, ?, ?)
2016-03-17 06:42:07.582 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [PQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) select count(*) as co from "OBJ43012588" where DIM = ? and CL = ? and CD = ?
2016-03-17 06:42:07.590 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [BQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) select count(*) as co from "OBJ43012588" where DIM = ? and CL = ? and CD = ?
2016-03-17 06:42:07.591 Init Session:0x7fe148011ea0-a0000000045a1e <LOG> @v_test_base_node0001: 00000/3316: Executing statement: 'select count(*) as co from "OBJ43012588" where DIM = '1'::Integer and CL = '1'::Integer and CD = '2016-01-01 00:00:00''
2016-03-17 06:42:07.600 Init Session:0x7fe148011ea0-a0000000045a1e [EE] <INFO> Thread pool exited. Max Requested 2, peak 0, created 0, removed 0
2016-03-17 06:42:07.608 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [PQuery] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) insert into "OBJ43012588"(FIELD4, DIM, CL, CD) values (?, ?, ?, ?)
2016-03-17 06:42:07.619 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [Query] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) COPY xxx.OBJ43012588 ( FIELD4, DIM, CL, CD ) FROM LOCAL STDIN NATIVE VARCHAR ENFORCELENGTH RETURNREJECTED AUTO NO COMMIT
2016-03-17 06:42:07.635 Init Session:0x7fe148011ea0-a0000000045a1e [EE] <INFO> Thread pool exited. Max Requested 2, peak 0, created 0, removed 0
2016-03-17 06:42:07.637 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [Query] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) COPY xxx.OBJ43012588 ( VALUE, DIM, CL, CD ) FROM LOCAL STDIN NATIVE VARCHAR ENFORCELENGTH RETURNREJECTED AUTO NO COMMIT
2016-03-17 06:42:07.649 Init Session:0x7fe148011ea0-a0000000045a1e [EE] <INFO> Thread pool exited. Max Requested 2, peak 0, created 0, removed 0
2016-03-17 06:42:07.650 Init Session:0x7fe148011ea0-a0000000045a1e <ERROR> @v_test_base_node0001: 08V01/5181: Unexpected message type 0x43
LOCATION: ??, /scratch_a/release/24526/vbuild/vertica/MsgProtocol/Server.cpp:482
2016-03-17 06:42:07.662 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [Query] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) COMMIT
Table is simple, no keys or other constraints.
What's wrong? How to deal with such an error, which even is not reported with return codes???
Thanks in advance,
Axel
Comments
Hi,
Is autocommit on in your odbc client?
Sruthi
No, but you can see COMMIT record in log provided. Moreover, I'm able to see records - one or two - via another connection (i'm using DBVisualizer to interact with DB independently from application)
Hi ,
Vertica normally translated insert statement into COPY commands :
TX:a0000000045a1e(localhost.localdoma-15611:0x73880) insert into "OBJ43012588"(FIELD4, DIM, CL, CD) values (?, ?, ?, ?)
2016-03-17 06:42:07.619 Init Session:0x7fe148011ea0-a0000000045a1e [Session] <INFO> [Query] TX:a0000000045a1e(localhost.localdoma-15611:0x73880) COPY xxx.OBJ43012588 ( FIELD4, DIM, CL, CD ) FROM LOCAL STDIN NATIVE VARCHAR ENFORCELENGTH RETURNREJECTED AUTO NO COMMIT
Seems like something is wrong with this translation , COPY now include schema "XXX" , you probably hitting a bug .
I hope you will find it useful
Thanks
First of all, I've changed actual schema name to 'xxx' from privacy reason. I do not think that translation is the issue's cause since you may see two similar requests were translated and one of them was processed normally, second was failed. Moreover, as I' ve mentioned, sometimes both queries are passed successfully, but sometimes ( this log illustrates the case) - only one. And one more notice - error message seem to have internal exchange nature because tells about unrecognized message type....
Hi,
Any ideas/suggestions no how to bypass that issue?
Thanks,
Axel
Hi,
Please open a support ticket. It looks like it needs to be analyzed more
Sruthi
Sorry, could you point me to the correct place to do that?
Thanks,
Axel