[Bug]: UntilPortIsAvailable wait strategy takes exactly 1 minute before it succeeds every time, while the port is available much earlier

Testcontainers version
3.8.0
Using the latest Testcontainers version?
Yes
Host OS
Ubuntu 22.04
Host arch
x64
.NET version
8.0.300
Docker version
Client: Docker Engine - Community
 Version:           26.1.3
 API version:       1.45
 Go version:        go1.21.10
 Git commit:        b72abbb
 Built:             Thu May 16 08:33:29 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.3
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.10
  Git commit:       8e96db1
  Built:            Thu May 16 08:33:29 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.32
  GitCommit:        8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker info
Client: Docker Engine - Community
 Version:    26.1.3
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.0
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 19
  Running: 0
  Paused: 0
  Stopped: 19
 Images: 27
 Server Version: 26.1.3
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.5.0-35-generic
 Operating System: Ubuntu 22.04.4 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 20
 Total Memory: 31.01GiB
 Name: precise
 ID: 6XJP:NK2G:WJNA:LPES:SDKQ:MO4E:Y3D3:FRCL:I2UV:ERKJ:447N:P67Z
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  <IP_ADDRESS>/8
 Live Restore Enabled: false

What happened?
I am starting Cassandra NoSQL database using the following code in my tests:
_network = new NetworkBuilder()
    .WithName("cecochat")
    .Build();

_cassandra = new ContainerBuilder()
    .WithImage("cassandra:4.1.3")
    .WithName("cecochat-test-cassandra0")
    .WithHostname("cassandra0")
    .WithNetwork(_network)
    .WithPortBinding(hostPort: 9042, containerPort: 9042)
    .WithEnvironment(new Dictionary<string, string>
    {
        { "CASSANDRA_SEEDS", "cassandra0" },
        { "CASSANDRA_CLUSTER_NAME", "cecochat" },
        { "CASSANDRA_DC", "Europe" },
        { "CASSANDRA_RACK", "Rack0" },
        { "CASSANDRA_ENDPOINT_SNITCH", "GossipingPropertyFileSnitch" },
        { "CASSANDRA_NUM_TOKENS", "128" },
        { "HEAP_NEWSIZE", "128M" },
        { "MAX_HEAP_SIZE", "512M" }
    })
    .WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(9042))
    .Build();

await _cassandra.StartAsync();

It always takes around 58 seconds in order for StartAsync to complete. In the meantime the container has been started and port has been open almost immediately after the call. After I execute the above code I immediately test it using nc -vz -w 1 localhost 9042 which is part of this particular wait strategy implementation. The response is Connection to localhost (<IP_ADDRESS>) 9042 port [tcp/*] succeeded!. In the log output below you can see the log from testcontainers. It is stubbornly repeating the commands again and again without detecting that the nc command should actually succeed. I tried running my tests without the wait strategy but the first test fails since the port isn't really open yet.
Relevant log output
[testcontainers.org 00:00:00.06] Connected to Docker:
  Host: unix:///var/run/docker.sock
  Server Version: 26.1.3
  Kernel Version: 6.5.0-35-generic
  API Version: 1.45
  Operating System: Ubuntu 22.04.4 LTS
  Total Memory: 31.01 GB
[testcontainers.org 00:00:00.19] Docker network 1365c50b391f created
[testcontainers.org 00:00:00.25] Docker container a624b25be52f created
[testcontainers.org 00:00:00.27] Start Docker container a624b25be52f
[testcontainers.org 00:00:00.50] Wait for Docker container a624b25be52f to complete readiness checks
[testcontainers.org 00:00:00.50] Docker container a624b25be52f ready
[testcontainers.org 00:00:00.52] Docker container d0c42e1e9903 created
[testcontainers.org 00:00:00.52] Start Docker container d0c42e1e9903
[testcontainers.org 00:00:00.77] Wait for Docker container d0c42e1e9903 to complete readiness checks
[testcontainers.org 00:00:00.77] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:01.83] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:02.89] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:03.96] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:05.03] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:06.10] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:07.18] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:08.24] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:09.30] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:10.37] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:11.43] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:12.48] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:13.54] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:14.62] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:15.68] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:16.77] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:17.85] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:18.93] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:19.99] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:21.07] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:22.13] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:23.19] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:24.28] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:25.35] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:26.42] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:27.48] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:28.57] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:29.63] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:30.70] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:31.77] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:32.84] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:33.92] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:35.00] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:36.08] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:37.16] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:38.23] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:39.33] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:40.41] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:41.48] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:42.54] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:43.61] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:44.68] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:45.76] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:46.83] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:47.92] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:48.98] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:50.03] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:51.09] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:52.16] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:53.22] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:54.30] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:55.35] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:56.45] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:57.54] Execute "/bin/sh -c true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')" at Docker container d0c42e1e9903
[testcontainers.org 00:00:57.59] Docker container d0c42e1e9903 ready
[testcontainers.org 00:00:57.75] Delete Docker container d0c42e1e9903
[testcontainers.org 00:00:58.06] Delete Docker network 1365c50b391f

Additional information
No response

Thank you for sharing the issue. Could you please debug into the wait strategy and check the response information (stdout, stderr) in the ExecResult response? This should give us a better understanding of why it fails or does not succeed in the first couple of tries. Please be aware that, in general, it is not a good idea to rely on the port. Usually, ports are available before the actual service is running, which results in flakiness.

@HofmeisterAn thanks for your quick reply. I got the following output repeatedly. The file with the output is 738 lines long, so approximately around 367 times. I added new lines here and there in order to see it without horizontal scrollbars, but bear in mind this was a single line.
OCI runtime exec failed:
exec failed: unable to start container process:
exec: "true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042')":
stat true && (grep -i ':0*2352' /proc/net/tcp* || nc -vz -w 1 localhost 9042 || /bin/bash -c '</dev/tcp/localhost/9042'):
no such file or directory: unknown

I immediately test it using nc -vz -w 1 localhost 9042 which is part of this particular wait strategy implementation.

Ensuring I have not misunderstood anything, could you clarify where you ran nc? Was it inside the container or from your host? I briefly checked, and it seems nc is not available in the image (container):

/bin/sh: 1: nc: not found

If you ran it from your host (which I assume you did), then there is no issue. The host port that forwards the connection to the container is likely available much earlier than the port inside the container.
It takes approximately a minute until I see the following log message from the container:

Starting listening for CQL clients on /<IP_ADDRESS>:9042

This aligns with what you are observing. I would recommend using the log message wait strategy here or reviewing Java's implementation and aligning with their wait strategy.

@HofmeisterAn yep, you are correct about how I was running nc, since I also saw that it is not present in the image. I thought that if there is a port binding, then checking for the port would be delegated as well, but seems that it is not how it is working 🙂
Mainly I was expecting naively some timeout to play a role since things started working after 1 min. But the idea to sync my expectations with the Cassandra logs didn't occur to me.
I didn't know there is a Java implementation, so I am going to search for it and check it out in order to see if something can be borrowed. Thanks for your invaluable input and know-how about making stuff work with Testcontainers. From my part I think the issue should be closed for now.

@HofmeisterAn I investigated the Java implementation which executes a command against Cassandra. Then I applied a log message wait strategy, as advised, and a new strategy which executes a command against the database (simply checks for the existence of a Cassandra keyspace). Two strategies in succession.
This works fine locally, but when I run the code in Github Actions I get the Cassandra-specific NoHostAvailableException which is self-explanatory. I am using the container.Hostname from within the wait strategy, which based on the logs, resolves to <IP_ADDRESS>. Having read the documentation I thought it is not advisable to use such values. Is there any Github Actions-specific issues related to running containers? Is there a way to troubleshoot this? I couldn't find anything specific in the existing issues in this repo, but if I have missed something, could you let me know?
The code is in this file here: https://github.com/cvetomir-todorov/CecoChat/blob/test-chats-service/source/CecoChat.Chats.Testing/TestContainers.cs
The Github Actions workflow is here: https://github.com/cvetomir-todorov/CecoChat/actions/runs/9269353841

Having read the documentation I thought it is not advisable to use such values.

It is not recommended to use a constant or a fixed value like <IP_ADDRESS>. Depending on the container runtime and configuration, the host may differ. Testcontainers takes care of this by resolving the correct host. For GitHub, <IP_ADDRESS> is correct.

Is there any Github Actions-specific issues related to running containers?

No. All our tests run on GitHub. Many of my projects run on Azure DevOps, which basically uses the same agents.

Is there a way to troubleshoot this? I couldn't find anything specific in the existing issues in this repo, but if I have missed something, could you let me know?

Your wait strategy configuration looks incorrect. You are overriding the first one with the second. It should be the following configuration instead (chained):
.WithWaitStrategy(Wait.ForUnixContainer()
    .UntilMessageIsLogged("Starting listening for CQL clients on /<IP_ADDRESS>:9042")
    .UntilCassandraQueryExecuted(port, localDc))

Please consider a longer timeout as well, to ensure it is not just the slow agent. Starting the container on my beefy machine already takes a minute. The pipeline needs to pull the image too.
If it still fails after these adjustments, I would suggest adding a stopwatch to measure how long it takes and exporting the container logs before disposing the container (to ensure that Cassandra (the service) is really running):
var (stdout, stderr) = await _cassandra.GetLogsAsync();

Furthermore, consider using random host ports to avoid port clashes. You never know which services are running on the build agent (or other machines) and occupying ports in your range.

but still the error that I get consistently is tried [::1]:46021: SocketException 'Connection refused'

Connect via IPv4.

@HofmeisterAn not only that solved the issue, but it helped me see a flawed logic about the Cassandra client wrapped I had written. Now the test is finally green. Thanks!
As for the TC API allowing overwriting the wait strategy - isn't a defensive approach better? I mean telling the client code that overwriting it is not OK by throwing an exception for example?

I mean telling the client code that overwriting it is not OK by throwing an exception for example?

Do you mean throwing an exception when a wait strategy is already configured? TBH, I never thought about that, but I think it wouldn't work very well with our module approach. Testcontainers' modules are pre-configured following best practice configurations, which includes the wait strategy. There might be cases where developers want to override the default configuration for whatever reason. Maybe because they use a custom image that requires it - I am not sure 🤷♂.


Edited opening screen -

added terms that get lost with new css,
edited concluding screen,
Where are variable labels stored?
Will return to work on md files next week.

"Where are variable labels stored?" If you mean Issue labels, they are in HousingGuide-attachments.yml.
Before you change .md files, would you want to change .docx files first? The two should match, but .md is converted from .docx, as you probably know. I told Gordon last week that he will have one more chance to update his docx files after he is done with your reviews,  and I'll upload them then reconvert them to .md files, then use Scott's .css to change the styles in .md files.
If you are doing the output results revision instead of Gordon, I would recommend change the .docx source before change .md.


Add resource-level metadata to MongoDB

Add support for resource-level metadata to be saved in MongoDB.

@Castronova Currently resource level metadata gets saved to the catalog when a Hydroshare resource is registered using the resource url. Is this issue a different requirement?

@pkdash This ticket was created from one of our action items in the last meeting. It's entirely possible that I didn't capture the issue correctly, or that it's already been implemented. Perhaps @sblack-usu has some additional insight?

I don't see any additional discussion on this issue, and since resource level metadata can be saved to the catalog for all use cases we have implemented so far, I'm closing this issue.


loopline.py - set export directory -o

Add a -o option to makeffv1. This allows us export directly to an external backup drive, skipping one moveit.py step in the backup process

Actually I don't like adding argparse options to makeffv1 as until I know more, it makes it more difficult to run makeffv1 as a function in other scripts. So instead I should add a function to makeffv1 that can be altered by loopline.py via an argparse argument.

This is present in normalise.py, and makeffv1 will soon no longer be maintained..


Replace DBT_EXPERIMENTAL_MICROBATCH env var with behaviour flag

Prior to the 1.9 beta, we should:

Replace usage of env var DBT_EXPERIMENTAL_MICROBATCH with a project flag, require_builtin_microbatch_strategy which defaults to False (@graciegoheen approves the name :) )

Make changes to dbt-adapters:

this needs to use the project flag instead of os env var: https://github.com/dbt-labs/dbt-adapters/blob/b414668cd046ce9b68c03b68ca7fc94f190b4e99/dbt/adapters/base/impl.py#L1573
base test needs to use the new project flag instead of env var: https://github.com/dbt-labs/dbt-adapters/blob/b414668cd046ce9b68c03b68ca7fc94f190b[…]er/dbt/tests/adapter/incremental/test_incremental_microbatch.py
example: https://github.com/dbt-labs/dbt-core/pull/10799/files#diff-ac70d9689da91b61cf649606ebbc0cd875e46dfd8c3627dd8f8d124e08f60fd5R86-R93

Make changes to dbt-bigquery:

a couple additional tests have been added beyond the base test
the additional tests patch the os env var directly
https://github.com/dbt-labs/dbt-bigquery/blob/main/tests/functional/adapter/incremental/test_incremental_microbatch.py#L33
https://github.com/dbt-labs/dbt-bigquery/blob/main/tests/functional/adapter/incremental/test_incremental_microbatch.py#L48
they'll need to be updated to use the project_config_update fixture instead

dbt-postgres and dbt-snowflake use the base test only and don't need any manual updates

Opened a new issue in dbt-labs/docs.getdbt.com: https://github.com/dbt-labs/docs.getdbt.com/issues/6454


optionally configure service account impersonation

Note: this replaces https://github.com/open-telemetry/opentelemetry-collector-contrib/pull/10173 per a suggestion from @dashpole.
GCP supports authentication using short-lived credentials obtained by
"impersonating" a service account. This is useful for cross-project
access, for example: a service account in one project is trusted to
impersonate a service account in another project and export metrics on
its behalf. This patch adds support for service account impersonation
for metrics, logs, and traces.
See https://cloud.google.com/iam/docs/impersonating-service-accounts for
details.

/gcbrun

you can run make fieldalignment to fix the linter issue.  It might remove comments, so make sure to add any of those back in

/gcbrun

/gcbrun


Minor enhancements for the resource options button

Use the GuiTabMenuHl icon instead of GuiTabMenu, so that the button does not look disabled. Other similar buttons (e.g. the snap options button) also uses this icon.
Added tooltip for the button.

I didn't use this icon variant because it is brighter than normal icons. It always looks like it is hovered. Maybe a custom icon would fit here better.
I would also rephrase the tooltip, as the actions aren't necessarily related to the resource class (despite what the variable in code may suggest)

I didn't use this icon variant because it is brighter than normal icons. It always looks like it is hovered. Maybe a custom icon would fit here better.

I thought about that too. But after measurement, the brightest part of the three dots are the same E0E0E0 as other icons.
It's also used by the snap options button of 2D editor and the onion skinning options button of animation editor. The onion skinning options button uses GuiTabMenu for the disabled state, and GuiTabMenuHl for the normal state.

I would also rephrase the tooltip, as the actions aren't necessarily related to the resource class (despite what the variable in code may suggest)

What about "Extra options."?

Resolved conflicts after the SNAME refactoring.

Thanks!

Cherry-picked for 3.4.


Fixed #25462 -- Removed Model.unicode() in favor of @python_2_unicode_compatible.

…https://code.djangoproject.com/ticket/25462

I agree this is a good direction.

This LGTM.


test_auth contacts Pushbullet for testing

I guess this is a question more than an issue. I'd like to help out writing the tests but I'm still wrapping my head around writing tests in python to be honest.
Had a look at the test_auth.py that's already included. From what I have been reading it would seem better if we mocked the call instead of actually called a login to Pushbullet. I wrote some code which I think does the trick but I guess the question is, is this the proper way to mock it out? I notice there's no test_pushbullet yet, so I can't quite see how you would do it properly.
import pytest
import mock
import pushbullet

@mock.patch('pushbullet.Pushbullet._get_data')
class TestAuth(object):

    def test_auth_fail(self, mock__get_data):
        mock__get_data.side_effect = pushbullet.errors.InvalidKeyError()
        with pytest.raises(pushbullet.InvalidKeyError) as exinfo:
            pb = pushbullet.Pushbullet("faultykey")

    def test_auth_success(self, mock__get_data):
        mock__get_data.return_value = { "name" : "Pushbullet Tester" }
        pb = pushbullet.Pushbullet("validKey")
        assert pb.user_info["name"] == "Pushbullet Tester"

If this IS the way to do it and the above is valid, I'd love to see what else I can knock up. Though as I say, literally just getting started in this area!
Cheers,

I just started to look at the tests. I'm not sure that mocking is the right idea. The propose of the tests is to detect whether we broke something, as well as detect when Pushbullet break something. If Pushbullet ever change the API (which is not very likely, but still) we would like to find that out by running the tests.
P.S.
I just pushed 6c54610eea1fa14ff2cd6448776f1101e8c6a9eb which allows running the tests with your personal account.

Ok. So if my reading (of testing) is correct, you're wanting those to be integration tests then rather than unit tests? Not a problem then. I was looking to try some TDD, so I can keep these offline in that case. Thanks for replying!

That's my personal opinion, but I'm 1 collaborator out of 4. :smiley:
Also, thank you for your recent pull requests.

No problem! Just trying to improve my developing. Plus pushbullet is great :)


Changes made to get example demo to work

Certain components in react-native have changed.

Navigation component has been moved to NavigationExperimental.
In the project configuration compiling example.app in XCode, React needs to be added as a dependency.
I needed to change the React version to avoid this issue after the build takes place.
Build fails because the path of the build script is not ../node_modules/react-native/packager/react-native/-xcode.sh .../react-native/script/react-native-xcode.sh
Also a change not included in this PR is that I needed to delete a folder called third-party from the example/node_modules/react-native folder as pointed to the issue here...I don't know how to fix it within a PR.

Thanks!


Better Keyboard Shortcut support

Proposal: Better Keyboard Shortcut support

Summary

Although supportKeyboard allows for implementing handling of keyboard shortcuts on a React Native Windows app, it seems that the XAML platform has good support for handling keyboard shortcuts through UIElement's KeyboardAccelerators property. We could potentially use it to expose a KeyboardShortcut prop (and similarly an AccessKey prop) on a Touchable, or use XAML's commanding system to have React Native support implementing keyboard shortcuts directly. This would save each app from implementing their own shortcut handling system by using supportKeyboard.
Motivation

Keyboard shortcuts are important to expose so that people can efficiently traverse an app. We also find supporting shortcuts important for keyboard accessibility of the app. The React Native Windows platform has a way to implement keyboard shortcuts by using the supportKeyboard API, but using supportKeyboard for implementing keyboard shortcuts puts a lot of onus on the app developer to make their own keyboard shortcut handling system and to get it right. Each app developer would have to figure out the best place to listen for key events, how to determine when shortcuts were pressed, how to know if a command should be handled based on app state, and implement that system themselves. The platform could make this system easier to implement by removing the need to do those things, and would also encourage keyboard shortcut implementation if it's made a prop on a particular component.
Another point to consider is that supportKeyboard relies on PreviewKeyDown and PreviewKeyUp, which fires based on focus placement, while keyboard shortcuts tend to be global (i.e. if you press the right keys, the event fires regardless of where focus is), which is a difference in behavior of the systems. While it’s possible to make it look like shortcuts are global if by using supportKeyboard, the developer may have to take extra steps managing focus or building native modules and having to explore and consider several solutions to make it happen because supportKeyboard relies on focus. If we hooked into the platform’s system directly, we could avoid these issues and differences in model.
This change should be considered for Windows first, as Windows is the first React Native platform that is heavily keyboard-focused.
Basic example
For example it might look like:
<TouchableHighlight
…
keyboardShortcut={keys: ‘[‘Control’, ‘N’], isEnabled: this.props.newEventButtonEnabled}
onPress={this.props.onNewEventButtonPressed}
…
/>

If the keyboard shortcut is invoked, it could fire the onPress callback
Open Questions

Does it make sense to support keyboard shortcuts specifically given that supportKeyboard can be used to implement keyboard shortcuts?
How would we handle key differences on different endpoints?
Is UIElement's KeyboardAccelerators property the best API to use for implementing this on Windows?

We believe shortcut keys can be enabled through key events and will be providing a sample to show how that is accomplished.
We are punting on the below features for now:

AccessKey/KeyTips - UI affordances for what the shortcut key is
KeyboardAccelerator

Any chance that sample exists yet?
We're working on a new app that will ideally heavily embrace shortcuts, at this stage I'm guessing we'll need to write a native module?
For example, we don't expect the user to be focused on an element for this to work, but instead will react based on active window.


elpa: split outputs and enable parallel builds

Description of changes
Optimize the run time closure by using split output for libs, doc, man, dev.
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.11 Release Notes (or backporting 23.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 258191 run on x86_64-linux 1

4 packages built:

elpa
elpa.dev
elpa.doc
elpa.man


wip: support new mint endpoint

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


fix(worker): fix progress image for FLUX inpainting

Summary
Fix progress image when inpainting with FLUX
Related Issues / Discussions

QA Instructions

Merge Plan

Checklist

[ ] The PR has a short but descriptive title, suitable for a changelog
[ ] Tests added / updated (if applicable)
[ ] Documentation added / updated (if applicable)

tested the change, works.


Bloom att mask

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


Add Gemini 1.5 Pro Flash

wait

need to export flag model from the plugin index.ts

I can haz vertex too?


Diagnostic messages on hover

I need to the diagnostic messages by hovering them but right now it doesn't work well.

I've started to use navigator.lua which resolved this issue for me.


 I'll start by describing our ideal deployment strategy for SAM and then explain the current painpoints. Some of these painpoints are generally true, but most apparent when dealing with nested stacks. Having typed these out, it might make sense to split this into three issues although they are closely related: "No Build Hook painpoint" and "Nested Stack Packaging painpoint" and finally, the "No Archive Upload Endpoint painpoint"

Write the code for the lambda functions and write a build + zip command (but not execute it, yet).
Write the infrastructure SAM template.
run sam deploy with parameters pointing to the local template file. This command would execute step 1, zip up the SAM templates along with the zip files from step 1, and upload that final, singular artifact to a cloudformation endpoint that would extract it, interpret the local template references, and start the cloudformation process.

Ideally, Step 3 would have a hook that we could (or could choose not to) supply our build command from step 1 with. Similarly, an "sam package" command would also have that build step. Extra features like a hash on builds to determine if SAM can skip the build would be nice in the future.
Currently, there is no build hook, so we have to build first and then run deploy. It's just an extra step but requires extra thought, especially when working with nested stacks. That is the "No Build Hook painpoint"
The second painpoint with nested stacks is needing to recursively call package on each nested stack. This one is brutal! It forces us to keep track of where each stack is and write a custom script in each Nested stack to package it before the parent stack calls package -- then, even worse -- we need to make sure that the parent stack is pointing at the output of the child stack! This feels really clunky and makes it possible to use a stale nested child stack. That is the "Nested Stack Packaging painpoint"
Finally, the third painpoint is using S3 buckets for archive upload. It just feels weird. Why isn't there a cloudformation upload endpoint where we can send a zip file with all of the stacks (which would use relative references for each other). The Cloudformation backend already manages everything, why doesn't it manage artifact storage and relative template reference interpretation, too? You could choose to reference templates directly from S3 for reusability's sake, but you wouldn't be forced to. That is the "No Archive Endpoint painpoint"

@ajhool Thanks for reporting these issues! These are SAM CLI related so I'm going to transfer this issue to that GitHub repo. However, regarding this:

The second painpoint with nested stacks is needing to recursively call package on each nested stack. This one is brutal!

sam package supports recursive packaging. If you have AWS::CloudFormation::Stack or AWS::Serverless::Application resources in your template that reference local template files, when you run sam package on the top-level template, SAM CLI should recursively package the referenced local template files and upload them to S3.


about missing single digits and signs

Thank you for your excellent work!
I am trying to fine-tune your model to detect document text, but I notice there are some single digit and single sign, such as "-",  are missing. Do you know what would be the possible reason? or any place you have some preprocessing or postprocessing to remove small contour of texts?
I tried to reduce the "dis_threshold" but it does not help.
Thank you in advance!

@tairen99
I faced issue missing key value during evaluation.
could you please let me know your configuration?


Add a sort of index method

Most of the time instead of a label you need to map the index of a selected radio button.
Right now, as a workaround, I added this swift extension:
extension RadioButton {
    func index() -> Int {
        for (index, element) in enumerate(self.groupButtons) {
            if element.isEqual(self) {
                return index
            }
        }

        return -1
    }
}
´´´

The self.groupButtons is not ordered, so I do not think the button index makes sense. You can use button tag instead.

Ok, it sounds fair enough.


spider web buff

About the PR

Now spiders move faster on the web.
Media

https://github.com/space-wizards/space-station-14/assets/136233650/b7532b80-e15e-46a3-9665-05e5397be14f

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase

Changelog

:cl:

tweak: Spiders have become more agile!

ops


Reword invite message (fix bug 690853)

It might be nice to allow users to enter their own message later on.
For now, this improves things a bit.

Merged in a941581c33be7a254695ccd04daba71eb0da0abf. Dunno why GitHub didn't pick up on it, but whatever.


Serialize value for Decimal

Describe the Bug
Not sure if it's a bug or intended, but Decimal type is serialized as string shown in the generator file.
To Reproduce
Have a field type Decimal and npx prisma generate will produce scalars.ts file for DecimalJSScalar with value.toString() to serialize it.
Expected Behavior
This issue from prisma repo gave an example to return value.toNumber() in this gist file so that graphql clients can consume it as number instead of string.
Logs
No logs required.
Environment (please complete the following information):

OS: WSL Ubuntu 20.04
Node 12.16.3
typegraphql-prisma version 0.14.7
Prisma version 2.27.0
TypeScript version 4.3.5

Additional Context
No additional context.

This issue from prisma repo gave an example to return value.toNumber() in this gist file so that graphql clients can consume it as number instead of string.

This is not true. Decimal.js can hold values that are not representable using JS number value because of the floating point nature:
y = new Decimal('45987349857634085409857349856430985')
y.toNumber()                   // 4.598734985763409e+34

It is recommended to use string-based approach for safety.


Remove the record counts from pagination

Frontend: remove the record count (1 of ...)
Backend: stop computing the total number of records when fetching records.

I see @alvarobartt. Could we show a progress other than a progress bar to avoid computing the total number of expected records?

I mean there's no way to actually add any progress tracker if we don't know the amount of records/batches that we need to fetch, so maybe we can just rely on something like Fetching records from Argilla..., but without any progress bar/tracker.

Also maybe we can get that from the metrics when computed? cc @frascuchon

Comment regarding ajustement todo in front end part,
We need to be carefull when refactoring the existing code.
List of impacts by components/model :
1/ FeedbackPagination.component.vue :

the total_records is used to compute the number of total page
to render the pagination component (if no total_records, the component is not rendered)

2/ CenterFeedbackTask.content.vue :

when total_records change, we reinitiate the flag areResponsesUntouched to true (this help us to show are not a toast on change route or on change filter)
also used to know in which page the user is in order to allow to go to next record or not on submit/discard

3/ RecordFeedbackTaskAndQuestionnaire.content.vue :

it's where the total_records is fetch and insert in the orm
it's used as a flag to show or not a message in case there is no record

4/ FeedbackTask.model.js && feedbackTask.queries.js :
where there is the attribute total_record && queries to update/get the value from the orm
=> When the total record will be removed from the api, we have to clean the front orm and adapt the 3 components to get the toal record from the metrics instead of the previous way


Bug: Missing regression tests for PR #434

Tests should have caught https://github.com/comtrya/comtrya/pull/434 over 2 years ago.
On a side note, if comtrya has an excellent test suite, a lot more devs may see this as a viable alternative to Ansible. You could then provide professional support, etc. To further help make this project even more incredible, all PRs should be accepted with regression tests.

I completely agree. To be quite honest, I stopped using Comtrya. I don't like the YAML interface and opted for Nix instead.
Of course, Nix has many other challenges and I think Comtrya and Nix could eventually complement each other; but the YAML interface would need to go.
CUE recently provided libcue which allows interopt with Rust and there's even a cue-rs in the works. I'm really tempted to reboot this project with CUE support (YAML would still work).

I agree, our test suite is lacking some things for sure.

I'm really tempted to reboot this project with CUE support (YAML would still work).

I like RCL and KCL.

Thanks for those suggestions. I'm not a huge fan of YAML or TOML. So having another or some other alternatives would be nice. I'll take a look at those two at some point and see what I can do to integrate them.


Short solution needed: "How to enlarge image" (python-pillow)

Please help us write most modern and shortest code solution for this issue:
How to enlarge image (technology: python-pillow)
Fast way
Just write the code solution in the comments.
Prefered way

Create pull request with a new code file inside inbox folder.
Don't forget to use comments explain solution.
Link to this issue in comments of pull request.

How to enlarge image


feat: module for Polyglot Context injection

@steve-s and I put together this proof of concept for allowing users to inject Graal Languages Context into their application. I think using @ThreadLocal could good for this use case.
@steve-s will update you with details about the Context constraints.
Thoughts @fniephaus @mikehearn @dstepanov @graemerocher ?

It might be worth checking out the react code. I refactored it to be more general (btw the PR was never merged):
https://github.com/micronaut-projects/micronaut-views/pull/859
Look at BeanPool. Using ThreadLocals for sharing contexts isn't quite right because especially with virtual threads there may be many threads processing HTTP requests that only want to enter contexts occasionally. So you need to create only as many contexts as is needed to satisfy the contention.
It also has other useful utility classes like IntrospectableToProxyObject. That code may be a good basis for a more general Truffle support.

Some details regarding the Contexts:

Context object represents a global runtime state for all the languages loaded in the Context. One can have multiple Context instances which would represent, e.g., independent Python interpreters.
Multiple Contexts can belong to one Engine (Engine instance can be passed to the ContextBuilder). The Contexts within one Engine share JIT compiled code of the guest language, e.g., Python, but no other state visible to the user.
Context creation and initialization can be relatively expensive. For JavaScript AFAIK it is ~0.5ms, for Python ~50ms.

The languages can have some usage constraints:
JavaScript is a single threaded language, which means that only single thread can evaluate JavaScript code through single Context instance. If multiple threads try to evaluate JavaScript using the same Context object, you'll get a runtime exception saying that the JavaScript language does not support this.
Python supports multi-threading and one can execute Python code from multiple threads at the same time, but internally Python uses "global" interpreter lock, so if two Java threads are executing Python code using the same Context, the two threads will take turns in a round robin fashion to make progress, so it will look like parallel execution, but in reality only one thread at a time executes and the other is blocked on the lock.
However, different Contexts do not share the same "global" interpreter lock. So if two threads execute Python using two different Context objects, they will not block each other like this.

Sounds like we should pool contexts


Presto main tests hangs after all tests are executed

https@379d201b{SSL, (ssl, http/1.1)}{<IP_ADDRESS>:35271}
2020-10-18T09:03:04.2953558Z 2020-10-18T04:03:04.293-0500	INFO	pool-36-thread-2	org.eclipse.jetty.server.Server	Started @1012139ms
2020-10-18T09:03:04.4885801Z 2020-10-18T04:03:04.487-0500	INFO	pool-36-thread-2	io.airlift.bootstrap.LifeCycleManager	Life cycle starting...
2020-10-18T09:03:04.4887964Z 2020-10-18T04:03:04.488-0500	INFO	pool-36-thread-2	io.airlift.bootstrap.LifeCycleManager	Life cycle startup complete
2020-10-18T09:03:04.7306146Z 2020-10-18T04:03:04.729-0500	INFO	pool-36-thread-2	io.airlift.bootstrap.LifeCycleManager	Life cycle stopping...
2020-10-18T09:03:04.7316149Z 2020-10-18T04:03:04.730-0500	INFO	pool-36-thread-2	org.eclipse.jetty.server.AbstractConnector	Stopped<EMAIL_ADDRESS>(http/1.1, h2c)}{<IP_ADDRESS>:36763}
2020-10-18T09:03:04.7332425Z 2020-10-18T04:03:04.731-0500	INFO	pool-36-thread-2	org.eclipse.jetty.server.AbstractConnector	Stopped https@379d201b{SSL, (ssl, http/1.1)}{<IP_ADDRESS>:35271}
2020-10-18T09:03:04.7342921Z 2020-10-18T04:03:04.732-0500	INFO	pool-36-thread-2	org.eclipse.jetty.server.handler.ContextHandler	Stopped o.e.j.s.ServletContextHandler@6dc73c8b{/,null,UNAVAILABLE,@http}
2020-10-18T09:03:04.7412831Z 2020-10-18T04:03:04.740-0500	INFO	pool-36-thread-2	io.airlift.bootstrap.LifeCycleManager	Life cycle stopped
2020-10-18T14:44:25.9000535Z ##[error]The operation was canceled.

Hopefully fixed by https://github.com/prestosql/presto/pull/5989
lets close for now and reopen if re-witnessed

It has nothing to do with product tests. Anyway, I am fine with seeing this closed, maybe the issue just gone.

Opps, misread. sorry. Thanks


Trouble with trajectory generation (when world.tick() is delayed)

CARLA version: 0.915
Platform/OS: Ubuntu 24.04
Problem you have experienced: Abnormal trajectory generation
What you expected to happen: Simulation to stop when world.tick() is not given
Steps to reproduce: delay between two world.tick() event
Other information (documentation you consulted, workarounds you tried):
Hi, I am trying to generate log of vehicle trajectories at every 100ms interval. What I am doing for this is I am recording the vehicle trajectories in simulation, giving a world.tick() (i have set up fixed delta time = 0.1). So I expect simulation to progress 1 step or 100ms and then I record the trajectories again. As well as visualize.
Time settings,
        settings = world.get_settings()

        traffic_manager.set_synchronous_mode(True)
        if not settings.synchronous_mode:
            synchronous_master = True
            settings.synchronous_mode = True
            settings.fixed_delta_seconds = 0.1
        else:
            synchronous_master = False

Visualize and logging to csv.
    def update(frame):
        vehicle_tracker.update()    # writing to csv the current trajectories
        all_trajectories = vehicle_tracker.get_trajectories() # getting the same trajectories for visualization
        world.tick()        # simulation tick

        for vid, trajectory in all_trajectories.items():
            if vid not in trajectories:
                trajectories[vid], = ax.plot([], [], '-', linewidth=2, alpha=0.7)
                vehicle_points[vid], = ax.plot([], [], 'o', markersize=5)
            if len(trajectory) > 0:
                trajectories[vid].set_data(trajectory[:, 0], trajectory[:, 1])
                vehicle_points[vid].set_data(trajectory[-1, 0], trajectory[-1, 1])

        # Remove trajectories for vehicles that no longer exist
        for vid in list(trajectories.keys()):
            if vid not in all_trajectories:
                trajectories[vid].remove()
                vehicle_points[vid].remove()
                del trajectories[vid]
                del vehicle_points[vid]

        if vehicle_tracker.frame_id >= 40:
            plt.close(fig)

        return list(trajectories.values()) + list(vehicle_points.values())

    ani = FuncAnimation(fig, update, frames=None, init_func=init, blit=True, interval=100)
    plt.show()

But this approach doesn't work. The vehicles do not freeze in place between world.tick() -  contrary to my expectation. To verify this behavior, I intentionally put time.sleep(2) in between the world.tick(). That results in a quite funny behavior -
https://youtu.be/ccYNasKs1cs?si=IbFo9b2Y2fO3AiJk

Anyway, it is clear that I am doing it wrong. How should I log vehicle trajectory at 100ms interval? Thank you.

Hi,
you didn't apply the settings.
world_settings = world.get_settings()

world_settings.synchronous_mode = True
world_settings.fixed_delta_seconds = 0.1

world.apply_settings(world_settings)

Ohho... Thats silly of me.
Thank you @PatrickPromitzer for pointing that out!


Leaking timeout

If this is a bug report, please fill in the following sections.
If this is a feature request, delete and describe what you would like with examples.
What was wrong?
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/advertisement_collector.py", line 135, in _handle_request
    await self.handle_advertisement(advertisement)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/advertisement_collector.py", line 316, in handle_advertisement
    await self._network.broadcast(advertisement)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/network.py", line 731, in broadcast
    await condition.wait()
  File "/root/env/lib/python3.8/site-packages/trio/_core/_run.py", line 741, in __aexit__
    raise combined_error_from_nursery
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/network.py", line 722, in _source_nodes_for_broadcast
    nursery.start_soon(_do_advertise, enr.node_id)
  File "/root/env/lib/python3.8/site-packages/async_generator/_util.py", line 42, in __aexit__
    await self._agen.asend(None)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/network.py", line 323, in explore
    yield receive_channel
  File "/root/env/lib/python3.8/site-packages/async_generator/_util.py", line 42, in __aexit__
    await self._agen.asend(None)
  File "/root/env/lib/python3.8/site-packages/async_service/trio.py", line 411, in background_trio_service
    await manager.stop()
  File "/root/env/lib/python3.8/site-packages/trio/_core/_run.py", line 741, in __aexit__
    raise combined_error_from_nursery
  File "/root/env/lib/python3.8/site-packages/async_service/trio.py", line 205, in run
    raise trio.MultiError(
  File "/root/env/lib/python3.8/site-packages/async_service/base.py", line 324, in _run_and_manage_task
    await task.run()
  File "/root/env/lib/python3.8/site-packages/async_service/trio.py", line 76, in run
    await self._async_fn(*self._async_fn_args)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/explorer.py", line 293, in _source_initial_nodes
    await self._send_channel.send(enr)
  File "/root/env/lib/python3.8/site-packages/async_generator/_util.py", line 53, in __aexit__
    await self._agen.athrow(type, value, traceback)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/network.py", line 260, in common_recursive_find_nodes
    nursery.cancel_scope.cancel()
  File "/root/env/lib/python3.8/site-packages/trio/_core/_run.py", line 741, in __aexit__
    raise combined_error_from_nursery
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/network.py", line 227, in worker
    await adaptive_timeout(*tasks, threshold=1, variance=2.0)
  File "/root/env/lib/python3.8/site-packages/ddht/_utils.py", line 265, in adaptive_timeout
    nursery.cancel_scope.cancel()
  File "/root/env/lib/python3.8/site-packages/trio/_core/_run.py", line 741, in __aexit__
    raise combined_error_from_nursery
  File "/root/env/lib/python3.8/site-packages/ddht/_utils.py", line 234, in task_wrapper
    await task_fn(*args)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/network.py", line 154, in do_lookup
    found_enrs = await network.find_nodes(node_id, distance)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/network.py", line 301, in find_nodes
    responses = await self.client.find_nodes(
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/client.py", line 518, in find_nodes
    return responses
  File "/root/env/lib/python3.8/site-packages/async_generator/_util.py", line 53, in __aexit__
    await self._agen.athrow(type, value, traceback)
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/client.py", line 266, in subscribe_request
    nursery.cancel_scope.cancel()
  File "/root/env/lib/python3.8/site-packages/trio/_core/_run.py", line 741, in __aexit__
    raise combined_error_from_nursery
  File "/root/env/lib/python3.8/site-packages/ddht/v5_1/alexandria/client.py", line 264, in subscribe_request
    raise trio.TooSlowError from err
trio.TooSlowError

How can it be fixed?
:shrug:

we'll see if this resurfaces with the new code #329 which should give us more context.


Change square function to use a CalculatorFunctions

Change square functions from applying a "**" operator and a "2" value to using the operator.pow function as a CalculatorFunctions.

Also, +/- to use/remove operator.neg, 1/x to use operator.truediv so they can also apply to variables and functions.

This should also address all the copied logic under comments like "if we have a variable or number or function available to wrap" within backspace, invert_sign, inverse_number, and root_number, abstracting to a single place.

Changing FunctionsType to have a post_param_eval, and changing _CalcStringFunction to handle it properly, so square function can be defined as "SQUARE = ("sqr", "", " ** Decimal('2')")".
In other words, in the UI squaring 3 would look like "(sqr(3))" but in the evaluation it will look like "((Decimal(3)) ** Decimal('2'))".
Original idea was to define square as something like ("sqr", "pow", ",2") so the eval would become "(pow(x,2))", but couldn't get parser to recognize the pow function and didn't want to write a wrapper for the square function.

Unit tests pass, functional tests pass


Unable to add SwiftChartsUI to multiple targets in Xcode Beta 1 is not possible

Description
When I attempt to add this specific library to a brand new project I'm only able to get it to work in exactly one target.
Expected Behavior
I expect to be able to use this library in both my main app and my widget extension.
Actual Behavior
I'm unable to use this library in both. I can use it in either, but not both. I've tried with my own SPM library and it seems to work fine.
Possible Fix
Perhaps there is something in the library that's built only for a specific runtime. I've got a lab appointment in 1:15 and I'm happy to share the webex link if they allow it but you'll have to get in touch with me asap.
Steps to Reproduce

Create new project
Add a widget extension
Add a swift package to the main target (https://github.com/AppPear/ChartView for example)
Observe that you can only add to 1 target
Go to project settings
Tap General
Tap the target for the extension created in step 2
Click the + under Frameworks and Libraries
Search for the new package that was added.
Observe that the package is not there

Your Environment

Version of this package used: Latest
Device/Simulator: Device and Simulator
Operating System and version: iOS 14 Beta 1
Link to your project: any new project

I'm actively working on this so a quick update. I re-tried with my own SPM library and it actually seemed to fail for me in the 2nd target. This may not be a swiftuicharts issue. Standby

This is not an issue. I just needed to go into the target's Build Phases tab, then add the library to "Link Binary with Libraries". It showed up there and it worked.


react router - Cannot POST after redirect from other app

Hello Guys,
I have a problem with the react router 4. Namely I use the external payment API. Unfortunately, the return button for my application leads to an example POST address ( mydomain.com/return-page).
This API redirect to my webApp with method POST.
Then I get the message Cannot POST /return-page or 502 code.
Any idea how resolve this problem?
Thanks.

This is a bug tracker, not a support system. For usage questions, please use Stack Overflow or Reactiflux where there are a lot more people ready to help you out. Thanks!


Add shared framework scheme / Carthage support

Request for adding a target to build as a dynamic framework so we can easily integrate apptentive into swift projects

Thanks for the request :)
We will definitely do this by the time we drop iOS 7 support (sometime in Q3 of this year), and we'll consider providing an option for this sooner if we can.

If CocoaPods is an option for you, we now set a module name that removes the need for a bridging header. Instead you just import Apptentive at the top level of any files where you need it.

Thanks,
I am still using Cocoapods with the frameworks option, but hoping to eventually migrate away from it. It's not a huge priority; I put in in the request so it can be tracked.
I haven't tried, but it's probably straight forward enough to fork and create a shared framework targeting iOS8? Maybe I'll do that if I get really anxious.

I just pushed an experimental branch that does this ("framework"). It's not something we can support just yet, but feel free to take a look and, as always, PRs are welcome.

:+1:
Thanks for the quick turn around. I'll try it out next week.

Loaded up the framework branch without a problem, haven't tested everything but so far it's working as normal.

Carthage support is working for us. Except that pinning to a branch sometimes leads to endless fetching the Apptentive framework when running carthage update. There are already some issues filed showing similar behaviour in Carthage (see Carthage/Carthage#733 for example). So any chance this is being integrated soon?

@mAu888 I haven't tried this yet, but I believe you can do carthage archive on your apptentive fork and and then attach the archive to a custom apptentive "release". Make sure to point carthage to your custom release, and then carthage should use that binary instead of going through a fetch/build cycle each time you update.

Ended up forking and putting a custom version on it. Anyways, any chance this feature will make it at some point @frankus?

The v3.3.1 branch (currently a prerelease) adds a framework scheme for Carthage.
Feedback is greatly appreciated!

This is now in the official release of 3.3.2. Please let me know if you find any issues with it.


Parser assumes properties key always exists in a given swagger definition

But definitions of type array for example do not have a properties key. see swagger_parser.py#L483
Cheers.

Yes you are right, if you want to provide a fix you are welcome, or I can do it :smile:

Thanks. I have a fix on my fork, but I am not sure where a test for this should go. Any insights?


PUB-742 - Delete Subscription Flow

JIRA link
https://tools.hmcts.net/jira/browse/PUB-742
Change description

Update Unsubscribe links on the subscription management page to open unsubscribe page
Add unsubscribe page with yes/no radio selections
Add unsubscribe confirmation page when user successfully unsubscribes
Add appropriate route, e2e, unit, and a11y tests
Add additional unit tests to the subscriptionRequests to increase coverage

NOTES:

All unsubscribe requests will fail as back end logic has not been developed yet
Unsubscribe confirmation page has link to the your-account page, however that page does not exist at the moment. Pointing to non-existing page has been okayed by the BA (see ticket comments on JIRA)
If user selects no on the unsubscribe selection, user is taken back to subscriptions management page
Unsubscribe confirmation page does not display navigation bar as fix for POST requests has not been merged in yet (#178)

Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[x] No

/azp run


Bug in HomeFragment

I found a bug in the HomeFragment. After the user selects "Speak Up!", and returns to the "For You", then when the user clicks "like" on any anonymous post on the recylerview, the posts list is immediately updated and only displays anonymous posts, even though the chip button position is currently still at the "For You" type.

fixed at commit 45aa4e0ef90ce4ab084687e270b5678990ce7875


how to show year only? date picker

As mentioned in the FAQ, this is not in scope of this library:
https://github.com/wdullaer/MaterialDateTimePicker#how-do-i-turn-this-into-a-year-and-month-picker

ow.. thanks for your information sir :)

I have to draw the line somewhere.
You can just use a regular dropdown for the year and the library is open source, so feel free to steal the pieces you need / want :-)


earcut has updated to 2.1.4 , please sync , thanks.

earcut has updated to 2.1.4 , please sync , thanks.

Any notable changes?

https://github.com/mapbox/earcut/pull/108

Looks like a really low-risk upgrade. Only one code change (that @finscn linked):
https://github.com/mapbox/earcut/compare/v2.1.3...v2.1.4


autobuild happily accpets multiple declarations of the same 3P.

For example here I did catch a double of meshoptimizer (linux64). I suppose those come through merges and autobuild then latter happily accepts such a file. Either pulling the first or last.
Here is another one I found today https://github.com/Nicky-D/viewer/commit/043a13b23ab075dba1a648181ca43c23c7fdd172
autobuild should at least warn if there is multiple (conflicting) definitions of one 3P

Seems like this would be a fix in python-llsd deserialization: detecting duplicate serialized map keys. By the time autobuild sees the data, there are no duplicate keys because one of them has already overwritten the other.


tf.keras.layers.experimental.EinsumDense gives different results depending on batch size

Please go to TF Forum for help and support:
https://discuss.tensorflow.org/tag/keras
If you open a GitHub issue, here is our policy:
It must be a bug, a feature request, or a significant problem with the documentation (for small docs fixes please send a PR instead).
The form below must be filled out.
Here's why we have that policy:.
Keras developers respond to issues. We want to focus on work that benefits the whole community, e.g., fixing bugs and adding features. Support only helps individuals. GitHub also notifies thousands of people when issues are filed. We want them to see you communicating an interesting problem, rather than being redirected to Stack Overflow.
System information.

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 16.04
TensorFlow installed from (source or binary):
TensorFlow version (use command below): 2.6.0 and 2.7.0
Python version: 3.7
Bazel version (if compiling from source):
GPU model and memory:
Exact command to reproduce:

You can collect some of this information using our environment capture script:
https://github.com/tensorflow/tensorflow/tree/master/tools/tf_env_collect.sh
You can obtain the TensorFlow version with:
python -c "import tensorflow as tf; print(tf.version.GIT_VERSION, tf.version.VERSION)"
Describe the problem.
the output of EinsumDense layer depends on number of examples in a batch.
The issue is rather important because attention implementation uses einsum dense layers.
Describe the current behavior
when using tf.keras.layers.experimental.EinsumDense layer produce different result depending on the batch size.
Describe the expected behavior
the output of the layer should be independent of batch dimension
Contributing.

Do you want to contribute a PR? (yes/no): no
If yes, please read this page for instructions
Briefly describe your candidate solution(if contributing):

Standalone code to reproduce the issue.
import tensorflow as tf
dense = tf.keras.layers.experimental.EinsumDense(
        "bac,acd->bda",
        output_shape=[64,4],
        bias_axes="da"
)
x = tf.random.uniform((80,4,32))
print(dense(x)[0, :4].numpy())
print(dense(x[:1])[0, :4].numpy())

I've got different result in 7th-8th order:
[[ 0.12284548  0.2814498  -0.34291047  0.00810905]
 [ 0.23635934 -0.08506497  0.12073331  0.33535597]
 [-0.30136532  0.34854767  0.41540402  0.1328382 ]
 [-0.04340287 -0.07197566  0.17427945 -0.29642397]]

[[ 0.12284552  0.2814498  -0.34291047  0.00810904]
 [ 0.23635934 -0.08506497  0.12073331  0.33535597]
 [-0.3013654   0.3485477   0.415404    0.1328382 ]
 [-0.04340289 -0.07197568  0.17427945 -0.29642397]]

Having several of Einsum layers leads to accumulated error and wrong predictions
Similar behavior can be observed for the tf.einsum:
import tensorflow as tf
x = tf.random.uniform((80,4,32))
w = tf.random.uniform((4,32,64))
print(tf.einsum("bac,acd->bda", x, w)[0, :4].numpy())
print()
print(tf.einsum("bac,acd->bda", x[:1], w)[0, :4].numpy())

I've got different result in 7th-8th order:

[[8.515028  6.533536  8.1234455 6.415581 ]
 [8.387905  8.020177  8.997409  6.6566358]
 [7.485701  7.6112795 8.145813  7.514901 ]
 [8.022375  7.008651  7.9132357 5.918109 ]]

[[8.515028  6.5335355 8.123446  6.4155803]
 [8.387905  8.020177  8.997409  6.6566353]
 [7.485701  7.611279  8.145813  7.5149007]
 [8.022375  7.0086513 7.9132347 5.9181094]]

Source code / logs.
Include any logs or source code that would be helpful to diagnose the problem. If including tracebacks, please include the full traceback. Large logs and files should be attached. Try to provide a reproducible test case that is the bare minimum necessary to generate the problem.

I also created tensorflow issue: https://github.com/tensorflow/tensorflow/issues/53321. Not sure what is the correct place now

@Ghostvv,
Please take a look at this comment. Thanks!

I commented in tensorflow issue. Shall we close this one in favor of tensorflow issue? It seems to me that the problem is not related to keras directly.

您好，您的邮件已经收到 ！                   杨显洁

@Ghostvv,
Sure, I am closing this issue here and we can followup in the tensorflow issue. Thanks!


Change occurrences of searchResultsDbId to searchResultDbId

In Specification/Components/Responses/successfulSearchResponse.yaml it's
searchResultDbId (which I think is correct, and brapijs is expecting this string) but in other files (params and url strings) we have searchResultsDbId.
Also in brapi-v2-dev branch.
@BrapiCoordinatorSelby Should we normalize it to the former? Let me know if I can help with a PR (I should change only the *.yaml files, right? the README's are generated)
cc @MFlores2021

Good catch @nahuel-soldevilla
I think the plural searchResultsDbId sounds more natural in English, so I will standardize to that.
The only place this really matters is in successfulSearchResponse.yaml because this is the only time the keyword will be present in the JSON. All other occurrences throughout the documentation are used as URL path parameters. These are placeholders and in practice they should be replaced by the actual value of the DbId. (ex /search/germplasm/{searchResultsDbId} should become /search/germplasm/551ae08c) But you are correct, the documentation should have everything standardized to avoid confusion.

I should change only the *.yaml files, right? the README's are generated

Yes this is correct. PR's are always appreciated!


Example not work on python 3.7.0

It return empty []
from stop_words import get_stop_words

stop_words = get_stop_words('en')
stop_words = get_stop_words('english')

from stop_words import safe_get_stop_words

stop_words = safe_get_stop_words('unsupported language')
print(stop_words)

Do you have NLTK package already installed?

I install now:
pip install stop-words
pip install NLTK
Then run the example, same result: []
Also NLTK not mention in README.rst


Add sorting by number of flights.

I have two versions of the icon, included below. I need to decide which one to use, and then I can add this sorting option.

Completed with the latest commit. I didn't use either of the above icons. Instead, I used the second set of these:

The above were both taken from game-icons.net under the CC BY 3.0 license. The icons on the bottom were modified from their original format to remove an exhaust effect and to rotate the ship.


how much memory do we need in the step of Build graph index？

Hi, it depends on the hop of the subgraphs. By default, it runs on a 32G mem  machine.


Not working with laravel 5.5

I'm trying to upgrade to laravel 5.5 but have this issue:
- barryvdh/laravel-cors v0.8.6 requires illuminate/support 5.1.x|5.2.x|5.3.x|5.4.x -> satisfiable by laravel/framework[v5.4.28], illuminate/support[v5.1.1, v5.1.13, v5.1.16, v5.1.2, v5.1.20, v5.1.22, v5.1.25, v5.1.28, v5.1.30, v5.1.31, v5.1.41, v5.1.6, v5.1.8, v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5.2.37, v5.2.43, v5.2.45, v5.2.6, v5.2.7, v5.3.0, v5.3.16, v5.3.23, v5.3.4, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9].

any plans on updating the package to enable support for 5.5?

Sure, try the latest version

thanks that worked!


Beginning of Go Implementation

See README.md on how to test the code.

Note that having several Go modules in a same repository makes things a bit more challenging, in particular when it comes to make their versions evolve independently. We don't want to have to increase the version of github.com/DataDog/aggregated-dependency-score every time we make a change to github.com/DataDog/aggregated-dependency-score/depsdotdev and vice versa. It seems doable however, see https://github.com/go-modules-by-example/index/blob/master/009_submodules/README.md
That said, we may be better off creating a separate aggregdepscore-depsdotdev repository and moving the current github.com/DataDog/aggregated-dependency-score/depsdotdev module there. We may not want to create a new repository right now though, but we should keep in mind a possible future "extraction".
What about:

right now there is a single module in https://github.com/DataDog/aggregated-dependency-score and users will get the dependencies of the depsdotdev package even if they don't use it because they provide their own IntrinsicTrustworthinessEvaluator and DependencyResolver
at some time in the future, we will move the depsdotdev package to its own module and remove it from this one module, removing the forced dependencies

Now if we do that we should not expose a depsdotdev package right now because we don't want people to import a package that will disappear. So for now all the code related to deps.dev will live inside of the aggregdepscore package.

aggregated-dependency-score_test.go:105: expected 0.15379680196472223, got 0.15379680196472217

This is probably due to floating-point arithmetic working in a slightly different manner from one machine to the other.
I will change the test to just check that the result is not too far from the expected value.


Updates to match latest specification

This was merged by https://github.com/DBCG/cqf-ruler/pull/284.


DexFile.java   This class was deprecated in API level 26

https://developer.android.com/reference/dalvik/system/DexFile.html

Meet the same issue.
This issue caused my app's startup is slower 500ms on Android 8.1 system.

遇到同样的问题

可以使用 arouter-register


[prod]daniel.calderon_adding_scrubber_to_process_discovery

What does this PR do?

Update the process discovery check including the data scrubber to enable the obfuscation of sensitive strings in the process command line arguments.

Creates the test TestPidMapToProcDiscoveriesScrubbed to validate sensitive command line strings in the process discovery check

Motivation
https://datadoghq.atlassian.net/browse/PROCS-3281

Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

Run a process in the test environment typing its command with an exposed sensitive argument on it.
Example:

 $   datadog-agent start DD_API_KEY=kjhkjhi7y12y787217  DD_ENV=tag

To confirm that the process discovery check is enabled during the execution, create a datadog.yaml file for this test and include the parameters below on it:

## datadog.yaml file
...
process_config:

  process_collection:
    enabled: false

  process_discovery:
    enabled: true

  scrub_args: true
...

To execute the process agent check in your environment and validate that the test process will be discovered and its sensitive strings scrubbed, you can run the embedded agent  using the command below:

/opt/datadog-agent/embedded/bin/process-agent check process_discovery -config <file with updated custom datadog.yaml file>.yaml

After running the command, the output of the check should be printed in the terminal.

Once you are able to see the output of the check, look for the process arguments and confirm if the sensitive strings have been obfuscated. You can use  ctrl + f  to find the key of the argument exposing the sensitive value.

In the case of the process used for this example, we can confirm that the test is successful after finding   the values for the DD_API_KEY obfuscated.

Reviewer's Checklist

[ ] If known, an appropriate milestone has been selected; otherwise the Triage milestone is set.
[ ] Use the major_change label if your change either has a major impact on the code base, is impacting multiple teams or is changing important well-established internals of the Agent. This label will be use during QA to make sure each team pay extra attention to the changed behavior. For any customer facing change use a releasenote.
[ ] A release note has been added or the changelog/no-changelog label has been applied.
[ ] Changed code has automated tests for its functionality.
[ ] Adequate QA/testing plan information is provided. Except if the qa/skip-qa label, with required either qa/done or qa/no-code-change labels, are applied.
[ ] At least one team/.. label has been applied, indicating the team(s) that should QA this change.
[ ] If applicable, docs team has been notified or an issue has been opened on the documentation repo.
[ ] If applicable, the need-change/operator and need-change/helm labels have been applied.
[ ] If applicable, the k8s/<min-version> label, indicating the lowest Kubernetes version compatible with this feature.
[ ] If applicable, the config template has been updated.

/merge

/merge

/remove

/merge


Doesnot Show up in Mac

Article URL

Issue

Hi @BSaivamani,
Could you please clarify what does not show up on a Mac?

I created a testaddin -I have started the server.

I can't get the admin to show up in word.

Thank you @BSaivamani.
On Mac, there's an extra step for running your server:

Please check out the Try it Out instructions and let us know if things still aren't working.

I got it!Thank you


Sanitize the ends of folder source paths

Setting the source: /foo/bar is sometimes different from /foo/bar/ even if bar is a folder in both cases. The result of this is that we often run into a race condition where we have two objects with the same hash but different properties. This fixes #1339 and #1131.

I've added the sanitization to the constructors. Regarding the tests, I'm not really sure what the options are here? I couldn't reproduce this every time no matter what I tried. Personally, I'd rather skip it than add a knowingly flaky test.


Request for HuggingFace Text Generation Inference

It would be great if guidance supported LLM's deployed through HuggingFace text generation inference framework (https://github.com/huggingface/text-generation-inference). The library allows API calls to LLM in similar fashion to OpenAI.
Adding this feature would make guidance more usable.
Thanks

@SupreethRao99 Why did you close this? I believe this is still relevant and not yet supported.


Update frontend.ts DOM text reinterpreted as HTML {Patch}

By using innerText, it will avoid the risk of HTML injection, as these properties automatically escape any HTML special characters in the provided text. This helps prevent cross-site scripting (XSS) vulnerabilities by treating the input as plain text rather than interpreted HTML. Always be cautious when dealing with user input or dynamic content to prevent security risks

Hi @jbms Could You Please Review Above PR
Regards

Hi @jbms Could You Please Review Above PR
Thanks

Hi @jbms
I noticed my PR was closed. Could you please provide some feedback on why it was closed? I'm eager to learn and improve.
Thank you


Another Unable to find the controller for path "/login_check". The route is wrongly configured

So obviously, there is a lot of issues already with this error message. Only a few has been addressed.
I feel I have been through all the issues now, and I have attempted many different configurations to see if I could get a working result, with no luck.
Error message
Unable to find the controller for path "/login_check". The route is wrongly configured

security:
    encoders:
        App\Entity\User:
            algorithm: bcrypt
    role_hierarchy:
        ROLE_READER: ROLE_USER
        ROLE_ADMIN: ROLE_READER
    providers:
        entity_provider:
            entity:
                class: App\Entity\User
                property: username
    firewalls:
        # Removed main entirely as suggested in a different issue, with no luck. Also attempted to move dev
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        login:
            pattern:  ^/login
            stateless: true
            anonymous: true
            json_login:
                check_path: /login_check
                # Attempted with specific username_path and password_path config as well as without
                username_path: username
                password_path: password
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure
        register:
            pattern:  ^/register
            stateless: true
            anonymous: true
        api:
            pattern:   ^/v1
            stateless: true
            anonymous: true
            provider: entity_provider
            guard:
                authenticators:
                    - lexik_jwt_authentication.jwt_token_authenticator
    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/v1, roles: IS_AUTHENTICATED_FULLY }
        - { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }

Creating users with /register works fine. However, all users created through register returns the error message regarding a missing controller. However, that only occures if the username/password credentials is correct, if I type in a wrong password, it returns bad credentials as expected.

Could you provide your routes.yaml ? Also what version of symfony are you using? Do you have a github project that reproduces this problem? Is this during the dev environment?

@kemicofa
register:
  path: /register
  controller: App\Controller\AuthController::register
  methods: POST

api:
  path: /v1
  controller: App\Controller\AuthController::api

login:
  path: /login
  controller: App\Controller\AuthController::login

Done several new attempts though. At this moment, I am manually validating logins and I removed the /login_check. Manually creating tokens also.
Using Symfony 4.
Environment: Dev as well as prod.

I have the exact problem when trying to invoke request in Postman with wrong Body type (x-www-form-urlencoded vs raw)...does something like this from command line also producing the error ?
curl -X POST -H "Content-Type: application/json" http://yourhost:yourport/api/login_check -d '{"username":"admin","password":"xxxxxxx"}'

Same here, with Symfony 3.4

You are probably not sending a valid JSON request. The Content-Type header must beapplication/json (not obvious using postman)

Closing due to the lack of feedback.

@cbourgois thanks god, you saved me

Yep! The error changed in the new versions of Symfony.
It's not an Error 400 Bad Request anymore but 404 when the request is empty.
Be carrefull, some MOOC are not updated...
I have spent 1h on that ahah!

In addition to configure the header as @chalasr says, send your credentials in JSON:

I just removed main part of the configuration, and that workes for me
`    firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
anonymous: lazy
provider: app_user_provider
    login:
        pattern:  ^/login
        stateless: true
        anonymous: true
        json_login:
            check_path: /login_check
            success_handler: lexik_jwt_authentication.handler.authentication_success
            failure_handler: lexik_jwt_authentication.handler.authentication_failure

    register:
        pattern:  ^/register
        stateless: true
        anonymous: true

    api:
        pattern:  ^/api
        stateless: true
        anonymous: false
        provider: app_user_provider
        guard:
            authenticators:
                - lexik_jwt_authentication.jwt_token_authenticator
        # activate different ways to authenticate
        # https://symfony.com/doc/current/security.html#firewalls-authentication

        # https://symfony.com/doc/current/security/impersonating_user.html`

It worked for me using:
curl -k -X POST -H "Content-Type: application/json" -d "{\"username\":\"user", \"password\":\"user\"}" https://<IP_ADDRESS>:8000/api/login_check

I had the same error and I try to use the solutions given in this issue but no result. To resolve this I return an empty array, at the beginning the function did nothing,  for the getRoles function of my Entity (I do not take into account the role management in my project) and I send a JSON type for my informations (username and password) - before I used the TEXT type and finally it's works :)

Try to change order of your firewalls, example :
1 - dev
2 - login
3 - api
4 - main

Try to change order of your firewalls, example :
1 - dev
2 - login
3 - api
4 - main

You are a life saver. Why does it have to be so hard. Seriously, this needs to be documented. Wasted hours and hours on something that should not have taken some minutes!!!

@bamjad Pull requests are more than welcome to document such common troubles.

Same problem here with a POST request from React JS app in localhost, but the same request is working with Insomnia/Postman
I tried everything i read here

Try to change order of your firewalls, example :
1 - dev
2 - login
3 - api
4 - main

i work for me thanks

@EvKoh thank you!!!


URGENT: Fixed error in registry path and improved description

Thanks.

@lomayor Would you be able to review and merge this PR contributed by the community? Thank you.


ci: Use GITHUB_OUTPUT envvar instead of set-output command

save-state and set-output commands used in GitHub Actions are deprecated and GitHub recommends using environment files.
This PR updates the usage of set-output to $GITHUB_OUTPUT
Instructions for envvar usage from GitHub docs:
https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-output-parameter

Looks good. Thanks @arunsathiya :+1: