Blocked indexes won't complete (Help!) server 3.0.1 EE build 1444

So I believe that even though I only have a few hundred records, indexing is blocked.

I read through this:
http://docs.couchbase.com/admin/admin/Misc/Trbl-blockedIndexer.html

But although the document helps me identify blocked indexers, it doesn’t tell me how I can restart or cancel them or do anything about the issue if they are blocked.

Are there things that prevent indexing? Like open connections?

I became aware of this issue through the admin web interface, each time on a particular bucket that I would try to show results for a view, about half the time I would get a reducer error and a green toast would appear that says “Indexing” and show a progress bar with no progress.

Its been over 16 hours and that is still the case.

I think it all started after I hit the compact button. How do I get back to a normal state?

Incidently, views return data, but no new data is returned from couchbase. However, I can verify the new data was captured by viewing random documents.

Hi,

Can you tell us a little more about your set-up? Also, has the compaction finished?

It doesn’t sound as though the workload should be too much for CB Server, unless you’re running on a low-resource machine perhaps.

I am running on a single node with three buckets on a windows server
bucket A has 2042 items, RAM 32.2MB of 500, data du 47.8MB of 48.4
bucket b has no items, RAM 31.3MB of 100MB, DDU is 32MB of 32MB
bucket c has 849 items, RAM 37.7MB of 800MB, DDU is 40MB of 43.3MB

On bucket A I can query the view, but bucket C is the one I care about and has issues.

In the development, show results returns nothing. Production “show results” yeilds an error: Reducer

So ultimately I discovered that one of my mapreduce functions failed.

It looked a little something like this:

function(doc,meta){
    if(doc.caseid){
         if(doc.caseid === "xyz" && doc.something === "false"){
             emit(doc.userid,null);
         }
    }
}

And the reduce function:

function(keys,values,rereduce){
    return keys.filter(function(e,i,arr){
        return arr.lastIndexOf(e)===i;
    });
}

This gave me an array of users with caseids “xyz”.

Unfortunately, it suddenly stopped working.

I deleted all the views and reimplemented them.

Then I changed the code to something like this:

function(doc,meta){
    if(doc.caseid){
         if(doc.caseid === "xyz" && doc.something === "false"){
             emit(doc.userid,doc.userid);
         }
    }
}

Because referencing keys in the reduce function kept giving me drama.

I had to change the code to this:

function(keys,values,rereduce){
   if(!rereduce){
        return keys.filter(function(e,i,arr){
             return arr.lastIndexOf(e)===i;
        });
   }else{
      arr = [];
     for(var i = 0;i<values.length;i++){
         for(var l=0;l<values[i].length;l++){
            if(arr.indexOf(values[i][l] === -1){
                arr.push(values[i][l];
            }
         }
     }
  }
}