Juhani, FWIW I agree with most of what you described, based on my reading and use of the codebase. Brock, I agree that these things are not yet adequately documented--especially in terms of Javadocs for the main interfaces: Source, Channel, and Sink. Also, there is enough variation among the various implementations of these interfaces to lead to ambiguous interpretation.
One thing I wanted to comment on specifically is Juhani's statement about channel capacity: > Channels: > - Only memory channels have a capacity, but when that is exceeded > ChannelException seems a clearcut reaction Before your recent refactoring of MemoryChannel, put() would block indefinitely if the queue was at capacity--are you suggesting that this was incorrect behavior that should not be allowed? Or just that any such blocking should have a finite duration (similar to take() keep-alive), and throw ChannelException upon timeout? Also, other channels may well have implicit capacities, for instance available space in a database or filesystem partition, though I agree that ChannelException would be appropriate in those cases. -peter
