[ADAP-1099] [Bug] Interrupt (CTRL+C) is not cancelling the right query (wrong pid)

Is this a new bug in dbt-redshift?

[X] I believe this is a new bug in dbt-redshift
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
It appears that when you cancel a running dbt process - we submit a select pg_terminate_backend(<pid>) but potentially for the wrong query / pid.
Expected Behavior
Interrupt should be cancelling the currently running query.
Steps To Reproduce
First create a function that we can call in our model to simulate a slowly running model:
create or replace function public.fake_sleep (x int) returns text immutable as $$
    from datetime import datetime
    from time import sleep
    start_time = datetime.now()
    sleep(x)
    end_time = datetime.now()
    elapsed = end_time - start_time
    final = str(start_time) + ' / ' + str(end_time) + ' / ' + str(elapsed)
    return final
$$ language plpythonu;

-- select public.fake_sleep(120) would then take 120 seconds.

Use that function in a model:
-- models/foo.sql
select public.fake_sleep(120) as c

With a basic dbt_project.yml setup:
# dbt_project.yml
name: my_dbt_project
profile: all
config-version: 2
version: "1.0.0"

models:
  my_dbt_project:
    +materialized: table

Before we start building foo - we can first drop any table called foo on the database.

Start building then cancel a few seconds into the foo ctas:
$ dbt --debug run
01:47:18  Using redshift connection "model.my_dbt_project.foo"
01:47:18  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */

  create  table
    "dev"."public"."foo__dbt_tmp"

  as (
    select public.fake_sleep(120) as c
  );
^C01:47:25  Using redshift connection "master"
01:47:25  On master: BEGIN
01:47:25  Opening a new connection, currently in state closed
01:47:25  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:25  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:26  SQL status: SUCCESS in 2.0 seconds
01:47:26  Using redshift connection "master"
01:47:26  On master: select pg_backend_pid()
01:47:27  SQL status: SUCCESS in 0.0 seconds
01:47:27  Redshift adapter: Cancel query on: 'model.my_dbt_project.foo' with PID:<PHONE_NUMBER>
01:47:27  Redshift adapter: select pg_terminate_backend(1073987985)
01:49:18  SQL status: SUCCESS in 121.0 seconds
01:49:19  CANCEL query model.my_dbt_project.foo .......................................... [CANCEL]
01:49:19  Using redshift connection "model.my_dbt_project.foo"
01:49:19  On master: ROLLBACK
01:49:19  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */
alter table "dev"."public"."foo__dbt_tmp" rename to "foo"
01:49:19  Failed to rollback 'master'
01:49:19  On master: Close
01:49:20  SQL status: SUCCESS in 1.0 seconds
01:49:20  On model.my_dbt_project.foo: COMMIT
01:49:20  Using redshift connection "model.my_dbt_project.foo"
01:49:20  On model.my_dbt_project.foo: COMMIT
01:49:21  SQL status: SUCCESS in 1.0 seconds
01:49:21  Using redshift connection "model.my_dbt_project.foo"
01:49:21  On model.my_dbt_project.foo: BEGIN
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */
drop table if exists "dev"."public"."foo__dbt_backup" cascade
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  On model.my_dbt_project.foo: COMMIT
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: COMMIT
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: BEGIN
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Timing info for model.my_dbt_project.foo (execute): 14:47:16.513960 => 14:49:22.913216
01:49:22  On model.my_dbt_project.foo: ROLLBACK
01:49:23  On model.my_dbt_project.foo: Close
01:49:23  Sending event: {'category': 'dbt', 'action': 'run_model', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x113c9aeb0>]}
01:49:23  1 of 1 OK created sql table model public.foo ................................... [SUCCESS in 126.85s]

CTRL-C was pressed a few seconds after noticing the create table ... being logged. You can see that in the start of the line:

^C01:47:25  Using redshift connection "master"

We ran a backend pid check and terminated pid<PHONE_NUMBER>:

01:47:26  On master: select pg_backend_pid()
01:47:27  SQL status: SUCCESS in 0.0 seconds
01:47:27  Redshift adapter: Cancel query on: 'model.my_dbt_project.foo' with PID:<PHONE_NUMBER>
01:47:27  Redshift adapter: select pg_terminate_backend(1073987985)

If we check stl_query, the pid of the ctas was actually<PHONE_NUMBER> and of course wasn't terminated either:

This caused foo to be built to completion even though the expectation is that we cancel the run midway through:

Relevant log output
01:47:06  Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'start', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10f372ac0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x111fa3160>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x111fdf430>]}
01:47:06  Running with dbt=1.6.9
01:47:06  running dbt with arguments {'printer_width': '80', 'indirect_selection': 'eager', 'write_json': 'True', 'log_cache_events': 'False', 'partial_parse': 'False', 'cache_selected_only': 'False', 'profiles_dir': '/Users/jeremy/.dbt', 'fail_fast': 'False', 'debug': 'True', 'log_path': '/Users/jeremy/src/dbt-basic/logs', 'version_check': 'True', 'warn_error': 'None', 'use_colors': 'True', 'use_experimental_parser': 'False', 'no_print': 'None', 'quiet': 'False', 'warn_error_options': 'WarnErrorOptions(include=[], exclude=[])', 'introspect': 'True', 'static_parser': 'True', 'invocation_command': 'dbt --debug run', 'target_path': 'None', 'log_format': 'default', 'send_anonymous_usage_stats': 'True'}
01:47:06  Sending event: {'category': 'dbt', 'action': 'project_id', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x111fa3e50>]}
01:47:06  Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x11332d8b0>]}
01:47:06  Registered adapter: redshift=1.6.5
01:47:06  checksum: f795ff6322dabffafa5fc1f59b34557dea99c8bef60412d1b41cabcb4e97dcce, vars: {}, profile: , target: , version: 1.6.9
01:47:06  Partial parsing not enabled
01:47:08  Sending event: {'category': 'dbt', 'action': 'load_project', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x1134839d0>]}
01:47:08  Sending event: {'category': 'dbt', 'action': 'resource_counts', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x113483820>]}
01:47:08  Found 1 model, 0 sources, 0 exposures, 0 metrics, 400 macros, 0 groups, 0 semantic models
01:47:08  Sending event: {'category': 'dbt', 'action': 'runnable_timing', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x113483cd0>]}
01:47:08
01:47:08  Acquiring new redshift connection 'master'
01:47:08  Acquiring new redshift connection 'list_dev'
01:47:08  Using redshift connection "list_dev"
01:47:08  On list_dev: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "connection_name": "list_dev"} */

    select distinct nspname from pg_namespace
01:47:08  Opening a new connection, currently in state init
01:47:08  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:08  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:10  SQL status: SUCCESS in 2.0 seconds
01:47:10  On list_dev: Close
01:47:10  Re-using an available connection from the pool (formerly list_dev, now list_dev_public)
01:47:10  Using redshift connection "list_dev_public"
01:47:10  On list_dev_public: BEGIN
01:47:10  Opening a new connection, currently in state closed
01:47:10  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:10  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:12  SQL status: SUCCESS in 2.0 seconds
01:47:12  Using redshift connection "list_dev_public"
01:47:12  On list_dev_public: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "connection_name": "list_dev_public"} */
select
        table_catalog as database,
        table_name as name,
        table_schema as schema,
        'table' as type
    from information_schema.tables
    where table_schema ilike 'public'
    and table_type = 'BASE TABLE'
    union all
    select
      table_catalog as database,
      table_name as name,
      table_schema as schema,
      case
        when view_definition ilike '%create materialized view%'
          then 'materialized_view'
        else 'view'
      end as type
    from information_schema.views
    where table_schema ilike 'public'
01:47:12  SQL status: SUCCESS in 0.0 seconds
01:47:12  On list_dev_public: ROLLBACK
01:47:13  On list_dev_public: Close
01:47:13  Using redshift connection "master"
01:47:13  On master: BEGIN
01:47:13  Opening a new connection, currently in state init
01:47:13  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:13  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:14  SQL status: SUCCESS in 2.0 seconds
01:47:14  Using redshift connection "master"
01:47:14  On master: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "connection_name": "master"} */
with
    relation as (
        select
            pg_class.oid as relation_id,
            pg_class.relname as relation_name,
            pg_class.relnamespace as schema_id,
            pg_namespace.nspname as schema_name,
            pg_class.relkind as relation_type
        from pg_class
        join pg_namespace
          on pg_class.relnamespace = pg_namespace.oid
        where pg_namespace.nspname != 'information_schema'
          and pg_namespace.nspname not like 'pg\_%'
    ),
    dependency as (
        select distinct
            coalesce(pg_rewrite.ev_class, pg_depend.objid) as dep_relation_id,
            pg_depend.refobjid as ref_relation_id,
            pg_depend.refclassid as ref_class_id
        from pg_depend
        left join pg_rewrite
          on pg_depend.objid = pg_rewrite.oid
    )

select distinct
    dep.schema_name as dependent_schema,
    dep.relation_name as dependent_name,
    ref.schema_name as referenced_schema,
    ref.relation_name as referenced_name
from dependency
join relation ref
    on dependency.ref_relation_id = ref.relation_id
join relation dep
    on dependency.dep_relation_id = dep.relation_id
where ref.relation_name != dep.relation_name
01:47:15  SQL status: SUCCESS in 0.0 seconds
01:47:15  Sending event: {'category': 'dbt', 'action': 'runnable_timing', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x1134dc790>]}
01:47:15  On master: ROLLBACK
01:47:15  Using redshift connection "master"
01:47:15  On master: BEGIN
01:47:16  SQL status: SUCCESS in 0.0 seconds
01:47:16  On master: COMMIT
01:47:16  Using redshift connection "master"
01:47:16  On master: COMMIT
01:47:16  SQL status: SUCCESS in 0.0 seconds
01:47:16  On master: Close
01:47:16  Concurrency: 1 threads (target='rs')
01:47:16
01:47:16  Began running node model.my_dbt_project.foo
01:47:16  1 of 1 START sql table model public.foo ........................................ [RUN]
01:47:16  Re-using an available connection from the pool (formerly list_dev_public, now model.my_dbt_project.foo)
01:47:16  Began compiling node model.my_dbt_project.foo
01:47:16  Writing injected SQL for node "model.my_dbt_project.foo"
01:47:16  Timing info for model.my_dbt_project.foo (compile): 14:47:16.504216 => 14:47:16.511972
01:47:16  Began executing node model.my_dbt_project.foo
01:47:16  Writing runtime sql for node "model.my_dbt_project.foo"
01:47:16  Using redshift connection "model.my_dbt_project.foo"
01:47:16  On model.my_dbt_project.foo: BEGIN
01:47:16  Opening a new connection, currently in state closed
01:47:16  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:16  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:18  SQL status: SUCCESS in 2.0 seconds
01:47:18  Using redshift connection "model.my_dbt_project.foo"
01:47:18  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */

  create  table
    "dev"."public"."foo__dbt_tmp"

  as (
    select public.fake_sleep(120) as c
  );
^C01:47:25  Using redshift connection "master"
01:47:25  On master: BEGIN
01:47:25  Opening a new connection, currently in state closed
01:47:25  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
01:47:25  Redshift adapter: Connecting to redshift with username/password based auth...
01:47:26  SQL status: SUCCESS in 2.0 seconds
01:47:26  Using redshift connection "master"
01:47:26  On master: select pg_backend_pid()
01:47:27  SQL status: SUCCESS in 0.0 seconds
01:47:27  Redshift adapter: Cancel query on: 'model.my_dbt_project.foo' with PID:<PHONE_NUMBER>
01:47:27  Redshift adapter: select pg_terminate_backend(1073987985)
01:49:18  SQL status: SUCCESS in 121.0 seconds
01:49:19  CANCEL query model.my_dbt_project.foo .......................................... [CANCEL]
01:49:19  Using redshift connection "model.my_dbt_project.foo"
01:49:19  On master: ROLLBACK
01:49:19  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */
alter table "dev"."public"."foo__dbt_tmp" rename to "foo"
01:49:19  Failed to rollback 'master'
01:49:19  On master: Close
01:49:20  SQL status: SUCCESS in 1.0 seconds
01:49:20  On model.my_dbt_project.foo: COMMIT
01:49:20  Using redshift connection "model.my_dbt_project.foo"
01:49:20  On model.my_dbt_project.foo: COMMIT
01:49:21  SQL status: SUCCESS in 1.0 seconds
01:49:21  Using redshift connection "model.my_dbt_project.foo"
01:49:21  On model.my_dbt_project.foo: BEGIN
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */
drop table if exists "dev"."public"."foo__dbt_backup" cascade
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  On model.my_dbt_project.foo: COMMIT
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: COMMIT
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Using redshift connection "model.my_dbt_project.foo"
01:49:22  On model.my_dbt_project.foo: BEGIN
01:49:22  SQL status: SUCCESS in 0.0 seconds
01:49:22  Timing info for model.my_dbt_project.foo (execute): 14:47:16.513960 => 14:49:22.913216
01:49:22  On model.my_dbt_project.foo: ROLLBACK
01:49:23  On model.my_dbt_project.foo: Close
01:49:23  Sending event: {'category': 'dbt', 'action': 'run_model', 'label': 'b15c8894-92b7-4fc9-ad49-fc166901105b', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x113c9aeb0>]}
01:49:23  1 of 1 OK created sql table model public.foo ................................... [SUCCESS in 126.85s]
01:49:23  Finished running node model.my_dbt_project.foo
01:49:23
01:49:23  Exited because of keyboard interrupt
01:49:23
01:49:23  Done. PASS=0 WARN=0 ERROR=0 SKIP=0 TOTAL=0
01:49:23  Connection 'master' was properly closed.
01:49:23  Connection 'model.my_dbt_project.foo' was properly closed.
01:49:23
01:49:23  Finished running  in 0 hours 2 minutes and 15.10 seconds (135.10s).
01:49:23  Encountered an error:

01:49:23  Traceback (most recent call last):
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 87, in wrapper
    result, success = func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 72, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 143, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 172, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 219, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 259, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/main.py", line 595, in run
    results = task.run()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 469, in run
    result = self.execute_with_hooks(selected_uids)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 430, in execute_with_hooks
    res = self.execute_nodes()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 356, in execute_nodes
    self.run_queue(pool)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 288, in run_queue
    self.job_queue.join()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/graph/queue.py", line 198, in join
    self.inner.join()
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/queue.py", line 90, in join
    self.all_tasks_done.wait()
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/threading.py", line 312, in wait
    waiter.acquire()
KeyboardInterrupt

01:49:23  Command `dbt run` failed at 14:49:23.370900 after 137.15 seconds
01:49:23  Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10f372ac0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x11334afa0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x113cd1a90>]}
01:49:23  Flushing usage events

Environment
- OS: macOS
- Python: 3.9.13
- dbt-core: 1.6.9
- dbt-redshift: 1.6.5

Additional Context
This has huge implications on users that put a "run time limit" on their dbt runs - i.e. you might set your runs to timeout at 60 minutes (i.e. if runs go over 60 minutes you know things are bad so you put a limiter on) however because we appear to be not cancelling the right thing - your query still continue to run on Redshift itself thereby incurring cost.

Here's another log when I spammed CTRL-C multiple times:
02:13:33  On model.my_dbt_project.foo: /* {"app": "dbt", "dbt_version": "1.6.9", "profile_name": "all", "target_name": "rs", "node_id": "model.my_dbt_project.foo"} */

  create  table
    "dev"."public"."foo__dbt_tmp"

  as (
    select public.fake_sleep(120) as c
  );
^C02:13:39  Using redshift connection "master"
02:13:39  On master: BEGIN
02:13:39  Opening a new connection, currently in state closed
02:13:39  Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
02:13:39  Redshift adapter: Connecting to redshift with username/password based auth...
^C02:13:40  Connection 'master' was properly closed.
02:13:40  Connection 'model.my_dbt_project.foo' was left open.
02:13:40  On model.my_dbt_project.foo: ROLLBACK
^C^C^C^C02:15:34  Encountered an error:

02:15:34  Traceback (most recent call last):
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 356, in execute_nodes
    self.run_queue(pool)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 288, in run_queue
    self.job_queue.join()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/graph/queue.py", line 198, in join
    self.inner.join()
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/queue.py", line 90, in join
    self.all_tasks_done.wait()
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/threading.py", line 312, in wait
    waiter.acquire()
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 430, in execute_with_hooks
    res = self.execute_nodes()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 381, in execute_nodes
    self._cancel_connections(pool)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 329, in _cancel_connections
    for conn_name in adapter.cancel_open_connections():
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/impl.py", line 1126, in cancel_open_connections
    return self.connections.cancel_open()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/sql/connections.py", line 43, in cancel_open
    self.cancel(connection)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 261, in cancel
    pid = self._get_backend_pid()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 254, in _get_backend_pid
    _, cursor = self.add_query(sql)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 384, in add_query
    connection, cursor = super().add_query(
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/sql/connections.py", line 57, in add_query
    self.begin()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/sql/connections.py", line 172, in begin
    self.add_begin_query()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/sql/connections.py", line 155, in add_begin_query
    return self.add_query("BEGIN", auto_begin=False)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 384, in add_query
    connection, cursor = super().add_query(
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/sql/connections.py", line 79, in add_query
    cursor = connection.handle.cursor()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/contracts/connection.py", line 94, in handle
    self._handle.resolve(self)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/contracts/connection.py", line 118, in resolve
    return self.opener(connection)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 342, in open
    return cls.retry_connection(
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/connections.py", line 241, in retry_connection
    connection.handle = connect()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/redshift/connections.py", line 206, in connect
    c = redshift_connector.connect(
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/__init__.py", line 396, in connect
    return Connection(
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/core.py", line 671, in __init__
    self._usock = ssl_context.wrap_socket(self._usock)
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/ssl.py", line 501, in wrap_socket
    return self.sslsocket_class._create(
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/ssl.py", line 1041, in _create
    self.do_handshake()
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/ssl.py", line 1310, in do_handshake
    self._sslobj.do_handshake()
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/core.py", line 1767, in execute
    ps = cache["ps"][key]
KeyError: ('rollback', ())

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 87, in wrapper
    result, success = func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 72, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 143, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 172, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 219, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/requires.py", line 259, in wrapper
    return func(*args, **kwargs)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/cli/main.py", line 595, in run
    results = task.run()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 469, in run
    result = self.execute_with_hooks(selected_uids)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/task/runnable.py", line 433, in execute_with_hooks
    adapter.cleanup_connections()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/impl.py", line 246, in cleanup_connections
    self.connections.cleanup_all()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/connections.py", line 315, in cleanup_all
    self.close(connection)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/connections.py", line 382, in close
    cls._rollback_handle(connection)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/dbt/adapters/base/connections.py", line 334, in _rollback_handle
    connection.handle.rollback()
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/core.py", line 1322, in rollback
    self.execute(self._cursor, "rollback", None)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/core.py", line 1848, in execute
    self.handle_messages(cursor)
  File "/Users/jeremy/src/dbt-basic/venv_dbt_1.6.latest/lib/python3.9/site-packages/redshift_connector/core.py", line 2121, in handle_messages
    buffer = self._read(5)
  File "/Users/jeremy/.pyenv/versions/3.9.13/lib/python3.9/socket.py", line 690, in readinto
    def readinto(self, b):
KeyboardInterrupt

02:15:34  Command `dbt run` failed at 15:15:34.304687 after 132.65 seconds
02:15:34  Connection 'master' was properly closed.
02:15:34  Connection 'model.my_dbt_project.foo' was left open.
02:15:34  On model.my_dbt_project.foo: ROLLBACK
02:15:34  SQL status: SUCCESS in 121.0 seconds
02:15:34  Failed to rollback 'model.my_dbt_project.foo'
02:15:34  On model.my_dbt_project.foo: Close
02:15:34  Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x106137730>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10ab2a9a0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10ab2a5e0>]}
02:15:34  Redshift adapter: Error running SQL: macro rename_relation
02:15:34  Flushing usage events
02:15:34  Redshift adapter: Rolling back transaction.
02:15:34  Timing info for model.my_dbt_project.foo (execute): 15:13:31.919680 => 15:15:34.537773
02:15:34  Runtime Error in model foo (models/foo.sql)
  connection never acquired for thread {self.thread_id}, have {self.known}
02:15:34  Sending event: {'category': 'dbt', 'action': 'run_model', 'label': 'a66eaeea-a499-48b6-bb08-8709d8e45a01', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10aa5d8b0>]}
02:15:35  1 of 1 ERROR creating sql table model public.foo ............................... [ERROR in 122.64s]
02:15:35  Finished running node model.my_dbt_project.foo

Somehow we still had to wait for the 120 seconds.

I am experiencing the same issue. I have been seeing long locks and blocked queries in my warehouse and tried to add a timeout for certain dbt jobs. The queries would never be killed and I found that CTRL+C locally had no effect on active queries and I needed to run pg_terminate_backend myself.
Upon examining the logs, I saw the pg_terminate_backend command was issued, but not for the correct pid, so the dbt query and process remained alive until the original lock was released.
To generate these logs, I locked dbt_hevans.accounting_feature_value before the dbt command to simulate my issue. CTRL+C has no effect until I rollback the lock.
CLI Output:
╰─➤  dbt seed -s accounting_feature_value
02:01:42  Running with dbt=1.7.8
02:01:43  Registered adapter: redshift=1.7.3
02:01:44  Found 439 models, 261 tests, 12 seeds, 4 operations, 333 sources, 0 exposures, 0 metrics, 623 macros, 0 groups, 0 semantic models
02:01:44
02:01:46
02:01:46  Running 1 on-run-start hook
02:01:46  Skipping udf check and create. Target ("user") not in ['ci', 'docs']
02:01:46  1 of 1 START hook: ncsa_dbt.on-run-start.0 ..................................... [RUN]
02:01:46  1 of 1 OK hook: ncsa_dbt.on-run-start.0 ........................................ [OK in 0.00s]
02:01:46
02:01:46  Concurrency: 4 threads (target='user')
02:01:46
02:01:46  1 of 1 START seed file dbt_hevans.accounting_feature_value ..................... [RUN]
^C02:02:24  1 of 1 ERROR loading seed file dbt_hevans.accounting_feature_value ............. [ERROR in 37.95s]
02:02:24
02:02:24  Finished running 1 hook in 0 hours 0 minutes and 40.08 seconds (40.08s).
02:02:24  Encountered an error:
{'S': 'ERROR', 'C': '42P05', 'M': 'prepared statement "redshift_connector_statement_21561_2" already exists', 'F': '../src/pg/src/backend/commands/commands_prepare.c', 'L': '645', 'R': 'StorePreparedStatement'}
02:02:24  Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 359, in execute_nodes
    self.run_queue(pool)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 291, in run_queue
    self.job_queue.join()
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/graph/queue.py", line 198, in join
    self.inner.join()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/queue.py", line 90, in join
    self.all_tasks_done.wait()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/threading.py", line 320, in wait
    waiter.acquire()
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1793, in execute
    ps = cache["ps"][key]
         ~~~~~~~~~~~^^^^^
KeyError: ('select pg_terminate_backend(1073873737)', ())

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 91, in wrapper
    result, success = func(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 76, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 169, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 198, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 245, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 278, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/main.py", line 761, in seed
    results = task.run()
              ^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 474, in run
    result = self.execute_with_hooks(selected_uids)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 435, in execute_with_hooks
    res = self.execute_nodes()
          ^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 384, in execute_nodes
    self._cancel_connections(pool)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 332, in _cancel_connections
    for conn_name in adapter.cancel_open_connections():
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/base/impl.py", line 1250, in cancel_open_connections
    return self.connections.cancel_open()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/sql/connections.py", line 43, in cancel_open
    self.cancel(connection)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/redshift/connections.py", line 260, in cancel
    cursor.execute(sql)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 248, in execute
    raise e
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 241, in execute
    self._c.execute(self, operation, args)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1874, in execute
    self.handle_messages(cursor)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 2166, in handle_messages
    raise self.error
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/redshift/connections.py", line 273, in exception_handler
    yield
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/sql/connections.py", line 80, in add_query
    cursor.execute(sql, bindings)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 248, in execute
    raise e
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 241, in execute
    self._c.execute(self, operation, args)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1959, in execute
    self.handle_messages(cursor)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 2166, in handle_messages
    raise self.error
redshift_connector.error.ProgrammingError: {'S': 'ERROR', 'C': '42P05', 'M': 'prepared statement "redshift_connector_statement_21561_2" already exists', 'F': '../src/pg/src/backend/commands/commands_prepare.c', 'L': '645', 'R': 'StorePreparedStatement'}

Output after:
╰─➤  dbt seed -s accounting_feature_value                                                                                2 ↵
01:51:32  Running with dbt=1.7.8
01:51:32  Registered adapter: redshift=1.7.3
01:51:33  Found 439 models, 261 tests, 12 seeds, 4 operations, 333 sources, 0 exposures, 0 metrics, 623 macros, 0 groups, 0 semantic models
01:51:33
01:51:35
01:51:35  Running 1 on-run-start hook
01:51:35  Skipping udf check and create. Target ("user") not in ['ci', 'docs']
01:51:35  1 of 1 START hook: ncsa_dbt.on-run-start.0 ..................................... [RUN]
01:51:35  1 of 1 OK hook: ncsa_dbt.on-run-start.0 ........................................ [OK in 0.00s]
01:51:35
01:51:35  Concurrency: 4 threads (target='user')
01:51:35
01:51:35  1 of 1 START seed file dbt_hevans.accounting_feature_value ..................... [RUN]
^C01:51:43  CANCEL query seed.ncsa_dbt.accounting_feature_value ............................ [CANCEL]
01:51:43  1 of 1 ERROR loading seed file dbt_hevans.accounting_feature_value ............. [ERROR in 7.22s]
01:51:43
01:51:43  Exited because of keyboard interrupt
01:51:43
01:51:43  Done. PASS=0 WARN=0 ERROR=0 SKIP=0 TOTAL=0
01:51:43
01:51:43  Finished running 1 hook in 0 hours 0 minutes and 9.80 seconds (9.80s).
01:51:43  Encountered an error:

01:51:43  Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 91, in wrapper
    result, success = func(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 76, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 169, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 198, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 245, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 278, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/main.py", line 761, in seed
    results = task.run()
              ^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 474, in run
    result = self.execute_with_hooks(selected_uids)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 435, in execute_with_hooks
    res = self.execute_nodes()
          ^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 359, in execute_nodes
    self.run_queue(pool)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 291, in run_queue
    self.job_queue.join()
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/graph/queue.py", line 198, in join
    self.inner.join()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/queue.py", line 90, in join
    self.all_tasks_done.wait()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/threading.py", line 320, in wait
    waiter.acquire()
KeyboardInterrupt

Logs:

============================== 20:01:42.835193 | a747ba5e-3ec2-4e92-9a53-8d073e024a8f ==============================
20:01:42.835193 [info ] [MainThread]: Running with dbt=1.7.8
20:01:42.835607 [debug] [MainThread]: running dbt with arguments {'printer_width': '80', 'indirect_selection': 'eager', 'write_json': 'True', 'log_cache_events': 'False', 'partial_parse': 'True', 'cache_selected_only': 'False', 'profiles_dir': '.', 'version_check': 'True', 'fail_fast': 'False', 'log_path': 'logs', 'warn_error': 'None', 'debug': 'False', 'use_colors': 'True', 'use_experimental_parser': 'False', 'no_print': 'None', 'quiet': 'False', 'log_format': 'default', 'static_parser': 'True', 'warn_error_options': "WarnErrorOptions(include=['NoNodesForSelectionCriteria'], exclude=[])", 'invocation_command': 'dbt seed -s accounting_feature_value', 'target_path': 'None', 'introspect': 'True', 'send_anonymous_usage_stats': 'True'}
20:01:43.879378 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'project_id', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x109d0be90>]}
20:01:43.919159 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'adapter_info', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10af50250>]}
20:01:43.919667 [info ] [MainThread]: Registered adapter: redshift=1.7.3
20:01:43.928934 [debug] [MainThread]: checksum: 67f0013ca5f0bd43af9a0873dd50792fde83ef69de63b71cacd0b4ac656c52e5, vars: {}, profile: , target: , version: 1.7.8
20:01:44.121097 [debug] [MainThread]: Partial parsing enabled: 0 files deleted, 0 files added, 0 files changed.
20:01:44.121465 [debug] [MainThread]: Partial parsing enabled, no changes found, skipping parsing
20:01:44.176632 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'load_project', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10e132e90>]}
20:01:44.318506 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'resource_counts', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10ebd00d0>]}
20:01:44.318951 [info ] [MainThread]: Found 439 models, 261 tests, 12 seeds, 4 operations, 333 sources, 0 exposures, 0 metrics, 623 macros, 0 groups, 0 semantic models
20:01:44.319273 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'runnable_timing', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10ef67e90>]}
20:01:44.325456 [info ] [MainThread]:
20:01:44.326117 [debug] [MainThread]: Acquiring new redshift connection 'master'
20:01:44.326951 [debug] [ThreadPool]: Acquiring new redshift connection 'list_fasttrackprod'
20:01:44.335487 [debug] [ThreadPool]: Using redshift connection "list_fasttrackprod"
20:01:44.335790 [debug] [ThreadPool]: On list_fasttrackprod: /* {"app": "dbt", "dbt_version": "1.7.8", "profile_name": "redshift", "target_name": "user", "connection_name": "list_fasttrackprod"} */

    select distinct nspname from pg_namespace
20:01:44.336010 [debug] [ThreadPool]: Opening a new connection, currently in state init
20:01:44.337764 [debug] [ThreadPool]: Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
20:01:44.338018 [debug] [ThreadPool]: Redshift adapter: Connecting to redshift with username/password based auth...
20:01:44.812924 [debug] [ThreadPool]: SQL status: SUCCESS in 0.0 seconds
20:01:44.816105 [debug] [ThreadPool]: On list_fasttrackprod: Close
20:01:44.829292 [debug] [ThreadPool]: Re-using an available connection from the pool (formerly list_fasttrackprod, now list_fasttrackprod_dbt_hevans)
20:01:44.834233 [debug] [ThreadPool]: Using redshift connection "list_fasttrackprod_dbt_hevans"
20:01:44.834556 [debug] [ThreadPool]: On list_fasttrackprod_dbt_hevans: BEGIN
20:01:44.834797 [debug] [ThreadPool]: Opening a new connection, currently in state closed
20:01:44.835136 [debug] [ThreadPool]: Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
20:01:44.835387 [debug] [ThreadPool]: Redshift adapter: Connecting to redshift with username/password based auth...
20:01:45.203080 [debug] [ThreadPool]: SQL status: SUCCESS in 0.0 seconds
20:01:45.203759 [debug] [ThreadPool]: Using redshift connection "list_fasttrackprod_dbt_hevans"
20:01:45.204207 [debug] [ThreadPool]: On list_fasttrackprod_dbt_hevans: /* {"app": "dbt", "dbt_version": "1.7.8", "profile_name": "redshift", "target_name": "user", "connection_name": "list_fasttrackprod_dbt_hevans"} */
select
        table_catalog as database,
        table_name as name,
        table_schema as schema,
        'table' as type
    from information_schema.tables
    where table_schema ilike 'dbt_hevans'
    and table_type = 'BASE TABLE'
    union all
    select
      table_catalog as database,
      table_name as name,
      table_schema as schema,
      case
        when view_definition ilike '%create materialized view%'
          then 'materialized_view'
        else 'view'
      end as type
    from information_schema.views
    where table_schema ilike 'dbt_hevans'
20:01:45.352032 [debug] [ThreadPool]: SQL status: SUCCESS in 0.0 seconds
20:01:45.353052 [debug] [ThreadPool]: On list_fasttrackprod_dbt_hevans: ROLLBACK
20:01:45.447105 [debug] [ThreadPool]: On list_fasttrackprod_dbt_hevans: Close
20:01:45.464908 [debug] [MainThread]: Using redshift connection "master"
20:01:45.465372 [debug] [MainThread]: On master: BEGIN
20:01:45.465617 [debug] [MainThread]: Opening a new connection, currently in state init
20:01:45.465948 [debug] [MainThread]: Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
20:01:45.466204 [debug] [MainThread]: Redshift adapter: Connecting to redshift with username/password based auth...
20:01:45.816609 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:45.817202 [debug] [MainThread]: Using redshift connection "master"
20:01:45.817636 [debug] [MainThread]: On master: /* {"app": "dbt", "dbt_version": "1.7.8", "profile_name": "redshift", "target_name": "user", "connection_name": "master"} */
with
    relation as (
        select
            pg_class.oid as relation_id,
            pg_class.relname as relation_name,
            pg_class.relnamespace as schema_id,
            pg_namespace.nspname as schema_name,
            pg_class.relkind as relation_type
        from pg_class
        join pg_namespace
          on pg_class.relnamespace = pg_namespace.oid
        where pg_namespace.nspname != 'information_schema'
          and pg_namespace.nspname not like 'pg\_%'
    ),
    dependency as (
        select distinct
            coalesce(pg_rewrite.ev_class, pg_depend.objid) as dep_relation_id,
            pg_depend.refobjid as ref_relation_id,
            pg_depend.refclassid as ref_class_id
        from pg_depend
        left join pg_rewrite
          on pg_depend.objid = pg_rewrite.oid
        where coalesce(pg_rewrite.ev_class, pg_depend.objid) != pg_depend.refobjid
    )

select distinct
    dep.schema_name as dependent_schema,
    dep.relation_name as dependent_name,
    ref.schema_name as referenced_schema,
    ref.relation_name as referenced_name
from dependency
join relation ref
    on dependency.ref_relation_id = ref.relation_id
join relation dep
    on dependency.dep_relation_id = dep.relation_id
20:01:46.077951 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:46.080469 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'runnable_timing', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10a454e10>]}
20:01:46.081600 [debug] [MainThread]: On master: ROLLBACK
20:01:46.207173 [debug] [MainThread]: Using redshift connection "master"
20:01:46.208499 [debug] [MainThread]: On master: BEGIN
20:01:46.253531 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:46.255605 [debug] [MainThread]: On master: COMMIT
20:01:46.257303 [debug] [MainThread]: Using redshift connection "master"
20:01:46.258226 [debug] [MainThread]: On master: COMMIT
20:01:46.344627 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:46.346532 [info ] [MainThread]:
20:01:46.347300 [info ] [MainThread]: Running 1 on-run-start hook
20:01:46.359300 [info ] [MainThread]: Skipping udf check and create. Target ("user") not in ['ci', 'docs']
20:01:46.360305 [debug] [MainThread]: Writing injected SQL for node "operation.ncsa_dbt.ncsa_dbt-on-run-start-0"
20:01:46.364792 [info ] [MainThread]: 1 of 1 START hook: ncsa_dbt.on-run-start.0 ..................................... [RUN]
20:01:46.365700 [info ] [MainThread]: 1 of 1 OK hook: ncsa_dbt.on-run-start.0 ........................................ [OK in 0.00s]
20:01:46.366276 [info ] [MainThread]:
20:01:46.366774 [debug] [MainThread]: On master: Close
20:01:46.367747 [info ] [MainThread]: Concurrency: 4 threads (target='user')
20:01:46.368153 [info ] [MainThread]:
20:01:46.370440 [debug] [Thread-1 (]: Began running node seed.ncsa_dbt.accounting_feature_value
20:01:46.371068 [info ] [Thread-1 (]: 1 of 1 START seed file dbt_hevans.accounting_feature_value ..................... [RUN]
20:01:46.371855 [debug] [Thread-1 (]: Re-using an available connection from the pool (formerly list_fasttrackprod_dbt_hevans, now seed.ncsa_dbt.accounting_feature_value)
20:01:46.372278 [debug] [Thread-1 (]: Began compiling node seed.ncsa_dbt.accounting_feature_value
20:01:46.372725 [debug] [Thread-1 (]: Timing info for seed.ncsa_dbt.accounting_feature_value (compile): 20:01:46.372531 => 20:01:46.372533
20:01:46.373091 [debug] [Thread-1 (]: Began executing node seed.ncsa_dbt.accounting_feature_value
20:01:46.394538 [debug] [Thread-1 (]: Using redshift connection "seed.ncsa_dbt.accounting_feature_value"
20:01:46.401432 [debug] [Thread-1 (]: On seed.ncsa_dbt.accounting_feature_value: BEGIN
20:01:46.401869 [debug] [Thread-1 (]: Opening a new connection, currently in state closed
20:01:46.404401 [debug] [Thread-1 (]: Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
20:01:46.404847 [debug] [Thread-1 (]: Redshift adapter: Connecting to redshift with username/password based auth...
20:01:46.749391 [debug] [Thread-1 (]: SQL status: SUCCESS in 0.0 seconds
20:01:46.751770 [debug] [Thread-1 (]: Using redshift connection "seed.ncsa_dbt.accounting_feature_value"
20:01:46.752781 [debug] [Thread-1 (]: On seed.ncsa_dbt.accounting_feature_value: /* {"app": "dbt", "dbt_version": "1.7.8", "profile_name": "redshift", "target_name": "user", "node_id": "seed.ncsa_dbt.accounting_feature_value"} */
truncate table "fasttrackprod"."dbt_hevans"."accounting_feature_value"
20:01:51.512610 [debug] [MainThread]: Using redshift connection "master"
20:01:51.513581 [debug] [MainThread]: On master: BEGIN
20:01:51.514175 [debug] [MainThread]: Opening a new connection, currently in state closed
20:01:51.515004 [debug] [MainThread]: Redshift adapter: Establishing connection using ssl with `sslmode` set to 'prefer'.To connect without ssl, set `sslmode` to 'disable'.
20:01:51.515589 [debug] [MainThread]: Redshift adapter: Connecting to redshift with username/password based auth...
20:01:51.917289 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:51.919877 [debug] [MainThread]: Using redshift connection "master"
20:01:51.921377 [debug] [MainThread]: On master: select pg_backend_pid()
20:01:52.013501 [debug] [MainThread]: SQL status: SUCCESS in 0.0 seconds
20:01:52.015733 [debug] [MainThread]: Redshift adapter: Cancel query on: 'seed.ncsa_dbt.accounting_feature_value' with PID:<PHONE_NUMBER>
20:01:52.016603 [debug] [MainThread]: Redshift adapter: select pg_terminate_backend(1073873737)
20:02:20.734107 [debug] [Thread-1 (]: Redshift adapter: Redshift error: prepared statement "redshift_connector_statement_21561_2" already exists
20:02:24.291136 [debug] [Thread-1 (]: On seed.ncsa_dbt.accounting_feature_value: ROLLBACK
20:02:24.292387 [debug] [MainThread]: On master: ROLLBACK
20:02:24.294095 [debug] [Thread-1 (]: Redshift adapter: Error running SQL: macro truncate_relation
20:02:24.298082 [debug] [Thread-1 (]: Redshift adapter: Rolling back transaction.
20:02:24.299235 [debug] [Thread-1 (]: Timing info for seed.ncsa_dbt.accounting_feature_value (execute): 20:01:46.373431 => 20:02:24.298810
20:02:24.300471 [debug] [Thread-1 (]: On seed.ncsa_dbt.accounting_feature_value: Close
20:02:24.323889 [debug] [Thread-1 (]: Database Error in seed accounting_feature_value (seeds/accounting_feature_value.csv)
  prepared statement "redshift_connector_statement_21561_2" already exists
20:02:24.325627 [debug] [Thread-1 (]: Sending event: {'category': 'dbt', 'action': 'run_model', 'label': 'a747ba5e-3ec2-4e92-9a53-8d073e024a8f', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10e170bd0>]}
20:02:24.326994 [error] [Thread-1 (]: 1 of 1 ERROR loading seed file dbt_hevans.accounting_feature_value ............. [ERROR in 37.95s]
20:02:24.328112 [debug] [Thread-1 (]: Finished running node seed.ncsa_dbt.accounting_feature_value
20:02:24.399099 [debug] [MainThread]: On master: Close
20:02:24.402328 [debug] [MainThread]: Connection 'master' was properly closed.
20:02:24.403249 [debug] [MainThread]: Connection 'seed.ncsa_dbt.accounting_feature_value' was properly closed.
20:02:24.404049 [info ] [MainThread]:
20:02:24.404771 [info ] [MainThread]: Finished running 1 hook in 0 hours 0 minutes and 40.08 seconds (40.08s).
20:02:24.405777 [error] [MainThread]: Encountered an error:
{'S': 'ERROR', 'C': '42P05', 'M': 'prepared statement "redshift_connector_statement_21561_2" already exists', 'F': '../src/pg/src/backend/commands/commands_prepare.c', 'L': '645', 'R': 'StorePreparedStatement'}
20:02:24.411528 [error] [MainThread]: Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 359, in execute_nodes
    self.run_queue(pool)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 291, in run_queue
    self.job_queue.join()
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/graph/queue.py", line 198, in join
    self.inner.join()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/queue.py", line 90, in join
    self.all_tasks_done.wait()
  File "/Users/hevans/.pyenv/versions/3.11.4/lib/python3.11/threading.py", line 320, in wait
    waiter.acquire()
KeyboardInterrupt

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1793, in execute
    ps = cache["ps"][key]
         ~~~~~~~~~~~^^^^^
KeyError: ('select pg_terminate_backend(1073873737)', ())

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 91, in wrapper
    result, success = func(*args, **kwargs)
                      ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 76, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 169, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 198, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 245, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/requires.py", line 278, in wrapper
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/cli/main.py", line 761, in seed
    results = task.run()
              ^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 474, in run
    result = self.execute_with_hooks(selected_uids)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 435, in execute_with_hooks
    res = self.execute_nodes()
          ^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 384, in execute_nodes
    self._cancel_connections(pool)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/task/runnable.py", line 332, in _cancel_connections
    for conn_name in adapter.cancel_open_connections():
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/base/impl.py", line 1250, in cancel_open_connections
    return self.connections.cancel_open()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/sql/connections.py", line 43, in cancel_open
    self.cancel(connection)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/redshift/connections.py", line 260, in cancel
    cursor.execute(sql)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 248, in execute
    raise e
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 241, in execute
    self._c.execute(self, operation, args)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1874, in execute
    self.handle_messages(cursor)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 2166, in handle_messages
    raise self.error
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/redshift/connections.py", line 273, in exception_handler
    yield
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/dbt/adapters/sql/connections.py", line 80, in add_query
    cursor.execute(sql, bindings)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 248, in execute
    raise e
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/cursor.py", line 241, in execute
    self._c.execute(self, operation, args)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 1959, in execute
    self.handle_messages(cursor)
  File "/Users/hevans/.local/share/virtualenvs/data_dbt-AeL2xOvX/lib/python3.11/site-packages/redshift_connector/core.py", line 2166, in handle_messages
    raise self.error
redshift_connector.error.ProgrammingError: {'S': 'ERROR', 'C': '42P05', 'M': 'prepared statement "redshift_connector_statement_21561_2" already exists', 'F': '../src/pg/src/backend/commands/commands_prepare.c', 'L': '645', 'R': 'StorePreparedStatement'}

20:02:24.417688 [debug] [MainThread]: Resource report: {"command_name": "seed", "command_wall_clock_time": 41.613743, "process_user_time": 1.723778, "process_kernel_time": 0.269604, "process_mem_max_rss": "174112768", "command_success": false, "process_in_blocks": "0", "process_out_blocks": "0"}
20:02:24.419152 [debug] [MainThread]: Command `dbt seed` failed at 20:02:24.418889 after 41.62 seconds
20:02:24.420566 [debug] [MainThread]: Sending event: {'category': 'dbt', 'action': 'invocation', 'label': 'end', 'context': [<snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x10a398dd0>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x104cc3050>, <snowplow_tracker.self_describing_json.SelfDescribingJson object at 0x109ae2d10>]}
20:02:24.421466 [debug] [MainThread]: Flushing usage events


Multiple SMTP Setups

Suggestion:
Please allow several SMTP setups to be used per company.
This can be achieved by assigning a SMTP Setup record to SMTPMailSetup variable in CU 400 with an external procedure.
Reason:
Several different smtp servers might be required to allow for handling mails "in the name of" another company (warehouse handling).

Thank you for opening this issue. We will look into whether this is possible.


Should merge guidelines be different or the same for contrib?

Now that we have created the https://github.com/open-telemetry/opentelemetry-js-contrib repo, we should talk about what the merge guidelines should be. Generally, in the "main" repo PRs are merged after receiving 3-4 approvals if open questions are answered, and we typically wait for both maintainers to weigh in on most cases. Should the contrib repo have relaxed requirements?
I believe we should codify in the CONTRIBUTING.md file of both repos what the requirements are to have a PR merged.

I would prefer to have same merge guidelines for both of the repos for now to avoid unnecessary confusions.

I believe we should codify in the CONTRIBUTING.md file of both repos what the requirements are to have a PR merged.

+100, this one has been pending for ages.

Closed via #978


Release 0.3.3

0.3.3 (2020-09-15)
Release highlights
Tip button injected in youtube allowing direct tips to youtube content creators. Improvements to the general structure of the accounts. Bugfixes and cleanup of styling issues.
Changelog
Bugfixes 🐞

Fix displaying of transactions (#500)
Fix spanish translation errors (#476)
Header: Fix back button (#464)
Fix tx explorer URL (#507)
Fix issue with defaultNetworks preventing dapps connection (#522)

Features ✨

Inject YouTube tip button (#433)
Add preconfigured Testnet settings (#499)
Add auto-extending of names (#494)

Maintenance 🚧

Drop mutation-types (#501)
Remove unused AirGap utils (#488)
Normalize vuex state (#475)
Update SDK to 7.7.0 (#473)
Use middleware instance instead of direct fetching (#481)
Switch middleware URL (#478)
Use aeternity.io instead of aeternal.io (#479)
Remove unused styles (#472)
Update dependencies (#474)
Simplify networks (#468)
Remove unnecessary subaccount structures (#463)

Other changes💡

Tip: Redirect to callback URL if it provided (#490)
Always use window.open on links inside iframe web wallet (#495)
Changed new invite link icon (#483)
Restyle: Invite links (#466)
Use currency symbols instead of abbreviations (#471)
Add LGTM badge (#462)
Change checkbox colors according to design suggestion (#502)
Locales: Claim -> Register (#509)

Shouldn't you stop to merge develop branch into your branch according to this https://github.com/aeternity/superhero-wallet/pull/515?

Shouldn't you stop mreging develop branch into your branch according to this https://github.com/aeternity/superhero-wallet/pull/515?

I will rebase and clean the merge commits before merging into master. ✌

Superseded by #529


Create basic architecture of variational autoencoder

In this PR, we create the basic structure of variational autoencoder. The encoder and decoder parts are included in one class.

This PR will close #9  #10 and #11.

A minor comment about the notebook tutorial: usually we don't use mixedCase for variable name in python, better to use lowercase or lower_case, see detail in pep8 https://www.python.org/dev/peps/pep-0008/#function-and-variable-names

A minor comment about the notebook tutorial: usually we don't use mixedCase for variable name in python, better to use lowercase or lower_case, see detail in pep8 https://www.python.org/dev/peps/pep-0008/#function-and-variable-names

Thanks for pointing this out! I rename all these variables using lowercase now.


Typo in commit message

4cdd4736722e673c37a71ff9527889480131a9d2

whats done is done

you could rewrite history

whats the point if its not a significant commit 🤔

ples

this is a very important issue and i demand it be reopened.

I don't like to rewrite history because 🤷🤷🤷🤷🤷🤷🤷🤷🤷


[Request] Compatibility with JFD's Rule With Faith

Would it be possible to make CQUI compatible with JFD's Rule With Faith again (there used to be a CQUI RWF version on Steam)?
There's some issues in the civics tree and government screen as RWF adds cultural and religious civics class. Furthermore RWF adds a Great Theologian unit which messes up the Great Person screen.
So far is seems I've come around the issues by removing the files beneath from CQUI, but it'd be great if you could make it truly compatible . Your screens are far superior!
\Assets\UI\Screens\civicstree.lua
\Assets\UI\Screens\governmentscreen.lua
\Assets\UI\Screens\governmentscreen.xml
\Assets\UI\techandcivicsupport.lua
\Assets\UI\Popups\greatpeoplepopup.lua
\Assets\UI\Popups\greatpeoplepopup.xml
\Skodkim

CQUI is the BUG mod for cvi 6. It is an Unaltered Gameplay UI mod. To preserve that spirit, it should never integrate any gameplay-altering modifications or cheats. I will oppose such possibilities to death.

Ehhh, I'm not suggesting that you incorporate it - just make or compatible (as you did up until recently).
\Skodkim

I would love to see compatibility with RWF too.

@thecrafybee
For now just remove the above mentioned files and it should work ok (but not as flashy as cqui).
\Skodkim

Same as #118 . I'll just quote what chaorace said, because I have the point of view:

That being said, I'm not against the idea of making CQUI more compatible with other mods, especially those which can't be integrated into CQUI for whatever reason (in this case, since it's non-vanilla gameplay).

But it's definitely not a priority for now.

@Azurency That's fine, I understand that you've got other priorities and we can actually play with CQUI+RWF if we just use a few tweaks. I was just making a request (partly because there had been a released version before). Also I just didn't understand the "melodramatic" comment about "opposing such possibilities to death" given that I consider it a valid/innocent request (and I apologize for the phrasing, English is not my native tongue and I can't really find a better way to say it).
\Skodkim

@skodkim yes I didn't understand it either and I'm really sorry. It was an innocent request and his answer was not really appropriate

I'll close this since there's already another issue with that subject


Missing lines if open file from directory

If I open a php file directly with neovim mydir/myfile.php I see all expected lines, it works.

If I open nvim inside a folder with neovim mydir and next, inside neovim, I open the file myfile.php via netrw or fzf etc. I dont see all lines:
As you can see I miss a line on public function..

I'm using the lua branch on neovim 5.0 and linux os.
My configuration:
vim.bo.tabstop = 4
vim.bo.softtabstop = 4
vim.bo.shiftwidth = 4
vim.bo.autoindent = true
vim.g.indentLine_enabled = 1
vim.g.indent_blankline_char = "▏"

I can't reproduce this, can you check that tabstop (or shiftwidth if you are using expandtab) is set correctly?
Just run :tabstop

I don't have tabstop command

sorry, it's :set tabstop

sorry, it's :set tabstop

in "direct file edit" it is 4
in "directory file edit" it is wrong, 8

Sorry I solved, it was my fault.
I used vim.bo.tabstop = 4 instead vim.o.tabstop = 4
Thanks you


Adapter clear data not working

I want to clear all the data in the list, when I click the Clear Data button, the data is cleared, but the list is not updated. Then I click the Clear button again, this time the list data cleared, list has been updated.
I added adapter.notifyDataSetChanged() but first time clear data, the list not be updated. @davideas
Activity:
    private lateinit var adapter: FlexibleAdapter<IFlexible<*>>
    private val items = ArrayList<AbstractFlexibleItem<*>>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        items.add(
NavigationAccountItem("https://ssl.gstatic.com/images/branding/product/1x/avatar_circle_blue_512dp.png", "example@gmail.com"))
        items.add(
NavigationAccountItem("https://ssl.gstatic.com/images/branding/product/1x/gsa_512dp.png", "google@gmail.com"))
        adapter = FlexibleAdapter(getList(), this, true)
        recycler_view.layoutManager = SmoothScrollLinearLayoutManager(this)
        recycler_view.adapter = adapter
        recycler_view.setHasFixedSize(true)
        recycler_view.itemAnimator = FlexibleItemAnimator()

        clear_data.setOnClickListener {
            adapter.clear()
            adapter.notifyDataSetChanged()
        }
}

Item:
data class NavigationAccountItem(val avatar_url: String,
                                 val account_address: String) : AbstractFlexibleItem<NavigationAccountItem.ViewHolder>() {

    override fun getLayoutRes(): Int {
        return R.layout.list_navigation_account_item
    }

    override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): ViewHolder {
        return ViewHolder(view, adapter)
    }

    override fun bindViewHolder(adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>?, holder: ViewHolder?, position: Int, payloads: MutableList<Any>?) {
        if (holder != null) {
            val context = holder.itemView.context
            GlideApp
                    .with(context)
                    .load(avatar_url)
                    .placeholder(R.drawable.avatar_circle_blue)
                    .error(R.drawable.avatar_circle_blue)
                    .into(holder.avatar)
            holder.accountAddress.text = account_address
        }
    }

    class ViewHolder(view: View, adapter: FlexibleAdapter<*>) : FlexibleViewHolder(view, adapter) {
        var avatar: AppCompatImageView = view.findViewById(R.id.avatar)
        var accountAddress: AppCompatTextView = view.findViewById(R.id.account_address)
    }
}

@tcqq, I verified that clear feature works as expected. Which list are you talking about? The internal list is wiped. So please verify your code, and the logs!

I rewrote an example, when I clicked the clear button, the list was not cleared. Check this FlexibleAdapterBugExample please, what am I doing wrong? Thank you. @davideas

@tcqq, wow it's strange, it works in Java demoApp if I implement it. I have also added a unit test on clear (I will commit later to show you). What about the logs in Verbose level, what do you have?

@davideas When I set stanleId to false and add adapter.notifyDataSetChanged() under adapter.clear(), the list will be cleared . But I want to enable stanleIds  because stanleId is true can be improved list performance.

Now enable stanleId, the list will not be cleared, How should I fix this problem? @davideas

Implement equals method for the item, read javaDoc for this method.

Equals has been added.

Do it better.

This is automatically generated by kotlin because I added data in front of the class. But after I set the stanleId to true`, the clear list does not work. How should I fix this?

I tried to override the equals method for item and enabled stanleId, but the clear list still doesn't work. What am I doing wrong? How should I fix this problem? @davideas
MainActivity:
class MainActivity : AppCompatActivity(),
        FlexibleAdapter.OnItemClickListener,
        Toolbar.OnMenuItemClickListener {

    private lateinit var adapter: FlexibleAdapter<IFlexible<*>>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        setSupportActionBar(toolbar)
        toolbar.setOnMenuItemClickListener(this)

        adapter = FlexibleAdapter(getAccountsList(), this, true)
        recycler_view.layoutManager = SmoothScrollLinearLayoutManager(this)
        recycler_view.adapter = adapter
        recycler_view.setHasFixedSize(true)
        recycler_view.itemAnimator = FlexibleItemAnimator()
    }

    override fun onItemClick(view: View?, position: Int): Boolean {
        Toast.makeText(this, position.toString(), Toast.LENGTH_SHORT).show()
        return false
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu_main_toolbar, menu)
        return true
    }

    override fun onMenuItemClick(item: MenuItem?): Boolean {
        when (item?.itemId) {
            R.id.clear -> {
                adapter.clear()
                Toast.makeText(this, "Clear items", Toast.LENGTH_SHORT).show()
            }
        }
        return true
    }

    private fun getAccountsList(): List<AbstractFlexibleItem<*>> {
        val accountsItems = ArrayList<AbstractFlexibleItem<*>>()
        accountsItems.add(SimpleItem("1", "https://ssl.gstatic.com/images/branding/product/1x/avatar_circle_blue_512dp.png", "usertcqq@gmail.com"))
        accountsItems.add(SimpleItem("2", "https://ssl.gstatic.com/images/branding/product/1x/gsa_512dp.png", "google@gmail.com"))
        return accountsItems
    }
}

SimpleItem:
public class SimpleItem extends AbstractItem<SimpleItem.SimpleViewHolder> {

    private String avatarUrl;
    private String accountAddress;

    private SimpleItem(String id) {
        super(id);
    }

    public SimpleItem(String id, String avatarUrl, String accountAddress) {
        this(id);
        this.avatarUrl = avatarUrl;
        this.accountAddress = accountAddress;
    }

    @Override
    public int getLayoutRes() {
        return R.layout.item_navigation_account;
    }

    @Override
    public SimpleViewHolder createViewHolder(View view, FlexibleAdapter adapter) {
        return new SimpleViewHolder(view, adapter);
    }

    @Override
    public void bindViewHolder(FlexibleAdapter<IFlexible> adapter, SimpleViewHolder holder, int position, List<Object> payloads) {
        Context context = holder.itemView.getContext();
        GlideApp
                .with(context)
                .load(avatarUrl)
                .placeholder(R.drawable.avatar_circle_blue)
                .error(R.drawable.avatar_circle_blue)
                .into(holder.avatar);
        holder.accountAddress.setText(accountAddress);
    }

    static final class SimpleViewHolder extends FlexibleViewHolder {

        AppCompatImageView avatar;
        AppCompatTextView accountAddress;

        SimpleViewHolder(View view, FlexibleAdapter adapter) {
            super(view, adapter);
            this.avatar = view.findViewById(R.id.avatar);
            this.accountAddress = view.findViewById(R.id.account_address);
        }
    }

    @Override
    public String toString() {
        return "SimpleItem{" +
                "avatarUrl='" + avatarUrl + '\'' +
                ", accountAddress='" + accountAddress + '\'' +
                '}';
    }
}

AbstractItem:
/**
 * This class will benefit of the already implemented methods (getter and setters) in
 * {@link eu.davidea.flexibleadapter.items.AbstractFlexibleItem}.
 * <p>
 * It is used as base item for all example models.
 */
public abstract class AbstractItem<VH extends FlexibleViewHolder>
        extends AbstractFlexibleItem<VH> {

    protected String id;

    public AbstractItem(String id) {
        this.id = id;
    }

    @Override
    public boolean equals(Object inObject) {
        if (inObject instanceof AbstractItem) {
            AbstractItem inItem = (AbstractItem) inObject;
            return this.id.equals(inItem.id);
        }
        return false;
    }

    /**
     * Override this method too, when using functionalities like StableIds, Filter or CollapseAll.
     * FlexibleAdapter is making use of HashSet to improve performance, especially in big list.
     */
    @Override
    public int hashCode() {
        return id.hashCode();
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "id=" + id;
    }
}

@tcqq, what does the log say in Verbose mode?

@davideas This is the log that clicks the clear button twice. But the list is not cleared.

Logs are ok, it seems RecyclerView is not receiving the notification! Are you using Android X? Everything worked before and demoApp also works very well.
I can't help you until official libraries and all others versions are out.

No, I am not using androidX now.

@tcqq, can you try to use?
targetSdk = 27
buildTools = "27.0.3"
supportVer = "27.1.1"

I changed the version, but could not clear the list

Sorry, but I can't help you. Feature works in demoApp.

@davideas When I delete this code, the clear items will work fine.

@tcqq, ohh well, maybe I should put FlexibleItemAnimator abstract and change the class description. This class should be used by another custom implementation.
Please use one of the predefined implementation from the demoApp. The implementation of how the animations add, remove, move have to be done is up to the user if you use this ItemAnimator.
Case closed :-)


Pass params using config.yaml

Description
Instead of passing parameters using --params, the container now creates a config.yaml file as decribed in https://kedro.readthedocs.io/en/stable/04_kedro_project_setup/02_configuration.html#configure-kedro-run-arguments
Resolves #60
PR Checklist

[ ] Tests added
[ ] Changelog updated

@mariusz89016  It would be great if you can test this change in your environment with spaceflights or other pipeline that takes a list as a param

@mariusz89016 It would be great if you can test this change in your environment with spaceflights or other pipeline that takes a list as a param

yep, works like a charm ;)


[mesheryctl] enhance mesheryctl mesh remove

See mesheryctl Command Tracker for current status of commands.
Current Behavior
mesheryctl mesh remove doesn't use the event streamer utility and thus doesn't wait for remove operation event to complete.
Desired Behavior
The command should watch for events and wait till receiving an event signalling service mesh was removed successfully. If it is not removed, then the command should throw an error.
Implementation
The implementation should be similar to the mesheryctl mesh deploy command. For reference, see
https://github.com/meshery/meshery/blob/c8dd33ae4f8756b0f69f06edb27e6cda5b904498/mesheryctl/internal/cli/root/mesh/deploy.go#L122-L173
Acceptance Tests
Exit with proper exit codes when operation fails.
Mockups

Contributor Resources

⌨ mesheryctl Contributing Guide
Beginner's guide to contributing to Meshery and mesheryctl
mesheryctl Command Tracker
Meshery CLI Commands and Documentation
🙋🏾🙋🏼 Questions: Layer5 Discussion Forum and Layer5 Community Slack

Can I work on this issue @DelusionalOptimist ?

For sure! @umairnsr87

Thanks @umairnsr87 :raised_hands: . Feel free to ask away any doubts you have.

Sure @DelusionalOptimist , @warunicorn19  Thanks ....!

@DelusionalOptimist quick Q here which error code we need to use? I see a list of error codes in the error.go but I'm not sure which to use

@leecalcote do I need to create a error code for this? Or if any existing one is present, which I need to use it?

@alphaX86 feel free to make new error codes in https://github.com/meshery/meshery/blob/master/mesheryctl/internal/cli/root/mesh/error.go.
They would be similar to that of deploy.
Also, you can look into if some error codes can be reused. For e.g.
https://github.com/meshery/meshery/blob/05a4985f86d3a628ef629a3d491e2ad06938f554/mesheryctl/internal/cli/root/mesh/error.go#L43
This can be used for all deploy, remove and validate with some changes, eliminating the need of declaring multiple error functions.

So you mean I can create an error code and reuse a function for ease?

Sorry @alphaX86 I was away :sweat_smile:

So you mean I can create an error code and reuse a function for ease?

Yes, precisely :heavy_check_mark:

Folks????? 👀👀

@alphaX86 I think your infusion stems from a lack of understanding of the error framework in MeshKit. Here is a contributing guide that will explain - https://docs.meshery.io/project/contributing/contributing-error

@leecalcote actually 😅 error codes are made in MeshKit and almost ready, what I need is reviewers to test my PR coz it's been.... a month and a week since last reply in that PR :')

@gr455, think that you are up to this challenge?

Sure @leecalcote. I can have a shot at this

It's all yours now @gr455 :) If you have any queries, you are welcome to refer previous PRs made to solve the issue. Good luck bro

It's all yours now @gr455 :) If you have any queries, you are welcome to refer previous PRs made to solve the issue. Good luck bro

Thank you! I'll try my hand at this :D

I am trying out #4951, which will itself take me some time, so I am unassigning myself so someone else could take this one up in the meantime.

I am trying out #4951, which will itself take me some time, so I am unassigning myself for now so someone else could take this one up in the meantime.

No issues @gr455 👍

@navendu-pottekkat will you work on this?

@leecalcote Sorry, I can't. @alphaX86 Could you take this up as you have previously looked into the issue?

@leecalcote Sorry, I can't. @alphaX86 Could you take this up as you have previously looked into the issue?

Can I try this? Doing some playgrounds now to get a hang of meshery

@gr455, thanks for picking up the slack, yes.


Getting a 'You do not have permission to view this directory or page error' on the TEOC site

I had TEOC deployed and working ok and then suddenly getting the error message below. The error disappeared temporarily when I restarted the site yesterday but it's back again this morning.

@SemBurendo , thanks for reporting this issue.
Could you kindly verify if the Azure App Service is functioning properly? Additionally, if there are no issues with the App Service, could you share the console logs and network traces?

@v-ajaysahu I have found and resolved the issue, thanks


Build output improvements

This PR addresses a number of shortcomings with the current build output stock allocation and completion interface.

Moves to "modern" API driven approach
Refactor and cleanup of tables

Closes https://github.com/inventree/InvenTree/issues/1738


Retry three times on HTTP failure

We are using a rather large combination of recipes, called a meal, in our repo for compiling PHP. We were hitting either 500s when downloading the resources, when we added the retry logic it all went away.
With the current test fixtures this was hard to test. Would love to explore setting up fixtures. @flavorjones or @luislavena want to pair?

I'd be happy to pair with you on this. Let's chat at work tomorrow.

Merged manually. Thanks, @jtarchie!

Ugh, sorry, I'm reverting these commits.
This behavior breaks other tests that have been introduced in the meantime. We'll need to figure out a more robust way to implement retry behavior.

I have fixed the tests in pr #72. We can probably close this pr in favor of the new pr.

@jtarchie @jvshahid this is merged as #72. Thank you!


DISCUSS: scipy version number after 1.9

Scipy has a tried-and-tested release mode that closely mimics numpy: no semver, but rolling additions & deprecations & eventual removals.
With main now being at 1.9, certain deprecations are running into the problem of how to announce the point-in-time when a given feature will be removed. Since the possibility of Scipy 2.0 turned up in a discussion recently, coming up with good wording for this is tricky.

"X will be removed in the second release after SciPy 1.9.0"

currently used by #13490 and #15512
IMO misleading/wrong because "second release after SciPy 1.9.0" == 1.9.2

variations on that theme are of course possible (additions emphasised for clarity)

"X will be removed in the second minor release after SciPy 1.9.0" (not a good fit because scipy doesn't use semver)
"X will be removed in the second feature release after SciPy 1.9.0" (suggestion by @mdhaber)

directly say "X will be removed in SciPy 1.11.0"

if a decision is taken towards releasing 2.0, this could be easily replaced

However, all those issues effectively boil down to an uncertainty about what to call the version after 1.9, hence this issue.
I had assumed (perhaps naïvely) that there's no reason to break the current scheme, not least because version numbers are not decimals and easily deal with two-digit minor versions, but perhaps more importantly, because numpy and cpython did so as well. My comment about this in the second thread was:

I'm thinking a putative 2.0 should come with some degree of "large change compared to 1.x", even if it isn't breaking anything**.
** as an example in terms of the kind of scope for a major bump that I have in mind, a current(ly-talked-about) candidate for cpython 4.0 is if/once the GIL is removed. On the numpy side, although there is an ancient, non-empty milestone, I'm not aware of current plans for 2.0 (though I did once wager that it'll come about eventually 😉) - comprehensively fixing integer promotion issues might be a candidate to go to numpy 2.0.

In other words, I would expect the 1.x series to continue indefinitely unless & until there's a large enough change that people feel deserves special attention by way of a major version bump.
Howevers, others might disagree; e.g. @ev-br said:

My personal opinion is that 2.0 is no special and I'd have a slight preference for 1.9->2.0. That said, it's not quite my hill so I'd go with a majority on this one :-)

NumPy 2.0 is a bit what SciPy 1.0 was. A mostly psychological milestone that signals somewhat maturity or a well-earned achievement trophy. SciPy 2.0 is not the same, as @ev-br put it, as 1.0,  a rather follow-up. Another extreme numbering package was pandas, same with Cython from 0.29 to straight 3.0.
To be honest I don't get what fuss is about version numbers in Python and seems like some people just satisfying their OCD. The idea is noble but the practice has turned out to be not so useful to put it mildly. I would suggest continuing 10, 11, 12 since nobody cared for other very important packages. But honestly I couldn't care less.

I'm +1 on continuing with the current scheme (1.10, 1.11, ... etc) and reserving 2.0 for some significant milestone.
There are actually some references in the code base to a SciPy 2.0 release e.g. in scipy/stats/stats.py there's the line:

This file is not meant for public use and will be removed in SciPy v2.0.0.

Ditto on continuing the current scheme until support for designating a release as 2.0 has been bubbling for a little while.

(Let me expand my comment over from the other issue.)
Note that both numpy 2.0 and cpython 4.0, which were mentioned before, are essentially shorthands for "not in a foreseeable furure".
IMO a two-digit scheme has its advantages, and we can perfectly well go from 1.9 to 2.0. There is some amount of back compat breakage in each release, which we are very measured about, and 2.0 does not need to be any special.
If we do decide to assign some special meaning to the 2.0 milestone, we need to explicitly formulate what makes it special and list specific items which make scipy 2.0-ready.

I am with @ev-br here. I am for not flagging a special breaking release but do continuous improvement as we currently do. Going above 2 would highlight this statement of stability from our side. And also say that user should move with us. We certainly don't want users to be stuck with a certain 1.1x with and not go with the hypothetical 2.x which would break things. This would just create fragmentation as always.

If we're straw-polling, I'm +1 for 1.10 after 1.9.
I've personally been thinking we might want to remove the spmatrix API with scipy 2.0, among other big-ticket deprecations.

I also think 1.9 should be followed by 1.10.
I'll add a reminder that for 2.0.0, we have the commitment to remove all the numpy names that are currently imported into the scipy namespace; see https://github.com/scipy/scipy/pull/10290 and the code in scipy/__init__.py.

Sounds like we're pretty happy with 1.10, 1.11, etc. for now. Me too.

I didn't see this till now; +1 for continuing as normal with 1.10. Beyond some users using incorrect string comparisons causing an issue with '1.10' > '1.9' being false (which is a minor thing), I see no reason to not do 1.10.0.

Seeing that there seems to be relatively broad agreement on continuing with 1.x for the time being, I think this discussion has run its course?
As an immediate outcome, I'd like to propose creating milestones for 1.10 & 1.11 already - in the past we've missed promised deprecations, and having such future milestones would allow us to file and milestone issues for a given action-to-be-taken already now (i.e. something gets deprecated for 1.9 with promised removal in 1.11, and we already file an issue against 1.11 as a definite reminder to ourselves to remove said functionality).

I'd like to propose creating milestones for 1.10 & 1.11 already

Ok, I've gone ahead and created those milestones.
I have to admit I tend to focus what volunteer time I have mostly on PRs that are open with a milestone rather than issues, but hopefully others will occasionally scan the milestoned deprecation-removal issues and then open a PR to do the final removal within a few weeks-months of the next release--then I'd be unlikely to miss the PR.
I suppose those PRs would typically be straightforward to merge anyway.

Cool thanks! I think this issue can thus be closed.

While looking for deprecation warnings, I just noticed that https://github.com/scipy/scipy/pull/14919 promises the removal of several public modules by 2.0.0. I think that's compatible with the discussion we had above, but just wanted to call attention to it. I'll add it to the 2.0 wiki.

Yes, that just meant "not in 2 releases, we're leaving it in for longer"


NullReferenceException in HighlightHelper (v8.9.34)

Hello Samir,
Since I have started using v8.9.34, I see many of the following exceptions in the Output Window (part "Extensions"):
System.AggregateException: One or more errors occurred. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at CodeNav.Helpers.HighlightHelper.<FindItemContainer>d__6.MoveNext() in D:\a\CodeNav\CodeNav\CodeNav.Shared\Helpers\HighlightHelper.cs:line 153
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at CodeNav.Helpers.HighlightHelper.<Highlight>d__5.MoveNext() in D:\a\CodeNav\CodeNav\CodeNav.Shared\Helpers\HighlightHelper.cs:line 106
   --- End of inner exception stack trace ---
---> (Inner Exception #0) System.NullReferenceException: Object reference not set to an instance of an object.
   at CodeNav.Helpers.HighlightHelper.<FindItemContainer>d__6.MoveNext() in D:\a\CodeNav\CodeNav\CodeNav.Shared\Helpers\HighlightHelper.cs:line 153
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

Consequently, auto-highlighting is broken.
I don't have a precise repro scenario for this one, but it happens often, mostly by just clicking in the C# code being edited.
Please fix this.
A little piece of advice: have you ever considered enabling C# 8 Nullable Reference Types feature in your project(s)? This would definitely help anticipating this kind of issues.
Thanks in advance,
Didier

(forgot to mention: I'm using VS 2019 v16.11.4)

Thanks for reporting!
Should be fixed in the latest release (8.9.40)
I took your advice and enabled nullable, as you noticed it has caused some regressions, but lets hope it puts and end to the null ref exceptions

Hello Samir,
The issue seems to be fixed, indeed.
Best regards,
Didier


Make it possible to test runners that don't support all metrics

Runners may only partially support metrics. This partial support runs along axes:

attempted & committed
counters & distributions & gauges & ...

Prior to this PR, we have categories for the first axis, but not the second.
This means that a runner that supports only part of the second axis has to blacklist tests
on the first axis. Adding categories for both axes lets runners build a matrix of supported
features.
I also renamed the existing categories so that they are grouped alphabetically. Happy to
undo if this is not a good change.
This also lets the DataflowRunner run more tests by accurately identifying its test
matrix.

R: @aviemzur
I know you have designs on making the second axis irrelevant, but as it's not yet irrelevant I'd like to make this change now to improve test coverage of existing runners.

Coverage decreased (-0.01%) to 70.268% when pulling d2dab0acdcd5e54a66878a12e30fc88fc31ede9a on dhalperi:metrics-tests into ea0f37db76b18efa3b7d145e0168e3d3e4bede28 on apache:master.

Run Dataflow ValidatesRunner

Looks like the 2 main tests in MetricsTest still basically use all of the metrics types. So they are still not runnable by Dataflow runner.
Perhaps split these tests or add more tests, each using a specific metric type?

Regarding the category names:
What was the reason for the changes:
UsesAttemptedMetrics -> UsesMetricsAttempted
UsesCommittedMetrics -> UsesMetricsCommitted
And the new categories:
UsesMetricsCounter
UsesMetricsDistribution
UsesMetricsGauge
Is the format of UsesMetrics* for searchability/completion reasons?
I believe modern IDEs have solved this issue and we should opt for more human comprehensible names instead.
This would be more consistent with other category names which also opted for more human comprehensible names. For example: UsesTimersInParDo and UsesSplittableParDoWithWindowedSideInputs.

run Dataflow ValidatesRunner

run Dataflow ValidatesRunner

retest this please

jenkins appears to be kinda hosed, but @aviemzur please take another look.