yandex / odyssey

Scalable PostgreSQL connection pooler
BSD 3-Clause "New" or "Revised" License
3.13k stars 155 forks source link

ERROR jTPCCTData : ERROR: portal "" cannot be run #539

Open RedOtherShoreFlower opened 8 months ago

RedOtherShoreFlower commented 8 months ago

Hello, does someone experience a problem like this, "ERROR jTPCCTData : ERROR: portal "" cannot be run".

image

This problem occurred while I was running Benchmarksql. I set pool_reserve_prepared_statement to yes to save prepared statements. This is a part of my configuration.

image

I'll appreciate someone who know how to resolve this problem.

reshke commented 8 months ago

HI! What program do you use to perform tpcc test? how do you run it?

RedOtherShoreFlower commented 8 months ago

HI! What program do you use to perform tpcc test? how do you run iI use postgresql to perform TPCC test. I

RedOtherShoreFlower commented 8 months ago

HI! What program do you use to perform tpcc test? how do you run iI use postgresql to perform TPCC test. I

I use postgresql to perform tpcc test. First, I start postgresql, its port is default 5432; Second, configure odyssey's configure file as above screenshot shows and start it. Odyssey's port is default 6432; Third, Make tpcc connect to odyssey and start the test; Final, tpcc, odyssey and postgresql report the same ERROR;

I printf some logs.

image

Postgresql backend recevied a P message and a B message of command "BEGIN", then it received a P message of "Other SQL". I think backend should receive a E message before the next SQL's P message arrives. But it seems odyssey does not loss the E mesaage of "BEGIN". It sends the E message to backend, and executes the portal of "Other SQL" latter. When the actual E message of "Other SQL" arrives. I cannot run the portal of "Other SQL" since it has been ran by E message of "BEGIN". I think this cause the problem. But I do not know why odyssey postpone to send E message.

RedOtherShoreFlower commented 8 months ago

HI! What program do you use to perform tpcc test? how do you run it?

Oh, Oh. My Postgresql version is 13, odyssey version is 1.3, BenchmarkSQL is 5.0. There are 30 test terminals, and odyssey's pool_size is 5.