In short, I had the following and was causing the same error:
<f:facet name="header">Date</f:facet>
<f:facet name="filter">
<h:outputText value="Year: " />
<p:selectOneMenu onchange="PF('myTable').filter();">
<f:selectItem itemValue="" itemLabel="All" />
<f:selectItems value="#{bean.conditionalYears}" var="yearSelect" itemValue="#{yearSelect.value}" itemLabel="#{yearSelect.label}" />
</p:selectOneMenu>
</f:facet>
I had to remove everything from <f:facet name="filter" /> except the <p:selectOneMenu />
In my case, the <h:outputText /> (not limited to outputText) was causing ClassCastException in FilterFeature:277 that were swallowed by UIData.visitTree(VisitContext, VisitCallback) (doesn't have CATCH)
filterValue = ((ValueHolder) filterFacet).getLocalValue();
For some reason, filterFacet is an UIPanel, not a SelectOneMenu as expected.
So, the answer is:
If you are using <f:facet name="filter" />, then try removing everything from it except your custom filter field.