Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error "Wait for message .... in logs for container" happens sometimes but not always #247

Open
devedse opened this issue Mar 15, 2022 · 8 comments
Assignees
Labels
Milestone

Comments

@devedse
Copy link
Contributor

devedse commented Mar 15, 2022

I'm currently writing integration tests for my project. But what I'm running into is that these sometimes fail.

The error that pops up is that it can't find the configured log line in the containers messages.

My configuration:

_dockerContainerPosgres = new Builder()
    .UseContainer()
    .UseImage("postgres:14.2-alpine")
    .ExposePort(0, 5432)
    .WithEnvironment("POSTGRES_PASSWORD=password")
    .WaitForPort("5432/tcp", TimeSpan.FromSeconds(30), "127.0.0.1")
    .WaitForMessageInLog("database system is ready to accept connections", TimeSpan.FromSeconds(30))
    .WaitForProcess("postgres")                
    .Build()
    .Start();

I've been debugging this problem for the last few hours now and have basically copied the "WaitForMessageInLogs" method in my own source code so that I could debug what's going on.

The problem seems to be that this line seems to return an empty list of strings sometimes:

var logs = service.Logs().ReadToEnd((int)millisTimeout);

I added some additional logging information so that I could figure out what's going on: (Logging in Xunit is stupidly hard so I simply expanded the exception message):

var logs = service.Logs().ReadToEnd((int)millisTimeout);
var match = logs.FirstOrDefault(stringToCheck => stringToCheck.Contains(message));

if (match != null)
{
    mre.Set();
}

if (stopwatch.ElapsedMilliseconds > millisTimeout)
{
    var config = service.GetConfiguration(true);

    var configData = $"{Environment.NewLine}Name:{config.Name}{Environment.NewLine}";
    configData += $"State:{config.State.Status}{Environment.NewLine}";
    configData += $"Restartcount:{config.RestartCount}{Environment.NewLine}";

    var exceptionString = $"Wait for message '{message}' in logs for container {service.Id}{Environment.NewLine}{Environment.NewLine}Actual logs:{Environment.NewLine}{string.Join(Environment.NewLine, logs)}{Environment.NewLine}Config:{Environment.NewLine}{configData}";
    Console.WriteLine(exceptionString);
    Beepje();
    Thread.Sleep(100000);

    exception = new FluentDockerException(exceptionString);
    mre.Set();
}

This showed the following output:

[xUnit.net 00:02:36.11]     Api.Tests.ResourceActionEventsAggregation.ResourceActionAggregationUpsertTest.TestMultiThreadedUpsertPostgres [FAIL]
[xUnit.net 00:02:36.11]       Ductus.FluentDocker.Common.FluentDockerException : Wait for message 'database system is ready to accept connections' in logs for container a205a48efea151bf616a5e39e3a9a73345e1ae73534639e4f7223158328faac4
[xUnit.net 00:02:36.11]
[xUnit.net 00:02:36.11]       Actual logs:
[xUnit.net 00:02:36.11]
[xUnit.net 00:02:36.11]       Config:
[xUnit.net 00:02:36.11]
[xUnit.net 00:02:36.11]       Name:intelligent_shannon
[xUnit.net 00:02:36.11]       State:running
[xUnit.net 00:02:36.11]       Restartcount:0
[xUnit.net 00:02:36.11]
[xUnit.net 00:02:36.11]       Stack Trace:
[xUnit.net 00:02:36.11]         C:\api\src\Api.Tests\TestHelpers\PostgresDockerDbProvider.cs(142,0): at Api.Tests.TestHelpers.PostgresDockerDbProvider`1.WaitForMessageInLogsWithExtraLogging(IContainerService service, String message, Int64 millisTimeout)

As you can see the Actual logs field seems to be empty.

Again because I simply couldn't get Xunit to print Console messages I added the Beepje(); method to start beeping when the exception occurred (😄) so that I knew when something was going wrong.
After that I immediately did a docker log .... on all running containers and by some quick typing was able to grab the docker container logs before the container exited. Here's the logs:

CONTAINER ID   IMAGE                  COMMAND                  CREATED              STATUS          PORTS                                                                     NAMES
3871fb77109c   postgres:14.2-alpine   "docker-entrypoint.s…"   48 seconds ago       Up 25 seconds   0.0.0.0:49443->5432/tcp                                                   objective_davinci
a205a48efea1   postgres:14.2-alpine   "docker-entrypoint.s…"   59 seconds ago       Up 52 seconds   0.0.0.0:49442->5432/tcp                                                   intelligent_shannon
79f3138f6bf3   postgres:14.2-alpine   "docker-entrypoint.s…"   59 seconds ago       Up 53 seconds   0.0.0.0:49441->5432/tcp                                                   frosty_lehmann
a0e22f2050e2   postgres:14.2-alpine   "docker-entrypoint.s…"   About a minute ago   Up 59 seconds   0.0.0.0:49438->5432/tcp                                                   charming_hermann
bdbc2b073439   rabbitmq:3-alpine      "docker-entrypoint.s…"   About a minute ago   Up 59 seconds   4369/tcp, 5671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:49439->5672/tcp   adoring_mendeleev
PS C:\Users\*******> docker logs a205
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.utf8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

fixing permissions on existing directory /var/lib/postgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
running bootstrap script ... ok
sh: locale: not found
2022-03-15 15:46:48.831 UTC [31] WARNING:  no usable system locales were found
performing post-bootstrap initialization ... ok
initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.
syncing data to disk ... ok


Success. You can now start the database server using:

    pg_ctl -D /var/lib/postgresql/data -l logfile start

waiting for server to start....2022-03-15 15:46:56.905 UTC [37] LOG:  starting PostgreSQL 14.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027, 64-bit
2022-03-15 15:46:56.921 UTC [37] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-03-15 15:46:57.004 UTC [38] LOG:  database system was shut down at 2022-03-15 15:46:50 UTC
2022-03-15 15:46:57.038 UTC [37] LOG:  database system is ready to accept connections
 done
server started

/usr/local/bin/docker-entrypoint.sh: ignoring /docker-entrypoint-initdb.d/*

waiting for server to shut down...2022-03-15 15:46:57.166 UTC [37] LOG:  received fast shutdown request
.2022-03-15 15:46:57.199 UTC [37] LOG:  aborting any active transactions
2022-03-15 15:46:57.202 UTC [37] LOG:  background worker "logical replication launcher" (PID 44) exited with exit code 1
2022-03-15 15:46:57.206 UTC [39] LOG:  shutting down
2022-03-15 15:46:57.492 UTC [37] LOG:  database system is shut down
 done
server stopped

PostgreSQL init process complete; ready for start up.

2022-03-15 15:46:57.760 UTC [1] LOG:  starting PostgreSQL 14.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 10.3.1_git20211027) 10.3.1 20211027, 64-bit
2022-03-15 15:46:57.760 UTC [1] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-03-15 15:46:57.760 UTC [1] LOG:  listening on IPv6 address "::", port 5432
2022-03-15 15:46:57.836 UTC [1] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-03-15 15:46:57.935 UTC [49] LOG:  database system was shut down at 2022-03-15 15:46:57 UTC
2022-03-15 15:46:58.047 UTC [1] LOG:  database system is ready to accept connections

As you can see we do in fact have logs including the message that the database system is ready to accept connections.

I don't understand why but it seems that sometimes the logs aren't being streamed correctly into FluentDocker. It could possibly have something to do with running multiple containers in parallel but I'm honestly lost.

@devedse devedse changed the title Error "Wait for message .... in logs for container" Error "Wait for message .... in logs for container" happens sometimes but not always Mar 15, 2022
@devedse
Copy link
Contributor Author

devedse commented Mar 15, 2022

I managed to reproduce the issue with the following piece of code:

using Ductus.FluentDocker.Builders;

namespace FluentDockerSpammer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var parallelOptions = new ParallelOptions()
            {
                MaxDegreeOfParallelism = 20
            };

            Parallel.For(0, 20, parallelOptions, (i) =>
            {
                Console.WriteLine($"Starting container: {i}");
                using (var dockerContainerPosgres = new Builder()
                   .UseContainer()
                   .UseImage("postgres:14.2-alpine")
                   .ExposePort(0, 5432)
                   .WithEnvironment("POSTGRES_PASSWORD=password")
                   .WaitForPort("5432/tcp", TimeSpan.FromSeconds(30), "127.0.0.1")
                   .WaitForMessageInLog("database system is ready to accept connections", TimeSpan.FromSeconds(150))
                   .WaitForProcess("postgres")
                   .KeepRunning()
                   .KeepContainer()
                   .Build()
                   .Start())
                {
                    Console.WriteLine($"Starting container: {i}, Status: {dockerContainerPosgres.GetConfiguration(true).State.Status}");
                }
            });
        }
    }
}

When running docker ps -a while this is running I see this:

CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS                          PORTS                     NAMES
ecde6d090f03   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49203->5432/tcp   sweet_poitras
6254f2037858   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Exited (0) About a minute ago                             laughing_poitras
fb900188d3b0   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49188->5432/tcp   fervent_jang
9cb864631a95   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up About a minute               0.0.0.0:49211->5432/tcp   wizardly_boyd
5d75ad51b941   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49206->5432/tcp   adoring_kirch
a617295ad239   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49194->5432/tcp   youthful_leavitt
a8ff01530993   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49185->5432/tcp   inspiring_galois
0c29e7869e49   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49187->5432/tcp   sweet_tesla
f26ea304970e   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49208->5432/tcp   ecstatic_kilby
2b49d8d692bc   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49202->5432/tcp   flamboyant_pascal
3ba71c4b5264   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49189->5432/tcp   trusting_mcnulty
8816c3d6d204   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49192->5432/tcp   agitated_wilbur
98af2fdd69f0   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49209->5432/tcp   intelligent_hermann
2d097c3e5014   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49197->5432/tcp   stoic_mcclintock
13064518d10b   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49207->5432/tcp   dreamy_shamir
1f8b41fa16da   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49200->5432/tcp   reverent_neumann
fd25270951f1   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Created                                                   serene_jennings
f2271a4e3f49   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49204->5432/tcp   fervent_jemison
720dda0daa35   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49196->5432/tcp   kind_hertz
08ee29c1ea19   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49201->5432/tcp   fervent_euler
cda53fc5230a   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Created                                                   gifted_keldysh
964a86e929b5   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up 3 minutes                    0.0.0.0:49205->5432/tcp   festive_nash
591286cd1c67   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Up About a minute               0.0.0.0:49210->5432/tcp   friendly_brattain
9274fc231b36   postgres:14.2-alpine   "docker-entrypoint.s…"   3 minutes ago   Created                                                   recursing_goldberg

And after a few minutes the C# application starts throwing errors:

Unhandled exception. System.AggregateException: One or more errors occurred. (Wait for message 'database system is ready to accept connections' in logs for container 8acbf6979316ebbeca8e5bb0b0f5bf11b4cb616ac5ab51af41abb93e8846bd40) (Wait for message 'database system is ready to accept connections' in logs for container 7be606d3be6e5b18b772475e35d06574040ecd35c262b17342ae2d4c868b2517) (Wait for message 'database system is ready to accept connections' in logs for container 71f75fb077f93a4e1c1a4173beb81b71908c4b0d019f415c9e4e104970b5a9c5) (Wait for message 'database system is ready to accept connections' in logs for container 99ccb47fb0bcf36e92d0698e1f7c7973367b0629f5c6920e41d32502ba77f6a8) (Wait for message 'database system is ready to accept connections' in logs for container 3ba71c4b5264d23018e4aaf448007c610e664317142cb75904b928aad494455b) (Wait for message 'database system is ready to accept connections' in logs for container 5d75ad51b941e81e03d4cbaa95d5034b9a03eb74eebaa2632500aebde0438f80) (Wait for message 'database system is ready to accept connections' in logs for container 0c29e7869e49a3a55223d0d8c5fc3b98c3ce198cbc5b999e6d13be3d804b7179) (Wait for message 'database system is ready to accept connections' in logs for container a8ff0153099319fa26380dba486bff6f5049bea03480e70943e52782f37e8c91) (Wait for message 'database system is ready to accept connections' in logs for container 8816c3d6d204b93150a1db93e55fc1a70e9669b9dbd33aa9864157e242ec7f21) (Wait for message 'database system is ready to accept connections' in logs for container e8e8e794ec6a15e7a1a3f0326478933776291ae77c9c20280cedc7cd2c29852b) (Wait for message 'database system is ready to accept connections' in logs for container 73083fb8592b3ed598343314f0430332ac6334497154c52b6099b27e51476533) (Wait for message 'database system is ready to accept connections' in logs for container 6254f2037858075082062320bb326d6ceb8ef0c5ebf8baf0878fa723cbcc8652) (Wait for message 'database system is ready to accept connections' in logs for container 2d097c3e50149a70171a276c4519f887d4ebd380355bcae75e51c191ea91d5ed) (Wait for message 'database system is ready to accept connections' in logs for container a617295ad239ba2f5274f7fe5bb6b91cbefc537d0caf096341f1b1fb2ec7b293) (Wait for message 'database system is ready to accept connections' in logs for container 720dda0daa35e627509fcbc9f7ceee3f76851dea8f3361f8e274756f7578a008) (Wait for message 'database system is ready to accept connections' in logs for container fb900188d3b0458161fbd76c917b9a188a9d4458a7646151693813f7beff73dc) (Wait for message 'database system is ready to accept connections' in logs for container 08ee29c1ea197d7c3006f3b849501763a11f377f0293f8fb0a183600200fe285)
 ---> Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 8acbf6979316ebbeca8e5bb0b0f5bf11b4cb616ac5ab51af41abb93e8846bd40
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
   at FluentDockerSpammer.Program.Main(String[] args) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 16
 ---> (Inner Exception #1) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 7be606d3be6e5b18b772475e35d06574040ecd35c262b17342ae2d4c868b2517
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #2) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 71f75fb077f93a4e1c1a4173beb81b71908c4b0d019f415c9e4e104970b5a9c5
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.set_State(ServiceRunningState value)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #3) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 99ccb47fb0bcf36e92d0698e1f7c7973367b0629f5c6920e41d32502ba77f6a8
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #4) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 3ba71c4b5264d23018e4aaf448007c610e664317142cb75904b928aad494455b
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #5) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 5d75ad51b941e81e03d4cbaa95d5034b9a03eb74eebaa2632500aebde0438f80
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #6) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 0c29e7869e49a3a55223d0d8c5fc3b98c3ce198cbc5b999e6d13be3d804b7179
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #7) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container a8ff0153099319fa26380dba486bff6f5049bea03480e70943e52782f37e8c91
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.set_State(ServiceRunningState value)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #8) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 8816c3d6d204b93150a1db93e55fc1a70e9669b9dbd33aa9864157e242ec7f21
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #9) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container e8e8e794ec6a15e7a1a3f0326478933776291ae77c9c20280cedc7cd2c29852b
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #10) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 73083fb8592b3ed598343314f0430332ac6334497154c52b6099b27e51476533
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #11) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 6254f2037858075082062320bb326d6ceb8ef0c5ebf8baf0878fa723cbcc8652
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #12) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 2d097c3e50149a70171a276c4519f887d4ebd380355bcae75e51c191ea91d5ed
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #13) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container a617295ad239ba2f5274f7fe5bb6b91cbefc537d0caf096341f1b1fb2ec7b293
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #14) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 720dda0daa35e627509fcbc9f7ceee3f76851dea8f3361f8e274756f7578a008
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #15) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container fb900188d3b0458161fbd76c917b9a188a9d4458a7646151693813f7beff73dc
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

 ---> (Inner Exception #16) Ductus.FluentDocker.Common.FluentDockerException: Wait for message 'database system is ready to accept connections' in logs for container 08ee29c1ea197d7c3006f3b849501763a11f377f0293f8fb0a183600200fe285
   at Ductus.FluentDocker.Services.Extensions.ContainerExtensions.WaitForMessageInLogs(IContainerService service, String message, Int64 millisTimeout)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<>c__DisplayClass74_5.<AddHooks>b__16(IService src)
   at Ductus.FluentDocker.Fd.DisposeOnException[T](Action`1 action, T service, String name)
   at Ductus.FluentDocker.Builders.ContainerBuilder.<AddHooks>b__74_5(IService service)
   at Ductus.FluentDocker.Services.Impl.ServiceHooks.Execute(IService service, ServiceRunningState state)
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Ductus.FluentDocker.Services.IService.Start()
   at Ductus.FluentDocker.Services.Impl.DockerContainerService.Start()
   at FluentDockerSpammer.Program.<>c.<Main>b__0_0(Int32 i) in C:\TheFolder\CsharpStuff\FluentDockerSpammer\FluentDockerSpammer\Program.cs:line 19
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

Here I mapped some of the ContainerId's from the C# Exceptions to the docker ps -a output:

image

@devedse
Copy link
Contributor Author

devedse commented Mar 15, 2022

Small additional questions, what's the easiest way to forward the docker logs to a Console.WriteLine output?

@mariotoffia
Copy link
Owner

Thanks for the nice digging you've done!! :) - I will also have a look at this during coming weekend.

What is the output in the console - it should be docker logs ...

Cheers,
Mario :)

@devedse
Copy link
Contributor Author

devedse commented Mar 21, 2022

@mariotoffia I see no other output in the console. (I run this from a normal console application):

image

@devedse
Copy link
Contributor Author

devedse commented Mar 24, 2022

@mariotoffia Hey, I don't want to push too much on this but I was wondering if you'd already managed to find some time to look at this issue :)?

@devedse
Copy link
Contributor Author

devedse commented Apr 3, 2022

@mariotoffia , I was wondering if you'd already had some time to look into this.

@mariotoffia
Copy link
Owner

@devedse Sorry, I haven't had the time to do this and not in a forseeable future - but I'll add it to my backlog.

@mariotoffia mariotoffia self-assigned this May 30, 2022
@mariotoffia mariotoffia added this to To do in FluentDocker via automation May 30, 2022
@mariotoffia mariotoffia added this to the 3.0.0-RELEASE milestone May 30, 2022
@ghost
Copy link

ghost commented Jun 7, 2022

ok, I just ran into this now.. sometimes WaitForLogMessage works and sometimes it does not, and checking the container logs reveals the expected message is there, and the timestamp shows that it is well before my timeout for the log to appear so it should have been fine. Until this is reliable, we will switch our integration tests back to just polling with a SQL statement for 30 seconds after starting the container... (spinning up a SQL server container in this instance)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
FluentDocker
  
To do
Development

No branches or pull requests

2 participants