Skip to content

Commit 3b7830b

Browse files
committed
Allow to start daemon database container
1 parent 1ae1831 commit 3b7830b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

modules/jdbc/src/main/java/org/testcontainers/jdbc/ContainerDatabaseDriver.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
public class ContainerDatabaseDriver implements Driver {
3838

3939
private static final Pattern URL_MATCHING_PATTERN = Pattern.compile("jdbc:tc:([a-z]+)(:([^:]+))?://[^\\?]+(\\?.*)?");
40+
private static final Pattern DAEMON_MATCHING_PATTERN = Pattern.compile(".*([\\?&]?)TC_DAEMON=([^\\?&]+).*");
4041
private static final Pattern INITSCRIPT_MATCHING_PATTERN = Pattern.compile(".*([\\?&]?)TC_INITSCRIPT=([^\\?&]+).*");
4142
private static final Pattern INITFUNCTION_MATCHING_PATTERN = Pattern.compile(".*([\\?&]?)TC_INITFUNCTION=" +
4243
"((\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*\\.)*\\p{javaJavaIdentifierStart}\\p{javaJavaIdentifierPart}*)" +
@@ -186,6 +187,9 @@ private Map<String, String> getContainerParameters(String url) {
186187
* @return the connection, wrapped
187188
*/
188189
private Connection wrapConnection(final Connection connection, final JdbcDatabaseContainer container, final String url) {
190+
final Matcher matcher = DAEMON_MATCHING_PATTERN.matcher(url);
191+
final boolean isDaemon = matcher.matches() ? Boolean.parseBoolean(matcher.group(2)) : false;
192+
189193
Set<Connection> connections = containerConnections.get(container.getContainerId());
190194

191195
if (connections == null) {
@@ -199,7 +203,7 @@ private Connection wrapConnection(final Connection connection, final JdbcDatabas
199203

200204
return new ConnectionWrapper(connection, () -> {
201205
finalConnections.remove(connection);
202-
if (finalConnections.isEmpty()) {
206+
if (!isDaemon && finalConnections.isEmpty()) {
203207
container.stop();
204208
jdbcUrlContainerCache.remove(url);
205209
}

0 commit comments

Comments
 (0)