Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migrate to gpb protobuf library #197

Merged
merged 1 commit into from
Dec 8, 2016
Merged

Conversation

lukebakken
Copy link
Contributor

No description provided.

@lucafavatella
Copy link
Contributor

lucafavatella commented Aug 11, 2016

If the underlying reason for this (WIP) PR is building riak_pb with rebar3 under the assumption that a rebar3 protobuf plugin using gpb is available while one using basho/erlang_protobuffs is not, that might not be the case any longer. Please refer to #180 (RIAK-1796) (RIAK-2334) (RIAK-2756) .

@lukebakken lukebakken added this to the riak_pb-2.3.0.0 milestone Oct 14, 2016
@lukebakken lukebakken self-assigned this Oct 14, 2016
@lukebakken lukebakken force-pushed the features/lrb/use-gpb branch 3 times, most recently from eddcc2f to c5b804e Compare November 25, 2016 22:05
@lukebakken
Copy link
Contributor Author

@lucafavatella once this is merged in the .proto files will no longer be parsed on every build. They will be generated via the erl_protogen target and committed.

@lukebakken lukebakken changed the title WIP: Migrate to gpb protobuf library Migrate to gpb protobuf library Nov 25, 2016
@lukebakken lukebakken modified the milestones: riak_pb-2.2.0.2, riak_pb-2.3.0.0 Nov 25, 2016
@JeetKunDoug
Copy link

@lukebakken any idea what's up with the dialyzer failures here?

riak_pb_dt_codec.erl:193: The pattern {AtomType, _} can never match the type 'false'
riak_pb_dt_codec.erl:357: Invalid type specification for function riak_pb_dt_codec:decode_gset_op/1. The success typing is (#gsetop{}) -> {'add_all',_}
riak_pb_dt_codec.erl:366: The call riak_pb_dt_codec:encode_gset_op({'update',[{_,_},...]}) breaks the contract (gset_op()) -> #gsetop{}

@alexmoore
Copy link
Contributor

@JeetKunDoug I fixed the later two on the develop branch, they were introduced with the GSet changes. Not sure of the first.

@thumbot
Copy link

thumbot commented Dec 7, 2016

features/lrb/use-gpb d41fda3 ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-07 14:49
Duration: 1 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb d41fda3 onto target branch: develop cb15cc4
Exit Code: OK

📄







  Auto-merging src/riak_pb_dt_codec.erl
Auto-merging .gitignore
Merge made by the 'recursive' strategy.
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |     4 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   298 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    41 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15393 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4699 ++++++++++++
 src/riak_pb_codec.erl          |    29 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5791 +++++++++++++++
 src/riak_ts_pb.erl             |  8902 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1915 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43435 insertions(+), 77 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-07 14:49
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (clean)





✅ MAKE_DEPS

Started at: 2016-12-07 14:49
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-07 14:49
Duration: 5 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-07 14:49
Duration: 12 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.002 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.011 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.027 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.021 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100)................................................................................(x10).(x1)..
Time limit reached: 4.0 seconds.

OK, passed 9112 tests
[5.542 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 7-Dec-2016::14:49:54 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-07 14:49
Duration: 3 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-07 14:49
Duration: 28 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.d41fda3; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.22s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.d41fda3 (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

@thumbot
Copy link

thumbot commented Dec 7, 2016

features/lrb/use-gpb a976aa3 ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-07 15:07
Duration: 0 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb a976aa3 onto target branch: develop cb15cc4
Exit Code: OK

📄







  Updating cb15cc4..a976aa3
Fast-forward (no commit created; -m option ignored)
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |     4 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   298 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    41 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15393 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4699 ++++++++++++
 src/riak_pb_codec.erl          |    29 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5791 +++++++++++++++
 src/riak_ts_pb.erl             |  8902 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1915 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43435 insertions(+), 77 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-07 15:08
Duration: 0 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (clean)





✅ MAKE_DEPS

Started at: 2016-12-07 15:08
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-07 15:08
Duration: 5 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-07 15:08
Duration: 11 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.002 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.011 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.027 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.021 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100).................................................................................(x10).....(x1)..
Time limit reached: 4.0 seconds.

OK, passed 9252 tests
[4.937 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 7-Dec-2016::15:08:18 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-07 15:08
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-07 15:08
Duration: 26 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.a976aa3; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.22s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.a976aa3 (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

@lehoff
Copy link

lehoff commented Dec 8, 2016

I think we should make the ignores in dialyzer.ignore-warnings explicit in the code, i.e., the file should be removed.
Especially since the Dialyzer issue is in there in two different forms already.
I'm going to take a stab at it.

@lehoff
Copy link

lehoff commented Dec 8, 2016

It is not possible to remove the ignores on the generated files.

There is one function left that has a wrong specification:

riak_pb_codec.erl:387: Invalid type specification for function riak_pb_codec:decode_commit_hooks/1. The success typing is ([any()]) -> [{atom(),atom() | [any(),...]} | {'modfun',atom(),atom() | [any(),...]}]

The function and types are defined like this:

-spec decode_commit_hooks([ #rpbcommithook{} ]) -> [ commit_hook_property() ].
decode_commit_hooks(Hooks) ->
    [ decode_commit_hook(Hook) || Hook <- Hooks,
                                 Hook =/= #rpbcommithook{modfun=undefined, name=undefined} ].

-type commit_hook_property() :: [ {struct, [{commit_hook_field(), binary()}]} ].
-type commit_hook_field() :: binary().

It calls decode_commit_hook/1 which ends up calling decode_modfun/2 and this is where things break down:

-spec decode_modfun(#rpbmodfun{}, atom()) -> modfun_property().
decode_modfun(MF, linkfun) ->
    {M,F} = decode_modfun(MF, undefined),
    {modfun, M, F};
decode_modfun(#rpbmodfun{module=Mod, function=Fun}, commit_hook) ->
    {struct, [{<<"mod">>, Mod}, {<<"fun">>, Fun}]};
decode_modfun(#rpbmodfun{module=Mod, function=Fun}=MF, _Prop) ->
    try
        {binary_to_existing_atom(Mod, latin1), binary_to_existing_atom(Fun, latin1)}
    catch
        error:badarg ->
            error_logger:warning_msg("Creating new atoms from protobuffs message! ~p", [MF]),
            {binary_to_atom(Mod, latin1), binary_to_atom(Fun, latin1)}
    end.

First of all, things of the structure {modfun, atom(), atom()} will come out of the first function clause.
But much worse the last clause returns {atom(), atom()} with no constraints on the atoms.

So the best return type for decode_commit_hooks/1 would be a list of the existing modfun_property() type:

-type modfun_property() :: {module(), function()} | {modfun, module(), function()} | {struct, [{binary(), binary()}]}.

Notice that the last part of this type {struct, ...} is saying the same as the commit_hook_property() type.

I suggest we change the return type and remove the entry in the dialyzer.ignore_warnings file.
Well, both of them, because someone blindly added a repeat of the existing ignore when the function had moved to a different line.
And we should also remove the

riak_pb_dt_codec.erl:181: The pattern {AtomType, _} can never match the type 'false'

line since we have already solved that problem.

@lukebakken
Copy link
Contributor Author

Thanks for the super-clear explanation @lehoff - I'll get that later on today.

@thumbot
Copy link

thumbot commented Dec 8, 2016

features/lrb/use-gpb 6406739 ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-08 07:06
Duration: 0 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb 6406739 onto target branch: develop cb15cc4
Exit Code: OK

📄







  Updating cb15cc4..6406739
Fast-forward (no commit created; -m option ignored)
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |    16 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   298 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    41 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15393 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4699 ++++++++++++
 src/riak_pb_codec.erl          |    39 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5791 +++++++++++++++
 src/riak_ts_pb.erl             |  8902 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1915 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43447 insertions(+), 87 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-08 07:06
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.6406739 (clean)





✅ MAKE_DEPS

Started at: 2016-12-08 07:06
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.6406739 (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-08 07:06
Duration: 5 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-08 07:06
Duration: 11 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.002 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.012 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.028 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...[0.001 s] ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.022 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100).................................................................................(x10)........(x1)........
Time limit reached: 4.0 seconds.

OK, passed 9288 tests
[4.990 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 8-Dec-2016::07:06:56 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-08 07:06
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-08 07:07
Duration: 36 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6406739; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.33s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.6406739 (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

@thumbot
Copy link

thumbot commented Dec 8, 2016

features/lrb/use-gpb e77a11d ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-08 07:32
Duration: 1 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb e77a11d onto target branch: develop cb15cc4
Exit Code: OK

📄







  Updating cb15cc4..e77a11d
Fast-forward (no commit created; -m option ignored)
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |    16 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   297 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    42 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15444 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4718 ++++++++++++
 src/riak_pb_codec.erl          |    39 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5813 +++++++++++++++
 src/riak_ts_pb.erl             |  8897 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1930 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43549 insertions(+), 87 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-08 07:32
Duration: 0 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (clean)





✅ MAKE_DEPS

Started at: 2016-12-08 07:32
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-08 07:32
Duration: 5 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-08 07:32
Duration: 12 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.002 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.011 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.027 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.021 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100).................................................................................(x10).(x1)..
Time limit reached: 4.0 seconds.

OK, passed 9212 tests
[5.543 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 8-Dec-2016::07:33:00 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-08 07:33
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-08 07:33
Duration: 115 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.e77a11d; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.23s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.e77a11d (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

@lehoff
Copy link

lehoff commented Dec 8, 2016

+1

@thumbot
Copy link

thumbot commented Dec 8, 2016

features/lrb/use-gpb bd3d51f ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-08 08:53
Duration: 1 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb bd3d51f onto target branch: develop cb15cc4
Exit Code: OK

📄







  Updating cb15cc4..bd3d51f
Fast-forward (no commit created; -m option ignored)
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |    15 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   297 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    42 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15444 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4718 ++++++++++++
 src/riak_pb_codec.erl          |    39 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5813 +++++++++++++++
 src/riak_ts_pb.erl             |  8897 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1930 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43548 insertions(+), 87 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-08 08:53
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (clean)





✅ MAKE_DEPS

Started at: 2016-12-08 08:53
Duration: 2 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-08 08:53
Duration: 5 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-08 08:54
Duration: 12 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.001 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.011 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.027 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.021 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100)..............................................................................(x10)...(x1).....
Time limit reached: 4.0 seconds.

OK, passed 8935 tests
[4.954 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 8-Dec-2016::08:54:14 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-08 08:54
Duration: 3 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-08 08:54
Duration: 134 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.bd3d51f; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.43s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.bd3d51f (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

updated tools.mk, getting eunit tests working

All eunit tests and dialyzer working with gpb library

Change gpb options so gpb.hrl is not a compile-time dependency

Remove need to add gpb/include to include search path

Restore _pb suffix for modules to prevent clashes

Changes required due to using _pb module name suffix

Ensure #rpberrorresp errmsg field is a binary

Separate out generation of _pb.erl and _pb.hrl files into erl_protogen make target

No longer using gpb application

Use gpb working version with epb compat

Add option to decode string fields into erlang binaries

Incorporate latest epb compat stuff in gpb

Update gpb dependency, manually change query atom since it is a keyword

Compile protobufs with latest gpb dependency

Update gpb to latest tag, re-run erl_protogen

Conversion to gpb compiles

updated tools.mk, getting eunit tests working

All eunit tests and dialyzer working with gpb library

Change gpb options so gpb.hrl is not a compile-time dependency

Remove need to add gpb/include to include search path

Restore _pb suffix for modules to prevent clashes

Changes required due to using _pb module name suffix

Ensure #rpberrorresp errmsg field is a binary

Separate out generation of _pb.erl and _pb.hrl files into erl_protogen make target

No longer using gpb application

Use gpb working version with epb compat

Add option to decode string fields into erlang binaries

Incorporate latest epb compat stuff in gpb

Update gpb dependency, manually change query atom since it is a keyword

Compile protobufs with latest gpb dependency

Update gpb to latest tag, re-run erl_protogen

Add test for optional fields

Update gpb to 3.26.4, re-gen from .proto files

add slack notifications

re-gen using R1602-basho10

Quote "query" for R15 compatibility

Remove unused `encode_type/2` to fix dialyzer issue.

It appears that `encode_type/2` is no longer used (we never pass `Mods`
as a parameter, except as `[]` in `encode_type/1`). Dialyzer figured
this out and was complaining:
riak_pb_dt_codec.erl:193: The pattern {AtomType, _} can never match the type 'false'"

Fix dialyzer warnings and update ignore-warnings

The existing entries in dialyzer.ignore-warnings were not correct anymore.
Added new ones and an explanation of how to change this when we get to a newer
Erlang version where we can use the -dialyzer directive in the .erl files.

Enable type_specs option

Remove exclusion of riak_yokozuna.erl since it is not needed
@thumbot
Copy link

thumbot commented Dec 8, 2016

features/lrb/use-gpb 6bc4218 ➡️ develop cb15cc4 ✅ completed
Looks good! 👍
✅ MERGE

Started at: 2016-12-08 08:57
Duration: 1 seconds.
Result: OK
Message: Merge Success: features/lrb/use-gpb 6bc4218 onto target branch: develop cb15cc4
Exit Code: OK

📄







  Updating cb15cc4..6bc4218
Fast-forward (no commit created; -m option ignored)
 .gitignore                     |     1 -
 .travis.yml                    |    15 +-
 Makefile                       |     5 +
 README.md                      |     3 +-
 dialyzer.ignore-warnings       |    15 +-
 include/riak_dt_pb.hrl         |   159 +
 include/riak_kv_pb.hrl         |   475 ++
 include/riak_pb.hrl            |   140 +
 include/riak_pb_kv_codec.hrl   |     2 +-
 include/riak_search_pb.hrl     |   172 +
 include/riak_ts_pb.hrl         |   297 +
 include/riak_yokozuna_pb.hrl   |    77 +
 plugins/riak_pb_msgcodegen.erl |     2 +-
 protogen.config                |    42 +
 rebar.config                   |     7 +-
 src/riak_dt_pb.erl             |  5060 +++++++++++++
 src/riak_kv_pb.erl             | 15444 +++++++++++++++++++++++++++++++++++++++
 src/riak_pb.app.src            |     3 +-
 src/riak_pb.erl                |  4718 ++++++++++++
 src/riak_pb_codec.erl          |    39 +-
 src/riak_pb_dt_codec.erl       |    21 +-
 src/riak_pb_kv_codec.erl       |     8 +
 src/riak_pb_messages.erl       |   235 +
 src/riak_search_pb.erl         |  5813 +++++++++++++++
 src/riak_ts_pb.erl             |  8897 ++++++++++++++++++++++
 src/riak_yokozuna_pb.erl       |  1930 +++++
 test/encoding_test.erl         |    55 +-
 27 files changed, 43548 insertions(+), 87 deletions(-)
 create mode 100644 include/riak_dt_pb.hrl
 create mode 100644 include/riak_kv_pb.hrl
 create mode 100644 include/riak_pb.hrl
 create mode 100644 include/riak_search_pb.hrl
 create mode 100644 include/riak_ts_pb.hrl
 create mode 100644 include/riak_yokozuna_pb.hrl
 create mode 100644 protogen.config
 create mode 100644 src/riak_dt_pb.erl
 create mode 100644 src/riak_kv_pb.erl
 create mode 100644 src/riak_pb.erl
 create mode 100644 src/riak_pb_messages.erl
 create mode 100644 src/riak_search_pb.erl
 create mode 100644 src/riak_ts_pb.erl
 create mode 100644 src/riak_yokozuna_pb.erl




✅ MAKE_CLEAN

Started at: 2016-12-08 08:57
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make clean




  ==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (clean)





✅ MAKE_DEPS

Started at: 2016-12-08 08:57
Duration: 1 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make deps




  ==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (get-deps)
Pulling hamcrest from {git,"https://github.com/basho/hamcrest-erlang.git",
                           {tag,"0.3.0-basho"}}
Cloning into 'hamcrest'...
==> hamcrest (get-deps)





✅ MAKE_COMPILE

Started at: 2016-12-08 08:57
Duration: 4 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make compile




  ==> hamcrest (compile)
Compiled src/hamcrest.erl
Compiled src/hamcrest_term.erl
Compiled src/hamcrest_matchers.erl
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (compile)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled src/riak_kv_pb.erl





✅ MAKE_TEST

Started at: 2016-12-08 08:57
Duration: 11 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make test




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (compile)
./rebar eunit skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (eunit)
Compiled src/riak_pb_kv_codec.erl
Compiled src/riak_pb_codec.erl
Compiled src/riak_pb_dt_codec.erl
Compiled src/riak_pb_search_codec.erl
Compiled src/riak_pb_messages.erl
Compiled src/riak_pb.erl
Compiled src/riak_dt_pb.erl
Compiled src/riak_ttb_codec.erl
Compiled src/riak_yokozuna_pb.erl
Compiled src/riak_pb_ts_codec.erl
Compiled src/riak_ts_pb.erl
Compiled src/riak_search_pb.erl
Compiled test/encoding_test.erl
Compiled test/riak_pb_dt_codec_tests.erl
Compiled src/riak_kv_pb.erl
Compiled test/bucket_props_codec_eqc.erl
======================== EUnit ========================
riak_pb_kv_codec: encode_apl_ann_test (module 'riak_pb_kv_codec')...[0.001 s] ok
module 'riak_ttb_codec'
module 'riak_pb_codec'
  riak_pb_codec: record_test...[0.011 s] ok
  riak_pb_codec: optional_booleans_test...[0.004 s] ok
  riak_pb_codec: empty_atoms_test...ok
  riak_pb_codec: mixed_strings_test...ok
  [done in 0.027 s]
module 'riak_pb_messages'
module 'riak_dt_pb'
module 'riak_pb'
module 'riak_pb_ts_codec'
  riak_pb_ts_codec: encode_cells_test...ok
  riak_pb_ts_codec: encode_row_test...ok
  riak_pb_ts_codec: encode_rows_test...ok
  riak_pb_ts_codec: encode_field_type_test...ok
  riak_pb_ts_codec: decode_cell_test...ok
  riak_pb_ts_codec: decode_cells_test...ok
  riak_pb_ts_codec: decode_rows_test...ok
  [done in 0.021 s]
module 'riak_search_pb'
module 'riak_ts_pb'
module 'riak_pb_dt_codec'
  module 'riak_pb_dt_codec_tests'
    riak_pb_dt_codec_tests: operation_type_gset_test...ok
    riak_pb_dt_codec_tests: decode_operation_gset_test...ok
    riak_pb_dt_codec_tests: decode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: decode_update_response_test...ok
    riak_pb_dt_codec_tests: encode_fetch_response_gset_test...ok
    riak_pb_dt_codec_tests: encode_update_request_gset_test...ok
    [done in 0.018 s]
  [done in 0.018 s]
module 'riak_kv_pb'
module 'encoding_test'
  encoding_test:9: pb_test_ (content encode decode)...ok
  encoding_test:39: pb_test_ (deleted header encode decode)...ok
  encoding_test:59: pb_test_ (indexes encode decode)...ok
  encoding_test:73: pb_test_ (empty content encode decode)...ok
  encoding_test:85: pb_test_ (empty repeated metas are removed/ignored)...ok
  encoding_test:97: pb_test_ (riak_dt-dtfetchreq-encode-decode)...ok
  encoding_test:113: pb_test_ (msg code encode decode)...ok
  [done in 0.021 s]
module 'riak_pb_search_codec'
bucket_props_codec_eqc:36: bucket_codec_test_ (module 'bucket_props_codec_eqc').......................................................................................................(x10)....................................................................................................(x100)........................................................................(x10)....
Time limit reached: 4.0 seconds.

OK, passed 8340 tests
[4.963 s] ok
module 'riak_yokozuna_pb'
=======================================================
  All 26 tests passed.

=INFO REPORT==== 8-Dec-2016::08:57:37 ===
    application: inets
    exited: killed
    type: temporary





✅ MAKE_XREF

Started at: 2016-12-08 08:57
Duration: 3 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make xref




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (compile)
./rebar xref skip_deps=true
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (xref)





✅ MAKE_DIALYZER

Started at: 2016-12-08 08:57
Duration: 116 seconds.
Result: OK
Message: OK
Exit Code: 0

📄


cd /tmp/thumbs/develop.cb15cc4.features_lrb_use-gpb.6bc4218; make dialyzer




  ==> hamcrest (compile)
==> hamcrest (post_compile)
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (compile)
  Checking whether the PLT /home/ubuntu/.combo_dialyzer_plt is up-to-date... yes
done (passed successfully)
 yes
done (passed successfully)
  Creating PLT .local_dialyzer_plt ...
Unknown functions:
  application:get_env/2
  erlang:get_module_info/1
  erlang:get_module_info/2
  erlang:is_process_alive/1
  gb_sets:is_element/2
  gb_sets:is_empty/1
  gb_sets:is_set/1
  ordsets:is_element/2
  ordsets:is_set/1
  ordsets:size/1
  re:run/2
  sets:is_element/2
  sets:is_set/1
  sets:size/1
  string:equal/2
  string:right/2
  string:str/2
 done in 0m0.23s
done (passed successfully)
==> develop.cb15cc4.features_lrb_use-gpb.6bc4218 (dialyzer)





⬜ 0 of 2 Code reviews from organization basho

@lukebakken lukebakken merged commit adc603b into develop Dec 8, 2016
@lukebakken lukebakken deleted the features/lrb/use-gpb branch December 8, 2016 17:03
@lukebakken lukebakken modified the milestones: riak_pb-2.3.0.0, riak_pb-2.2.0.2 Jan 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants