You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bookkeeper.apache.org by Matthieu Morel <mm...@apache.org> on 2013/01/04 19:29:24 UTC

Re: Review Request: Add support for JMS provider for hedwig

-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6277/#review15080
-----------------------------------------------------------


Thanks for updating the diff Mridul.

It seems you addressed my comments.

However, it seems the jboss repositories are not publicly accessible anymore, for the jms jar.

Also, it seems the dependency to hedwig-server tests package is not automatic. Maybe updating the pom there, like in bookkeeper-server, can help.

Last, it seems the tests in BasicJMSTest require starting hedwig instances first, and that does not seem to be the case?

- Matthieu Morel


On Dec. 27, 2012, 10:32 a.m., Mridul wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6277/
> -----------------------------------------------------------
> 
> (Updated Dec. 27, 2012, 10:32 a.m.)
> 
> 
> Review request for bookkeeper.
> 
> 
> Description
> -------
> 
> 
> Add support for JMS provider conforming to 1.1 as detailed in BOOKKEEPER-312.
> 
> The limitations are (as detailed in the bug) :
> 
> 0) Due to lack of proper support for consume in face of disconnect, some tests fail - this has to be addressed in hedwig independent of this bug.
> 
> 1) Need better ways to connect to server - currently it is (sort of) hardcoded via property file(s).
> Also, need better ways to authorize to server (assuming hedwig supports this).
> A subsequent bug can extend/enhance the provider to add support for this (JAAS or whatever is expected to be supported).
> 
> 2) No support for Queue's.
> 
> 3) No support for noLocal : simulating it in provider.
> 
> 4) We do not support NON_PERSISTENT delivery mode.
> 
> 5) Calling unsubscribe on a durable subscription will fail if it was NOT created in the current session.
> 
> 6) Explicit session recovery is not supported.
> and so setting the JMSRedelivered flag is simulated (best case effort).
> 
> 7) Hedwig only supports marking all messages until seq-id as received : while JMS indicates ability to acknowledge individual messages.
> This distinction is currently unsupported.
> 
> 8) JMS spec requires
> "A connection's delivery of incoming messages can be temporarily stopped
> using its stop() method. It can be restarted using its start() method. When the connection is stopped, delivery to all the connection’s MessageConsumers is inhibited: synchronous receives block, and messages are not delivered to MessageListeners."
> 
> We honor this for undelivered messages from server - but if stop is called while there are pending messages yet to be delivered to a listener (or buffered in subscriber for receive), then they will be delivered irrespective of stop().
> 
> 
> This addresses bug BOOKKEEPER-312.
>     https://issues.apache.org/jira/browse/BOOKKEEPER-312
> 
> 
> Diffs
> -----
> 
>   hedwig-client-jms/pom.xml PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/readme.html PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/selector_grammar.jjt PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionMetaDataImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/DebugUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheMap.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheSet.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/MessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/Mutable.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/SessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/StateManager.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContext.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContextFactory.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/BytesMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MapMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/ObjectMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/StreamMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/TextMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/JmsHeader.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/MetadataProcessor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/InterpretSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/LogicalComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/MyNode.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/PropertyExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorConstant.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvalState.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvaluationException.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/TreeDumperSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ValueComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionFactoryImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigMessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageConsumerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageProducerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/QueueSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicPublisherImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSubscriberImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/protobuf/JmsHeader.proto PRE-CREATION 
>   hedwig-client-jms/src/main/resources/log4j.properties PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/AutoFailTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/CombinationTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConnectionCleanupTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConsumerReceiveWithTimeoutTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ExpiryHogTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSDurableTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSIndividualAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSUsecaseTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsBenchmark.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConnectionStartStopTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConsumerResetActiveListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsCreateConsumerInOnMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsMultipleClientsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRedeliveredTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRollbackRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveWithMessageExpirationTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendWithAsyncCallbackTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicCompositeSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveSubscriberTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsWithJMXTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendSameMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTransactionTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/LoadTestBurnIn.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/MessageListenerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TimeStampTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadClient.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadController.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/ConnectionChurnTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/InactiveDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NumberOfDestinationsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfRate.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNonPersistentTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowDurableConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsResourceProvider.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsAndByteSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/rollback/DelegatingTransactionalMessageListener.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSentMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSessionDeliveryModeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositeConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositePublishTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ConcurrentProducerDurableConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DiscriminatingConsumerLoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DispatchMultipleConsumersTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableConsumerCloseAndReconnectTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubProcessTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubSelectorDelayTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubscriptionHangTestCase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/MyObject.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/NonBlockingConsumerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ObjectMessageNotSerializableTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ProducerConsumerTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnDurableTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/SubscribeClosePublishThenConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionRollbackOrderTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ConsumerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/DefaultTestAppender.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/IdGenerator.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/MessageIdList.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ProducerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/SimplePojo.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/Wait.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/JmsTestBase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/BasicJMSTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/BasicSelectorGrammarTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorParserTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorTest.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/6277/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Mridul
> 
>


Re: Review Request: Add support for JMS provider for hedwig

Posted by Mridul <mr...@gmail.com>.

> On Jan. 4, 2013, 6:29 p.m., Matthieu Morel wrote:
> > Thanks for updating the diff Mridul.
> > 
> > It seems you addressed my comments.
> > 
> > However, it seems the jboss repositories are not publicly accessible anymore, for the jms jar.
> > 
> > Also, it seems the dependency to hedwig-server tests package is not automatic. Maybe updating the pom there, like in bookkeeper-server, can help.
> > 
> > Last, it seems the tests in BasicJMSTest require starting hedwig instances first, and that does not seem to be the case?
> 
> Mridul wrote:
>     - jms (and j2ee in general) seems to be not present in most central maven repo's : due to some jar licensing issue with Sun.
>     I have added a set of repo's which are supposed to contain it - these keep changing unfortunately (jar gets removed, re-added, removed and so on !).
>     
>     Of the two jboss repositories, one of them has been closed - while the other continues to work - I have commented out that.
>     
>     It will compile without issues: but in case of failures (in future), we will need to find the relevant jms repository.
>     
>     
>     - I had added this to the pom (I hope it had not been messed up in previous diff !) - isn't it not sufficient ?
>     It looks like the hedwig-server patch I had attached is no longer in the review request - will re-add it.
>     
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>hedwig-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>test-jar</type>
>             </dependency>
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>hedwig-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>jar</type>
>             </dependency>
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>bookkeeper-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>jar</type>
>             </dependency>
>     
>     
>     
>     - Looks like I added support for everything, but did not use it in our own tests :-) (The activemq tests use it !).
>     I have attached modified diffs which extend from org.apache.hedwig.JmsTestBase - so it should handle starting/stopping hedwig before/after test.
> 
> Matthieu Morel wrote:
>     About the jms api jar issue, the best approach migh be to mimic other Apache projects, i.e. use the ASL2 licensed API, from geronimo: http://geronimo.apache.org/maven/specs/geronimo-jms_1.1_spec/index.html
>     It is basically a minimal clone of the JMS API, that only retains the signatures of the methods, which allows for a relicensing. It is accessible from the apache maven repository, see activemq's pom for info.
>     
>

Looks like this change does not break anything - all the tests are running fine.
Updating the diffs with this - thanks for the suggestion Matthieu, was excellent point !


- Mridul


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6277/#review15080
-----------------------------------------------------------


On Jan. 6, 2013, 2:33 p.m., Mridul wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6277/
> -----------------------------------------------------------
> 
> (Updated Jan. 6, 2013, 2:33 p.m.)
> 
> 
> Review request for bookkeeper.
> 
> 
> Description
> -------
> 
> 
> Add support for JMS provider conforming to 1.1 as detailed in BOOKKEEPER-312.
> 
> The limitations are (as detailed in the bug) :
> 
> 0) Due to lack of proper support for consume in face of disconnect, some tests fail - this has to be addressed in hedwig independent of this bug.
> 
> 1) Need better ways to connect to server - currently it is (sort of) hardcoded via property file(s).
> Also, need better ways to authorize to server (assuming hedwig supports this).
> A subsequent bug can extend/enhance the provider to add support for this (JAAS or whatever is expected to be supported).
> 
> 2) No support for Queue's.
> 
> 3) No support for noLocal : simulating it in provider.
> 
> 4) We do not support NON_PERSISTENT delivery mode.
> 
> 5) Calling unsubscribe on a durable subscription will fail if it was NOT created in the current session.
> 
> 6) Explicit session recovery is not supported.
> and so setting the JMSRedelivered flag is simulated (best case effort).
> 
> 7) Hedwig only supports marking all messages until seq-id as received : while JMS indicates ability to acknowledge individual messages.
> This distinction is currently unsupported.
> 
> 8) JMS spec requires
> "A connection's delivery of incoming messages can be temporarily stopped
> using its stop() method. It can be restarted using its start() method. When the connection is stopped, delivery to all the connection’s MessageConsumers is inhibited: synchronous receives block, and messages are not delivered to MessageListeners."
> 
> We honor this for undelivered messages from server - but if stop is called while there are pending messages yet to be delivered to a listener (or buffered in subscriber for receive), then they will be delivered irrespective of stop().
> 
> 
> This addresses bug BOOKKEEPER-312.
>     https://issues.apache.org/jira/browse/BOOKKEEPER-312
> 
> 
> Diffs
> -----
> 
>   hedwig-client-jms/pom.xml PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/readme.html PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/selector_grammar.jjt PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionMetaDataImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/DebugUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheMap.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheSet.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/MessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/Mutable.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/SessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/StateManager.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContext.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContextFactory.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/BytesMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MapMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/ObjectMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/StreamMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/TextMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/JmsHeader.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/MetadataProcessor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/InterpretSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/LogicalComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/MyNode.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/PropertyExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorConstant.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvalState.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvaluationException.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/TreeDumperSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ValueComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionFactoryImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigMessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageConsumerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageProducerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/QueueSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicPublisherImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSubscriberImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/protobuf/JmsHeader.proto PRE-CREATION 
>   hedwig-client-jms/src/main/resources/log4j.properties PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/AutoFailTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/CombinationTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConnectionCleanupTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConsumerReceiveWithTimeoutTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ExpiryHogTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSDurableTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSIndividualAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSUsecaseTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsBenchmark.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConnectionStartStopTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConsumerResetActiveListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsCreateConsumerInOnMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsMultipleClientsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRedeliveredTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRollbackRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveWithMessageExpirationTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendWithAsyncCallbackTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicCompositeSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveSubscriberTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsWithJMXTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendSameMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTransactionTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/LoadTestBurnIn.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/MessageListenerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TimeStampTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadClient.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadController.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/ConnectionChurnTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/InactiveDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NumberOfDestinationsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfRate.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNonPersistentTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowDurableConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsResourceProvider.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsAndByteSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/rollback/DelegatingTransactionalMessageListener.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSentMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSessionDeliveryModeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositeConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositePublishTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ConcurrentProducerDurableConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DiscriminatingConsumerLoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DispatchMultipleConsumersTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableConsumerCloseAndReconnectTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubProcessTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubSelectorDelayTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubscriptionHangTestCase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/MyObject.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/NonBlockingConsumerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ObjectMessageNotSerializableTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ProducerConsumerTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnDurableTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/SubscribeClosePublishThenConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionRollbackOrderTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ConsumerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/DefaultTestAppender.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/IdGenerator.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/MessageIdList.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ProducerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/SimplePojo.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/Wait.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/JmsTestBase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/BasicJMSTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/BasicSelectorGrammarTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorParserTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorTest.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/6277/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Mridul
> 
>


Re: Review Request: Add support for JMS provider for hedwig

Posted by Mridul <mr...@gmail.com>.

> On Jan. 4, 2013, 6:29 p.m., Matthieu Morel wrote:
> > Thanks for updating the diff Mridul.
> > 
> > It seems you addressed my comments.
> > 
> > However, it seems the jboss repositories are not publicly accessible anymore, for the jms jar.
> > 
> > Also, it seems the dependency to hedwig-server tests package is not automatic. Maybe updating the pom there, like in bookkeeper-server, can help.
> > 
> > Last, it seems the tests in BasicJMSTest require starting hedwig instances first, and that does not seem to be the case?

- jms (and j2ee in general) seems to be not present in most central maven repo's : due to some jar licensing issue with Sun.
I have added a set of repo's which are supposed to contain it - these keep changing unfortunately (jar gets removed, re-added, removed and so on !).

Of the two jboss repositories, one of them has been closed - while the other continues to work - I have commented out that.

It will compile without issues: but in case of failures (in future), we will need to find the relevant jms repository.


- I had added this to the pom (I hope it had not been messed up in previous diff !) - isn't it not sufficient ?
It looks like the hedwig-server patch I had attached is no longer in the review request - will re-add it.

        <dependency>
            <groupId>org.apache.bookkeeper</groupId>
            <artifactId>hedwig-server</artifactId>
            <version>${project.parent.version}</version>
            <scope>test</scope>
            <type>test-jar</type>
        </dependency>
        <dependency>
            <groupId>org.apache.bookkeeper</groupId>
            <artifactId>hedwig-server</artifactId>
            <version>${project.parent.version}</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>org.apache.bookkeeper</groupId>
            <artifactId>bookkeeper-server</artifactId>
            <version>${project.parent.version}</version>
            <scope>test</scope>
            <type>jar</type>
        </dependency>


- Looks like I added support for everything, but did not use it in our own tests :-) (The activemq tests use it !).
I have attached modified diffs which extend from org.apache.hedwig.JmsTestBase - so it should handle starting/stopping hedwig before/after test.


- Mridul


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6277/#review15080
-----------------------------------------------------------


On Dec. 27, 2012, 10:32 a.m., Mridul wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6277/
> -----------------------------------------------------------
> 
> (Updated Dec. 27, 2012, 10:32 a.m.)
> 
> 
> Review request for bookkeeper.
> 
> 
> Description
> -------
> 
> 
> Add support for JMS provider conforming to 1.1 as detailed in BOOKKEEPER-312.
> 
> The limitations are (as detailed in the bug) :
> 
> 0) Due to lack of proper support for consume in face of disconnect, some tests fail - this has to be addressed in hedwig independent of this bug.
> 
> 1) Need better ways to connect to server - currently it is (sort of) hardcoded via property file(s).
> Also, need better ways to authorize to server (assuming hedwig supports this).
> A subsequent bug can extend/enhance the provider to add support for this (JAAS or whatever is expected to be supported).
> 
> 2) No support for Queue's.
> 
> 3) No support for noLocal : simulating it in provider.
> 
> 4) We do not support NON_PERSISTENT delivery mode.
> 
> 5) Calling unsubscribe on a durable subscription will fail if it was NOT created in the current session.
> 
> 6) Explicit session recovery is not supported.
> and so setting the JMSRedelivered flag is simulated (best case effort).
> 
> 7) Hedwig only supports marking all messages until seq-id as received : while JMS indicates ability to acknowledge individual messages.
> This distinction is currently unsupported.
> 
> 8) JMS spec requires
> "A connection's delivery of incoming messages can be temporarily stopped
> using its stop() method. It can be restarted using its start() method. When the connection is stopped, delivery to all the connection’s MessageConsumers is inhibited: synchronous receives block, and messages are not delivered to MessageListeners."
> 
> We honor this for undelivered messages from server - but if stop is called while there are pending messages yet to be delivered to a listener (or buffered in subscriber for receive), then they will be delivered irrespective of stop().
> 
> 
> This addresses bug BOOKKEEPER-312.
>     https://issues.apache.org/jira/browse/BOOKKEEPER-312
> 
> 
> Diffs
> -----
> 
>   hedwig-client-jms/pom.xml PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/readme.html PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/selector_grammar.jjt PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionMetaDataImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/DebugUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheMap.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheSet.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/MessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/Mutable.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/SessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/StateManager.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContext.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContextFactory.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/BytesMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MapMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/ObjectMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/StreamMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/TextMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/JmsHeader.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/MetadataProcessor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/InterpretSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/LogicalComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/MyNode.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/PropertyExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorConstant.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvalState.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvaluationException.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/TreeDumperSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ValueComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionFactoryImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigMessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageConsumerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageProducerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/QueueSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicPublisherImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSubscriberImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/protobuf/JmsHeader.proto PRE-CREATION 
>   hedwig-client-jms/src/main/resources/log4j.properties PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/AutoFailTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/CombinationTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConnectionCleanupTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConsumerReceiveWithTimeoutTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ExpiryHogTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSDurableTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSIndividualAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSUsecaseTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsBenchmark.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConnectionStartStopTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConsumerResetActiveListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsCreateConsumerInOnMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsMultipleClientsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRedeliveredTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRollbackRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveWithMessageExpirationTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendWithAsyncCallbackTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicCompositeSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveSubscriberTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsWithJMXTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendSameMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTransactionTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/LoadTestBurnIn.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/MessageListenerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TimeStampTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadClient.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadController.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/ConnectionChurnTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/InactiveDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NumberOfDestinationsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfRate.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNonPersistentTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowDurableConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsResourceProvider.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsAndByteSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/rollback/DelegatingTransactionalMessageListener.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSentMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSessionDeliveryModeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositeConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositePublishTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ConcurrentProducerDurableConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DiscriminatingConsumerLoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DispatchMultipleConsumersTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableConsumerCloseAndReconnectTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubProcessTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubSelectorDelayTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubscriptionHangTestCase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/MyObject.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/NonBlockingConsumerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ObjectMessageNotSerializableTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ProducerConsumerTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnDurableTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/SubscribeClosePublishThenConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionRollbackOrderTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ConsumerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/DefaultTestAppender.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/IdGenerator.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/MessageIdList.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ProducerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/SimplePojo.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/Wait.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/JmsTestBase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/BasicJMSTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/BasicSelectorGrammarTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorParserTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorTest.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/6277/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Mridul
> 
>


Re: Review Request: Add support for JMS provider for hedwig

Posted by Matthieu Morel <mm...@apache.org>.

> On Jan. 4, 2013, 6:29 p.m., Matthieu Morel wrote:
> > Thanks for updating the diff Mridul.
> > 
> > It seems you addressed my comments.
> > 
> > However, it seems the jboss repositories are not publicly accessible anymore, for the jms jar.
> > 
> > Also, it seems the dependency to hedwig-server tests package is not automatic. Maybe updating the pom there, like in bookkeeper-server, can help.
> > 
> > Last, it seems the tests in BasicJMSTest require starting hedwig instances first, and that does not seem to be the case?
> 
> Mridul wrote:
>     - jms (and j2ee in general) seems to be not present in most central maven repo's : due to some jar licensing issue with Sun.
>     I have added a set of repo's which are supposed to contain it - these keep changing unfortunately (jar gets removed, re-added, removed and so on !).
>     
>     Of the two jboss repositories, one of them has been closed - while the other continues to work - I have commented out that.
>     
>     It will compile without issues: but in case of failures (in future), we will need to find the relevant jms repository.
>     
>     
>     - I had added this to the pom (I hope it had not been messed up in previous diff !) - isn't it not sufficient ?
>     It looks like the hedwig-server patch I had attached is no longer in the review request - will re-add it.
>     
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>hedwig-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>test-jar</type>
>             </dependency>
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>hedwig-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>jar</type>
>             </dependency>
>             <dependency>
>                 <groupId>org.apache.bookkeeper</groupId>
>                 <artifactId>bookkeeper-server</artifactId>
>                 <version>${project.parent.version}</version>
>                 <scope>test</scope>
>                 <type>jar</type>
>             </dependency>
>     
>     
>     
>     - Looks like I added support for everything, but did not use it in our own tests :-) (The activemq tests use it !).
>     I have attached modified diffs which extend from org.apache.hedwig.JmsTestBase - so it should handle starting/stopping hedwig before/after test.

About the jms api jar issue, the best approach migh be to mimic other Apache projects, i.e. use the ASL2 licensed API, from geronimo: http://geronimo.apache.org/maven/specs/geronimo-jms_1.1_spec/index.html
It is basically a minimal clone of the JMS API, that only retains the signatures of the methods, which allows for a relicensing. It is accessible from the apache maven repository, see activemq's pom for info.


- Matthieu


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/6277/#review15080
-----------------------------------------------------------


On Jan. 6, 2013, 2:33 p.m., Mridul wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/6277/
> -----------------------------------------------------------
> 
> (Updated Jan. 6, 2013, 2:33 p.m.)
> 
> 
> Review request for bookkeeper.
> 
> 
> Description
> -------
> 
> 
> Add support for JMS provider conforming to 1.1 as detailed in BOOKKEEPER-312.
> 
> The limitations are (as detailed in the bug) :
> 
> 0) Due to lack of proper support for consume in face of disconnect, some tests fail - this has to be addressed in hedwig independent of this bug.
> 
> 1) Need better ways to connect to server - currently it is (sort of) hardcoded via property file(s).
> Also, need better ways to authorize to server (assuming hedwig supports this).
> A subsequent bug can extend/enhance the provider to add support for this (JAAS or whatever is expected to be supported).
> 
> 2) No support for Queue's.
> 
> 3) No support for noLocal : simulating it in provider.
> 
> 4) We do not support NON_PERSISTENT delivery mode.
> 
> 5) Calling unsubscribe on a durable subscription will fail if it was NOT created in the current session.
> 
> 6) Explicit session recovery is not supported.
> and so setting the JMSRedelivered flag is simulated (best case effort).
> 
> 7) Hedwig only supports marking all messages until seq-id as received : while JMS indicates ability to acknowledge individual messages.
> This distinction is currently unsupported.
> 
> 8) JMS spec requires
> "A connection's delivery of incoming messages can be temporarily stopped
> using its stop() method. It can be restarted using its start() method. When the connection is stopped, delivery to all the connection’s MessageConsumers is inhibited: synchronous receives block, and messages are not delivered to MessageListeners."
> 
> We honor this for undelivered messages from server - but if stop is called while there are pending messages yet to be delivered to a listener (or buffered in subscriber for receive), then they will be delivered irrespective of stop().
> 
> 
> This addresses bug BOOKKEEPER-312.
>     https://issues.apache.org/jira/browse/BOOKKEEPER-312
> 
> 
> Diffs
> -----
> 
>   hedwig-client-jms/pom.xml PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/readme.html PRE-CREATION 
>   hedwig-client-jms/src/main/grammar/javacc/selector_grammar.jjt PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/ConnectionMetaDataImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/DebugUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheMap.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/LRUCacheSet.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/MessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/Mutable.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/SessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/StateManager.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContext.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/HedwigInitialContextFactory.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/jndi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/BytesMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MapMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/MessageUtil.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/ObjectMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/StreamMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/TextMessageImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/JmsHeader.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/header/MetadataProcessor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/message/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/BinaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/InterpretSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/LogicalComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/MyNode.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/PropertyExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorConstant.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvalState.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/SelectorEvaluationException.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/TreeDumperSelectorParserVisitor.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryArithmeticFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/UnaryExprFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/ValueComparisonFunction.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/selector/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionFactoryImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigConnectionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/HedwigMessagingSessionFacade.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageConsumerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/MessageProducerImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/QueueSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicPublisherImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSessionImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/TopicSubscriberImpl.java PRE-CREATION 
>   hedwig-client-jms/src/main/java/org/apache/hedwig/jms/spi/package-info.html PRE-CREATION 
>   hedwig-client-jms/src/main/protobuf/JmsHeader.proto PRE-CREATION 
>   hedwig-client-jms/src/main/resources/log4j.properties PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/AutoFailTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/CombinationTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConnectionCleanupTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ConsumerReceiveWithTimeoutTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/ExpiryHogTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSDurableTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSIndividualAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JMSUsecaseTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsAutoAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsBenchmark.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsClientAckTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConnectionStartStopTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsConsumerResetActiveListenerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsCreateConsumerInOnMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsDurableTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsMultipleClientsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRedeliveredTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsRollbackRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendReceiveWithMessageExpirationTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsSendWithAsyncCallbackTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicCompositeSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveSubscriberTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendReceiveWithTwoConnectionsWithJMXTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicSendSameMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTopicTransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/JmsTransactionTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/LoadTestBurnIn.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/MessageListenerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/RedeliveryPolicyTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/TimeStampTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/demo/SimpleProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadClient.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadController.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/load/LoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/ConnectionChurnTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/InactiveDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NetworkedSyncTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/NumberOfDestinationsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfProducer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/PerfRate.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleDurableTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNetworkTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleNonPersistentTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SimpleTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumer.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/perf/SlowDurableConsumerTopicTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsResourceProvider.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsSendReceiveTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsAndByteSelectorTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/JmsTopicSendReceiveWithTwoConnectionsTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/test/rollback/DelegatingTransactionalMessageListener.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSentMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ChangeSessionDeliveryModeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositeConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/CompositePublishTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ConcurrentProducerDurableConsumerTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DiscriminatingConsumerLoadTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DispatchMultipleConsumersTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableConsumerCloseAndReconnectTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubProcessTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubSelectorDelayTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/DurableSubscriptionHangTestCase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/MyObject.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/NonBlockingConsumerRedeliveryTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ObjectMessageNotSerializableTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/ProducerConsumerTestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnDurableTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/PublishOnTopicConsumedMessageTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/SubscribeClosePublishThenConsumeTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TestSupport.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TopicRedeliverTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionRollbackOrderTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/usecases/TransactionTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ConsumerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/DefaultTestAppender.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/IdGenerator.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/MessageIdList.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/ProducerThread.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/SimplePojo.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/activemq/util/Wait.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/JmsTestBase.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/BasicJMSTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/BasicSelectorGrammarTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorParserTest.java PRE-CREATION 
>   hedwig-client-jms/src/test/java/org/apache/hedwig/jms/selector/activemq/SelectorTest.java PRE-CREATION 
> 
> Diff: https://reviews.apache.org/r/6277/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Mridul
> 
>