Initializing a commit hook

Mav erick mav4001 at gmail.com
Fri Nov 18 16:36:54 EST 2016


Hi Luke

I tried that and didn't work for a bucket with bucket type = maps. My
erlang code below does work for buckets without types.

But I think its because I didn't set the hook for the typed bucket
correctly.Could you check my curl below, please ?

I did this to set the hook
curl -X PUT localhost:8098/riak/types/maps -H 'Content-Type:
application/json' -d
'{"props":{"precommit":[{"mod":"myhooks","fun":"precommit_hook"}]}}'

That returns 204, but when I get the props ...
curl http://localhost:8098/types/maps/props
{
  "props": {
    "active": true,
    "allow_mult": true,
    "basic_quorum": false,
    "big_vclock": 50,
    "chash_keyfun": {
      "fun": "chash_std_keyfun",
      "mod": "riak_core_util"
    },
    "claimant": "riak at 10.243.44.165",
    "datatype": "map",
    "dvv_enabled": true,
    "dw": "quorum",
    "last_write_wins": false,
    "linkfun": {
      "fun": "mapreduce_linkfun",
      "mod": "riak_kv_wm_link_walker"
    },
    "n_val": 3,
    "notfound_ok": true,
    "old_vclock": 86400,
    "postcommit": [],
    "pr": 0,
    "precommit": [],
    "pw": 0,
    "r": "quorum",
    "rw": "quorum",
    "small_vclock": 50,
    "w": "quorum",
    "young_vclock": 20
  }
}

The hook code is ...

precommit_hook(Object) ->
   case riak_object:bucket(Object) of
      {BucketType, Bucket} -> Bstr = binary_to_list(Bucket), Btstr =
binary_to_list(BucketType);
      Bucket -> Bstr = binary_to_list(Bucket), Btstr = <<"">>
   end,
   K = riak_object:key(Object),
   Kstr = binary_to_list(K),
   lager:info("MyHook Bucket type ~s, bucket ~s, key ~s [Btstr, Bstr,
Kstr]),
   Object.


On 18 November 2016 at 14:15, Luke Bakken <lbakken at basho.com> wrote:

> Mav -
>
> Please remember to use "Reply All" so that the riak-users list can
> learn from what you find out. Thanks.
>
> Thebucket = riak_object:bucket(Object),
>
> Can you check to see if "Thebucket" is really a two-tuple of
> "{BucketType, Bucket}"? I believe that is what is returned.
>
> --
> Luke Bakken
> Engineer
> lbakken at basho.com
>
> On Fri, Nov 18, 2016 at 10:54 AM, Mav erick <mav4001 at gmail.com> wrote:
> > I have some initializing to do - like connecting to a notification
> server,
> > before I can use the commit hook. But I think I have figured that out now
> > that I learnt about supervisors and OTP
> >
> > I have one other question though ...
> > How do I get the bucket type of the bucket of the key that was committed
> ?
> >
> > I am using these to get the key and bucket names. But I cant seem to
> find a
> > call to get the bucket's bucket type
> >
> >   Thebucket = riak_object:bucket(Object),
> >   Thekey = riak_object:key(Object),
> >
> > Thanks !
> >
> > On 18 November 2016 at 12:14, Luke Bakken <lbakken at basho.com> wrote:
> >>
> >> Mav -
> >>
> >> Can you go into more detail? The subject of your message is
> >> "initializing a commit hook".
> >>
> >> --
> >> Luke Bakken
> >> Engineer
> >> lbakken at basho.com
> >>
> >> On Thu, Nov 17, 2016 at 9:09 AM, Mav erick <mav4001 at gmail.com> wrote:
> >> > Folks
> >> >
> >> > Is there way RIAK can call an erlang function in a module when RIAK
> >> > starts
> >> > up ?
> >> >
> >> > Thanks
> >> > Mav
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.basho.com/pipermail/riak-users_lists.basho.com/attachments/20161118/c4e8242b/attachment-0002.html>


More information about the riak-users mailing list