You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@phoenix.apache.org by F21 <f2...@gmail.com> on 2016/04/01 06:25:11 UTC
Phoenix transactions not committing.
As I mentioned about a week ago, I am working on a golang client using
protobuf serialization with the phoenix query server. I have
successfully dealt with the serialization of requests and responses.
However, I am trying to commit a transaction and just doesn't seem to
commit.
Here's what I am doing (I am not including the WireMessage message that
wraps the requests/responses for brevity):
I have a table called "my_table", created by running this sql in
Squirrel SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY, v VARCHAR)
TRANSACTIONAL=true
OpenConnectionRequest {
connection_id: "myconnectionid"
}
statementID = CreateStatementRequest {
connection_id: "myconnectionid"
}
PrepareAndExecuteRequest {
connection_id : "myconnectionid"
statement_id = statementID
sql = " UPSERT INTO my_table VALUES (1,'A')"
}
CommitRequest {
connection_id: "myconnectionid"
}
After sending the commands to the query service, I executed "SELECT *
FROM my_table" in Squirrel SQL, but I do not see any records. There also
doesn't seem to be anything interesting in the tephra or hbase master logs.
What is causing this problem?
Re: Phoenix transactions not committing.
Posted by Josh Elser <jo...@gmail.com>.
If you invoked a commit on PQS, it should have flushed any cached values
to HBase. The general messages you described in your initial post look
correct at a glance.
If you have an end-to-end example of this that I can play with, I can
help explain what's happening inside of PQS. If you want to figure it
out yourself, I'd recommend attaching a remote debugger to the
QueryServer and stopping it inside of the class JdbcMeta in Avatica's
codebase (you should see a method in there corresponding to the request
you sent).
F21 wrote:
> @James Taylor:
>
> I was unable to reproduce the problem today after extensive testing. I
> think the problem is probably due to SquirrelSQL and not the query
> server. Not familiar with the thin-client and SquirrelSQL, but does it
> do any caching?
>
> On 3/04/2016 5:12 AM, James Taylor wrote:
>> Glad you have a work around. Would you mind filing a Calcite bug for
>> the Avatica component after you finish your testing?
>>
>> Thanks,
>> James
>>
>> On Sat, Apr 2, 2016 at 4:10 AM, F21 <f21.groups@gmail.com
>> <ma...@gmail.com>> wrote:
>>
>> I was able to successfully commit a transaction if I set the
>> serialization of the phoenix query server to JSON.
>>
>> I will test more with protobufs and report back.
>>
>> On 2/04/2016 1:11 AM, Steve Terrell wrote:
>>> You might try looking up previous emails from me in this mailing
>>> list. I had some problems doing commits when using the thin
>>> client and Phoenix 4.6.0.
>>>
>>> Hope this helps,
>>> Steve
>>>
>>> On Thu, Mar 31, 2016 at 11:25 PM, F21
>>> <<m...@gmail.com> wrote:
>>>
>>> As I mentioned about a week ago, I am working on a golang
>>> client using protobuf serialization with the phoenix query
>>> server. I have successfully dealt with the serialization of
>>> requests and responses.
>>>
>>> However, I am trying to commit a transaction and just doesn't
>>> seem to commit.
>>>
>>> Here's what I am doing (I am not including the WireMessage
>>> message that wraps the requests/responses for brevity):
>>>
>>> I have a table called "my_table", created by running this sql
>>> in Squirrel SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY,
>>> v VARCHAR) TRANSACTIONAL=true
>>>
>>> OpenConnectionRequest {
>>> connection_id: "myconnectionid"
>>> }
>>>
>>> statementID = CreateStatementRequest {
>>> connection_id: "myconnectionid"
>>> }
>>>
>>> PrepareAndExecuteRequest {
>>> connection_id : "myconnectionid"
>>> statement_id = statementID
>>> sql = " UPSERT INTO my_table VALUES (1,'A')"
>>> }
>>>
>>> CommitRequest {
>>> connection_id: "myconnectionid"
>>> }
>>>
>>> After sending the commands to the query service, I executed
>>> "SELECT * FROM my_table" in Squirrel SQL, but I do not see
>>> any records. There also doesn't seem to be anything
>>> interesting in the tephra or hbase master logs.
>>>
>>> What is causing this problem?
>>>
>>>
>>
>>
>
Re: Phoenix transactions not committing.
Posted by F21 <f2...@gmail.com>.
@James Taylor:
I was unable to reproduce the problem today after extensive testing. I
think the problem is probably due to SquirrelSQL and not the query
server. Not familiar with the thin-client and SquirrelSQL, but does it
do any caching?
On 3/04/2016 5:12 AM, James Taylor wrote:
> Glad you have a work around. Would you mind filing a Calcite bug for
> the Avatica component after you finish your testing?
>
> Thanks,
> James
>
> On Sat, Apr 2, 2016 at 4:10 AM, F21 <f21.groups@gmail.com
> <ma...@gmail.com>> wrote:
>
> I was able to successfully commit a transaction if I set the
> serialization of the phoenix query server to JSON.
>
> I will test more with protobufs and report back.
>
> On 2/04/2016 1:11 AM, Steve Terrell wrote:
>> You might try looking up previous emails from me in this mailing
>> list. I had some problems doing commits when using the thin
>> client and Phoenix 4.6.0.
>>
>> Hope this helps,
>> Steve
>>
>> On Thu, Mar 31, 2016 at 11:25 PM, F21 <f21.groups@gmail.com
>> <ma...@gmail.com>> wrote:
>>
>> As I mentioned about a week ago, I am working on a golang
>> client using protobuf serialization with the phoenix query
>> server. I have successfully dealt with the serialization of
>> requests and responses.
>>
>> However, I am trying to commit a transaction and just doesn't
>> seem to commit.
>>
>> Here's what I am doing (I am not including the WireMessage
>> message that wraps the requests/responses for brevity):
>>
>> I have a table called "my_table", created by running this sql
>> in Squirrel SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY,
>> v VARCHAR) TRANSACTIONAL=true
>>
>> OpenConnectionRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> statementID = CreateStatementRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> PrepareAndExecuteRequest {
>> connection_id : "myconnectionid"
>> statement_id = statementID
>> sql = " UPSERT INTO my_table VALUES (1,'A')"
>> }
>>
>> CommitRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> After sending the commands to the query service, I executed
>> "SELECT * FROM my_table" in Squirrel SQL, but I do not see
>> any records. There also doesn't seem to be anything
>> interesting in the tephra or hbase master logs.
>>
>> What is causing this problem?
>>
>>
>
>
Re: Phoenix transactions not committing.
Posted by James Taylor <ja...@apache.org>.
Glad you have a work around. Would you mind filing a Calcite bug for the
Avatica component after you finish your testing?
Thanks,
James
On Sat, Apr 2, 2016 at 4:10 AM, F21 <f2...@gmail.com> wrote:
> I was able to successfully commit a transaction if I set the serialization
> of the phoenix query server to JSON.
>
> I will test more with protobufs and report back.
>
> On 2/04/2016 1:11 AM, Steve Terrell wrote:
>
> You might try looking up previous emails from me in this mailing list. I
> had some problems doing commits when using the thin client and Phoenix
> 4.6.0.
>
> Hope this helps,
> Steve
>
> On Thu, Mar 31, 2016 at 11:25 PM, F21 <f2...@gmail.com> wrote:
>
>> As I mentioned about a week ago, I am working on a golang client using
>> protobuf serialization with the phoenix query server. I have successfully
>> dealt with the serialization of requests and responses.
>>
>> However, I am trying to commit a transaction and just doesn't seem to
>> commit.
>>
>> Here's what I am doing (I am not including the WireMessage message that
>> wraps the requests/responses for brevity):
>>
>> I have a table called "my_table", created by running this sql in Squirrel
>> SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY, v VARCHAR)
>> TRANSACTIONAL=true
>>
>> OpenConnectionRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> statementID = CreateStatementRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> PrepareAndExecuteRequest {
>> connection_id : "myconnectionid"
>> statement_id = statementID
>> sql = " UPSERT INTO my_table VALUES (1,'A')"
>> }
>>
>> CommitRequest {
>> connection_id: "myconnectionid"
>> }
>>
>> After sending the commands to the query service, I executed "SELECT *
>> FROM my_table" in Squirrel SQL, but I do not see any records. There also
>> doesn't seem to be anything interesting in the tephra or hbase master logs.
>>
>> What is causing this problem?
>>
>
>
>
Re: Phoenix transactions not committing.
Posted by F21 <f2...@gmail.com>.
I was able to successfully commit a transaction if I set the
serialization of the phoenix query server to JSON.
I will test more with protobufs and report back.
On 2/04/2016 1:11 AM, Steve Terrell wrote:
> You might try looking up previous emails from me in this mailing
> list. I had some problems doing commits when using the thin client
> and Phoenix 4.6.0.
>
> Hope this helps,
> Steve
>
> On Thu, Mar 31, 2016 at 11:25 PM, F21 <f21.groups@gmail.com
> <ma...@gmail.com>> wrote:
>
> As I mentioned about a week ago, I am working on a golang client
> using protobuf serialization with the phoenix query server. I have
> successfully dealt with the serialization of requests and responses.
>
> However, I am trying to commit a transaction and just doesn't seem
> to commit.
>
> Here's what I am doing (I am not including the WireMessage message
> that wraps the requests/responses for brevity):
>
> I have a table called "my_table", created by running this sql in
> Squirrel SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY, v
> VARCHAR) TRANSACTIONAL=true
>
> OpenConnectionRequest {
> connection_id: "myconnectionid"
> }
>
> statementID = CreateStatementRequest {
> connection_id: "myconnectionid"
> }
>
> PrepareAndExecuteRequest {
> connection_id : "myconnectionid"
> statement_id = statementID
> sql = " UPSERT INTO my_table VALUES (1,'A')"
> }
>
> CommitRequest {
> connection_id: "myconnectionid"
> }
>
> After sending the commands to the query service, I executed
> "SELECT * FROM my_table" in Squirrel SQL, but I do not see any
> records. There also doesn't seem to be anything interesting in the
> tephra or hbase master logs.
>
> What is causing this problem?
>
>
Re: Phoenix transactions not committing.
Posted by F21 <f2...@gmail.com>.
Hey Steve,
Thanks for your reply. I am using Phoenix 4.7.0 so these problem to be
fixed. Anyway, I did some more tests and noticed that the transactions
were timing out:
2016-04-02 09:58:28,189 INFO [tx-clean-timeout]
tephra.TransactionManager: Tx invalid list: added tx 1459591047079000000
because of timeout
2016-04-02 09:58:28,189 INFO [tx-clean-timeout]
tephra.TransactionManager: Invalidated 1 transactions due to timeout.
On 2/04/2016 1:11 AM, Steve Terrell wrote:
> You might try looking up previous emails from me in this mailing
> list. I had some problems doing commits when using the thin client
> and Phoenix 4.6.0.
>
> Hope this helps,
> Steve
>
> On Thu, Mar 31, 2016 at 11:25 PM, F21 <f21.groups@gmail.com
> <ma...@gmail.com>> wrote:
>
> As I mentioned about a week ago, I am working on a golang client
> using protobuf serialization with the phoenix query server. I have
> successfully dealt with the serialization of requests and responses.
>
> However, I am trying to commit a transaction and just doesn't seem
> to commit.
>
> Here's what I am doing (I am not including the WireMessage message
> that wraps the requests/responses for brevity):
>
> I have a table called "my_table", created by running this sql in
> Squirrel SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY, v
> VARCHAR) TRANSACTIONAL=true
>
> OpenConnectionRequest {
> connection_id: "myconnectionid"
> }
>
> statementID = CreateStatementRequest {
> connection_id: "myconnectionid"
> }
>
> PrepareAndExecuteRequest {
> connection_id : "myconnectionid"
> statement_id = statementID
> sql = " UPSERT INTO my_table VALUES (1,'A')"
> }
>
> CommitRequest {
> connection_id: "myconnectionid"
> }
>
> After sending the commands to the query service, I executed
> "SELECT * FROM my_table" in Squirrel SQL, but I do not see any
> records. There also doesn't seem to be anything interesting in the
> tephra or hbase master logs.
>
> What is causing this problem?
>
>
Re: Phoenix transactions not committing.
Posted by Steve Terrell <st...@oculus360.us>.
You might try looking up previous emails from me in this mailing list. I
had some problems doing commits when using the thin client and Phoenix
4.6.0.
Hope this helps,
Steve
On Thu, Mar 31, 2016 at 11:25 PM, F21 <f2...@gmail.com> wrote:
> As I mentioned about a week ago, I am working on a golang client using
> protobuf serialization with the phoenix query server. I have successfully
> dealt with the serialization of requests and responses.
>
> However, I am trying to commit a transaction and just doesn't seem to
> commit.
>
> Here's what I am doing (I am not including the WireMessage message that
> wraps the requests/responses for brevity):
>
> I have a table called "my_table", created by running this sql in Squirrel
> SQL: CREATE TABLE my_table (k BIGINT PRIMARY KEY, v VARCHAR)
> TRANSACTIONAL=true
>
> OpenConnectionRequest {
> connection_id: "myconnectionid"
> }
>
> statementID = CreateStatementRequest {
> connection_id: "myconnectionid"
> }
>
> PrepareAndExecuteRequest {
> connection_id : "myconnectionid"
> statement_id = statementID
> sql = " UPSERT INTO my_table VALUES (1,'A')"
> }
>
> CommitRequest {
> connection_id: "myconnectionid"
> }
>
> After sending the commands to the query service, I executed "SELECT * FROM
> my_table" in Squirrel SQL, but I do not see any records. There also doesn't
> seem to be anything interesting in the tephra or hbase master logs.
>
> What is causing this problem?
>