[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Adar Dembo has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Reviewed-on: http://gerrit.cloudera.org:8080/9041
Reviewed-by: Dan Burkert 
Tested-by: Kudu Jenkins
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/server/webserver.cc
M src/kudu/tserver/tablet_server-test.cc
7 files changed, 90 insertions(+), 17 deletions(-)

Approvals:
  Dan Burkert: Looks good to me, approved
  Kudu Jenkins: Verified

--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 6
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 5: Code-Review+2


--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 5
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 18 Jan 2018 00:37:20 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert, Kudu Jenkins,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/9041

to look at the new patch set (#5).

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/server/webserver.cc
M src/kudu/tserver/tablet_server-test.cc
7 files changed, 90 insertions(+), 17 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/41/9041/5
--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 5
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9041/4/src/kudu/server/rpc_server.cc
File src/kudu/server/rpc_server.cc:

http://gerrit.cloudera.org:8080/#/c/9041/4/src/kudu/server/rpc_server.cc@213
PS4, Line 213: return Status::IllegalState(Substitute("bad state: $0", 
server_state_));
> I think this might be better as ServiceUnavailable, since it's expected to
I was trying to be consistent with Webserver::GetBoundAddresses, which returns 
IllegalState. But I suppose I can update both.



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 18 Jan 2018 00:28:04 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Dan Burkert (Code Review)
Dan Burkert has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9041/4/src/kudu/server/rpc_server.cc
File src/kudu/server/rpc_server.cc:

http://gerrit.cloudera.org:8080/#/c/9041/4/src/kudu/server/rpc_server.cc@213
PS4, Line 213: return Status::IllegalState(Substitute("bad state: $0", 
server_state_));
I think this might be better as ServiceUnavailable, since it's expected to 
become available shortly.  I think we also are more lenient about retries in 
the client when ServiceUnavailable is encountered.



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 18 Jan 2018 00:21:25 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 4: Code-Review+2


--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Thu, 18 Jan 2018 00:02:37 +
Gerrit-HasComments: No


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert, Kudu Jenkins,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/9041

to look at the new patch set (#4).

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 88 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/41/9041/4
--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 4:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc
File src/kudu/tserver/tablet_server-test.cc:

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@215
PS2, Line 215:  (s.ok()) {
> Could you then at least add resp.Clear() to pair controller.Reset() ?
Done



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 4
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Wed, 17 Jan 2018 23:14:47 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 3:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc
File src/kudu/tserver/tablet_server-test.cc:

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@215
PS2, Line 215: // These two fields are g
> See above.
Could you then at least add resp.Clear() to pair controller.Reset() ?



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 3
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Wed, 17 Jan 2018 23:00:42 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert, Kudu Jenkins,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/9041

to look at the new patch set (#3).

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 87 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/41/9041/3
--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 3
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-17 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 2:

(5 comments)

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc
File src/kudu/server/server_base.cc:

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@522
PS1, Line 522: rpc
> nit: RPC
Done


http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@525
PS1, Line 525: rpc
> nit: RPC
Done


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc
File src/kudu/tserver/tablet_server-test.cc:

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@211
PS2, Line 211: controller.Reset();
> nit: maybe, just move RpcController under the scope of the 'while() {}' loo
I appreciate the suggestion, but stylistically I prefer the "declare req, resp, 
and controller together" idiom we commonly use.


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@215
PS2, Line 215: CHECK(resp.has_status());
> nit: since there are many iterations of calling the GetStatus() method, may
See above.


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@230
PS2, Line 230: ASSERT_OK(mini_server_->Restart());
> nit: consider adding some scope-related mechanics to join the thread if thi
Done



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 2
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Wed, 17 Jan 2018 22:37:16 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-16 Thread Alexey Serbin (Code Review)
Alexey Serbin has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/9041 )

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..


Patch Set 2:

(5 comments)

lgtm, just a few nits

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc
File src/kudu/server/server_base.cc:

http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@522
PS1, Line 522: rpc
nit: RPC


http://gerrit.cloudera.org:8080/#/c/9041/1/src/kudu/server/server_base.cc@525
PS1, Line 525: rpc
nit: RPC


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc
File src/kudu/tserver/tablet_server-test.cc:

http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@211
PS2, Line 211: controller.Reset();
nit: maybe, just move RpcController under the scope of the 'while() {}' loop 
below?


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@215
PS2, Line 215: CHECK(resp.has_status());
nit: since there are many iterations of calling the GetStatus() method, maybe 
it's cleaner to move the 'resp' under the scope of the 'while() {}' loop to 
start with a clean state every iteration?


http://gerrit.cloudera.org:8080/#/c/9041/2/src/kudu/tserver/tablet_server-test.cc@230
PS2, Line 230: ASSERT_OK(mini_server_->Restart());
nit: consider adding some scope-related mechanics to join the thread if this 
assert fails.



--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 2
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Comment-Date: Wed, 17 Jan 2018 02:21:05 +
Gerrit-HasComments: Yes


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-16 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert, Kudu Jenkins,

I'd like you to reexamine a change. Please visit

http://gerrit.cloudera.org:8080/9041

to look at the new patch set (#2).

Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 82 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/41/9041/2
--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 2
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert 
Gerrit-Reviewer: Kudu Jenkins


[kudu-CR] KUDU-2148: do not crash on GetStatus during server startup

2018-01-16 Thread Adar Dembo (Code Review)
Hello Alexey Serbin, Dan Burkert,

I'd like you to do a code review. Please visit

http://gerrit.cloudera.org:8080/9041

to review the following change.


Change subject: KUDU-2148: do not crash on GetStatus during server startup
..

KUDU-2148: do not crash on GetStatus during server startup

The fix is straight-forward but there are backwards compatibility
implications for old clients who trigger the race: because they're not aware
of the new 'error' field in the protobuf, they'll just see the incomplete
'status' field. To be more specific, 'node_instance' will be set,
'version_info' won't be, and 'bound_{rpc,http}_addresses' may or may not be
set depending on exactly when the race was hit.

An alternative would be to fail the RPC itself in lieu of adding the 'error'
field. That would ensure that old clients register a failure, though it
comes at the expense of not providing rich error information for new
clients, which is why I went with the above solution instead.

Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
---
M src/kudu/server/generic_service.cc
M src/kudu/server/rpc_server.cc
M src/kudu/server/server_base.cc
M src/kudu/server/server_base.h
M src/kudu/server/server_base.proto
M src/kudu/tserver/tablet_server-test.cc
6 files changed, 82 insertions(+), 15 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/41/9041/1
--
To view, visit http://gerrit.cloudera.org:8080/9041
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3b997999d8a1228244e0be0ea61705f2c12e3426
Gerrit-Change-Number: 9041
Gerrit-PatchSet: 1
Gerrit-Owner: Adar Dembo 
Gerrit-Reviewer: Alexey Serbin 
Gerrit-Reviewer: Dan Burkert