@@ -384,11 +384,12 @@ assign_queue({sync_delete_vbucket, _}) -> #state.very_heavy_calls_queue;
384384assign_queue (flush ) -> # state .very_heavy_calls_queue ;
385385assign_queue ({set_vbucket , _ , _ , _ }) -> # state .heavy_calls_queue ;
386386assign_queue ({set_vbuckets , _ }) -> # state .very_heavy_calls_queue ;
387- assign_queue ({add , _Key , _VBucket , _Value }) -> # state .heavy_calls_queue ;
388- assign_queue ({get , _Key , _VBucket }) -> # state .heavy_calls_queue ;
389- assign_queue ({get_from_replica , _Key , _VBucket }) -> # state .heavy_calls_queue ;
390- assign_queue ({delete , _Key , _VBucket }) -> # state .heavy_calls_queue ;
391- assign_queue ({set , _Key , _VBucket , _Value , _Flags }) -> # state .heavy_calls_queue ;
387+ assign_queue ({add , _KeyFun , _VBucket , _ValueFun }) -> # state .heavy_calls_queue ;
388+ assign_queue ({get , _KeyFun , _VBucket }) -> # state .heavy_calls_queue ;
389+ assign_queue ({get_from_replica , _KeyFun , _VBucket }) -> # state .heavy_calls_queue ;
390+ assign_queue ({delete , _KeyFun , _VBucket }) -> # state .heavy_calls_queue ;
391+ assign_queue ({set , _KeyFun , _VBucket , _ValueFun , _Flags }) ->
392+ # state .heavy_calls_queue ;
392393assign_queue ({get_keys , _VBuckets , _Params }) -> # state .heavy_calls_queue ;
393394assign_queue ({get_mass_dcp_docs_estimate , _VBuckets }) -> # state .very_heavy_calls_queue ;
394395assign_queue ({get_vbucket_details_stats , all , _ }) -> # state .very_heavy_calls_queue ;
@@ -524,34 +525,36 @@ do_handle_call(flush, _From, State) ->
524525 Reply = mc_client_binary :flush (State # state .sock ),
525526 {reply , Reply , State };
526527
527- do_handle_call ({delete , Key , VBucket }, _From , State ) ->
528+ do_handle_call ({delete , KeyFun , VBucket }, _From , State ) ->
528529 Reply = mc_client_binary :cmd (? DELETE , State # state .sock , undefined , undefined ,
529530 {# mc_header {vbucket = VBucket },
530- # mc_entry {key = Key }}),
531+ # mc_entry {key = KeyFun () }}),
531532 {reply , Reply , State };
532533
533- do_handle_call ({set , Key , VBucket , Val , Flags }, _From , State ) ->
534+ do_handle_call ({set , KeyFun , VBucket , ValFun , Flags }, _From , State ) ->
534535 Reply = mc_client_binary :cmd (? SET , State # state .sock , undefined , undefined ,
535536 {# mc_header {vbucket = VBucket },
536- # mc_entry {key = Key , data = Val , flag = Flags }}),
537+ # mc_entry {key = KeyFun (), data = ValFun (),
538+ flag = Flags }}),
537539 {reply , Reply , State };
538540
539- do_handle_call ({add , Key , VBucket , Val }, _From , State ) ->
541+ do_handle_call ({add , KeyFun , VBucket , ValFun }, _From , State ) ->
540542 Reply = mc_client_binary :cmd (? ADD , State # state .sock , undefined , undefined ,
541543 {# mc_header {vbucket = VBucket },
542- # mc_entry {key = Key , data = Val }}),
544+ # mc_entry {key = KeyFun () , data = ValFun () }}),
543545 {reply , Reply , State };
544546
545- do_handle_call ({get , Key , VBucket }, _From , State ) ->
547+ do_handle_call ({get , KeyFun , VBucket }, _From , State ) ->
546548 Reply = mc_client_binary :cmd (? GET , State # state .sock , undefined , undefined ,
547549 {# mc_header {vbucket = VBucket },
548- # mc_entry {key = Key }}),
550+ # mc_entry {key = KeyFun () }}),
549551 {reply , Reply , State };
550552
551- do_handle_call ({get_from_replica , Key , VBucket }, _From , State ) ->
552- Reply = mc_client_binary :cmd (? CMD_GET_REPLICA , State # state .sock , undefined , undefined ,
553+ do_handle_call ({get_from_replica , KeyFun , VBucket }, _From , State ) ->
554+ Reply = mc_client_binary :cmd (? CMD_GET_REPLICA , State # state .sock ,
555+ undefined , undefined ,
553556 {# mc_header {vbucket = VBucket },
554- # mc_entry {key = Key }}),
557+ # mc_entry {key = KeyFun () }}),
555558 {reply , Reply , State };
556559
557560do_handle_call ({set_vbuckets , VBsToSet }, _From , # state {sock = Sock } = State ) ->
@@ -902,19 +905,22 @@ flush(Bucket) ->
902905 {ok , # mc_header {}, # mc_entry {}, any ()}.
903906add (Bucket , Key , VBucket , Value ) ->
904907 do_call ({server (Bucket ), node ()},
905- {add , Key , VBucket , Value }, ? TIMEOUT_HEAVY ).
908+ {add , fun () -> Key end , VBucket , fun () -> Value end },
909+ ? TIMEOUT_HEAVY ).
906910
907911% % @doc send get command to memcached instance
908912-spec get (bucket_name (), binary (), integer ()) ->
909913 {ok , # mc_header {}, # mc_entry {}, any ()}.
910914get (Bucket , Key , VBucket ) ->
911- do_call ({server (Bucket ), node ()}, {get , Key , VBucket }, ? TIMEOUT_HEAVY ).
915+ do_call ({server (Bucket ), node ()}, {get , fun () -> Key end , VBucket },
916+ ? TIMEOUT_HEAVY ).
912917
913918% % @doc send get_from_replica command to memcached instance. for testing only
914919-spec get_from_replica (bucket_name (), binary (), integer ()) ->
915920 {ok , # mc_header {}, # mc_entry {}, any ()}.
916921get_from_replica (Bucket , Key , VBucket ) ->
917- do_call ({server (Bucket ), node ()}, {get_from_replica , Key , VBucket }, ? TIMEOUT_HEAVY ).
922+ do_call ({server (Bucket ), node ()}, {get_from_replica , fun () -> Key end ,
923+ VBucket }, ? TIMEOUT_HEAVY ).
918924
919925% % @doc send an get metadata command to memcached
920926-spec get_meta (bucket_name (), binary (), integer ()) ->
@@ -943,15 +949,17 @@ get_xattrs(Bucket, Key, VBucket, Permissions) ->
943949 {ok , # mc_header {}, # mc_entry {}, any ()} |
944950 {memcached_error , any (), any ()}.
945951delete (Bucket , Key , VBucket ) ->
946- do_call (server (Bucket ), {delete , Key , VBucket }, ? TIMEOUT_HEAVY ).
952+ do_call (server (Bucket ), {delete , fun () -> Key end , VBucket },
953+ ? TIMEOUT_HEAVY ).
947954
948955% % @doc send a set command to memcached instance
949956-spec set (bucket_name (), binary (), integer (), binary (), integer ()) ->
950957 {ok , # mc_header {}, # mc_entry {}, any ()} |
951958 {memcached_error , any (), any ()}.
952959set (Bucket , Key , VBucket , Value , Flags ) ->
953960 do_call ({server (Bucket ), node ()},
954- {set , Key , VBucket , Value , Flags }, ? TIMEOUT_HEAVY ).
961+ {set , fun () -> Key end , VBucket , fun () -> Value end , Flags },
962+ ? TIMEOUT_HEAVY ).
955963
956964-spec update_with_rev (Bucket :: bucket_name (), VBucket :: vbucket_id (),
957965 Id :: binary (), Value :: binary () | undefined , Rev :: rev (),
0 commit comments