InvalidChannelState(Error)

I am experiencing something in #330 but it's weird: I'm using testcontainers to setup rabbit container (super convenient for integration tests) but for some reason my setup fails:

MRE
#Cargo.toml
[dependencies]
env_logger = "0.10.0"
lapin = "2.3.1"
log = "0.4.20"
testcontainers = "0.15.0"
tokio = { version = "1", features = ["full"] }

// main.rs

use lapin::{options::ExchangeDeclareOptions, Connection, ExchangeKind};
pub use testcontainers::{clients::Cli, core::WaitFor, Container, GenericImage, RunnableImage};

const PORT: u16 = 5672;

#[tokio::main]
async fn main() {
    env_logger::init();

    let docker = Cli::default();
    let container = docker.run(
        GenericImage::new("rabbitmq", "3.12-management")
            .with_wait_for(WaitFor::message_on_stdout("Server startup complete;"))
            .with_exposed_port(PORT),
    );
    println!("Connect with rabbit");
    let port = container.get_host_port_ipv4(PORT);
    let connection = Connection::connect(&format!("amqp://<IP_ADDRESS>:{port}/%2f"), <_>::default())
        .await
        .unwrap();

    let channel = connection.create_channel().await.expect("channel1");

    println!("Declare exchange");
    // expect this to fail as no such exchange exists
    // we also expect the channel to be dead now
    channel
        .exchange_declare(
            "foo-exchange",
            ExchangeKind::Direct,
            ExchangeDeclareOptions {
                passive: true,
                ..<_>::default()
            },
            <_>::default(),
        )
        .await
        .expect("declare exchange");

    let _new_channel = connection.create_channel().await.expect("channel2");

    // non-passively declare exchange etc
}

the dfference between lapin 1.6.9 and 2.3.1
// 1.6.9
Connect with rabbit
Declare exchange
[2023-10-06T11:53:50Z ERROR lapin::channel] Channel closed on channel 1 by 40:10 => AMQPError { kind: Soft(NOTFOUND), message: ShortString("NOT_FOUND - no exchange 'foo-exchange' in vhost '/'") } => NOT_FOUND - no exchange 'foo-exchange' in vhost '/'
[2023-10-06T11:53:50Z ERROR lapin::channels] Connection error: invalid channel state: Error
thread 'main' panicked at 'declare exchange: ProtocolError(AMQPError { kind: Soft(NOTFOUND), message: ShortString("NOT_FOUND - no exchange 'foo-exchange' in vhost '/'") })', src/main.rs:38:10

// 2.3.1
Connect with rabbit
Declare exchange
thread 'main' panicked at 'declare exchange: ProtocolError(AMQPError { kind: Soft(NOTFOUND), message: ShortString("NOT_FOUND - no exchange 'foo-exchange' in vhost '/'") })', src/main.rs:38:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Is it the same issue and in the newer version there is no root cause for exchange declare fail or is it some other issue?

I don't see an InvalidChannelState with up to date lapin ?
You are setting passive to true, which means declares does nothing if it already exists, and an error is raised if it does not exist. This is what passive means, in AMQP

Thx for the fast response!
Regardless of exchange, can you explain this channel state change when it is passed from the function?

code with prints

use lapin::{options::ExchangeDeclareOptions, Channel, Connection, ExchangeKind};
pub use testcontainers::{clients::Cli, core::WaitFor, Container, GenericImage, RunnableImage};

const PORT: u16 = 5672;

#[tokio::main]
async fn main() {
    // expect this to fail as no such exchange exists
    // we also expect the channel to be dead now
    let (con, channel) = setup().await;
    println!("Channel state after setup:{:?}", channel.status().state());
    channel
        .exchange_declare(
            "foo-exchange",
            ExchangeKind::Direct,
            ExchangeDeclareOptions {
                passive: true,
                ..<_>::default()
            },
            <_>::default(),
        )
        .await
        .expect("declare exchange");

}

async fn setup() -> (Connection, Channel) {
    env_logger::init();

    let docker = Cli::default();
    let container = docker.run(
        GenericImage::new("rabbitmq", "3.12-management")
            .with_wait_for(WaitFor::message_on_stdout("Server startup complete;"))
            .with_exposed_port(PORT),
    );
    println!("Connect with rabbit");
    let port = container.get_host_port_ipv4(PORT);
    let con = Connection::connect(&format!("amqp://<IP_ADDRESS>:{port}/%2f"), <_>::default())
        .await
        .unwrap();

    let channel = con.create_channel().await.expect("channel1");
    println!("Channel state during setup:{:?}", channel.status().state());

    (con, channel)
}

with 2.3.1 I get

Connect with rabbit
Channel state during setup:Connected
Channel state after setup:Error
thread 'main' panicked at 'declare exchange: InvalidChannelState(Error)', src/main.rs:24:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

@Keruspe thx for the fast response!
Regardless of exchange, can you explain this channel state change when it is passed from the function?

code with prints

use lapin::{options::ExchangeDeclareOptions, Channel, Connection, ExchangeKind};
pub use testcontainers::{clients::Cli, core::WaitFor, Container, GenericImage, RunnableImage};

const PORT: u16 = 5672;

#[tokio::main]
async fn main() {
    // expect this to fail as no such exchange exists
    // we also expect the channel to be dead now
    let (con, channel) = setup().await;
    println!("Channel state after setup:{:?}", channel.status().state());
    channel
        .exchange_declare(
            "foo-exchange",
            ExchangeKind::Direct,
            ExchangeDeclareOptions {
                passive: true,
                ..<_>::default()
            },
            <_>::default(),
        )
        .await
        .expect("declare exchange");

}

async fn setup() -> (Connection, Channel) {
    env_logger::init();

    let docker = Cli::default();
    let container = docker.run(
        GenericImage::new("rabbitmq", "3.12-management")
            .with_wait_for(WaitFor::message_on_stdout("Server startup complete;"))
            .with_exposed_port(PORT),
    );
    println!("Connect with rabbit");
    let port = container.get_host_port_ipv4(PORT);
    let con = Connection::connect(&format!("amqp://<IP_ADDRESS>:{port}/%2f"), <_>::default())
        .await
        .unwrap();

    let channel = con.create_channel().await.expect("channel1");
    println!("Channel state during setup:{:?}", channel.status().state());

    (con, channel)
}

with 2.3.1 I get

Connect with rabbit
Channel state during setup:Connected
Channel state after setup:Error
thread 'main' panicked at 'declare exchange: InvalidChannelState(Error)', src/main.rs:24:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

The title references an error from an old lapin version that is no longer present in latest version.
The new logs you just posted are not the same as the ones in the initial message, and it's not the error described in the title either.
Running it again with RUST_LOG=trace for example will give more context

The title references an error from an old lapin version that is no longer present in latest version
I am a bit confused about this, because as far as I can tell I am using the latest tag

The new logs you just posted are not the same as the ones in the initial message, and it's not the error described in the title either.

That's what I meant when I was asking if the root cause is basically invisible in case of panic now...
essentially this is the same code
here is the trace output

logs

 RUST_LOG=trace cargo run
   Compiling lapin-test v0.1.0 (/home/pickle/Documents/tmh/lapin-test)
    Finished dev [unoptimized + debuginfo] target(s) in 1.52s
     Running `target/debug/lapin-test`
[2023-10-06T12:24:44Z DEBUG testcontainers::clients::cli] Executing command: "docker" "run" "--expose=5672" "-P" "-d" "rabbitmq:3.12-management"
[2023-10-06T12:24:44Z TRACE testcontainers::clients::cli] Registering starting of container c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292 at Instant { tv_sec: 23139, tv_nsec: 939660955 }
[2023-10-06T12:24:44Z DEBUG testcontainers::clients::cli] Waiting for container c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292 to be ready
[2023-10-06T12:24:44Z TRACE testcontainers::clients::cli] Time since container c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292 was started: Some(64.478µs)
[2023-10-06T12:24:47Z INFO  testcontainers::core::logs] Found message after comparing 177 lines
[2023-10-06T12:24:47Z DEBUG testcontainers::clients::cli] Container c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292 is now ready!
[2023-10-06T12:24:47Z TRACE testcontainers::clients::cli] Fetched container info: ContainerInspectResponse {
        id: Some(
            "c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292",
        ),
        created: Some(
            "2023-10-06T12:24:44.358491622Z",
        ),
        path: Some(
            "docker-entrypoint.sh",
        ),
        args: Some(
            [
                "rabbitmq-server",
            ],
        ),
        state: Some(
            ContainerState {
                status: Some(
                    RUNNING,
                ),
                running: Some(
                    true,
                ),
                paused: Some(
                    false,
                ),
                restarting: Some(
                    false,
                ),
                oom_killed: Some(
                    false,
                ),
                dead: Some(
                    false,
                ),
                pid: Some(
                    138853,
                ),
                exit_code: Some(
                    0,
                ),
                error: Some(
                    "",
                ),
                started_at: Some(
                    "2023-10-06T12:24:44.733606079Z",
                ),
                finished_at: Some(
                    "0001-01-01T00:00:00Z",
                ),
                health: None,
            },
        ),
        image: Some(
            "sha256:1f11da51bb48942a386d6de8fbfd0ca7a6537b653c56db1dced845ad43bc3b46",
        ),
        resolv_conf_path: Some(
            "/var/lib/docker/containers/c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292/resolv.conf",
        ),
        hostname_path: Some(
            "/var/lib/docker/containers/c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292/hostname",
        ),
        hosts_path: Some(
            "/var/lib/docker/containers/c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292/hosts",
        ),
        log_path: Some(
            "/var/lib/docker/containers/c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292/c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292-json.log",
        ),
        name: Some(
            "/modest_cori",
        ),
        restart_count: Some(
            0,
        ),
        driver: Some(
            "overlay2",
        ),
        platform: Some(
            "linux",
        ),
        mount_label: Some(
            "",
        ),
        process_label: Some(
            "",
        ),
        app_armor_profile: Some(
            "docker-default",
        ),
        exec_ids: None,
        host_config: Some(
            HostConfig {
                cpu_shares: Some(
                    0,
                ),
                memory: Some(
                    0,
                ),
                cgroup_parent: Some(
                    "",
                ),
                blkio_weight: Some(
                    0,
                ),
                blkio_weight_device: Some(
                    [],
                ),
                blkio_device_read_bps: Some(
                    [],
                ),
                blkio_device_write_bps: Some(
                    [],
                ),
                blkio_device_read_iops: Some(
                    [],
                ),
                blkio_device_write_iops: Some(
                    [],
                ),
                cpu_period: Some(
                    0,
                ),
                cpu_quota: Some(
                    0,
                ),
                cpu_realtime_period: Some(
                    0,
                ),
                cpu_realtime_runtime: Some(
                    0,
                ),
                cpuset_cpus: Some(
                    "",
                ),
                cpuset_mems: Some(
                    "",
                ),
                devices: Some(
                    [],
                ),
                device_cgroup_rules: None,
                device_requests: None,
                kernel_memory: None,
                kernel_memory_tcp: None,
                memory_reservation: Some(
                    0,
                ),
                memory_swap: Some(
                    0,
                ),
                memory_swappiness: None,
                nano_cpus: Some(
                    0,
                ),
                oom_kill_disable: None,
                init: None,
                pids_limit: None,
                ulimits: None,
                cpu_count: Some(
                    0,
                ),
                cpu_percent: Some(
                    0,
                ),
                io_maximum_iops: Some(
                    0,
                ),
                io_maximum_bandwidth: Some(
                    0,
                ),
                binds: None,
                container_id_file: Some(
                    "",
                ),
                log_config: Some(
                    HostConfigLogConfig {
                        typ: Some(
                            "json-file",
                        ),
                        config: Some(
                            {},
                        ),
                    },
                ),
                network_mode: Some(
                    "default",
                ),
                port_bindings: Some(
                    {},
                ),
                restart_policy: Some(
                    RestartPolicy {
                        name: Some(
                            NO,
                        ),
                        maximum_retry_count: Some(
                            0,
                        ),
                    },
                ),
                auto_remove: Some(
                    false,
                ),
                volume_driver: Some(
                    "",
                ),
                volumes_from: None,
                mounts: None,
                cap_add: None,
                cap_drop: None,
                cgroupns_mode: Some(
                    PRIVATE,
                ),
                dns: Some(
                    [],
                ),
                dns_options: Some(
                    [],
                ),
                dns_search: Some(
                    [],
                ),
                extra_hosts: None,
                group_add: None,
                ipc_mode: Some(
                    "private",
                ),
                cgroup: Some(
                    "",
                ),
                links: None,
                oom_score_adj: Some(
                    0,
                ),
                pid_mode: Some(
                    "",
                ),
                privileged: Some(
                    false,
                ),
                publish_all_ports: Some(
                    true,
                ),
                readonly_rootfs: Some(
                    false,
                ),
                security_opt: None,
                storage_opt: None,
                tmpfs: None,
                uts_mode: Some(
                    "",
                ),
                userns_mode: Some(
                    "",
                ),
                shm_size: Some(
                    67108864,
                ),
                sysctls: None,
                runtime: Some(
                    "runc",
                ),
                console_size: Some(
                    [
                        0,
                        0,
                    ],
                ),
                isolation: Some(
                    EMPTY,
                ),
                masked_paths: Some(
                    [
                        "/proc/asound",
                        "/proc/acpi",
                        "/proc/kcore",
                        "/proc/keys",
                        "/proc/latency_stats",
                        "/proc/timer_list",
                        "/proc/timer_stats",
                        "/proc/sched_debug",
                        "/proc/scsi",
                        "/sys/firmware",
                    ],
                ),
                readonly_paths: Some(
                    [
                        "/proc/bus",
                        "/proc/fs",
                        "/proc/irq",
                        "/proc/sys",
                        "/proc/sysrq-trigger",
                    ],
                ),
            },
        ),
        graph_driver: Some(
            GraphDriverData {
                name: "overlay2",
                data: {
                    "MergedDir": "/var/lib/docker/overlay2/4c23c2dde88dc8bb04e66c09e5471c497bb5a16411752fc51a947dd6bfbfe3b5/merged",
                    "WorkDir": "/var/lib/docker/overlay2/4c23c2dde88dc8bb04e66c09e5471c497bb5a16411752fc51a947dd6bfbfe3b5/work",
                    "LowerDir": "/var/lib/docker/overlay2/4c23c2dde88dc8bb04e66c09e5471c497bb5a16411752fc51a947dd6bfbfe3b5-init/diff:/var/lib/docker/overlay2/53aec778bbbcbdcedd76975d620378b5bd9b9d217be1680b1ba816b29be6b5b7/diff:/var/lib/docker/overlay2/82c86005ebcd713aefcf52e72db750e48cf8854dad85b40f51799e57a33dd824/diff:/var/lib/docker/overlay2/2cf8a95333cdc15b4c977692a4546985c2e59faf91a415aadb06a9dd746d5389/diff:/var/lib/docker/overlay2/d7c40db9e93d4854976426b68e39a7c4906af79a00921344513823e82f8b695a/diff:/var/lib/docker/overlay2/2c8e58e5f1966e734aafee6ad5818bcd8ad9924e4d51e6fdd43dc0486ee8db19/diff:/var/lib/docker/overlay2/a6605493416db76515ad81af02c6722fae2e60e965a3173e8b755604aca4f9ee/diff:/var/lib/docker/overlay2/040303b583f3419da863b040b1bfd823ad731997ae2ed9d3fe8231862ab4f36e/diff:/var/lib/docker/overlay2/89d79f5c33b63c5fa3ef74da4015b3d35024428895504c8b39c318b724a46420/diff:/var/lib/docker/overlay2/e35cd5e7e0edb6343a9bb599b1c87fd4fdf3d13af55ebdf58408003aa55ce8e5/diff:/var/lib/docker/overlay2/7115960f51ad57739cb2dccad5935e112c7820875e1c734e878cbc7272e113df/diff:/var/lib/docker/overlay2/c44aea186f40655209123b063d921645104a4d8789446e21ebb8779f1dec2b3f/diff",
                    "UpperDir": "/var/lib/docker/overlay2/4c23c2dde88dc8bb04e66c09e5471c497bb5a16411752fc51a947dd6bfbfe3b5/diff",
                },
            },
        ),
        size_rw: None,
        size_root_fs: None,
        mounts: Some(
            [
                MountPoint {
                    typ: Some(
                        VOLUME,
                    ),
                    name: Some(
                        "34746a35295f55d50f67ef04fe50db30c503ad775e4e4242220b5ddc8ac427d0",
                    ),
                    source: Some(
                        "/var/lib/docker/volumes/34746a35295f55d50f67ef04fe50db30c503ad775e4e4242220b5ddc8ac427d0/_data",
                    ),
                    destination: Some(
                        "/var/lib/rabbitmq",
                    ),
                    driver: Some(
                        "local",
                    ),
                    mode: Some(
                        "",
                    ),
                    rw: Some(
                        true,
                    ),
                    propagation: Some(
                        "",
                    ),
                },
            ],
        ),
        config: Some(
            ContainerConfig {
                hostname: Some(
                    "c696dd253ddc",
                ),
                domainname: Some(
                    "",
                ),
                user: Some(
                    "",
                ),
                attach_stdin: Some(
                    false,
                ),
                attach_stdout: Some(
                    false,
                ),
                attach_stderr: Some(
                    false,
                ),
                exposed_ports: Some(
                    {
                        "15692/tcp": {},
                        "15691/tcp": {},
                        "25672/tcp": {},
                        "5672/tcp": {},
                        "15672/tcp": {},
                        "4369/tcp": {},
                        "15671/tcp": {},
                        "5671/tcp": {},
                    },
                ),
                tty: Some(
                    false,
                ),
                open_stdin: Some(
                    false,
                ),
                stdin_once: Some(
                    false,
                ),
                env: Some(
                    [
                        "PATH=/opt/rabbitmq/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                        "RABBITMQ_DATA_DIR=/var/lib/rabbitmq",
                        "RABBITMQ_VERSION=3.12.1",
                        "RABBITMQ_PGP_KEY_ID=0x0A9AF2115F4687BD29803A206B73A36E6026DFCA",
                        "RABBITMQ_HOME=/opt/rabbitmq",
                        "HOME=/var/lib/rabbitmq",
                        "LANG=C.UTF-8",
                        "LANGUAGE=C.UTF-8",
                        "LC_ALL=C.UTF-8",
                    ],
                ),
                cmd: Some(
                    [
                        "rabbitmq-server",
                    ],
                ),
                healthcheck: None,
                args_escaped: None,
                image: Some(
                    "rabbitmq:3.12-management",
                ),
                volumes: Some(
                    {
                        "/var/lib/rabbitmq": {},
                    },
                ),
                working_dir: Some(
                    "",
                ),
                entrypoint: Some(
                    [
                        "docker-entrypoint.sh",
                    ],
                ),
                network_disabled: None,
                mac_address: None,
                on_build: None,
                labels: Some(
                    {
                        "org.opencontainers.image.ref.name": "ubuntu",
                        "org.opencontainers.image.version": "22.04",
                    },
                ),
                stop_signal: None,
                stop_timeout: None,
                shell: None,
            },
        ),
        network_settings: Some(
            NetworkSettings {
                bridge: Some(
                    "",
                ),
                sandbox_id: Some(
                    "c1b49e61e7f769be1f0fa6c28e9d4fa4b2e2250fe7433fd7b180eb9dd1bcbe34",
                ),
                hairpin_mode: Some(
                    false,
                ),
                link_local_ipv6_address: Some(
                    "",
                ),
                link_local_ipv6_prefix_len: Some(
                    0,
                ),
                ports: Some(
                    {
                        "4369/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33026",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33026",
                                    ),
                                },
                            ],
                        ),
                        "15692/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33020",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33020",
                                    ),
                                },
                            ],
                        ),
                        "5671/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33025",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33025",
                                    ),
                                },
                            ],
                        ),
                        "5672/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33024",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33024",
                                    ),
                                },
                            ],
                        ),
                        "15672/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33022",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33022",
                                    ),
                                },
                            ],
                        ),
                        "25672/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33019",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33019",
                                    ),
                                },
                            ],
                        ),
                        "15691/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33021",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33021",
                                    ),
                                },
                            ],
                        ),
                        "15671/tcp": Some(
                            [
                                PortBinding {
                                    host_ip: Some(
                                        "<IP_ADDRESS>",
                                    ),
                                    host_port: Some(
                                        "33023",
                                    ),
                                },
                                PortBinding {
                                    host_ip: Some(
                                        "::",
                                    ),
                                    host_port: Some(
                                        "33023",
                                    ),
                                },
                            ],
                        ),
                    },
                ),
                sandbox_key: Some(
                    "/var/run/docker/netns/c1b49e61e7f7",
                ),
                secondary_ip_addresses: None,
                secondary_ipv6_addresses: None,
                endpoint_id: Some(
                    "db2dfc79ae1c4268c05ddc2a526c2785473080d1f1da78d86ed3f8dabbd90f47",
                ),
                gateway: Some(
                    "<IP_ADDRESS>",
                ),
                global_ipv6_address: Some(
                    "",
                ),
                global_ipv6_prefix_len: Some(
                    0,
                ),
                ip_address: Some(
                    "<IP_ADDRESS>",
                ),
                ip_prefix_len: Some(
                    16,
                ),
                ipv6_gateway: Some(
                    "",
                ),
                mac_address: Some(
                    "02:42:ac:11:00:02",
                ),
                networks: Some(
                    {
                        "bridge": EndpointSettings {
                            ipam_config: None,
                            links: None,
                            aliases: None,
                            network_id: Some(
                                "df5cb174a08fbd27a9ef190f3e359c89a55a8e16cbc740d252b15a82507f5f9f",
                            ),
                            endpoint_id: Some(
                                "db2dfc79ae1c4268c05ddc2a526c2785473080d1f1da78d86ed3f8dabbd90f47",
                            ),
                            gateway: Some(
                                "<IP_ADDRESS>",
                            ),
                            ip_address: Some(
                                "<IP_ADDRESS>",
                            ),
                            ip_prefix_len: Some(
                                16,
                            ),
                            ipv6_gateway: Some(
                                "",
                            ),
                            global_ipv6_address: Some(
                                "",
                            ),
                            global_ipv6_prefix_len: Some(
                                0,
                            ),
                            mac_address: Some(
                                "02:42:ac:11:00:02",
                            ),
                            driver_opts: None,
                        },
                    },
                ),
            },
        ),
    }
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 4369 -> 33026
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 4369 -> 33026
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 15692 -> 33020
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 15692 -> 33020
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 5671 -> 33025
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 5671 -> 33025
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 5672 -> 33024
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 5672 -> 33024
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 15672 -> 33022
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 15672 -> 33022
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 25672 -> 33019
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 25672 -> 33019
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 15691 -> 33021
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 15691 -> 33021
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv4 port mapping: 15671 -> 33023
[2023-10-06T12:24:47Z DEBUG testcontainers::core::ports] Registering IPv6 port mapping: 15671 -> 33023
Connect with rabbit
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE polling::epoll] add: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: false, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] add: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new: epoll_fd=9, event_fd=10, timer_fd=Some(11)
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: completed
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on()
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 75 us
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE polling::epoll] add: epoll_fd=9, fd=12, ev=Event { key: 0, readable: false, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 100 us
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 250 us
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=12, ev=Event { key: 0, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 500 us
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 1 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: stops hogging the reactor
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: waiting on I/O
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=12, ev=Event { key: 0, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 1 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=12, ev=Event { key: 0, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling] Poller::notify()
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] notify: epoll_fd=9, event_fd=10
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 75 us
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::notify()
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling::epoll] notify: epoll_fd=9, event_fd=10
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 1 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=12, ev=Event { key: 0, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 100 us
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling] Poller::notify()
[2023-10-06T12:24:47Z TRACE polling::epoll] notify: epoll_fd=9, event_fd=10
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, None)
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=None
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 250 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 500 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 750 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 1000 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 2500 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 5000 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 10000 us
[2023-10-06T12:24:47Z TRACE polling] Poller::notify()
[2023-10-06T12:24:47Z TRACE polling::epoll] notify: epoll_fd=9, event_fd=10
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: notified
[2023-10-06T12:24:47Z TRACE polling] Poller::notify()
[2023-10-06T12:24:47Z TRACE polling::epoll] notify: epoll_fd=9, event_fd=10
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, Some(29.999890742s))
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=Some(29.999890742s)
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 0 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, Some(29.999690794s))
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=Some(29.999690794s)
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 1 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=12, ev=Event { key: 0, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, Some(29.999271451s))
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=Some(29.999271451s)
Channel state during setup:Connected
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z DEBUG testcontainers::core::container] Deleting docker container c696dd253ddc7f21e61b77eb71a1a8e8d4321869ae1c0dbb65ab598d219a4292
[2023-10-06T12:24:47Z TRACE polling::epoll] new events: epoll_fd=9, res=1
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=10, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::reactor] react: 1 ready wakers
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: sleeping for 50 us
[2023-10-06T12:24:47Z TRACE polling::epoll] remove: epoll_fd=9, fd=12
[2023-10-06T12:24:47Z TRACE async_io::driver] main_loop: waiting on I/O
[2023-10-06T12:24:47Z TRACE async_io::reactor] process_timers: 0 ready wakers
[2023-10-06T12:24:47Z TRACE polling] Poller::wait(_, Some(29.967599318s))
[2023-10-06T12:24:47Z TRACE polling::epoll] wait: epoll_fd=9, timeout=Some(29.967599318s)
[2023-10-06T12:24:47Z TRACE polling::epoll] modify: epoll_fd=9, fd=11, ev=Event { key:<PHONE_NUMBER>3709551615, readable: true, writable: false }
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: notified
[2023-10-06T12:24:47Z TRACE async_io::driver] block_on: sleep until notification
Channel state after setup:Error
thread 'main' panicked at 'declare exchange: InvalidChannelState(Error)', src/main.rs:25:10
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Lapin 2.0 and later are using tracing now for logging, so they don't appear here it seems with env_logger

ah, sure, lemme add that

Goddammit, the container gets scrammed when it goes out of scope, sorry for wasting your time


Fresh D7 install, no response in browser

Using DVM 4.8.0, Config set to install a fresh D7 site.
Provisioning seems to finish without errors, but when i go to access the site via the IP (or vhost name, which is in the hosts file), I get a blank page, with the message "<IP_ADDRESS> didn’t send any data.
ERR_EMPTY_RESPONSE"
Restarted nginx on the VM, no improvement.

Inside the VM (vagrant ssh) if you run curl http://localhost/ does it give anything? Also, if you hit the dashboard URL, does the dashboard show up? If not, it's likely a host networking issue. What's in your /etc/hosts file? What OS are you using? Any changes to your Drupal VM configuration?

@paulcanning I've noticed chrome can be funny like this, so when this happens, please try using an alternative browser to help the diagnosis.

Going to close this for no response for now. Please let me know if this is still an issue.


1.5.8 release

Bug fixes. Let's aim for Monday, 4/27.
We're removing 10.10 wheel tags to prevent, if not fix, #262 (see also https://github.com/sgillies/frs-wheel-builds/issues/2).

Delayed by #262. If I build Fiona and Rasterio wheels with a no-GEOS GDAL (they don't need GEOS support GDAL/OGR) we can avoid conflicts with Shapely, but similar conflicts with osgeo modules and PyQGIS would continue. I'd like a put a few more hours into figuring what's up with Shapely.

Also, I'm checking that PRs I merged this weekend landed in the right branch (maint, not master!)

I bumped #267 to the 1.6 milestone, cherry picked commits from #269 for maint. Will make a release when Travis gives me the green light.

Thanks, everybody. Especially you @snorfalorpagus! I'm feeling relieved about closing #262.


Add pgVector in the building instructions for the PostgreSQL Docker image

Feature Request
Include the pgVector component with the Docker build instructions. This would provide the use with a fully functional PostgreSQL Vector DB, ready to be used inside LangFlow.
Motivation
I am not a programmer, neither I do have proper knowledge of SQL, but I liked to play with some RAG ideas and LangFlow seems perfect.
So, after installing the Docker version for development of LangFlow, I noticed that the PostgreSQL server is missing the pgVector component, or at least that is what I understood from the error messages.
Perhaps, it would be useful if the pgVector could be included in the Docker container, so having the user to just activate it on the SQL database. Anyway, I might be wrong, so in that case please forgive me.
Your Contribution
After looking into the repository and searching around, with the help of AI (of course!), I found that the Docker instructions for the PostgreSQL server are defined inside the file \docker\cdk.Dockerfile (hope it's correct), and these might be the instructions to include pgVector:
FROM --platform=linux/amd64 python:3.10-slim

WORKDIR /app

# Install Poetry and build dependencies
RUN apt-get update && apt-get install -y \
    gcc \
    g++ \
    curl \
    build-essential \
    git \
    postgresql-server-dev-all \
    && rm -rf /var/lib/apt/lists/*

# Install Poetry
RUN curl -sSL https://install.python-poetry.org | python3 -

# Add Poetry to PATH
ENV PATH="${PATH}:/root/.local/bin"

# Copy the pyproject.toml and poetry.lock files
COPY poetry.lock pyproject.toml ./

# Copy the rest of the application codes
COPY ./ ./

# Install dependencies
RUN poetry config virtualenvs.create false && poetry install --no-interaction --no-ansi

# Install pgvector extension
RUN git clone https://github.com/pgvector/pgvector.git /tmp/pgvector && \
    cd /tmp/pgvector && \
    make && \
    make install && \
    rm -rf /tmp/pgvector

# Install additional dependencies
RUN poetry add botocore
RUN poetry add pymysql

# Command to run your application
CMD ["sh", "./container-cmd-cdk.sh"]

I know, it doesn't work, but I also advised you that I am not an educated programmer. I shouldn't have added the code, I apologize. Let's consider just the feature request main content and forget the rest. This ticket can be removed if useless.

Finally, I found the solution to my problem, which was to simply to change the image in the \docker_example\docker-compose.yml with one that has already pgVector installed (eg. pgvector/pgvector:pg16), rebuild the container, then activate the extension with
docker exec -it [docker container name] psql -U langflow -c "CREATE EXTENSION vector"
The PostgreSQL Server Connection String I used in Langflow is postgresql://langflow:langflow@postgres:5432/langflow
After that I have been able to use pgVector inside Langflow.  Having solved it I am closing this bug report.


Classic Bug: GSE2 GUI makes tradeskill window items Center justified

In WoW Classic when using the latest GSE2, after I open the GSE2 GUI, if I use a tradeskill window, the highlighted and mouseover tradeskill names become center justified. This only happens after I open the GSE2 GUI. Something in the GUI is affecting the tradeskill window titles accidentally.

Mate I need to know exactly which “latest” GSE build you are using.  GSE depends on Ace3 for its GUI and it will be something in there that I would need them to fix. Also are there any other mods that depend on Ace3?
TimothyLuke

On 1 Oct 2020, at 1:17 pm, Jake Wilson<EMAIL_ADDRESS>wrote:

In WoW Classic when using the latest GSE2, after I open the GSE2 GUI, if I use a tradeskill window, the highlighted and mouseover tradeskill names become center justified. This only happens after I open the GSE2 GUI. Something in the GUI is affecting the tradeskill window titles accidentally.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

It looks like version 2.5.11.
Yeah I see it uses Ace3. I use lots of addons that use Ace3 libraries. I did disable all addons except GSE2 and the bug was still occurring. I haven't seen this bug before installing in GSE2.
Regarding Ace3 fixing things, Ace3 libraries haven't really been actively updated in several years, right?
Anyways, really cool addon. I just recently discovered this and it works great. I don't understand how you are able to sequence together multiple macros. Pretty awesome stuff.

Ace3 is always being updated - atm it’s in flux for Shadowlands changes.  If you can give it a week or so for their updates to hit prepatch then have a look at this?
TimothyLuke

On 1 Oct 2020, at 4:56 pm, Jake Wilson<EMAIL_ADDRESS>wrote:

It looks like version 2.5.11.
Yeah I see it uses Ace3. I use lots of addons that use Ace3 libraries. I did disable all addons except GSE2 and the bug was still occurring. I haven't seen this bug before installing in GSE2.
Regarding Ace3 fixing things, Ace3 libraries haven't really been actively updated in several years, right?
Anyways, really cool addon. I just recently discovered this and it works great. I don't understand how you are able to sequence together multiple macros. Pretty awesome stuff.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Interesting. Where are they actively updated? Are there github repos or something? The wowace.com site seems like it's just been abandoned.

They are active on IRC and the SVN keeps getting commits
TimothyLuke

On 1 Oct 2020, at 11:54 pm, Jake Wilson<EMAIL_ADDRESS>wrote:

Interesting. Where are they actively updated? Are there github repos or something? The wowace.com site seems like it's just been abandoned.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

SVN..... oof!

To their credit they started this in 2004 and svn was cvs done well, while Linus was still dreaming of a thing like git.

On 2 Oct 2020, at 3:36 pm, Jake Wilson<EMAIL_ADDRESS>wrote:

SVN..... oof!
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Yeah I hear ya. I just figured they would transition to something more modern. Github. Pull Requests. etc.

This sounds like it might be related to #199

Im looking at this - it does look like if anything its underlying Library code that is making the change.
Can you do a test for me:

open the game with just GSE installed.
Open tradeskills - are they misaligned?
if not - close tradeskills and open GSE then reopen tradeskills - are they misaligned?

#199 changed the Font Justification and then set it back how it was at the end.  I am curious if its a library setting this as a default or if the opening of the viewer causes this.

Okay I just tested this:
All addons disabled except:
GSE2: Gnome Sequencer Enhanced
GSE2: GUI
GSE2: LDB
First, opening any tradeskill window like Engineering: Titles are normal. NOT misaligned.
Next open up GSE2 gui (typing /gs) while the tradeskill window is still open: Titles are now misaligned. CENTER justified.

Next question - Do you have the GSE mini map icon enabled? I’m assuming not but just trying to narrow my focus a bit further.
TimothyLuke

On 8 Oct 2020, at 4:56 am, Jake Wilson<EMAIL_ADDRESS>wrote:

Okay I just tested this:
All addons disabled except:
GSE2: Gnome Sequencer Enhanced
GSE2: GUI
GSE2: LDB
First, opening any tradeskill window like Engineering: Titles are normal. NOT misaligned.
Next open up GSE2 gui (typing /gs) while the tradeskill window is still open: Titles are now misaligned. CENTER justified.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

I have the minimap icon hidden as I'm access GSE via a LibDataBroker display (Bazooka). But that does bring up something else that may help you. If I right click the LDB icon it brings up the Sequence Debugger. This does not affect the title justification of tradeskills. Also opening the options window from there does not affect the title justification either.
But anyways, toggling the display of the minimap icon does not seem to have an affect on the title justification.

Thanks - narrows it down to the viewer menu screen.  Annoying part is that I don’t change the default horizontal justification anywhere and can’t replicate it locally.  Will keep digging!
TimothyLuke

On 8 Oct 2020, at 6:17 am, Jake Wilson<EMAIL_ADDRESS>wrote:

I have the minimap icon hidden as I'm access GSE via a LibDataBroker display (Bazooka). But that does bring up something else that may help you. If I right click the LDB icon it brings up the Sequence Debugger. This does not affect the title justification of tradeskills. Also opening the options window from there does not affect the title justification either.
But anyways, toggling the display of the minimap icon does not seem to have an affect on the title justification.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

Yeah I didn't see anything in the code that was doing it. It's strange. I think it's some sort of template inheritance thing or something? Or FontString inheritance maybe.

There is an alpha for Classic where I have tried to capture the existing horizontal justification like I do with the vertical one.  Does that do anything?
TimothyLuke

On 8 Oct 2020, at 7:44 am, Jake Wilson<EMAIL_ADDRESS>wrote:

Yeah I didn't see anything in the code that was doing it. It's strange. I think it's some sort of template inheritance thing or something? Or FontString inheritance maybe.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

I got this to happen however I have commended every line and cant figure out where it is happening.  In other news though I did manage to fix #262 the frame resizing bug.

Running the latest build this seems to have been fixed.

Odd. Did you figure out what caused it?

Not specifically.  It was either in one of the underlying libraries that GSE depends on. Most likely LibQTip or Ace3


chore(docs): Add missing new line in Custom resources docs

Issue #, if available:
Description of changes:
Just a quick fix of typo in docs. Without now line markdown cannot be parse correctly. Currently the page title on   https://awslabs.github.io/aws-lambda-powertools-java/utilities/custom_resources/ is displayed as: title: Custom Resources description: Utility
Checklist

[ ] Meet tenets criteria
[ ] Update tests
[x] Update docs
[ ] PR title follows conventional commit semantics

Breaking change checklist

RFC issue #:

[ ] Migration process documented
[ ] Implement warnings (if it can live side by side)

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Hey @pankajagrawal16
No worries, it took just a minute to fix it. Happy to see that there are more people interested in making this project better :)


Vanara update causes File browser icons are upside-down.

Describe the bug
The bug caused by 5a053f85ec5654c1e25f1c273b5ae02bf6671278
To Reproduce
Steps to reproduce the behavior:

Go to any folder contains files.

Screenshots

Desktop (please complete the following information):

OS Version: [e.g. Windows 10 20H2 19042.746]
App version: [v1.1.6]

@dahall was this expected? With 3.3.0 we were getting all the images upright (overlays, files and context-menu icons and thumbnails). With 3.3.2 icons and thumbnails appear consistently upside-down :)

@dahall was this expected? With 3.3.0 we were getting all the images upright (overlays, files and context-menu icons and thumbnails). With 3.3.2 icons and thumbnails appear consistently upside-down :)

@gave92 Can you tell me what code is involved so I can see what changed?

@gave92 Can you tell me what code is involved so I can see what changed?

Thanks this was the code we were using to get a thumbnail:
using var shellItem = new Vanara.Windows.Shell.ShellItem(path);
if (shellItem.IShellItem is Shell32.IShellItemImageFactory fctry)
{
	var flags = Shell32.SIIGBF.SIIGBF_BIGGERSIZEOK;
	if (thumbnailSize < 80) flags |= Shell32.SIIGBF.SIIGBF_ICONONLY;
	var hres = fctry.GetImage(new SIZE(thumbnailSize, thumbnailSize), flags, out var hbitmap);
	if (hres == HRESULT.S_OK)
	{
		using var image = GetBitmapFromHBitmap(hbitmap);
		if (image != null)
		{
			byte[] bitmapData = (byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));
			iconStr = Convert.ToBase64String(bitmapData, 0, bitmapData.Length);
		}
	}
	//Marshal.ReleaseComObject(fctry);
}

private static Bitmap GetBitmapFromHBitmap(HBITMAP hBitmap)
{
	try
	{
		Bitmap bmp = hBitmap.ToBitmap();
		if (Image.GetPixelFormatSize(bmp.PixelFormat) < 32)
		{
			return bmp;
		}
		if (IsAlphaBitmap(bmp, out var bmpData))
		{
			return GetAlphaBitmapFromBitmapData(bmpData);
		}
		return bmp;
	}
	catch
	{
		return null;
	}
}

private static Bitmap GetAlphaBitmapFromBitmapData(BitmapData bmpData)
{
	return new Bitmap(
			bmpData.Width,
			bmpData.Height,
			bmpData.Stride,
			PixelFormat.Format32bppArgb,
			bmpData.Scan0);
}

Thanks this was the code we were using to get a thumbnail:
using var shellItem = new Vanara.Windows.Shell.ShellItem(path);
if (shellItem.IShellItem is Shell32.IShellItemImageFactory fctry)
{
	var flags = Shell32.SIIGBF.SIIGBF_BIGGERSIZEOK;
	if (thumbnailSize < 80) flags |= Shell32.SIIGBF.SIIGBF_ICONONLY;
	var hres = fctry.GetImage(new SIZE(thumbnailSize, thumbnailSize), flags, out var hbitmap);
	if (hres == HRESULT.S_OK)
	{
		using var image = GetBitmapFromHBitmap(hbitmap);
		if (image != null)
		{
			byte[] bitmapData = (byte[])new ImageConverter().ConvertTo(image, typeof(byte[]));
			iconStr = Convert.ToBase64String(bitmapData, 0, bitmapData.Length);
		}
	}
	//Marshal.ReleaseComObject(fctry);
}

private static Bitmap GetBitmapFromHBitmap(HBITMAP hBitmap)
{
	try
	{
		Bitmap bmp = hBitmap.ToBitmap();
		if (Image.GetPixelFormatSize(bmp.PixelFormat) < 32)
		{
			return bmp;
		}
		if (IsAlphaBitmap(bmp, out var bmpData))
		{
			return GetAlphaBitmapFromBitmapData(bmpData);
		}
		return bmp;
	}
	catch
	{
		return null;
	}
}

private static Bitmap GetAlphaBitmapFromBitmapData(BitmapData bmpData)
{
	return new Bitmap(
			bmpData.Width,
			bmpData.Height,
			bmpData.Stride,
			PixelFormat.Format32bppArgb,
			bmpData.Scan0);
}

Update, I tried with the following: this seems to be returning upsidedown icons but upright thumbnails:
using var shellItem = new ShellItem(path);
var shellImages = new ShellItemImages(shellItem);
var flags = ShellItemGetImageOptions.BiggerSizeOk;
if (thumbnailSize < 80) flags |= ShellItemGetImageOptions.IconOnly;
using var image = await shellImages.GetImageAsync(new Size(thumbnailSize, thumbnailSize), flags);
if (image != null)
{
	using var bitmap = image.ToBitmap();
	byte[] bitmapData = (byte[])new ImageConverter().ConvertTo(bitmap, typeof(byte[]));
	iconStr = Convert.ToBase64String(bitmapData, 0, bitmapData.Length);
}

Update, I tried with the following: this seems to be returning upsidedown icons but upright thumbnails:
using var shellItem = new ShellItem(path);
var shellImages = new ShellItemImages(shellItem);
var flags = ShellItemGetImageOptions.BiggerSizeOk;
if (thumbnailSize < 80) flags |= ShellItemGetImageOptions.IconOnly;
using var image = await shellImages.GetImageAsync(new Size(thumbnailSize, thumbnailSize), flags);
if (image != null)
{
	using var bitmap = image.ToBitmap();
	byte[] bitmapData = (byte[])new ImageConverter().ConvertTo(bitmap, typeof(byte[]));
	iconStr = Convert.ToBase64String(bitmapData, 0, bitmapData.Length);
}

This issue should be fixed with #3279.

This issue should be fixed with #3279.

Thanks @yaichenbaum. It appears there is a problem in the HBITMAP.ToBitmap extension method. I'll look into it.

Thanks @yaichenbaum. It appears there is a problem in the HBITMAP.ToBitmap extension method. I'll look into it.


feat: Automated Code Formatting

Feature Description:
In our current code review process, there have been instances where developers focus on formatting issues. This not only diverts attention from more critical code logic and structure but also reduces the efficiency of the review process. To eliminate such reviews and maintain code consistency, automated code formatting is imperative.
Additional Information:

#13


@@![[FREE@STREAMS]]### Mr Olympia 2024 Live Stream FIGHT Broadcast 11 OCT 2024

The Mr. Olympia 2024 returns to the global consciousness for its 2024 edition.
Mr Olympia sees some of the largest men in the world face off their muscles on stage and before audiences worldwide to become crowned as the best bodybuilder in the world for that year, but what criteria do they need to meet to qualify?
The bodybuilding star pipped former champion Hadi Choopan from winning a second successive crown while Nigerian-born Brit Samson Dauda took home the bronze medal.
As usual, there'll be a variety of different challenges for the contestants to navigate their way around.
Defending champion Derek Lunsford leads a crop of bodybuilders into competition this weekend at the 2024 Mr. Olympia event in Las Vegas.
The competition assesses a range of different qualities in men and women such as muscle mass, definition, aesthetics and presentations, which allows for a variety of unique body types to compete.
The 31-year-old faces a crop of talented competitors, including past champions, an all-time great and several young stars looking to cement their status as the future of the sport.
Who is qualified for the event, when does it take place and who should you keep an eye on throughout the contest?
Find out with this preview of the bodybuilding extravaganza.
If successful, the top three finishers in the Mr Olympia Men's Open will qualify for the contest again the following year, after changes to the rules in October 2023 to make it even harder to stay on top of the competition.
Previously, the top five Men's Open athletes would be given the right to enter the Mr Olympia the next year but that was changed by the contest owner to, "add some additional star power to the various regional events held worldwide."
It's easy to see why people feel so fervent about bodybuilding's greatest competition. It's a spectacle unlike any other, revolving largely around the aesthetics of muscle mass.
Ronnie Coleman, Arnold Schwarzenegger and Phil Heath make up some of the most successful performers in Mr. Olympia, each taking home a handful (or more) of titles in the famous tournament.
Who will win out this time around? The Sporting News is tracking results from each event, including the Mr. and Ms. Olympia competitions.
And other events such as the Men's 212 Bodybuilding, Classic Physique, Men's Physique, Women's Bodybuilding, Bikini, Fitness and Wheelchair will all be competed for.
With Nick Walker unexpectedly dropping out of this year's competition late, the field has become even less predictable than it already was.
Lunsford is the defending champion and Choopan had a wonderful competition two years ago. Either could win another Mr. Olympia title in Las Vegas on Saturday night.
Brandon Curry won the event in 2019 and has finished in second place twice (2020 and 2021) and fourth place on two occasions (2022 and 2023).
Obiekea, known more popularly as Andrew Jacked, lives up to the moniker and Dauda has been chasing bodybuilding's premier title for some time.
Any of those five competitors, and probably two or three others, could realistically win the event.
Firstly, an athlete must meet the conditions outlined by the International Fitness and Bodybuilding Federation (IFBB) and Professional League. The rules can be found on the board's website.
If a person is a match for the IFBB regulations and Professional League regulations, then to qualify for the Mr Olympia (Men's Open), a male must perform eight mandatory poses within 60 seconds.
They must also wear trunks of a solid non-distracting color which must be made from cloth and are clean. Metallic materials are banned and so is padding. If a competitor fails to do this, the head judge can disqualify them.
But one thing that hasn't changed is how fans can watch each spectacle as it unfolds.

xcvxcvxc

BSHGSUYW
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
▶
➤►
▶
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
▶
➤►
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
➤►
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
➤►
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
➤►
➤►
▶
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
➤►
▶
➤►
➤►
▶
➤►
➤►
▶
➤►
▶
➤►
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
📺📱 LIVE STREAM MR. OLYMPIA TV CHANNEL TODAY 10 OCT 2024
▶
➤►

▶
SWDW


DEP-919 Change delete from storage to use newer setting.

See Jira ticket description.

If I understand the issue correctly this change should only be applied if Mendix version > 7.19 is used. Else stick with old behavior.

Good catch,


Accept pathlib.Path in upload_file

Fix https://github.com/huggingface/huggingface_hub/issues/1246.
This PR adds support of pathlib.Path type for path_or_fileobj in upload_file method (also in CommitOperationAdd). Add a regression test.

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


--include-all-sources option for Coverage in Karma.conf

Is there a way to make use of --include-all-sources option of Istanbul? Currently all files with 0% coverage are skipped.

This module only reports on what was instrumented by the babel plugin / istanbul instrumenter loader. As long as the source files are included somewhere in your bundle via require / import they should appear in the coverage report.

I know this was closed but I'm also running into this issue. The documentation says that this package allows us to pass arguments to the istanbul api using the instrumentation property. Why wouldn't something like this work with the config?
{
      // `instrumentation` is used to configure Istanbul API package.
      instrumentation: {
        'include-all-sources': true
      }
}


Checkpoints aren't shared

Would be nice to have a node "WebuiCheckpointLoader" that can use the checkpoint that's already in memory.

We have the node but it does not reuse the memory. Pickle not happy because it tries to unpickle the model in a different environment. It also is very unhappy about the circular dependencies in the webui (sd_hijack). Needs more investigation.

Maybe a workaround for this could be to just make a button to unload the webui models and/or the comfyui models.

that's not the same feature, and would be more of a hindrance than anything in my opinion, as it can take a while to load a model

I agree it's not the best, but it would allow to use the extension on systems with less resources. not a peefect solution, just a workaround since there does not seem to be a good solution so far. There's a lazy-loading PR in the a1111 webui repo, I was thinking maybe there's a way to revert the state back to lazy-loaded if you want to save some memory.

I think this should be labeled as another feature, then, as this feature is meant to "share" checkpoints for convenience as well.
I can see how it would be useful for some users, and it would probably be easier to do, and I think it's a great idea.
Being able to share the models would remove the need for this extra feature, though, so maybe it would be better to focus on that directly instead.

Time is money. Let's at least have some way of mitigating this, and when we have a solution here we can remove the code if it is not needed anymore.

Feel free to make a pr, I'll review it. As I said, I think this is not exactly the same feature, so I wouldn't close this issue even if you can disable models

see this video, link shell extension, windows only thought, although in linux you could use a shell links also.
https://www.youtube.com/watch?v=V4oEY4Y44Ws

If I understand correctly, this is basically a simlink, but the problem is much deeper. If you want to use both the webui and ComfyUI at the same time, it essentially costs twice as much memory (broadly speaking). The idea is to use the same model in ram and vram memory, not juste hard drive memory (which, as you mentionned, is a non-issue).

The codebase and libraries for both types of models are very similar. In fact, the model objects that ComfyUI needs seem to be a subset of what the webui needs. Thing is, there are some small differences that make it tricky to get them working correctly in sinc.

This, but also while trying to do this we realized this would not work because pickle does not want to work with the recursive imports of the webui (this code base needs a serious refactor, but it would possibly break a lot of extensions so we can't really explore this path I think). Then, when we try to use the same process for both, well comfyui ends up with a completely different ldm module (the webui one) and so some discrepancies in the implementation details make the code raise errors a little bit everywhere.
We need to be able to reuse the process while replacing global package dependencies like sys and ldm with the right values, but only in the comfyui thread. So far we achieved this by using a different process for comfyui, making it possible to override the important values (namely sys.args and add the comfyui directory to sys.path) but I am not sure there is a way to do this within the same process (whether in a different thread or not).
One solution could be to clone comfyui and patch the code to not depend directly on these globals but instead depend on proxy variables that can be modified as needed without also modifying these values for the webui.

you could add settings in the auto1111 settings tab that allows us to set the directories ourselves rather than hardcoded paths in the .py

If I recall correctly, there's a yaml config file that comfyui loads on startup to check where the models are. Is there a reason to have an additional UI element for models location rather than setting up this yaml file?

encapsulation of the project, Im coming to comfyui with no prior knowledge of the yaml set up...meaning all I know is this extension version where there is no mention of a yaml file that could be set up.
I ended up doing symlinks to all my model folders, so personally it wont effect me in the least, I simply made the suggestion as it would be cleaner to treat this extension as a standalone of the original imo.
I don't bother reading a single thing about auto1111 as a vladauto1111 user, I have a feeling comfy extension users wont be going to the original to read a thing either.

Ah, I think you're right, it would be nice to have a models location setting in the settings, as comfyui doesn't allow to select the models through the command line (to my knowledge). I'll create an issue for selecting the models in the settings.
This would mainly involve setting up the yaml file automatically in the linked comfyui directory, so probably very easy to do.

One way to tackle this would be to serialize and unload the currently loaded sd model in the webui. This would make the extension work with the in-memory merge feature of supermerger, at the cost of speed.

Wait but since we are using a thread ATM, maybe we can just share the state dict directly?

I thought that's what we tried

I don't think we tried sending the entire state dict. we tried sending the loaded model itself

We implemented the Webui Checkpoint Loader node. For now, the node is duplicating the data in-memory, but at least people can use it directly.


Prep for move to community repository

This creates some simple API validation (which could be enhanced more) and changes ACM specific usage to open cluster management.
I have not changed references to stolostron yet.  I'm thinking that will be a PR to do after the move to avoid breaking links now. Any feedback or PR updates are welcome.
Refs:

https://github.com/stolostron/backlog/issues/25068

Signed-off-by: Gus Parvin<EMAIL_ADDRESS>

I'm not so sure we should make these changes here midstream since we may want to preserve Red Hat references here in stolostron. It seems we should migrate the repo, fork it back, and then make the changes upstream to reflect it being upstream?

The changes for upstream overall look good, and that schema validator is a really nice addition! I might move it to a more generic "builds" or "scripts" folder so that we can put other scripts there in the future, though.

/hold

@gparvin could you please squash your commits?

Nit: I'm still not convinced the ACM references should be updated to OCM in this PR?

@dhaiducek I thought I had removed those references.  As you pointed out there were some more which I have now removed.  Thanks!

I didn't think about the environment variable already being available! Does removing the new export and using GITHUB_REPOSITORY_OWNER instead of GITHUB_ORG work?

@dhaiducek I changed it as requested but take a look and see if it's ok now.

/unhold


Search box in menu bar is too small on indicator create and update pages

On the indicator_create and indicator_update pages, the search box appears shortened when compared to the home page.
On the homepage:

On the indicator_create and indicator_update pages:

Some templates import the old select2.min.css file. CSS for select2 is now imported directly into the master stylesheet, which is loaded in base.html. I removed references to select2.min.css from the indicators and workflow apps.

QA note:  The update for this ticket has changed the way we import the select2 library.  In order to ensure that nothing unexpected has happened, the list of pages that need to be tested include the ones below.  Dropdown menus on these pages should be work as expected.

collected data form
indicator create
indicator update
project complete form
project agreement form
stakeholder form

Validated. No issues seen in using any of these pages.


Naming inconsistency in raw data parser scripts

Some of them are called "x_to_json", and some (more recently) are called "x_to_dict". I do think it's more correct to use the term "dict" rather than "json" because the scripts convert objects from/to raw data, not specifically JSON data. So I guess rename the scripts to not use the term "json".

There's now a third contestant for parser class names: "x_to_raw".
:skull:
I guess I'll have to keep experimenting until I find something that feels right...
Does any idea come to your mind, person reading this..?

I like x_to_raw for now, and we can also use x_to_raw_array or x_to_raw_dict to be more specific.
I renamed files and classes that shouldn't use the term "JSON", so I'm closing the issue for now


Getting "ImportError: Japanese support requires SudachiPy distributed with ja language mode" after installing sudachipy and dictionary

I am running Anaconda(2020.02) with python 3.7.6 on Windows 10. I have the following lines of code to load Ginza -
import spacy
nlp = spacy.load('ja_ginza')
I have also downloaded sudachipy and sudachidict_core as discussed in the issue https://github.com/megagonlabs/ginza/issues/71
However, I still get the "Japanese support requires SudachiPy distributed with ja language model".
Please do let me know if I am missing an import/install. Below is the full stacktrace
ImportError                               Traceback (most recent call last)
~\Anaconda3\lib\site-packages\ginza\sudachipy_tokenizer.py in try_import_sudachipy_dictionary()
35     try:
---> 36         from sudachipy import dictionary
37         return dictionary
~\Anaconda3\lib\site-packages\sudachipy\dictionary.py in
15 from . import config
---> 16 from . import dictionarylib
17 from .dictionarylib.binarydictionary import BinaryDictionary
~\Anaconda3\lib\site-packages\sudachipy\dictionarylib_init_.py in
18 from . import lexiconset
---> 19 from . import doublearraylexicon
20 from . import dictionaryheader
~\Anaconda3\lib\site-packages\sudachipy\dictionarylib\doublearraylexicon.py in
16
---> 17 from dartsclone import DoubleArray
18
~\Anaconda3\lib\site-packages\dartsclone_init_.py in
----> 1 from dartsclone._dartsclone import DoubleArray
2
3 all = [
ImportError: DLL load failed: The specified module could not be found.
During handling of the above exception, another exception occurred:
ImportError                               Traceback (most recent call last)
 in
----> 1 nlp = spacy.load('ja_ginza')
~\Anaconda3\lib\site-packages\spacy_init_.py in load(name, **overrides)
28     if depr_path not in (True, False, None):
29         deprecation_warning(Warnings.W001.format(path=depr_path))
---> 30     return util.load_model(name, **overrides)
31
32
~\Anaconda3\lib\site-packages\spacy\util.py in load_model(name, **overrides)
162             return load_model_from_link(name, **overrides)
163         if is_package(name):  # installed as package
--> 164             return load_model_from_package(name, **overrides)
165         if Path(name).exists():  # path to model data directory
166             return load_model_from_path(Path(name), **overrides)
~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_package(name, **overrides)
183     """Load a model from an installed package."""
184     cls = importlib.import_module(name)
--> 185     return cls.load(**overrides)
186
187
~\Anaconda3\lib\site-packages\ja_ginza_init_.py in load(**overrides)
10
11 def load(**overrides):
---> 12     return load_model_from_init_py(file, **overrides)
~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_init_py(init_file, **overrides)
226     if not model_path.exists():
227         raise IOError(Errors.E052.format(path=path2str(data_path)))
--> 228     return load_model_from_path(data_path, meta, **overrides)
229
230
~\Anaconda3\lib\site-packages\spacy\util.py in load_model_from_path(model_path, meta, **overrides)
195     lang = meta.get("lang_factory", meta["lang"])
196     cls = get_lang_class(lang)
--> 197     nlp = cls(meta=meta, **overrides)
198     pipeline = meta.get("pipeline", [])
199     factories = meta.get("factories", {})
~\Anaconda3\lib\site-packages\spacy\language.py in init(self, vocab, make_doc, max_length, meta, **kwargs)
175         if make_doc is True:
176             factory = self.Defaults.create_tokenizer
--> 177             make_doc = factory(self, **meta.get("tokenizer", {}))
178         self.tokenizer = make_doc
179         self.pipeline = []
~\Anaconda3\lib\site-packages\ginza_init_.py in create_tokenizer(cls, nlp)
48     @classmethod
49     def create_tokenizer(cls, nlp=None):
---> 50         return SudachipyTokenizer(nlp)
51
52     @classmethod
~\Anaconda3\lib\site-packages\ginza\sudachipy_tokenizer.py in init(self, nlp, mode, config_path)
95         self.nlp = nlp
96         self.vocab = nlp.vocab if nlp is not None else Vocab()
---> 97         dictionary = try_import_sudachipy_dictionary()
98
99         split_mode = sudachipy_split_mode(mode)
~\Anaconda3\lib\site-packages\ginza\sudachipy_tokenizer.py in try_import_sudachipy_dictionary()
38     except ImportError:
39         raise ImportError(
---> 40             "Japanese support requires SudachiPy distributed with ja language model"
41         )
42
ImportError: Japanese support requires SudachiPy distributed with ja language model
Thanks!

@pawar30 You should not install SudachiPy for GiNZA because it is installed along with GiNZA from the special package, after GiNZA v3.1.0.
https://github.com/megagonlabs/ginza#ginza-310
https://pypi.org/project/ja-ginza-dict/
Could you try $ pip install -U ginza again?

Thank you for the suggestion @hiroshi-matsuda-rit . I tried this and it did not work(I also uninstalled sudachidict_core and uninstalled and re-installed Ginza).
From what I see, it looks to be a problem with dartsclone package.
ImportError                               Traceback (most recent call last)
~\Anaconda3\lib\site-packages\ginza\sudachipy_tokenizer.py in try_import_sudachipy_dictionary()
35     try:
---> 36         from sudachipy import dictionary
37         return dictionary
~\Anaconda3\lib\site-packages\sudachipy\dictionary.py in
15 from . import config
---> 16 from . import dictionarylib
17 from .dictionarylib.binarydictionary import BinaryDictionary
~\Anaconda3\lib\site-packages\sudachipy\dictionarylib_init_.py in
18 from . import lexiconset
---> 19 from . import doublearraylexicon
20 from . import dictionaryheader
~\Anaconda3\lib\site-packages\sudachipy\dictionarylib\doublearraylexicon.py in
16
---> 17 from dartsclone import DoubleArray
18
ImportError: cannot import name 'DoubleArray' from 'dartsclone' (unknown location)
When I separately run
import dartsclone
from dartsclone import DoubleArray

I get the same error message as above - cannot import name 'DoubleArray' from 'dartsclone' (unknown location).
I think this is some problem with the way dartsclone has been installed/compiled. When I download the zip folder from their git page, I see 2 files _dartsclone.pxd and _dartsclone.pyx which aren't there in my dartscloud package. Is this something to do not having cython installed? Sorry if I'm missing something basic here!
Regards,
Pranoti

Thanks for your detailed report. @pawar30

Is this something to do not having cython installed? Sorry if I'm missing something basic here!

I tried to reproduce above error but it succeeded.
I think it might be a problem related with the runtime libraries.
Please try to install C++ build tools.
https://visualstudio.microsoft.com/ja/thank-you-downloading-visual-studio/?sku=BuildTools&rel=16

Related issue is here.
https://github.com/rixwew/darts-clone-python/pull/9

Issue resolved after installing C++ build Tools. Thank you @hiroshi-matsuda-rit !


refactor(react-router): support the exactOptionalPropertyTypes ts option in <Link>

https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes

CI failures addressed and changes force pushed.

do we have runtime  tests and type tests for all those situations where you can pass in an explicit undefined?

To clarify, this PR doesn't alter the type definition, but rather makes the existing behavior more explicit (see https://www.typescriptlang.org/tsconfig/#exactOptionalPropertyTypes ).

thanks for clarification.
can you please add the exactOptionalPropertyTypesflag to the root tsconfig.json so we catch this with our type tests?

Setting "exactOptionalPropertyTypes": true in the root tsconfig.json will result in many type-check errors like this:
src/CatchBoundary.tsx:14:6 - error TS2769: No overload matches this call.
  Overload 1 of 2, '(props: { getResetKey: () => string | number; children: (props: { error: Error | null; reset: () => void; }) => ReactNode; onCatch?: (error: Error, errorInfo: ErrorInfo) => void; }): CatchBoundaryImpl', gave the following error.
    Type '{ getResetKey: () => string | number; onCatch: ((error: Error, errorInfo: ErrorInfo) => void) | undefined; children: ({ error, reset }: { error: Error | null; reset: () => void; }) => string | ... 6 more ... | undefined; }' is not assignable to type 'Readonly<{ getResetKey: () => string | number; children: (props: { error: Error | null; reset: () => void; }) => ReactNode; onCatch?: (error: Error, errorInfo: ErrorInfo) => void; }>' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.
      Types of property 'onCatch' are incompatible.
        Type '((error: Error, errorInfo: ErrorInfo) => void) | undefined' is not assignable to type '(error: Error, errorInfo: ErrorInfo) => void'.
          Type 'undefined' is not assignable to type '(error: Error, errorInfo: ErrorInfo) => void'.
  Overload 2 of 2, '(props: { getResetKey: () => string | number; children: (props: { error: Error | null; reset: () => void; }) => ReactNode; onCatch?: (error: Error, errorInfo: ErrorInfo) => void; }, context: any): CatchBoundaryImpl', gave the following error.
    Type '{ getResetKey: () => string | number; onCatch: ((error: Error, errorInfo: ErrorInfo) => void) | undefined; children: ({ error, reset }: { error: Error | null; reset: () => void; }) => string | ... 6 more ... | undefined; }' is not assignable to type 'Readonly<{ getResetKey: () => string | number; children: (props: { error: Error | null; reset: () => void; }) => ReactNode; onCatch?: (error: Error, errorInfo: ErrorInfo) => void; }>' with 'exactOptionalPropertyTypes: true'. Consider adding 'undefined' to the types of the target's properties.
      Types of property 'onCatch' are incompatible.
        Type '((error: Error, errorInfo: ErrorInfo) => void) | undefined' is not assignable to type '(error: Error, errorInfo: ErrorInfo) => void'.
          Type 'undefined' is not assignable to type '(error: Error, errorInfo: ErrorInfo) => void'.

14     <CatchBoundaryImpl

There are many places outside of link.tsx that implicitly assume x?: T allows undefined, making them incompatible with this flag.

would it make sense to fix all of those issues?

WIP: I am trying to add the flag to packages/react-router/tsconfig.json (changing the root tsconfig.json seems a bit involved).
It seems that https://github.com/TanStack/router/blob/f36f92b459bf0aabbc4d49c1e72c8b2ad6894622/packages/react-router/src/router.ts#L707-L710 may not work well with explicit undefineds, as {...{transformer: 1}, ...{transformer: undefined}} results in {transformer: undefined}.

Sorry, as this turned out to be more complex than I expected, I have rolled back the branch to https://github.com/TanStack/router/pull/2213/commits/7d892ac8ef96a46995b4fff31481f1cc2b6e927a . Since I've already implemented a workaround without this PR, please feel free to close it, although I believe the changes, while not comprehensive, could still be useful in some cases.

Closing this as there's no movement in the requirement for exactOptionalPropertyTypes.


Where can I download the supplementary materials?

Where can I download the supplementary materials? Thanks.

Hi, you can download them here.

already released


nb-NO Culture info date not displaying correctly

Bug type
Component
Component name
MudDatePicker
What happened?
Using google chrome with local settings, Norwegian language.
The datepicker displays the current selction like this:

This is infact snipped from https://mudblazor.com/components/datepicker#static-mode
Expected behavior
the contents of CultureInfo.GetCultureInfo("nb-NO") should be sufficient for displaying correctly i.e:
Toolbar: Tue, 20 Sept
Month flipper: 2022 September
Reproduction link
Doesn't matter since it is browser language specific
Reproduction steps

Open  https://mudblazor.com/components/datepicker#static-mode in Chrome
Open Chrome settings, search for language. and select Norwegian and move Norwegian to the top.
Reload website and open any of the date pickers.

Relevant log output
No response
Version (bug)
6.0.15
Version (working)
No response
What browsers are you seeing the problem on?
Chrome
On what operating system are you experiencing the issue?
Windows
Pull Request

[ ] I would like to do a Pull Request

Code of Conduct

[X] I agree to follow this project's Code of Conduct

I am having the sasme issue!
If the browser language is set to norwegian (nb-NO) the month and abbreviationmonth names are not displayed correctly.
I have tested with both Chrome and Firefox, and the issue should be easily reproduced, by installing and setting the browser language to norwegian: image from https://mudblazor.com/components/datepicker with browser language set to nb-NO

When changing the browser language to English the month and abbreviationmonth names are displayed as expected.

Unable to reproduce on the latest version.


oscm-report.zip is not in OSCM 16.0.4 release

oscm-report.zip is not in OSCM 16.0.4 release.
How can I get latest zip?

Thank you for this notice. I have attached it.


⚠ Samsung has degraded performance

In 333980e, Samsung (https://samsung.com) experienced degraded performance:

HTTP code: 200
Response time: 1570 ms

Resolved: Samsung performance has improved in a1a11d9.


Add inputs to DatePicker

I love your datepicker. I think it is great!
I would love to be able to add some input values to the DatePicker Calendar.
I have a current calendar that allows us to add our own inputs. I also would like to have the option to add a button at the bottom. I would be able to handle all the bindings myself but just being able to add things below  the calendar.
My thoughts are writing something like this and having the ability for the button to close the calendar once clicked.
<DatePicker> <select>     <option value="">--Please choose an option--</option>     <option value="foo">Foo</option>     <option value="bar">Bar</option> </select>     <button>test</button> </DatePicker>

Sure, that sounds useful