Closed jonmeredith closed 8 years ago
If you are seeing the log message, the number of VMs allocated for map and reduce tasks can be configured in the app.config - defaults are 8 for map and 6 for reduce, increasing them will use more memory but should reduce the incidence of the error message.
{riak_kv, [
...
{map_js_vm_count, 24 },
{reduce_js_vm_count, 18 },
...]
Will not fix. JS deprecated.
If all JS VMs are busy, MapReduce can return a preflist_exhausted message.
accompanied with a message in console.log
If pipe is out of a resource it would be helpful if it let the client know.
The scripts below reproduce. First seed with some data (needs recent b_b)
Then run the following MR query
with 10 in parallel in a loop
Adding some debug to
riak_pipe_vnode:queue_work_erracc/6
at the point where it returns perflist_exhausted shows that the call came from riak_pipe_vnode_worker:process_input/3 as the result of riak_kv_mrc_map returning forward_preflist, which it only does when map_js gets{error, no_vms}
fromriak_kv_js_manager:blocking_dispatch
Here is the telling backtrace.