The requirement to be thread safe has a few implementation implications for manipulators:

For optimal performance, it is a good idea to minimize the time you hold locks in processRecord().

Manipulators should not hold locks when calling OutputChannel.output() from processRecord(). The call to output() may take a while to return, which blocks other threads that are concurrently calling processRecord(). One way of holding locks is by using the Java synchronize keyword for a method. However, synchronizing processRecord() adversely affects performance. Synchronizing effectively makes the manipulator single threaded by preventing other threads from entering processRecord().


Copyright © Legal Notices