This discussion is archived
1 Reply Latest reply: Dec 7, 2010 7:05 AM by 704908 RSS

PushReplication and FilteringPublishingTransformer broken

704908 Newbie
Currently Being Moderated
Guys,

I'm trying to use a scheme like this:
                         <sync:filtering-transformer-scheme>
                              <sync:entry-operation-filter>
                                   <sync:filter>
                                   <replication-filter:location-and-consume-filter />
                                   </sync:filter>
                                   <sync:operations>Insert, Update, Delete</sync:operations>
                              </sync:entry-operation-filter>
                         </sync:filtering-transformer-scheme>
which results in lots of error like this:

2010-12-02 08:38:58,207 ERROR localhost-2 [${build.version}] Log4j [Logger@9258732 n/a] - 46.543 <Error> (thread=PublishingService:Thread-64, member=1): com.oracle.coherence.patterns.pushreplication.filters.EntryOperationFilter failed due to java.lang.UnsupportedOperationException: PublishableEntry doesn't support extract(ValueExtractor) as it's immutable. Class:com.oracle.coherence.patterns.pushreplication.filters.EntryOperationFilter

Using the debugger I got this stack trace:

Daemon Thread [PublishingService:Thread-7] (Suspended (breakpoint at line 121 in PublishableEntry))     
     PublishableEntry.extract(ValueExtractor) line: 121     
     EqualsFilter(ExtractorFilter).evaluateEntry(Map$Entry) line: 94     
     EntryOperationFilter.evaluate(Object) line: 160     
     FilteringIterator<T>.seekNext() line: 83     
     FilteringIterator<T>.<init>(Filter, Iterator<T>) line: 67     
     FilteringPublishingTransformer.transform(String, String, Iterator<EntryOperation>) line: 63     
     CoherencePublishingService.onPublish() line: 1054     
     CoherencePublishingService$8.run() line: 1107     
     Executors$RunnableAdapter<T>.call() line: 441     
     FutureTask$Sync.innerRun() line: 303     
     ScheduledThreadPoolExecutor$ScheduledFutureTask<V>(FutureTask<V>).run() line: 138     
     ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.access$301(ScheduledThreadPoolExecutor$ScheduledFutureTask) line: 98     
     ScheduledThreadPoolExecutor$ScheduledFutureTask<V>.run() line: 206     
     ThreadPoolExecutor$Worker.runTask(Runnable) line: 886     
     ThreadPoolExecutor$Worker.run() line: 908     
     Thread.run() line: 662     

PublishableEntry.extract looks like:
    public Object extract(ValueExtractor valueExtractor)
    {
        //TODO: we could support this but it's not really required
        throw new UnsupportedOperationException(
            "PublishableEntry doesn't support extract(ValueExtractor) as it's immutable.");
    }
It seems to me that this really is required, unless I have really misunderstood how to configure the new push replication.

I'm going to implement that method and see what happens...

Regards, Paul

Legend

  • Correct Answers - 10 points
  • Helpful Answers - 5 points