testcontainers / testcontainers/testcontainers-java

MSSQL Server logs Prelogin Warning as part of wait strategy implementation

Aperta
#3,079 21 commenti 8 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
Java
Stelle
8.7k
Fork
1.9k
Merge medio
2g 17h
PR unite (30g)
9

Descrizione

i get prelogin warning messages after container boot, but it eventually stops and my sql import script runs just fine.
Afterwards the rest of my test runs perfectly, i'd just like to know how i could wait for something or improve this behaviour in anyway.

Aug 06, 2020 9:17:30 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: e4e44c35-9473-4c70-ab46-24f526599b5c Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:30 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: 808607de-dc0c-45b4-bbde-c03e310426d8 Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:31 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: 6b866882-e0c2-4a93-82d7-5261dc061492 Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:31 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: d85f4d62-45b0-4b40-b601-a24a2bb3f48e Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:32 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: 01370df2-2393-4888-8e98-6b2cd8a335e0 Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:33 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: c57ee0b6-b86c-4a77-a82c-d72e82072595 Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read
Aug 06, 2020 9:17:34 AM com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin
WARNING: ConnectionID:1 ClientConnectionId: 374d4277-fcd2-4684-a080-ba2c20b91ee7 Prelogin error: host localhost port 32787 Unexpected end of prelogin response after 0 bytes read

This is my extended MssqlContainer, i've tried adding a line to wait for a specific log line but it doesn't seem to make any difference.

public class MyMSSQLContainer extends MSSQLServerContainer<MyMSSQLContainer> {
	private static final String IMAGE_VERSION = "mcr.microsoft.com/mssql/server:2017-CU12";
	private static MyMSSQLContainer container;

	private MyMSSQLContainer() {
		super(IMAGE_VERSION);
	}

	public static MyMSSQLContainer getInstance() {
		if (container == null) {
			container = new MyMSSQLContainer().waitingFor(Wait.forLogMessage("*SQL Server is now ready for client connections*", 1));
		}
		return container;
	}

	@Override
	public void start() {
		super.start();
	}

	@Override
	public void stop() {
		//do nothing, JVM handles shut down
	}
}

This is my base test class where i init the container and run the schema and data init script..

public abstract class AbstractApiTest {
	//for ci testing: https://www.testcontainers.org/supported_docker_environment/continuous_integration/bitbucket_pipelines/
	public static MSSQLServerContainer<MyMSSQLContainer> mssqlServerContainer = MyMSSQLContainer.getInstance();

	@Autowired
	MockMvc mockMvc;

	@Autowired
	ObjectMapper objectMapper;

	static {
		mssqlServerContainer.start();
		ScriptUtils.runInitScript(new JdbcDatabaseDelegate(mssqlServerContainer, ""), "setup.sql");
	}

	static class Initializer implements ApplicationContextInitializer<ConfigurableApplicationContext> {

		public void initialize(ConfigurableApplicationContext configurableApplicationContext) {
			TestPropertyValues
				.of(
					"spring.datasource.url=" + mssqlServerContainer.getJdbcUrl(),
					"spring.datasource.username=" + mssqlServerContainer.getUsername(),
					"spring.datasource.password=" + mssqlServerContainer.getPassword()
				)
				.applyTo(configurableApplicationContext.getEnvironment());
		}
	}
}

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Start with MyMSSQLContainer.getInstance(), AbstractApiTest's static initialization, and the Wait.forLogMessage call shown in the report. Reproduce the container startup and schema initialization sequence, then determine whether the wait strategy can prevent the transient Prelogin warnings; completion should include a verified startup behavior and a regression test or documented limitation.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, java
Ambito
database, testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Da chiarire
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.