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