Alexey Serbin has posted comments on this change.

Change subject: util: add Status::AndThen combinator
......................................................................


Patch Set 3: Code-Review+1

> Here's an example from a patch which builds off this, in
 > CatalogManager::CreateTable
 > 
 > // a. Validate the user request.
 > Schema client_schema;
 > s = SchemaFromPB(req.schema(), &client_schema)
 > .AndThen([&] () {
 > return ValidateIdentifier(req.database_name()).CloneAndPrepend("invalid
 > database name");
 > }).AndThen([&] () {
 > return ValidateIdentifier(req.table_name()).CloneAndPrepend("invalid
 > table name");
 > }).AndThen([&] () {
 > return ValidateClientSchema(client_schema);
 > }).AndThen([&] () {
 > if (client_schema.has_column_ids()) {
 > return Status::InvalidArgument("user requests should not have
 > Column IDs");
 > } else {
 > return Status::OK();
 > }
 > });
 > 
 > if (!s.ok()) {
 > return SetError(MasterErrorPB::INVALID_SCHEMA, s);
 > }
 > 
 > 
 > For what it's worth, this is a common method to have on status-like
 > types in functional languages, for instance Scala's Try.flatMap[1]
 > or Rust's Result.and_then [2].
 > 
 > [1]: 
 > http://www.scala-lang.org/api/2.12.x/scala/util/Try.html#flatMap[U](f:T=>scala.util.Try[U]):scala.util.Try[U]
 > [2]: https://doc.rust-lang.org/std/result/enum.Result.html#method.and_then

Thanks!  I appreciate this.

For some reason I thought the rollback method somehow could be specified in the 
AndThen() -- that was my misunderstanding.

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

Gerrit-MessageType: comment
Gerrit-Change-Id: Ia6e1a79ff95406825d4238a8157d242252562805
Gerrit-PatchSet: 3
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Dan Burkert <[email protected]>
Gerrit-Reviewer: Alexey Serbin <[email protected]>
Gerrit-Reviewer: Dan Burkert <[email protected]>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <[email protected]>
Gerrit-HasComments: No

Reply via email to