[kudu-CR] tablet service: improve error handling specificity

2019-03-26 Thread Mike Percy (Code Review)
Mike Percy has submitted this change and it was merged. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..

tablet_service: improve error handling specificity

The error handling in TabletServiceImpl::HandleNewScanRequest() was
convoluted. It's still not particularly inspired, but this patch makes
several clarity and maintainability improvements:

* Instead of making it the default error returned from
  HandleNewScanRequest(), localize the return of
  TabletServerErrorPB::MISMATCHED_SCHEMA to where Iterator::Init()
  returns an InvalidArgument, since that comes from a
  GetMappedReadProjection() failure.
* Use an INVALID_SCAN_SPEC error for the case where the user specifies
  an unrecognized order mode, which is consistent with when the user
  specifies an unknown read mode or when the user specifies order mode
  ORDERED without specifying a snapshot scan. Also, update the comments
  in the .proto file to reflect the current usage.
* Localize assignment of TabletServerErrorPB::Code as much as possible
  in HandleNewScanRequest() by plumbing an `error_code` pointer into
  HandleScanAtSnapshot() so that errors in that method can be specific
  to the type of problem observed.

Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Reviewed-on: http://gerrit.cloudera.org:8080/12840
Tested-by: Kudu Jenkins
Reviewed-by: Adar Dembo 
---
M src/kudu/tools/ksck_remote-test.cc
M src/kudu/tserver/tablet_server-test-base.cc
M src/kudu/tserver/tablet_server-test-base.h
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
M src/kudu/tserver/tserver.proto
7 files changed, 81 insertions(+), 59 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Adar Dembo: Looks good to me, approved

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 5
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 


[kudu-CR] tablet service: improve error handling specificity

2019-03-26 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 4: Code-Review+2


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 4
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Tue, 26 Mar 2019 22:19:49 +
Gerrit-HasComments: No


[kudu-CR] tablet service: improve error handling specificity

2019-03-26 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 4:

Staggeringly, these are all flakes:
* KUDU-2621: Correctly deal with replicas with missing cmeta 
(alter_table-randomized-test)
* KUDU-2723: TsLocationAssignmentITest.Basic is flaky
* RemoteKsckTest.TestClusterWithLocation: known flake (I'm investigating to see 
if this has been filed, but it shows up on the flaky test dashboard)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 4
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Tue, 26 Mar 2019 22:00:02 +
Gerrit-HasComments: No


[kudu-CR] tablet service: improve error handling specificity

2019-03-26 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 4:

> Staggeringly, these are all flakes:

Oops, meant to post this on a different CR


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 4
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Tue, 26 Mar 2019 22:00:40 +
Gerrit-HasComments: No


[kudu-CR] tablet service: improve error handling specificity

2019-03-26 Thread Mike Percy (Code Review)
Hello Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: tablet_service: improve error handling specificity
..

tablet_service: improve error handling specificity

The error handling in TabletServiceImpl::HandleNewScanRequest() was
convoluted. It's still not particularly inspired, but this patch makes
several clarity and maintainability improvements:

* Instead of making it the default error returned from
  HandleNewScanRequest(), localize the return of
  TabletServerErrorPB::MISMATCHED_SCHEMA to where Iterator::Init()
  returns an InvalidArgument, since that comes from a
  GetMappedReadProjection() failure.
* Use an INVALID_SCAN_SPEC error for the case where the user specifies
  an unrecognized order mode, which is consistent with when the user
  specifies an unknown read mode or when the user specifies order mode
  ORDERED without specifying a snapshot scan. Also, update the comments
  in the .proto file to reflect the current usage.
* Localize assignment of TabletServerErrorPB::Code as much as possible
  in HandleNewScanRequest() by plumbing an `error_code` pointer into
  HandleScanAtSnapshot() so that errors in that method can be specific
  to the type of problem observed.

Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
---
M src/kudu/tools/ksck_remote-test.cc
M src/kudu/tserver/tablet_server-test-base.cc
M src/kudu/tserver/tablet_server-test-base.h
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
M src/kudu/tserver/tserver.proto
7 files changed, 81 insertions(+), 59 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 4
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 3: Code-Review+2

The test failures look legit.


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 3
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Mon, 25 Mar 2019 23:15:37 +
Gerrit-HasComments: No


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Mike Percy (Code Review)
Hello Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: tablet_service: improve error handling specificity
..

tablet_service: improve error handling specificity

The error handling in TabletServiceImpl::HandleNewScanRequest() was
convoluted. It's still not particularly inspired, but this patch makes
several clarity and maintainability improvements:

* Instead of making it the default error returned from
  HandleNewScanRequest(), localize the return of
  TabletServerErrorPB::MISMATCHED_SCHEMA to where Iterator::Init()
  returns an InvalidArgument, since that comes from a
  GetMappedReadProjection() failure.
* Use an INVALID_SCAN_SPEC error for the case where the user specifies
  an unrecognized order mode, which is consistent with when the user
  specifies an unknown read mode or when the user specifies order mode
  ORDERED without specifying a snapshot scan. Also, update the comments
  in the .proto file to reflect the current usage.
* Localize assignment of TabletServerErrorPB::Code as much as possible
  in HandleNewScanRequest() by plumbing an `error_code` pointer into
  HandleScanAtSnapshot() so that errors in that method can be specific
  to the type of problem observed.

Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
---
M src/kudu/tserver/tablet_server-test-base.cc
M src/kudu/tserver/tablet_server-test-base.h
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
M src/kudu/tserver/tserver.proto
6 files changed, 79 insertions(+), 57 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 3
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 2:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc
File src/kudu/tserver/tablet_service.cc:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2402
PS1, Line 2402:   Status s = PickAndVerifyTimestamp(scan_pb, tablet, 
&tmp_snap_timestamp);
> Right, that's why I added _PREPEND_ in there (though there's no variant for
Oh, I missed that part. The name starts to get so dang long. I also am not 
really convinced this is a prevalent-enough pattern to warrant a helper macro 
at this time, but would not be against adding it if we thought it would be used 
a lot.


http://gerrit.cloudera.org:8080/#/c/12840/2/src/kudu/util/status.h
File src/kudu/util/status.h:

http://gerrit.cloudera.org:8080/#/c/12840/2/src/kudu/util/status.h@128
PS2, Line 128: #define RETURN_NOT_OK_CALLKUDU_RETURN_NOT_OK_CALL
> Need to remove this.
thanks



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 2
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Mon, 25 Mar 2019 22:25:55 +
Gerrit-HasComments: Yes


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 2:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc
File src/kudu/tserver/tablet_service.cc:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2402
PS1, Line 2402:   Status s = PickAndVerifyTimestamp(scan_pb, tablet, 
&tmp_snap_timestamp);
> not really, because of the CloneAndPrepend()
Right, that's why I added _PREPEND_ in there (though there's no variant for 
this right now).

Anyway, probably not worth adding a variant for just this case, unless it's 
more prevalent across the code base.


http://gerrit.cloudera.org:8080/#/c/12840/2/src/kudu/util/status.h
File src/kudu/util/status.h:

http://gerrit.cloudera.org:8080/#/c/12840/2/src/kudu/util/status.h@128
PS2, Line 128: #define RETURN_NOT_OK_CALLKUDU_RETURN_NOT_OK_CALL
Need to remove this.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 2
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Mon, 25 Mar 2019 21:27:26 +
Gerrit-HasComments: Yes


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Mike Percy (Code Review)
Mike Percy has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 1:

(6 comments)

http://gerrit.cloudera.org:8080/#/c/12840/1//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/12840/1//COMMIT_MSG@20
PS1, Line 20: order mode
> ORDERED here, right?
Done


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test-base.h
File src/kudu/tserver/tablet_server-test-base.h:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test-base.h@116
PS1, Line 116:   void VerifyScanRequestFailure(const ScanRequestPB& req,
> Maybe pass 'req' by value and std::move() from the two call-sites?
There's no perf benefit to that because the RPC proxy currently takes a const 
ref.


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

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test.cc@2433
PS1, Line 2433:   // Protobuf will parse an unrecognized enum value as 
UNKNOWN_ORDER_MODE.
> Nit: this is meant to rationalize why L2434 is passing UNKNOWN_ORDER_MODE i
Done


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc
File src/kudu/tserver/tablet_service.cc:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2160
PS1, Line 2160:  [&] { *error_code = 
TabletServerErrorPB::INVALID_SNAPSHOT; });
> Couldn't you do this via the existing RETURN_NOT_OK_EVAL also?
That's a good point. I wasn't sure it would work, but it turns out that a macro 
can treat an assignment as an argument so I'll just switch to that.


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2402
PS1, Line 2402:   Status s = PickAndVerifyTimestamp(scan_pb, tablet, 
&tmp_snap_timestamp);
> Seems like a good place to use RETURN_NOT_OK_PREPEND_{CALL,EVAL} :)
not really, because of the CloneAndPrepend()


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2428
PS1, Line 2428:
  :   tablet::MvccSnapshot snap;
  :   tablet::MvccManager* mvcc_manager = tablet->mvcc_manager();
> Can these be scoped within block on L2431?
No, but we can get rid of the shorthand mvcc_manager so I'll go ahead and do 
that.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 
Gerrit-Comment-Date: Mon, 25 Mar 2019 17:54:25 +
Gerrit-HasComments: Yes


[kudu-CR] tablet service: improve error handling specificity

2019-03-25 Thread Mike Percy (Code Review)
Hello Kudu Jenkins, Adar Dembo,

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

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

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

Change subject: tablet_service: improve error handling specificity
..

tablet_service: improve error handling specificity

The error handling in TabletServiceImpl::HandleNewScanRequest() was
convoluted. It's still not particularly inspired, but this patch makes
several clarity and maintainability improvements:

* Instead of making it the default error returned from
  HandleNewScanRequest(), localize the return of
  TabletServerErrorPB::MISMATCHED_SCHEMA to where Iterator::Init()
  returns an InvalidArgument, since that comes from a
  GetMappedReadProjection() failure.
* Use an INVALID_SCAN_SPEC error for the case where the user specifies
  an unrecognized order mode, which is consistent with when the user
  specifies an unknown read mode or when the user specifies order mode
  ORDERED without specifying a snapshot scan. Also, update the comments
  in the .proto file to reflect the current usage.
* Localize assignment of TabletServerErrorPB::Code as much as possible
  in HandleNewScanRequest() by plumbing an `error_code` pointer into
  HandleScanAtSnapshot() so that errors in that method can be specific
  to the type of problem observed.

Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
---
M src/kudu/tserver/tablet_server-test-base.cc
M src/kudu/tserver/tablet_server-test-base.h
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
M src/kudu/tserver/tserver.proto
M src/kudu/util/status.h
7 files changed, 80 insertions(+), 57 deletions(-)


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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 2
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Reviewer: Mike Percy 


[kudu-CR] tablet service: improve error handling specificity

2019-03-23 Thread Adar Dembo (Code Review)
Adar Dembo has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/12840 )

Change subject: tablet_service: improve error handling specificity
..


Patch Set 1:

(6 comments)

http://gerrit.cloudera.org:8080/#/c/12840/1//COMMIT_MSG
Commit Message:

http://gerrit.cloudera.org:8080/#/c/12840/1//COMMIT_MSG@20
PS1, Line 20: order mode
ORDERED here, right?


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test-base.h
File src/kudu/tserver/tablet_server-test-base.h:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test-base.h@116
PS1, Line 116:   void VerifyScanRequestFailure(const ScanRequestPB& req,
Maybe pass 'req' by value and std::move() from the two call-sites?


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

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_server-test.cc@2433
PS1, Line 2433:   // Protobuf will parse an unrecognized enum value as 
UNKNOWN_ORDER_MODE.
Nit: this is meant to rationalize why L2434 is passing UNKNOWN_ORDER_MODE 
instead of something more exotic like 123? If so, not sure I see the need; 
explicitly passing UNKNOWN_ORDER_MODE seems like a fine test case in its own 
right, and the name of the test suggests that this is what the test is going to 
do.


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc
File src/kudu/tserver/tablet_service.cc:

http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2160
PS1, Line 2160:  [&] { *error_code = 
TabletServerErrorPB::INVALID_SNAPSHOT; });
Couldn't you do this via the existing RETURN_NOT_OK_EVAL also?


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2402
PS1, Line 2402:   Status s = PickAndVerifyTimestamp(scan_pb, tablet, 
&tmp_snap_timestamp);
Seems like a good place to use RETURN_NOT_OK_PREPEND_{CALL,EVAL} :)


http://gerrit.cloudera.org:8080/#/c/12840/1/src/kudu/tserver/tablet_service.cc@2428
PS1, Line 2428:
  :   tablet::MvccSnapshot snap;
  :   tablet::MvccManager* mvcc_manager = tablet->mvcc_manager();
Can these be scoped within block on L2431?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo 
Gerrit-Reviewer: Kudu Jenkins (120)
Gerrit-Comment-Date: Sat, 23 Mar 2019 23:22:37 +
Gerrit-HasComments: Yes


[kudu-CR] tablet service: improve error handling specificity

2019-03-22 Thread Mike Percy (Code Review)
Hello Adar Dembo,

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

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

to review the following change.


Change subject: tablet_service: improve error handling specificity
..

tablet_service: improve error handling specificity

The error handling in TabletServiceImpl::HandleNewScanRequest() was
convoluted. It's still not particularly inspired, but this patch makes
several clarity and maintainability improvements:

* Instead of making it the default error returned from
  HandleNewScanRequest(), localize the return of
  TabletServerErrorPB::MISMATCHED_SCHEMA to where Iterator::Init()
  returns an InvalidArgument, since that comes from a
  GetMappedReadProjection() failure.
* Use an INVALID_SCAN_SPEC error for the case where the user specifies
  an unrecognized order mode, which is consistent with when the user
  specifies an unknown read mode or when the user specifies order mode
  without specifying a snapshot scan. Also, update the comments in the
  .proto file to reflect the current usage.
* Localize assignment of TabletServerErrorPB::Code as much as possible
  in HandleNewScanRequest() by plumbing an `error_code` pointer into
  HandleScanAtSnapshot() so that errors in that method can be specific
  to the type of problem observed.

This patch also introduces a RETURN_NOT_OK() macro variant that takes a
functor which is called on error before returning the non-OK Status.

Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
---
M src/kudu/tserver/tablet_server-test-base.cc
M src/kudu/tserver/tablet_server-test-base.h
M src/kudu/tserver/tablet_server-test.cc
M src/kudu/tserver/tablet_service.cc
M src/kudu/tserver/tablet_service.h
M src/kudu/tserver/tserver.proto
M src/kudu/util/status.h
7 files changed, 89 insertions(+), 55 deletions(-)



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I1e6f7b01336e78ea8f37cb17b2c4485138e23581
Gerrit-Change-Number: 12840
Gerrit-PatchSet: 1
Gerrit-Owner: Mike Percy 
Gerrit-Reviewer: Adar Dembo