COutputCache did not call init() in filter.
Also documentation of CFilterWidget::filter() states clearly that it will call init().
Have not checked the problem in detail but your fix does not look right though...