anchor.diff:  
                 %% effectful
                 ensure_can_view_compact(BucketName, DDocId, Type),
  +
  +              %% make sure that scheduled non-parallel view compaction doesn't happen
  +              %% during the kv compaction
  +              Force orelse Config#config.parallel_view_compact orelse get_kv_token(),
   
                 ?log_info("Compacting indexes for ~s", [ViewName]),
                 process_flag(trap_exit, true),
  
positive.code:           (_) ->
                ok
        end),
  
      CheckInterval = get_check_interval(ns_config:get()),
  
  
negative.code:                     NewState
              end
      end.
  
  get_kv_token() ->
      [{_, Pid}] = ets:lookup(compaction_daemon, kv_throttle),
      concurrency_throttle:send_back_when_can_go(Pid, go),
      receive
          {'EXIT', _, Reason} = ExitMsg ->
              ?log_debug("Got exit waiting for token: ~p", [ExitMsg]),
              erlang:exit(Reason);
          go ->
              ok
      end.
  