Skip to content

Commit 061c271

Browse files
committed
Merge branch 'develop' of https://github.com/bbottema/simple-java-mail into develop
2 parents 8e3f4ae + 6a28882 commit 061c271

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

modules/simple-java-mail/src/main/java/org/simplejavamail/mailer/internal/util/TransportRunner.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package org.simplejavamail.mailer.internal.util;
22

33
import org.simplejavamail.api.internal.batchsupport.LifecycleDelegatingTransport;
4+
import org.simplejavamail.internal.modules.BatchModule;
45
import org.simplejavamail.internal.modules.ModuleLoader;
56
import org.slf4j.Logger;
67

78
import org.jetbrains.annotations.NotNull;
8-
import org.jetbrains.annotations.Nullable;
9+
910
import javax.mail.Address;
1011
import javax.mail.MessagingException;
1112
import javax.mail.Session;
@@ -53,14 +54,7 @@ public void run(final Transport transport) {
5354
private static void runOnSessionTransport(@NotNull UUID clusterKey, Session session, final boolean stickySession, TransportRunnable runnable)
5455
throws MessagingException {
5556
if (ModuleLoader.batchModuleAvailable()) {
56-
LifecycleDelegatingTransport delegatingTransport = ModuleLoader.loadBatchModule().acquireTransport(clusterKey, session, stickySession);
57-
try {
58-
runnable.run(delegatingTransport.getTransport());
59-
} catch (final MessagingException messagingException) {
60-
delegatingTransport.signalTransportFailed();
61-
throw messagingException;
62-
}
63-
delegatingTransport.signalTransportUsed();
57+
sendUsingConnectionPool(ModuleLoader.loadBatchModule(), clusterKey, session, stickySession, runnable);
6458
} else {
6559
try (Transport transport = session.getTransport()) {
6660
transport.connect();
@@ -71,6 +65,18 @@ private static void runOnSessionTransport(@NotNull UUID clusterKey, Session sess
7165
}
7266
}
7367

68+
private static void sendUsingConnectionPool(@NotNull BatchModule batchModule, @NotNull UUID clusterKey, Session session, boolean stickySession, TransportRunnable runnable) throws MessagingException {
69+
LifecycleDelegatingTransport delegatingTransport = batchModule.acquireTransport(clusterKey, session, stickySession);
70+
try {
71+
runnable.run(delegatingTransport.getTransport());
72+
} catch (final Throwable t) {
73+
// always make sure claimed resources are released
74+
delegatingTransport.signalTransportFailed();
75+
throw t;
76+
}
77+
delegatingTransport.signalTransportUsed();
78+
}
79+
7480
public interface TransportRunnable {
7581
void run(Transport transport)
7682
throws MessagingException;

0 commit comments

Comments
 (0)