This forum has been archived. Please start a new discussion on GitHub.

TopicManager::retrieveAll and Ice.MessageSizeMax


I am using IceStorm happily. In my application i always call TopicManager::retrieveAll when creating multiple topics to reduce the network traffics. But as my topics keep growing I found the TopicManager::retrieveAll will throw ::Ice::MemoryLimitException with below message(I am already set Ice.MessageSizeMax=5120):

protocol error: memory limit exceeded:
requested 5250534 bytes, maximum allowed is 5242880 bytes (see Ice.MessageSizeMax)

What is the best practice to create large amount of topics and when there are already lots of topic created in Storm?



  • benoit
    benoit Rennes, France


    Sounds like you are creating many topics. Why do you use retrieveAll here? Given that you have many topics, I would avoid using retrieveAll which is not very scalable. Can't you just call TopicManager.create to create the topics? It's not clear to me why using retrieveAll would reduce network traffic with your application. Can you provide more details on your design?


  • I use retrieveAll bcos my application may create thousands of topics at one shoot, but those topics could be already created. So it use retrieveAll and check locally which topics need to create.