You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by GitBox <gi...@apache.org> on 2020/05/29 20:01:52 UTC

[GitHub] [pulsar] merlimat opened a new pull request #7102: Avoid race while mocking compactor

merlimat opened a new pull request #7102:
URL: https://github.com/apache/pulsar/pull/7102


   ### Motivation
   
   There seems to be a race when mocking the compactor in
   MockedPulsarServiceBaseTest which yields errors like:
   ```
   Caused by: java.lang.ClassCastException: org.apache.pulsar.compaction.TwoPhaseCompactor$MockitoMock$1141048386 cannot be cast to org.apache.pulsar.broker.service.BrokerService
   ```
   
   This obviously causes tests to fail in strange and surprising
   ways. I've not been able to reproduce, but the issue seems to be with
   how we mock the compactor.
   
   We don't want to have to construct the whole compactor as we just want
   to spy on it, so we get the current compactor, wrap it in spy and tell
   the PulsarService instance to return it when getCompactor is called.
   
   However, we are doing this after we have already called
   PulsarService#start(). So there are threads already using the mock
   structures. The mock structures themselves are not thread safe, so
   modifying them while they are in use, is not a good idea.
   
   The fix is to finish mocking before invoking #start(). Do do this,
   I've broken out the Compactor construction method in PulsarService, so
   that alone can be mocked to wrap the object in a spy.
   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [pulsar] merlimat merged pull request #7102: Avoid race while mocking compactor

Posted by GitBox <gi...@apache.org>.
merlimat merged pull request #7102:
URL: https://github.com/apache/pulsar/pull/7102


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org