Luke, yep, that is right. I did that smoke test when debugging precommit issue. Each of the three nodes has access to compiled beam files it needs (in a shared folder that each node is configured for, via add_paths in advanced config, to make sure they have same beam files). I verified it manually in the console for each node.
On Wed, May 11, 2016 at 4:20 PM, Luke Bakken <lbak...@basho.com> wrote: > Hi Sanket, > > Another thing I'd like to confirm - you have installed your compiled > .beam file on all Riak nodes and can confirm via "m(precommit)" that > the code is available? > -- > Luke Bakken > Engineer > lbak...@basho.com > > > On Wed, May 11, 2016 at 12:12 PM, Sanket Agrawal > <sanket.agra...@gmail.com> wrote: > > Yep, I can always load the module in question in riak console fine. I did > > all my testing in riak console, before trying to turn on precommit hook. > > Here is the output for loading the module that you asked for - if sasl > > logging is not working, perhaps something is broken about commit hooks > then: > > > >> $ ~/riak/riak1/bin/riak attach > >> (riak1@127.0.0.1)1> m(precommit). > >> Module precommit compiled: Date: May 11 2016, Time: 02.05 > >> Compiler options: [] > >> Object file: /home/ec2-user/riak/customcode/precommit.beam > >> Exports: > >> module_info/0 > >> module_info/1 > >> pre_all/1 > >> pre_uauth/1 > >> pre_uprofile/1 > >> pre_uuid/1 > >> ok > > > > > > On Wed, May 11, 2016 at 2:55 PM, Douglas Rohrer <droh...@basho.com> > wrote: > >> > >> Huh - I get a huge amount of logging when I turn on sasl using > >> advanced.config - specifically, I have: > >> > >> {sasl,[{sasl_error_logger,{file, "/tmp/sasl-1.log"}}]} > >> > >> in my advanced.config, and for just a startup/shutdown cycle I get a > >> 191555 byte file. > >> > >> Just to confirm that you can, in fact, load the modules in question, > what > >> happens if you do a `riak-admin attach` and do `m(precommit).` what do > you > >> see? > >> > >> Doug > >> > >> On Wed, May 11, 2016 at 11:32 AM Sanket Agrawal < > sanket.agra...@gmail.com> > >> wrote: > >>> > >>> 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