frankjkelly commented on issue #16249:
URL: https://github.com/apache/pulsar/issues/16249#issuecomment-1396150858

   @martijngonlag Sorry I took so long to get back to you.
   
   The problem then becomes our code is littered with the following since some 
of the exceptions are not retryable and others are. And then we have to catch 
this further up and (using Spring) do the retries. It's an awful lot of 
boilerplate and particularly problematic for customers like us that create and 
delete a lot of topics. Especially with ZK being such a non-performant beast 
(and involved on the create/delete topic flow).
   
   ```
       private void createTopic(final URI topic) throws 
StreamManagerAdminException {
           try {
               val start = System.currentTimeMillis();
               pulsarAdmin.topics().createNonPartitionedTopic(topic.toString());
               val durationMs = System.currentTimeMillis() - start;
               recordDurationMetric("createTopic", durationMs);
           } catch (final PulsarAdminException e) {
               castAndRethrowException(e);
           }
       }
   
   
       private void castAndRethrowException(final PulsarAdminException e) 
throws StreamManagerAdminException {
           //Need to be able to distinguish between exceptions to be able to 
know which are retryable or not
           // However we do not want to expose Pulsar Internals beyond this 
layer
           if (e.getStatusCode() == 503) {
               throw new StreamManagerServiceUnavailableException(e);
           } else if (didPulsarAdminExhaustRetries(e)) {
               throw new StreamManagerRetryException(e);
           } else {
               throw new StreamManagerAdminException(e);
           }
       }
   ```
   


-- 
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.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to