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

Reply via email to