Thanks, Doug. I have enabled sasl logging now through advanced.config
though it doesn't seem to be creating any log yet.

If this might help you folks with debugging precommit issue, what I have
observed is that erl-reload command doesn't load the precommit modules for
any of the three nodes (though precommit hook has been enabled on one of
the buckets for testing).

> $ ~/riak/riak1/bin/riak-admin erl-reload
> Module precommit not yet loaded, skipped.
> Module rutils not yet loaded, skipped.



On Wed, May 11, 2016 at 2:05 PM, Douglas Rohrer <droh...@basho.com> wrote:

> As to the SASL logging, unfortunately it's not "on by default" and the
> setting in riak.conf, as you found out, doesn't work correctly. However,
> you can enable SASL via adding a setting to your advanced.config:
>
> {sasl,[{sasl_error_logger,tty}]} %% Enable TTY output for the SASL app
> {sasl,[{sasl_error_logger,{file, "/path/to/log"}]} %% Enable SASL and
> output to "/path/to/log" file
>
> We're evaluating if we shouldn't just remove the sasl setting from
> riak.conf altogether, as you're the first person (that we know of) since
> 2012 that has tried to turn it on and noticed this bug.
>
> Doug
>
> On Wed, May 11, 2016 at 10:14 AM Luke Bakken <lbak...@basho.com> wrote:
>
>> Hi Sanket -
>>
>> I'd like to confirm some details. Is this a one-node cluster? Did you
>> install an official package or build from source?
>>
>> Thanks -
>> --
>> Luke Bakken
>> Engineer
>> lbak...@basho.com
>>
>>
>> On Tue, May 10, 2016 at 6:49 PM, Sanket Agrawal
>> <sanket.agra...@gmail.com> wrote:
>> > One more thing - I set up the hooks by bucket, not bucket type. The
>> > documentation for 2.1.4 says that hooks are defined on the bucket level.
>> > Here is how I set up precommit hook (derived from "Riak Handbook" p95):
>> >
>> > curl -X PUT localhost:8098/types/test_kv_wo/buckets/uuid_log/props -H
>> > 'Content-Type: application/json' -d '{ "props": { "precommit": [{"mod":
>> > "precommit", "fun": "pre_uuid"}]}}' -v
>> >
>> >
>> > On Tue, May 10, 2016 at 9:15 PM, Sanket Agrawal <
>> sanket.agra...@gmail.com>
>> > wrote:
>> >>
>> >> I just set up a precommit hook function in dev environment (KV 2.1.4)
>> >> which doesn't seem to be triggering off at all. The object is being
>> stored
>> >> in the bucket, but the precommit logic is not kicking off. I checked
>> couple
>> >> of things as listed below but came up with no error - so, it is a
>> >> head-scratcher why precommit hook is not triggering:
>> >>>
>> >>> - Verify precommit is set in bucket properties - snippet from curl
>> query
>> >>> for bucket props below:
>> >>> "precommit":[{"mod":"precommit","fun":"pre_uuid"}]
>> >>>
>> >>> - check there is no error in logs
>> >>>
>> >>> - check riak-console for commit errors:
>> >>> $ ./riak1/bin/riak-admin status|grep commit
>> >>> postcommit_fail : 0
>> >>> precommit_fail : 0
>> >>>
>> >>> - Run the precommit function manually on Riak console itself with a
>> riak
>> >>> object (that the hook failed to trigger on), and verify it works
>> >>
>> >>
>> >>
>> >> Also, there is no sasl-error.log. "sasl = on" doesn't work in 2.1.4
>> >> because it fails with bad_config error. So, I am assuming sasl logging
>> is
>> >> enabled by default.
>> >>
>> >> Here is what precommit function does:
>> >> - For the object (an immutable log append of JSON), calculate the
>> location
>> >> of a LWW bucket, and update a easily calculated key with that JSON
>> body. It
>> >> works fine from Riak console itself. Code below - we call pre_uuid in
>> >> precommit hook - both precommit.beam (where the function is) and
>> rutils.beam
>> >> have been copied to the relevant location as set in riak config, are
>> >> accessible through Riak console and work fine if manually executed on
>> an
>> >> object:
>> >>
>> >>> %% Preprocess JSON, and copy to a LWW bucket type
>> >>> preprocessJ(RObj,B,Choplen) ->
>> >>>   Bn = {rutils:calcBLWWType(RObj),B}, %%this returns the location of
>> LWW
>> >>> bucket - works fine in riak console
>> >>>   %% We store uuid map in <username> key - we take out timestamp of
>> >>> length 32 including "_"
>> >>>   K = riak_object:key(RObj),
>> >>>   Kn = binary:part(K,0,byte_size(K) - Choplen),
>> >>>   NObj =
>> >>>
>> riak_object:new(Bn,Kn,riak_object:get_value(RObj),riak_object:get_metadata(RObj)),
>> >>>   {ok, C} = riak:local_client(),
>> >>>   case C:put(NObj) of
>> >>>     ok -> RObj;
>> >>>     _ -> {fail,<<"Error when trying to process in precommit hook">>}
>> >>>   end.
>> >>>
>> >>> pre_uuid(RObj) -> preprocessJ(RObj,<<"uuid_latest">>,32).
>> >>
>> >>
>> >> Below is a manual execution from riak console of precommit function -
>> >> first we execute it to confirm it is returning the original object:
>> >>>
>> >>> (riak1@127.0.0.1)5> precommit:pre_uuid(O1).
>> >>> {r_object,{<<"test_kv_wo">>,<<"uuid_log">>},
>> >>>           <<"ahmed_2016-05-10T20%3a47%3a47.346299Z">>,
>> >>>           [{r_content,{dict,3,16,16,8,80,48,
>> >>>
>> >>> {[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
>> >>>
>> >>> {{[],[],[],[],[],[],[],[],[],[],[[...]|...],[],...}}},
>> >>>
>> >>>
>> <<"{\"uname\":\"ahmed\",\"uuid\":\"df8c10e0-381d-5f65-bf43-cb8b4cb806fc\",\"timestamp\":\"2016-05-"...>>}],
>> >>>           [{<<0>>,{1,63630132467}}],
>> >>>           {dict,1,16,16,8,80,48,
>> >>>                 {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],...},
>> >>>                 {{[],[],[],[],[],[],[],[],[],[],[],[],[],...}}},
>> >>>           undefined}
>> >>
>> >>
>> >> Now, we check if the object has been written to test_lww/uuid_latest
>> >> bucket type:
>> >>>
>> >>> (riak1@127.0.0.1)6>
>> >>> C:get({<<"test_lww">>,<<"uuid_latest">>},<<"ahmed">>).
>> >>>
>> >>> {ok,{r_object,{<<"hnm_fsm_lww">>,<<"uuid_latest">>},
>> >>>               <<"ahmed">>,
>> >>>               [{r_content,{dict,4,16,16,8,80,48,
>> >>>
>> >>> {[],[],[],[],[],[],[],[],[],[],[],[],...},
>> >>>
>>  {{[],[],[],[],[],[],[],[],[],[],...}}},
>> >>>
>> >>>
>> <<"{\"uname\":\"ahmed\",\"uuid\":\"df8c10e0-381d-5f65-bf43-cb8b4cb806fc\",\"timestamp\":\""...>>}],
>> >>>               [{<<153,190,230,200,210,126,212,127,0,0,156,65>>,
>> >>>                 {1,63630148036}}],
>> >>>               {dict,1,16,16,8,80,48,
>> >>>                     {[],[],[],[],[],[],[],[],[],[],[],[],[],...},
>> >>>                     {{[],[],[],[],[],[],[],[],[],[],[],...}}},
>> >>>               undefined}}
>> >>
>> >>
>> >> Will appreciate pointer on how to debug precommit hook.
>> >
>> >
>> >
>> > _______________________________________________
>> > riak-users mailing list
>> > riak-users@lists.basho.com
>> > http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>> >
>>
>> _______________________________________________
>> riak-users mailing list
>> riak-users@lists.basho.com
>> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
>>
>
_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to