> You can't remove a coprocessor. > > Well, you can, but that would require a rolling restart. > > It still exists and is still loaded. > > Assuming we are talking about RegionObserver coprocessors here, when a coprocessor throws an exception (other than IOException), it is either:
a) removed from the list of active RegionObservers being invoked on the region's operations b) or if "hbase.coprocessor.abortonerror" is "true", the regionserver aborts The coprocessor class is of course still in memory on the regionserver, but that instance will no longer be invoked in any pre/post hooks for operations on that region. Back to the original question, the coprocessor is only removed from the list of active coprocessors for the region(s) where it has thrown an exception. It will still be active on any regions where it has not thrown an exception.
