com.continuent.tungsten.replicator.event
Class EventMetadataFilter

java.lang.Object
  extended by com.continuent.tungsten.replicator.event.EventMetadataFilter
All Implemented Interfaces:
Filter, ReplicatorPlugin

public class EventMetadataFilter
extends java.lang.Object
implements Filter

This filter events newly extracted from the database log to answer the following key questions. It must run as an auto-filter whenever we want sharding and multi-master replication to work.

These questions are answered as follows. We begin with the assumption that any event is from the local service and does not contain Tungsten catalog metadata updates. We then modify assumptions and assign the shard ID as follows. Finally, we should note that this filter needs to be fast and to minimize memory usage. The indexing structure used in the implementation is a local hash table of database schema names and reference counts, which takes up virtually no space.

Version:
1.0
Author:
Robert Hodges

Constructor Summary
EventMetadataFilter()
           
 
Method Summary
 void configure(PluginContext context)
          Complete plug-in configuration.
 ReplDBMSEvent filter(ReplDBMSEvent event)
          Filter the event.
 void prepare(PluginContext context)
          Prepare plug-in for use.
 void release(PluginContext context)
          Release all resources used by plug-in.
 void setUnknownSqlUsesDefaultDb(boolean unknownSqlUsesDefaultDb)
          If set to true, use default database for unknown SQL operations.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EventMetadataFilter

public EventMetadataFilter()
Method Detail

setUnknownSqlUsesDefaultDb

public void setUnknownSqlUsesDefaultDb(boolean unknownSqlUsesDefaultDb)
If set to true, use default database for unknown SQL operations.


filter

public ReplDBMSEvent filter(ReplDBMSEvent event)
                     throws ReplicatorException,
                            java.lang.InterruptedException
Filter the event. Filters may transform the event or return null if the event should be discarded. Filters must be prepared to be interrupted, which mechanism is used to cancel processing.

Specified by:
filter in interface Filter
Parameters:
event - An event to be filtered
Returns:
Filtered ReplDBMSEvent or null
Throws:
ReplicatorException - Thrown if there is a processing error
java.lang.InterruptedException - Must be thrown if the filter is interrupted or the replicator may hang
See Also:
Filter.filter(com.continuent.tungsten.replicator.event.ReplDBMSEvent)

configure

public void configure(PluginContext context)
               throws ReplicatorException
Complete plug-in configuration. This is called after setters are invoked at the time that the replicator goes through configuration.

Specified by:
configure in interface ReplicatorPlugin
Throws:
ReplicatorException - Thrown if configuration is incomplete or fails
See Also:
ReplicatorPlugin.configure(com.continuent.tungsten.replicator.plugin.PluginContext)

prepare

public void prepare(PluginContext context)
             throws ReplicatorException
Prepare plug-in for use. This method is assumed to allocate all required resources. It is called before the plug-in performs any operations.

Specified by:
prepare in interface ReplicatorPlugin
Throws:
ReplicatorException - Thrown if resource allocation fails
See Also:
ReplicatorPlugin.prepare(com.continuent.tungsten.replicator.plugin.PluginContext)

release

public void release(PluginContext context)
             throws ReplicatorException
Release all resources used by plug-in. This is called before the plug-in is deallocated.

Specified by:
release in interface ReplicatorPlugin
Throws:
ReplicatorException - Thrown if resource deallocation fails
See Also:
ReplicatorPlugin.release(com.continuent.tungsten.replicator.plugin.PluginContext)