Skip to content

[Bug]: Azure Servicebus Emulator breaks on Docker Engine v29 #1575

Description

@KSlingerland

Testcontainers version

4.8.1

Using the latest Testcontainers version?

Yes

Host OS

Debian GNU/Linux 12 (bookworm)

Host arch

ARM64

.NET version

10.0.100

Docker version

Docker version 29.0.0, build 3d4129b

Docker info

Unable to provide at the time, will update

What happened?

Our build environment updated to DockerEngine v29.0 this caused the ServicebusEmulator to be unable to connect to the Mssql Database and failed the healthcheck

Localy this isn’t observed as docker-desktop currently only ships with engine version 28.5.2

Relevant log output

Starting test execution, please wait...
15:48:42 [DBG] A total of 1 test files matched the specified pattern.
...
15:48:44 [DBG]   Host: unix:///var/run/docker.sock
15:48:44 [DBG]   Server Version: 29.0.0
15:48:44 [DBG]   Kernel Version: 6.1.0-41-amd64
15:48:44 [DBG]   API Version: 1.52
15:48:44 [DBG]   Operating System: Debian GNU/Linux 12 (bookworm)
15:48:44 [DBG]   Total Memory: 251.75 GB
15:48:44 [DBG] [testcontainers.org 00:00:00.29] Docker network 85038f8c61f8 created
15:48:44 [DBG] [testcontainers.org 00:00:00.36] Docker container fef83b638b9a created
15:48:44 [DBG] [testcontainers.org 00:00:00.42] Start Docker container fef83b638b9a
15:48:44 [DBG] [testcontainers.org 00:00:00.79] Wait for Docker container fef83b638b9a to complete readiness checks
15:48:44 [DBG] [testcontainers.org 00:00:00.79] Docker container fef83b638b9a ready
15:48:44 [DBG] [testcontainers.org 00:00:00.81] Docker container fc5391412ea0 created
15:48:44 [DBG] [testcontainers.org 00:00:00.81] Docker container 099e5250f201 created
15:48:44 [DBG] [testcontainers.org 00:00:00.82] Attach DotNet.Testcontainers.Configurations.RedirectStdoutAndStderrToStream at Docker container fc5391412ea0
15:48:44 [DBG] [testcontainers.org 00:00:00.82] Start Docker container 099e5250f201
15:48:44 [DBG] [testcontainers.org 00:00:00.84] Start Docker container fc5391412ea0
15:48:45 [DBG] [testcontainers.org 00:00:01.02] Wait for Docker container fc5391412ea0 to complete readiness checks
15:48:45 [DBG] SQL Server 2022 will run as non-root by default.
15:48:45 [DBG] This container is running as user mssql.
15:48:45 [DBG] To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
15:48:45 [DBG] [testcontainers.org 00:00:01.03] Execute "/bin/sh -c find /opt/mssql-tools*/bin/sqlcmd -type f -print -quit" at Docker container fc5391412ea0
15:48:45 [DBG] [testcontainers.org 00:00:01.05] Wait for Docker container 099e5250f201 to complete readiness checks
15:48:45 [DBG] [testcontainers.org 00:00:01.05] Execute "pg_isready --host localhost --dbname postgres --username postgres" at Docker container 099e5250f201
15:48:45 [DBG] [testcontainers.org 00:00:01.14] Execute "/opt/mssql-tools18/bin/sqlcmd -C -Q SELECT 1;" at Docker container fc5391412ea0
15:48:46 [DBG] [testcontainers.org 00:00:02.18] Execute "pg_isready --host localhost --dbname postgres --username postgres" at Docker container 099e5250f201
15:48:46 [DBG] [testcontainers.org 00:00:02.35] Docker container 099e5250f201 ready
...
15:48:52 [DBG] 2025-11-13 14:48:52.41 spid59s     Server is listening on [ 'any' <ipv6> 1433] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.41 spid59s     Server is listening on [ 'any' <ipv4> 1433] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.42 Server      Server is listening on [ ::1 <ipv6> 1434] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.42 Server      Server is listening on [ 127.0.0.1 <ipv4> 1434] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.42 Server      Dedicated admin connection support was established for listening locally on port 1434.
15:48:52 [DBG] 2025-11-13 14:48:52.43 spid59s     Server is listening on [ ::1 <ipv6> 1431] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.43 spid59s     Server is listening on [ 127.0.0.1 <ipv4> 1431] accept sockets 1.
15:48:52 [DBG] 2025-11-13 14:48:52.43 spid59s     Recovery is complete. This is an informational message only. No user action is required.
15:48:52 [DBG] 2025-11-13 14:48:52.44 spid59s     SQL Server is now ready for client connections. This is an informational message; no user action is required.
15:48:52 [DBG] 2025-11-13 14:48:52.48 spid66s     The default language (LCID 0) has been set for engine and full-text services.
15:48:52 [DBG] [testcontainers.org 00:00:08.74] Docker container fc5391412ea0 ready
...

15:49:08 [DBG]    at System.Net.Dns.GetHostAddresses(String hostNameOrAddress, AddressFamily family)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SNI.SNITCPHandle.GetHostAddressesSortedByPreference(String serverName, SqlConnectionIPAddressPreference ipPreference)+MoveNext()
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SNI.SNITCPHandle.Connect(String serverName, Int32 port, TimeoutTimer timeout, SqlConnectionIPAddressPreference ipPreference, String cachedFQDN, SQLDNSInfo& pendingDNSInfo)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SNI.SNITCPHandle..ctor(String serverName, Int32 port, TimeoutTimer timeout, Boolean parallel, SqlConnectionIPAddressPreference ipPreference, String cachedFQDN, SQLDNSInfo& pendingDNSInfo, Boolean tlsFirst, String hostNameInCertificate, String serverCertificateFilename)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, SqlCommand command, Boolean callerHasConnectionLock, Boolean asyncClose)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, TimeoutTimer timeout, SqlConnectionString connectionOptions, Boolean withFailover)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, TimeoutTimer timeout, Boolean withFailover)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, Func`3 accessTokenCallback)
15:49:08 [DBG]    at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
15:49:08 [DBG]    at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
15:49:08 [DBG]    at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
15:49:08 [DBG]    at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
15:49:08 [DBG]    at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
15:49:08 [DBG]    at Microsoft.Data.ProviderBase.DbConnectionPool.WaitForPendingOpen()
15:49:08 [DBG] --- End of stack trace from previous location ---
15:49:08 [DBG]    at HealthChecks.SqlServer.SqlServerHealthCheck.CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken) in /_/src/HealthChecks.SqlServer/SqlServerHealthCheck.cs:line 28
15:49:08 [DBG] ClientConnectionId:00000000-0000-0000-0000-000000000000
15:49:08 [DBG] fail: EmulatorHealthCheckHelper[0]
15:49:08 [DBG]       Retry 1 encountered an exception: SQL DB Unhealthly.. Waiting 00:00:15 before next retry.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions