kong doesn't connect to same cassandra cluster when IPs have changed

Summary
Kong is connected to Cassandra cluster in the Kubernetes environment using the service name. As long as the nodes are up and running Kong is able to connect to the database and when the nodes are down, Kong reports database is not reachable which is expected.
But Kong is still trying to connect to the old set of IPs when Cassandra cluster is back with same service name with a different set of IPs. Due to this Kong is under the impression that Cassandra is down.
Tried kong reload after the Cassandra cluster is up and running, but kong doesn't connect to new IPs but failing with this error.
[cassandra] failed to refresh cluster topology:
failed to acquire refresh lock: timeout (ver_refresh=8), context: ngx.timer

Kong Version : 2.0.4
Steps to reproduce:
1) start kong backed with Cassandra DB as cluster setup in Kubernetes env.
$ kubectl get pods -o wide
NAME                            READY   STATUS        RESTARTS   AGE   IP              NODE                 NOMINATED NODE
**-kong-24-hxrwl                1/1     Running       0          9m    <IP_ADDRESS>    ****                 <none>
**-kong-db-0                    1/1     Running       0          4d    <IP_ADDRESS>   ****                 <none>
**-kong-db-1                    1/1     Running       0          4d    <IP_ADDRESS>    ****                 <none>
**-kong-db-2                    1/1     Running       0          4d    <IP_ADDRESS>     ****                 <none>

from the kong logs

2020/08/26 12:28:06 [verbose] Kong: 2.0.4
--
  | 2020/08/26 12:28:06 [debug] ngx_lua: 10015
  | 2020/08/26 12:28:06 [debug] nginx: 1015008
  | 2020/08/26 12:28:06 [debug] Lua: LuaJIT 2.1.0-beta3
  | 2020/08/26 12:28:06 [verbose] no config file found at /etc/kong/kong.conf
  | 2020/08/26 12:28:06 [verbose] reading config file at /etc/kong.conf
  | 2020/08/26 12:28:06 [debug] reading environment variables
  | 2020/08/26 12:28:06 [debug] KONG_PLUGINS ENV found with "bundled,kong-splunk-log,kong-spec-expose,kong-upstream-jwt,kong-oidc-auth,prometheus,statsd,middleman,newrelic-insights"
  | 2020/08/26 12:28:06 [debug] KONG_ADMIN_LISTEN ENV found with "<IP_ADDRESS>:8001,<IP_ADDRESS>:8444 ssl"
  | 2020/08/26 12:28:06 [debug] KONG_PROXY_ACCESS_LOG ENV found with "/var/log/kong_proxy_access.log"
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_ADMIN_SSL_CERTIFICATE_KEY ENV found with "/usr/local/kong/ssl/***REDACTED***"
  | 2020/08/26 12:28:06 [debug] KONG_CASSANDRA_USERNAME ENV found with "konguser"
  | 2020/08/26 12:28:06 [debug] KONG_SSL_CERT_KEY ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_ADMIN_SSL_CERT_KEY ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_CASSANDRA_PASSWORD ENV found with "******"
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_ADMIN_SSL_CERTIFICATE ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_ADMIN_SSL_CERT ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_LOG_LEVEL ENV found with "info"
  | 2020/08/26 12:28:06 [debug] KONG_DATABASE ENV found with "cassandra"
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_DAEMON ENV found with "off"
  | 2020/08/26 12:28:06 [debug] KONG_PROXY_ERROR_LOG ENV found with "/var/log/kong_proxy_error.log"
  | 2020/08/26 12:28:06 [debug] KONG_CASSANDRA_CONTACT_POINTS ENV found with "ie-kong-db"
  | 2020/08/26 12:28:06 [debug] KONG_CASSANDRA_CONSISTENCY ENV found with "QUORUM"
  | 2020/08/26 12:28:06 [debug] KONG_DB_CACHE_TTL ENV found with "60"
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_HTTP_SSL_CERTIFICATE ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_DB_UPDATE_PROPAGATION ENV found with "5 # Default is 0"
  | 2020/08/26 12:28:06 [debug] KONG_SSL_CERT ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_PROXY_SSL_CERTIFICATE_KEY ENV found with "/usr/local/kong/ssl/i***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_HTTP_SSL_CERTIFICATE_KEY ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_ADMIN_ERROR_LOG ENV found with "/var/log/kong_admin_error.log"
  | 2020/08/26 12:28:06 [debug] KONG_NGINX_PROXY_SSL_CERTIFICATE ENV found with "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] KONG_DNS_RESOLVER ENV found with "<IP_ADDRESS>"
  | 2020/08/26 12:28:06 [debug] KONG_ADMIN_ACCESS_LOG ENV found with "/var/log/kong_admin_access.log"
  | 2020/08/26 12:28:06 [debug] admin_access_log = "/var/log/kong_admin_access.log"
  | 2020/08/26 12:28:06 [debug] admin_error_log = "/var/log/kong_admin_error.log"
  | 2020/08/26 12:28:06 [debug] admin_listen = {"<IP_ADDRESS>:8001","<IP_ADDRESS>:8444 ssl"}
  | 2020/08/26 12:28:06 [debug] admin_ssl_cert = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] admin_ssl_cert_key = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] anonymous_reports = true
  | 2020/08/26 12:28:06 [debug] cassandra_consistency = "QUORUM"
  | 2020/08/26 12:28:06 [debug] cassandra_contact_points = {"ie-kong-db"}
  | 2020/08/26 12:28:06 [debug] cassandra_data_centers = {"dc1:2","dc2:3"}
  | 2020/08/26 12:28:06 [debug] cassandra_keyspace = "kong"
  | 2020/08/26 12:28:06 [debug] cassandra_lb_policy = "RequestRoundRobin"
  | 2020/08/26 12:28:06 [debug] cassandra_password = "******"
  | 2020/08/26 12:28:06 [debug] cassandra_port = 9042
  | 2020/08/26 12:28:06 [debug] cassandra_refresh_frequency = 60
  | 2020/08/26 12:28:06 [debug] cassandra_repl_factor = 1
  | 2020/08/26 12:28:06 [debug] cassandra_repl_strategy = "SimpleStrategy"
  | 2020/08/26 12:28:06 [debug] cassandra_schema_consensus_timeout = 10000
  | 2020/08/26 12:28:06 [debug] cassandra_ssl = false
  | 2020/08/26 12:28:06 [debug] cassandra_ssl_verify = false
  | 2020/08/26 12:28:06 [debug] cassandra_timeout = 5000
  | 2020/08/26 12:28:06 [debug] cassandra_username = "konguser"
  | 2020/08/26 12:28:06 [debug] client_body_buffer_size = "8k"
  | 2020/08/26 12:28:06 [debug] client_max_body_size = "0"
  | 2020/08/26 12:28:06 [debug] client_ssl = false
  | 2020/08/26 12:28:06 [debug] cluster_control_plane = "<IP_ADDRESS>:8005"
  | 2020/08/26 12:28:06 [debug] cluster_listen = {"<IP_ADDRESS>:8005"}
  | 2020/08/26 12:28:06 [debug] database = "cassandra"
  | 2020/08/26 12:28:06 [debug] db_cache_ttl = 60
  | 2020/08/26 12:28:06 [debug] db_cache_warmup_entities = {"services","plugins"}
  | 2020/08/26 12:28:06 [debug] db_resurrect_ttl = 30
  | 2020/08/26 12:28:06 [debug] db_update_frequency = 5
  | 2020/08/26 12:28:06 [debug] dns_error_ttl = 1
  | 2020/08/26 12:28:06 [debug] dns_hostsfile = "/etc/hosts"
  | 2020/08/26 12:28:06 [debug] dns_no_sync = false
  | 2020/08/26 12:28:06 [debug] dns_not_found_ttl = 30
  | 2020/08/26 12:28:06 [debug] dns_order = {"LAST","SRV","A","CNAME"}
  | 2020/08/26 12:28:06 [debug] dns_resolver = {"<IP_ADDRESS>"}
  | 2020/08/26 12:28:06 [debug] dns_stale_ttl = 4
  | 2020/08/26 12:28:06 [debug] error_default_type = "text/plain"
  | 2020/08/26 12:28:06 [debug] go_plugins_dir = "off"
  | 2020/08/26 12:28:06 [debug] go_pluginserver_exe = "/usr/local/bin/go-pluginserver"
  | 2020/08/26 12:28:06 [debug] headers = {"server_tokens","latency_tokens"}
  | 2020/08/26 12:28:06 [debug] kic = false
  | 2020/08/26 12:28:06 [debug] log_level = "info"
  | 2020/08/26 12:28:06 [debug] lua_package_cpath = ""
  | 2020/08/26 12:28:06 [debug] lua_package_path = "./?.lua;./?/init.lua;"
  | 2020/08/26 12:28:06 [debug] lua_socket_pool_size = 30
  | 2020/08/26 12:28:06 [debug] lua_ssl_verify_depth = 1
  | 2020/08/26 12:28:06 [debug] mem_cache_size = "128m"
  | 2020/08/26 12:28:06 [debug] nginx_admin_directives = {{name="ssl_certificate_key",value="/usr/local/kong/ssl/***REDACTED***""},{name="ssl_certificate",value="/usr/local/kong/ssl/***REDACTED***""}}
  | 2020/08/26 12:28:06 [debug] nginx_admin_ssl_certificate = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] nginx_admin_ssl_certificate_key = "/usr/local/kong/ssl***REDACTED***""
  | 2020/08/26 12:28:06 [debug] nginx_daemon = "off"
  | 2020/08/26 12:28:06 [debug] nginx_events_directives = {{name="worker_connections",value="auto"},{name="multi_accept",value="on"}}
  | 2020/08/26 12:28:06 [debug] nginx_events_multi_accept = "on"
  | 2020/08/26 12:28:06 [debug] nginx_events_worker_connections = "auto"
  | 2020/08/26 12:28:06 [debug] nginx_http_client_body_buffer_size = "8k"
  | 2020/08/26 12:28:06 [debug] nginx_http_client_max_body_size = "0"
  | 2020/08/26 12:28:06 [debug] nginx_http_directives = {{name="client_max_body_size",value="0"},{name="ssl_prefer_server_ciphers",value="off"},{name="client_body_buffer_size",value="8k"},{name="ssl_protocols",value="TLSv1.2 TLSv1.3"},{name="ssl_certificate",value="/usr/local/kong/ssl/***REDACTED***"},{name="ssl_session_tickets",value="on"},{name="ssl_certificate_key",value="/usr/local/kong/ssl/***REDACTED***""},{name="ssl_session_timeout",value="1d"}}
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_certificate = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_certificate_key = "/usr/local/kong/ssl/***REDACTED***"
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_prefer_server_ciphers = "off"
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_protocols = "TLSv1.2 TLSv1.3"
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_session_tickets = "on"
  | 2020/08/26 12:28:06 [debug] nginx_http_ssl_session_timeout = "1d"
  | 2020/08/26 12:28:06 [debug] nginx_http_status_directives = {}
  | 2020/08/26 12:28:06 [debug] nginx_http_upstream_directives = {{name="keepalive_requests",value="100"},{name="keepalive_timeout",value="60s"},{name="keepalive",value="60"}}
  | 2020/08/26 12:28:06 [debug] nginx_http_upstream_keepalive = "60"
  | 2020/08/26 12:28:06 [debug] nginx_http_upstream_keepalive_requests = "100"
  | 2020/08/26 12:28:06 [debug] nginx_http_upstream_keepalive_timeout = "60s"
  | 2020/08/26 12:28:06 [debug] nginx_main_daemon = "off"
  | 2020/08/26 12:28:06 [debug] nginx_main_directives = {{name="daemon",value="off"},{name="worker_rlimit_nofile",value="auto"},{name="worker_processes",value="auto"}}
  | 2020/08/26 12:28:06 [debug] nginx_main_worker_processes = "auto"
  | 2020/08/26 12:28:06 [debug] nginx_main_worker_rlimit_nofile = "auto"
  | 2020/08/26 12:28:06 [debug] nginx_optimizations = true
  | 2020/08/26 12:28:06 [debug] nginx_proxy_directives = {{name="real_ip_header",value="X-Real-IP"},{name="real_ip_recursive",value="off"},{name="ssl_certificate_key",value="/usr/local/kong/ssl/***REDACTED***""},{name="ssl_certificate",value="/usr/local/kong/ssl/***REDACTED***""}}
  | 2020/08/26 12:28:06 [debug] nginx_proxy_real_ip_header = "X-Real-IP"
  | 2020/08/26 12:28:06 [debug] nginx_proxy_real_ip_recursive = "off"
  | 2020/08/26 12:28:06 [debug] nginx_proxy_ssl_certificate = "/usr/local/kong/ssl/***REDACTED***"
  | 2020/08/26 12:28:06 [debug] nginx_proxy_ssl_certificate_key = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] nginx_sproxy_directives = {}
  | 2020/08/26 12:28:06 [debug] nginx_status_directives = {}
  | 2020/08/26 12:28:06 [debug] nginx_stream_directives = {}
  | 2020/08/26 12:28:06 [debug] nginx_supstream_directives = {}
  | 2020/08/26 12:28:06 [debug] nginx_upstream_directives = {{name="keepalive_requests",value="100"},{name="keepalive_timeout",value="60s"},{name="keepalive",value="60"}}
  | 2020/08/26 12:28:06 [debug] nginx_upstream_keepalive = "60"
  | 2020/08/26 12:28:06 [debug] nginx_upstream_keepalive_requests = "100"
  | 2020/08/26 12:28:06 [debug] nginx_upstream_keepalive_timeout = "60s"
  | 2020/08/26 12:28:06 [debug] nginx_worker_processes = "auto"
  | 2020/08/26 12:28:06 [debug] pg_database = "kong"
  | 2020/08/26 12:28:06 [debug] pg_host = "<IP_ADDRESS>"
  | 2020/08/26 12:28:06 [debug] pg_max_concurrent_queries = 0
  | 2020/08/26 12:28:06 [debug] pg_port = 5432
  | 2020/08/26 12:28:06 [debug] pg_semaphore_timeout = 60000
  | 2020/08/26 12:28:06 [debug] pg_ssl = false
  | 2020/08/26 12:28:06 [debug] pg_ssl_verify = false
  | 2020/08/26 12:28:06 [debug] pg_timeout = 5000
  | 2020/08/26 12:28:06 [debug] pg_user = "kong"
  | 2020/08/26 12:28:06 [debug] plugins = {"bundled","kong-splunk-log","kong-spec-expose","kong-upstream-jwt","kong-oidc-auth","prometheus","statsd","middleman","newrelic-insights"}
  | 2020/08/26 12:28:06 [debug] prefix = "/usr/local/kong/"
  | 2020/08/26 12:28:06 [debug] proxy_access_log = "/var/log/kong_proxy_access.log"
  | 2020/08/26 12:28:06 [debug] proxy_error_log = "/var/log/kong_proxy_error.log"
  | 2020/08/26 12:28:06 [debug] proxy_listen = {"<IP_ADDRESS>:8000 reuseport backlog=16384","<IP_ADDRESS>:8443 http2 ssl reuseport backlog=16384"}
  | 2020/08/26 12:28:06 [debug] real_ip_header = "X-Real-IP"
  | 2020/08/26 12:28:06 [debug] real_ip_recursive = "off"
  | 2020/08/26 12:28:06 [debug] role = "traditional"
  | 2020/08/26 12:28:06 [debug] router_consistency = "strict"
  | 2020/08/26 12:28:06 [debug] router_update_frequency = 1
  | 2020/08/26 12:28:06 [debug] ssl_cert = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] ssl_cert_key = "/usr/local/kong/ssl/***REDACTED***""
  | 2020/08/26 12:28:06 [debug] ssl_cipher_suite = "intermediate"
  | 2020/08/26 12:28:06 [debug] ssl_ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
  | 2020/08/26 12:28:06 [debug] status_access_log = "off"
  | 2020/08/26 12:28:06 [debug] status_error_log = "logs/status_error.log"
  | 2020/08/26 12:28:06 [debug] status_listen = {"off"}
  | 2020/08/26 12:28:06 [debug] stream_listen = {"off"}
  | 2020/08/26 12:28:06 [debug] trusted_ips = {}
  | 2020/08/26 12:28:06 [debug] upstream_keepalive = 60
  | 2020/08/26 12:28:06 [verbose] prefix in use: /usr/local/kong
  | 2020/08/26 12:28:06 [debug] resolved Cassandra contact point 'ie-kong-db' to: <IP_ADDRESS>
  | 2020/08/26 12:28:06 [debug] loading subsystems migrations...
  | 2020/08/26 12:28:06 [verbose] retrieving keyspace schema state...
  | 2020/08/26 12:28:07 [verbose] schema state retrieved
  | 2020/08/26 12:28:07 [debug] loading subsystems migrations...
  | 2020/08/26 12:28:07 [verbose] retrieving keyspace schema state...
  | 2020/08/26 12:28:07 [verbose] schema state retrieved
  | 2020/08/26 12:28:07 [info] Database is already up-to-date
  | Starting Kong
  | nginx: [warn] [lua] cluster.lua:597: refresh(): [lua-cassandra] found contact point with '<IP_ADDRESS>' as rpc_address, using '<IP_ADDRESS>' to contact it instead. If this is incorrect you should avoid using '<IP_ADDRESS>' in rpc_address

few key configs/params from the above logs:
  | 2020/08/26 12:28:06 [debug] cassandra_consistency = "QUORUM"
  | 2020/08/26 12:28:06 [debug] cassandra_contact_points = {"ie-kong-db"}
  | 2020/08/26 12:28:06 [debug] cassandra_data_centers = {"dc1:2","dc2:3"}
  | 2020/08/26 12:28:06 [debug] cassandra_keyspace = "kong"
  | 2020/08/26 12:28:06 [debug] cassandra_lb_policy = "RequestRoundRobin"
  | 2020/08/26 12:28:06 [debug] cassandra_port = 9042
  | 2020/08/26 12:28:06 [debug] cassandra_refresh_frequency = 60
  | 2020/08/26 12:28:06 [debug] cassandra_repl_factor = 1
  | 2020/08/26 12:28:06 [debug] cassandra_repl_strategy = "SimpleStrategy"
  | 2020/08/26 12:28:06 [debug] cassandra_schema_consensus_timeout = 10000
  | 2020/08/26 12:28:06 [debug] cassandra_ssl = false
  | 2020/08/26 12:28:06 [debug] cassandra_ssl_verify = false
  | 2020/08/26 12:28:06 [debug] cassandra_timeout = 5000
  resolved Cassandra contact point 'ie-kong-db' to: <IP_ADDRESS>

2. make Cassandra cluster down/stop
3. restart the cassandra cluster, kubernetes allocates them with new IPs
$ kubectl get pods -o wide
NAME                            READY   STATUS    RESTARTS   AGE   IP              NODE                 NOMINATED NODE
**-kong-24-hxrwl                1/1     Running   0          17m   <IP_ADDRESS>    ****                 <none>
**-kong-db-0                    1/1     Running   0          4m    <IP_ADDRESS>    ****                   <none>
**-kong-db-1                    1/1     Running   0          3m    <IP_ADDRESS>    ****                   <none>
**-kong-db-2                    1/1     Running   0          2m    <IP_ADDRESS>   ****                 <none>

4. Wait for cassandra_refresh_frequency = 60 for kong to get new set of IPs, but nothing happened.
kong trying with old Cassandra IPs
2020/08/26 16:33:39 [error] 167#0: *745817 [lua] init.lua:400: [cluster_events] failed to poll:
failed to retrieve events from DB:all hosts tried for query failed. <IP_ADDRESS>:
host still considered down for 33.393s (last error: no route to host).
<IP_ADDRESS>: host still considered down for 16.239s (last error: no route to host).
<IP_ADDRESS>: host still considered down for 19.245s (last error: no route to host), context: ngx.timer

5. So did kong reload to clear the cache and connect to new IPs.
2020/08/26 12:51:09 [error] 172#0: *66865 [lua] connector.lua:275: [cassandra] failed to refresh cluster topology:
failed to acquire refresh lock: timeout (ver_refresh=8), context: ngx.timer
2020/08/26 12:51:09 [error] 169#0: *66866 [lua] connector.lua:275: [cassandra] failed to refresh cluster topology:
failed to acquire refresh lock: timeout (ver_refresh=8), context: ngx.timer
2020/08/26 12:51:09 [crit] 166#0: *69915 [lua] init.lua:298: [cluster_events] no 'at' in shm, polling events from:<PHONE_NUMBER>.565, context: ngx.timer
2020/08/26 12:51:09 [error] 166#0: *69915 [lua] init.lua:400: [cluster_events] failed to poll:
failed to retrieve events from DB: all hosts tried for query failed.
<IP_ADDRESS>: host still considered down for 32.974s (last error: no route to host).
<IP_ADDRESS>: host still considered down for 12.758s (last error: no route to host).
<IP_ADDRESS>: host still considered down for 24.98s (last error: no route to host), context: ngx.timer

2020/08/26 12:51:09 [error] 171#0: *66862 [lua] connector.lua:275: [cassandra] failed to refresh cluster topology:
failed to acquire refresh lock: timeout (ver_refresh=8), context: ngx.timer

Similar issue was reported couple of years back here - https://github.com/Kong/kong/issues/2674
and from the discussion here - https://github.com/Kong/kong/pull/3752, this was resolved in this PR - https://github.com/Kong/kong/pull/5071/files.
Can someone please check this and let us know if anything missing from our end.
Thanks!

@thibaultcha  @hishamhm can someone please check and help us to resolve this issue.

@darrenjennings @daviesf1 @deirdre-anderson @DMarby notifying few more people so someone can help us here.

Could you exec into the Kong node and do a dig (or equivalent) on the cassandra service name to check the new ip is resolving correctly

@hutchic connection from Kong pod/node to Cassandra cluster DB is resolvable with service name even after change of IPs.
 wget ie-kong-db.******.svc
--2020-09-03 07:14:53--  http://ie-kong-db.*****.svc/
Resolving ie-kong-db.****.svc (ie-kong-db.****.svc)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>

I am suspecting two things here

failed to refresh topology
kong still trying for old set of IPs, probably cache is not cleared even after kong reload

[cassandra] failed to refresh cluster topology: failed to acquire refresh lock: timeout (ver_refresh=18830), context: ngx.timer
2020/09/03 07:17:43 [error] 163#0: *31626769 [lua] connector.lua:275: [cassandra] failed to refresh cluster topology: failed to acquire refresh lock: timeout (ver_refresh=18830), context: ngx.timer
2020/09/03 07:17:46 [warn] 163#0: *31629856 [lua] cluster.lua:182: set_peer_down(): [lua-cassandra] setting host at <IP_ADDRESS> DOWN, context: ngx.timer
2020/09/03 07:17:46 [crit] 163#0: *31629856 [lua] init.lua:298: [cluster_events] no 'at' in shm, polling events from:<PHONE_NUMBER>.475, context: ngx.timer
2020/09/03 07:17:49 [warn] 163#0: *31629856 [lua] cluster.lua:182: set_peer_down(): [lua-cassandra] setting host at <IP_ADDRESS> DOWN, context: ngx.timer
2020/09/03 07:17:49 [error] 163#0: *31629856 [lua] init.lua:400: [cluster_events] failed to poll: failed to retrieve events from DB: all hosts tried for query failed. <IP_ADDRESS>: host still considered down for 10.91s (last error: no route to host). <IP_ADDRESS>: host still considered down for 60s (last error: no route to host). <IP_ADDRESS>: host seems unhealthy, considering it down (no route to host), context: ngx.timer

@hutchic can you check the latest logs and guide us what went wrong here.

@hutchic required info was updated, can someone check this and update

@Tieske could you please check this once, @hutchic has labelled this issue as pending on author and no one is looking into this issue even after providing sufficient logs.

@kikito could you check this once.

K so we're hitting https://github.com/Kong/kong/blob/254deec3cceef78654a1cba6eb32798c417e993a/kong/db/strategies/cassandra/connector.lua#L275
err is [cassandra] failed to refresh cluster topology: failed to acquire refresh lock: timeout (ver_refresh=18830), context: ngx.timer
Which comes from https://github.com/thibaultcha/lua-cassandra/blob/master/lib/resty/cassandra/cluster.lua#L563
Is it possible getting the lock on that "Cassandra" dict times out because the existing contact points are unavailable?

Hi there,
To me, the issue here seems to be that in restarting all of your Cassandra nodes at once, your are also invalidating the IP address of the - only - contact point you are providing Kong with, aka ie-kong-db. Kong resolves the C* contact points before instantiating the C* cluster object. This means that currently, your contact point's IP addresses should not change once Kong has started. The address of other nodes in the C* cluster can change, but not that of all contact points.
This is originally due to underlying OpenResty limitations with regards to resolving hostnames, see this note in cassandra/connector.lua. Underlying OpenResty libraries such as lua-cassandra must generally accept already resolved hostnames since they can never assume that a DNS resolver is available.
kong reload does not help because it only restarts the Nginx workers, while the DB singleton is initialized in the master process. For the worker processes to fork() with a new DB singleton, Kong needs to be restarted entirely at the moment. It also does not clear the kong_cassandra shared memory zone, so the cluster refresh lock is probably still in there and prevents new workers from acquiring it until the lock expires (30 seconds, currently not configurable; but this would not help here anyway).
For now, I'd suggest:

That you specify more than a single contact point for your C* cluster, and to guarantee that some of these CPs will stay up
A patch for Kong in order for workers to initialize their own DB singleton so that kong reload after changes to cassandra_contact_points can take effect.
A patch for lua-cassandra to support specifying contact points as hostnames. I believe this to be the most involved patch since it'll require workarounds for underlying OpenResty limitations with cosockets, even maybe embedding a DNS resolver within it.

@thibaultcha thanks for responding. We can't pass multiple contact points as Cassandra is already setup in cluster mode and restarting of this service will change the IP address for pods/containers as part of Kubernetes/Openshift functionality.
If I understand correctly, this issue can be resolved with some changes in Kong to support new_contact points after kong_reload.

@thibaultcha any tentative dates when this feature will be available in open source?

@thibaultcha it would be helpful if someone can provide us the updates on this issue ?

@thibaultcha it would be helpful if someone can provide us the updates on this issue ?

cc @guanlan @dndx

cc @guanlan @dndx

@guanlan @dndx can someone share the update on this issue?

@thibaultcha  @guanlan @dndx can someone share the update on this issue?


Input saved too frequently when scheduling a BBB meeting

Bug Report
Actual Behavior
When scheduling a meeting on Marsha BBB, the form fields update too frequently and block the input.
Steps to Reproduce

Add a Marsha BBB component
Fill in the form fields, taking a few pauses during the input

bbb-input.webm
Expected behavior/code
In comparison, the description input on Marsha Live is much more fluid and does not block the user during the writing.
Environment

Marsha version: Marsha BBB (production)
Platform: studio.fun-mooc.fr

Fixed in #1750


Update UG for add insurance feature

Fixes #251 too

I agree, its becoming too repetitive, so i think it would be good to just put it under add insurance only


Add support for building ee image using local edpm-ansible repo

In order to build ee image from local edpm-ansible changes. It adds the support for the same by passing the clone directory as a volume to the build args.
It will be useful in CI jobs where the project is clonned in the job workspace.
Signed-off-by: Chandan Kumar<EMAIL_ADDRESS>

/ok-to-test

/assign @rebtoor

pip install pre-commit
pre-commit run --all-files --show-diff-on-failure

/lgtm


Feature request: generate solidity code

I wonder how far is Panoramix from generating Solidity code that can be compiled in solc. This feature could improve testing of the decompiled code, since the bytecode and its recompiled version can be differentially tested. Is that something you discarded a possible feature or it is planed eventually?
Keep up the hard work!

I'm happy you like Panoramix! :)
As for the Solidity code, and code that can be recompiled, there are a few ways of approaching that:

Writing a recompiler/interpreter of the .json form ( that is, from https://eveem.org/json/0x06012c8cf97BEaD5deAe237070F9587f8E7A266d into the bytecode)

This is actually quite feasible and quite possible. I definitely wouldn't trust such produced bytecode in production becaause Panoramix still has a bunch of bugs that cause it to decompile incorrectly at times, BUT it would be immensely useful for testing the decompiler itself. With such an interpreter/recompiler, we could re-run a history of all Ethereum transactions and see how many of them produce different results compared to the original ones. This would be the best metric for accuracy of the decompilation process

Changing output from Python'esque pseudocode to Solidity pseudocode

This too is feasible and doable, although I'm definitely not attempting that. I absolutely hate the aesthetics of Solidity ;) Also, if you want to have the decompiled bytecode as readable as possible, sticking to a strict solidity syntax will be counter-productive - there are multiple statement kinds that are right now very readable in Panoramix, but would be way less so if it was Solidity.

The thing you actually asked, which is recompilable and readable solidity bytecode

This would be extremely difficult, if not impossible even. For starters, Solidity doesn't allow direct memory access, so you would need do do a ton of hacking around the language to make it work. Most of the work spent on Panoramix, I spent trying to simplify/remove all the direct memory access statements, but it is very hard.
Then, you have multiple statements (like typecastings), that Panoramix produces, but Solidity would never allow. You would need to add extra code to make it go through solc.
And don't get me even started on storages... :)
In general, it would be a crazy-difficult thing, and if someone has skills and time to do it, there are many other things in Panoramix that would be more useful to add :)


poketile game time limit doesnt stop when modal window is opened.

when modal window is opened, it is ideal to stop the status of running game.
while poketile's time limit does not stop when modal window is opened. this results game to restart.

Approved

I will work on this problem if #157 is fixed


Header row values not assigned to column name on Guess

Current Behaviour (for problems)
Header row values not assigned to column name on Guess Column Properties
Expected Behaviour
Header row values are assigned to column name on Guess Column Properties
Your Environment

Data Curator version: 0.5.3 in Dev
Operating System and version: macOS High Sierra 10.13.1

Our mandatort 'asterisk' screwed up the property name :D. Will fix

Thanks @mattRedBox - all good now


fix: to address would be null when you deploy a smart contract

When us connect on the Ethereum remix using wallet connect and try to deploy using wallet connect package a exception is triggered because TO address is null.
Then, to address was changed to nullable

Resolved by https://github.com/Orange-Wallet/wallet-connect-dart/pull/22.


Update documentation about usage  of install_deps.cmake

MIGraphX can make of install_deps.cmake to install dependencies as follows :
cmake -P install_deps.cmake --prefix /path/to/deps
This is not documented in README.md.
Upon trying to use this way, it currently fails with parsing error for zlib.  It is incorrectly picking URL to fetch that package.

install_deps.cmake should just be removed. It was there only to help support backwards compatibility with older scripts that were building migraphx. Since its broken then there are probably no scripts using this anymore and should just be removed.


images.ChooserView: Crash for image types unknown to Filter.run

Issue Summary
Without an explicit conversion setting in settings.WAGTAILIMAGES_FORMAT_CONVERSIONS, the image chooser will stop working as soon as a single tiff image is present.
Steps to Reproduce

Create a Wagtail Image with a tiff file
Try to open image chooser

Expected Behavior
Image chooser should show
Observed Behavior
Image chooser button does not work because /cms/images/chooser/ returns 500 server error.

Backtrace
AttributeError: 'NoneType' object has no attribute 'format_name'
  File "asgiref/sync.py", line 451, in thread_handler
    raise exc_info[1]
  File "django/core/handlers/exception.py", line 38, in inner
    response = await get_response(request)
  File "django/core/handlers/base.py", line 233, in _get_response_async
    response = await wrapped_callback(request, *callback_args, **callback_kwargs)
  File "asgiref/sync.py", line 414, in __call__
    ret = await asyncio.wait_for(future, timeout=None)
  File "asyncio/tasks.py", line 442, in wait_for
    return await fut
  File "asgiref/current_thread_executor.py", line 22, in run
    result = self.fn(*self.args, **self.kwargs)
  File "asgiref/sync.py", line 455, in thread_handler
    return func(*args, **kwargs)
  File "django/views/decorators/cache.py", line 44, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "wagtail/admin/urls/__init__.py", line 125, in wrapper
    return view_func(request, *args, **kwargs)
  File "wagtail/admin/auth.py", line 195, in decorated_view
    return view_func(request, *args, **kwargs)
  File "django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "wagtail/images/views/chooser.py", line 82, in get
    return self.render_to_response()
  File "wagtail/images/views/chooser.py", line 121, in render_to_response
    return render_modal_workflow(
  File "wagtail/admin/modal_workflow.py", line 17, in render_modal_workflow
    response['html'] = render_to_string(html_template, template_vars or {}, request=request)
  File "django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "django/template/base.py", line 170, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/loader_tags.py", line 195, in render
    return template.render(context)
  File "django/template/base.py", line 172, in render
    return self._render(context)
  File "django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/defaulttags.py", line 315, in render
    return nodelist.render(context)
  File "django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "django/template/defaulttags.py", line 214, in render
    nodelist.append(node.render_annotated(context))
  File "django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "wagtail/images/templatetags/wagtailimages_tags.py", line 107, in render
    rendition = get_rendition_or_not_found(image, self.filter)
  File "wagtail/images/shortcuts.py", line 13, in get_rendition_or_not_found
    return image.get_rendition(specs)
  File "wagtail/images/models.py", line 343, in get_rendition
    output_extension = filter.spec.replace('|', '.') + FORMAT_EXTENSIONS[generated_image.format_name]

This seems to be due to the Filter.run in https://github.com/wagtail/wagtail/blob/f220d45e327e0e1546f5577ed3bb4f081028353a/wagtail/images/models.py#L456 returning None.
A workaround is configuring an image conversion for tiff to a known output format:
settings.WAGTAILIMAGES_FORMAT_CONVERSIONS = {
   'tiff': 'jpeg'
}

I am not sure what the best solution is, however it seems somewhat unfriendly to me that Filter.run fails in a way that is ignored by get_rendition, causing a hard to understand exception later on.
There are three solutions that come to my mind right now:

Filter.run could raise an exception if it doesn't know how to write the requested output format
Filter.run could have a catch-all default conversion which is used for all unknown output types
get_rendition could throw an exception if Filter.run returns None, providing more information about what just happened and which image caused it

Technical details

Python version: Python 3.9.10
Django version: 3.2.13
Wagtail version: 2.15.2

Create a Wagtail Image with a tiff file

How are you doing this? In an out-of-the-box configuration, all image upload forms reject a tiff file with the error "Not a supported image format. Supported formats: GIF, JPEG, PNG, WEBP."

The images are created programatically from an import off another platform in my case.
The code looks like this, but maybe I did not find the correct/more straightforward way for creating the Wagtail images from code?
image = Image(title=title)
image.file.save(f"img-{entry.name}", ContentFile(entry.image), save=False)
image.file_size = image.file.size
with image.file.open() as f:
    f.seek(0)
    image._set_file_hash(f.read())
    f.seek(0)
image.save()

Thanks for the clarification! I think it makes most sense to add an exception to Filter.run when none of the output format cases match, rather than falling through and returning None.

I have opened https://github.com/wagtail/wagtail/pull/8508 implementing the suggested change.


Prevent fill on zoom

Hi,
how to prevent filling when zoom is started ? can you help me ?
  InteractiveViewer(                 panEnabled: true,                  minScale: 1,                 maxScale: 4,                 child:  SizedBox(                   width: 300,                   height: 300,                   child: FloodFillImage(                     imageProvider: NetworkImage("https://previews.123rf.com/images/inhasemiankova/inhasemiankova1606/inhasemiankova160600012/68493780-vector-coloring-simple-sun-round-mandala-for-children.jpg"),                     fillColor: _fillColor,                     avoidColor: [Colors.transparent, Colors.black],                     tolerance: 100,                   ),                 ),               ),

You could use the onInteractionStart callback from InteractiveViewer See: https://api.flutter.dev/flutter/widgets/InteractiveViewer-class.html and disable the fill function with "isFillActive" parameter set to false.

Hi Garlen,
Please give me an example in the code, I am almost new to flutter . Thank You


Doesn't work

plugin doesn't work. I am changing the fonts but nothing happens   tried to delete it and re install it and even downloading older versions  idk what is wrong with it

Are there any errors in the developer console?
Are you using the newest version?
Is the plugin enabled?

don't know how to check the first one
2nd and 3rd one answer is yes

@DaVouz To Enable DevTools go to BD settings > Developer Settings > DevTools and enable the option
Then press CTRL + SHIFT + I. A new window should pop up, head over to the Console tab and be sure you've scrolled all the way to the bottom.
Once you have this set up and open., go into settings and disable and reenable the plugin to see any new errors that appear with the plugin.

it doesn't seem to give me an error for the font plugin    only one other plugin gives me error but for some reason it works

@DaVouz If you go into the settings of the plugin, are you able to change the font that is being used?
Have you tried disabling all other plugins except the Google Fonts plugin to see if the issue still exists?

i disabled everything but it didn't work  i can select fonts  it's just that it doesn't change the fonts whatever font i select

Are you using any themes?
In the developer log, when you change a font, do you see anything similar to this:
[GoogleFonts] (2.0.11) Changing font to FontName?

well aparewell aparently when i use some  themes the font plugin doesn't work    is it the problem of the new font plugin or is it the theme's problem?

Which theme are you using? If possible, can you share the theme file as an attachment to your comment (Please don't share code in the comment?
Depending on how the theme is working, this plugin may not be compatible with it... There's only so much I can do via a plugin to overwrite theme specified fonts.

Spotify-Discord.theme.zip
yeah sure  this is the theme  it's called spotify discord

The issue is that the theme you're using is setting the --font-primary variable that I'm using for the plugin.
https://capnkitten.github.io/BetterDiscord/Themes/Spotify-Discord/css/source.css
What I may need to do is make a custom variable for google fonts that's set everywhere. I'll be experimenting with this to find a resolution to this issue.

@DaVouz Just released v2.0.13. Please try that and let me know if it resolves the issue.

yes brother  for sure that sure fixed   thank you very much i appreciate it a lot


Redisson session key to much in redis

Redisson session key is keeps increasing rapidly, now there are 300,000 key in redis, but HttpSessionListener can't get any sessionCreated even.
Expected behavior
Actual behavior
Steps to reproduce or test case
Redis version
4
Redisson version
2.15.2
Redisson configuration
ignore

Set broadcastSessionEvents = true for Redisson Tomcat Manager

Set broadcastSessionEvents = true for Redisson Tomcat Manager
The problem remains...

I gets a little events in log, but the redis key also is to much.

There are no things to do on Redisson side if your tomcat instance generate too much sessions.

I think if tomcat generate session, I will get sessionCreated even.
I was confused why it happens, thank for your reply!


Add Docker and PostgreSQL Configuration

Add Docker and PostgreSQL Configuration
This pull request introduces Docker and PostgreSQL configurations to the Job Companies and Reviews REST API project. The following changes have been made:

Added docker-compose.yml to define and manage multi-container Docker applications, including PostgreSQL and pgAdmin services.
Added Dockerfile to build a Docker image for the Java application.
Configured PostgreSQL with environment variables for user credentials and data persistence.
Set up pgAdmin for database management with default login credentials.
Updated project documentation to include Docker setup and instructions.

Screenshots
Below are the screenshots showing the created containers and images:

Merge Develop Branch into Main: Add Docker and PostgreSQL Configuration


Nextcloud : OAuth process

Hopefully you will agree to push this into /master/ and keep my updates


Update for 0.40

👍  Hi any update on when this pull request will be accepted? Forking my own branch for now :)

Sorry about the late response. Thanks! I'll try to get the npm package updated too asap.

Thanks!


Add instructions for creating/activating Jupyter Kernel when not using VSCode with Jupyter extension

The user needs to explicitly create and select a Jupyter Kernel when not using VSCode.
It might be useful to extend the instructions to cover this case.

This will be fixed in #6


Prevent propagation of scopes on non-security sub-dependencies

In https://github.com/tiangolo/fastapi/pull/2945 the behavior of cache keys was changed. The scopes are passed to every dependencies down the tree, including when these dependencies are not Security.
This results in undesired behaviors when a dependency such as a DB session is created twice, e.g.:
@app.patch("/me")
def update_current_user(
    user: UserUpdate,
    current_user: User = Security(get_current_user, scopes=["user:write"]),
    session: Session = Depends(get_session),
):
    pass

Hi @tiangolo,
is there any chance for this to be merged?


It is possible to check only modified files?

I'm using the abaplint triggered by Jenkins in an ABAP Repository. But the rules always run for all files in the repository.
I would like to know if there is a way to configure the abaplint to run only for the modified files in a given pull request.
This is because I have many files, and the checks take a long time.

Hi,
I recommend not using Jenkins for anything, instead use the built-in pipelines like GitHub Actions, Gitlab Pipelines, Azure Pipelines, Bitbucket pipelines etc. But that's a different story 😄
Typically I think its a bad idea to check only modified files,
A: "Everything is checked always for each commit" is very easy to understand and communicate, what qualifies for a modified file in git is difficult
B: Bugs in abaplint is continuously fixed, so a finding might occur outside the set of modified files
C: Only checking modified files makes it difficult to reproduce the exact behavior on local PC
For abapGit, https://github.com/abapGit/abapGit/runs/8259515028, it checks ~150k lines and 400+ objects in ~40 seconds
What is the size of your repository and how long time does it take? Also try running abaplint -p to check where the time is spent, example output when running for abapGit,

@joicecg we got the same requirement. @larshp is right it's probable the best if you could just check all but we decided to push all our 20 Years old Custom Code to a Git Repository and only check rules for new changes. (Refactor everything would be nice but would take forever).
In Gitlab i fingered out two possible Pipeline Solutions  (for Gitlab only you would need to check Jenkins parameters on your own).
If you only want to check Files in the current commit:
run_abaplint:
    image: abaplint/abaplint
    only:
         - merge_request
    script:
        - git show --pretty="" --name-only $CI_COMMIT_SHA
        - mkdir scan
        - git show --pretty="" --name-only $CI_COMMIT_SHA | xargs -I {} cp '{}' scan
        - abaplint --outformat junit --outfile report.xml
    artifacts:
        reports:
            junit: report.xml
        expire_in: 1 yr
    tags:
        - sap

(Better for MergeRequest) If you want to check all files changed in this MergeRequest:
run_abaplint:
    image: abaplint/abaplint
    only:
         - merge_request
    script:
        - git diff-tree --name-only -r $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA
        - mkdir scan
        - git diff-tree --name-only -r $CI_MERGE_REQUEST_DIFF_BASE_SHA $CI_COMMIT_SHA | xargs -I {} cp '{}' scan
        - abaplint --outformat junit --outfile report.xml
    artifacts:
        reports:
            junit: report.xml
        expire_in: 1 yr
    tags:
        - sap

from my point of view its a bad idea, eg. a modification might trigger a syntax error in a non-modified file
that being said, I am doing some stuff for a scenario that is a bit similar, but very different requirements/assumptions

Hey Lars. I would say it depends on the need. Here, for instance, we are refactoring an already existing solution and we would like to use abaplint to guide the devs to follow the Clean ABAP rules. We will have the styleguide and/or single file rules active, only. As the repository already has objects created before the Clean ABAP, we would like to focus on the findings for the new and modified files only (PR Files Changed).
In the future, when the whole refactoring is completed, we will scan the whole repo.

yea, still a bad approach IMHO, but I do understand the scenario
if working on a codebase, and doing an emergency change to an old program, you dont want to do 100 required changes, the developer and reviewer both want to do the emergency change, not the refactoring

Currently, people are creating several workarounds to manage the excluded tag (get list of files, get list of changed files, get a diff, and inject the list in the excluded). It would make the tool even more flexible.

or alternatively, doing an architecture change across 100 files, I'd be very unhappy with having to fix potentially 1000s of stylistic issues

Currently, people are creating several workarounds to manage the excluded tag (get list of files, get list of changed files, get a diff, and inject the list in the excluded). It would make the tool even more flexible.

yea, its bad IMHO, the linter as such does not know(much) about git


Options of strategy about experience sampling at Replay.get_batch.

Current Replay.get_batch return the samples as continuous range of original sequence of experiences.
I'd like to get batch data whose each sample is picked up from memory at random to get rid of bias of samples.
I would like to add an option to change the strategy about sample in Replay.get_batch.
See https://github.com/reinforceio/tensorforce/pull/59

Fixed in https://github.com/reinforceio/tensorforce/commit/31df6eddfc582642da3e1b8be354ed8c1e8c555b


[v1.23.0-beta0] regex incompatibility in wordRegex option in various cursor's methods

Prerequisites

[x] Put an X between the brackets on this line if you have done all of the following:

Reproduced the problem in Safe Mode: http://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode
Followed all applicable steps in the debugging guide: http://flight-manual.atom.io/hacking-atom/sections/debugging/
Checked the FAQs on the message board for common solutions: https://discuss.atom.io/c/faq
Checked that your issue isn't already filed: https://github.com/issues?utf8=✓&q=is%3Aissue+user%3Aatom
Checked that there is not already an Atom package that provides the described functionality: https://atom.io/packages

Description
/cc: @maxbrunsfeld
In v1.23.0-beta, cursor.getBeginningOfCurrentWordBufferPosition() does not accept JS's regex passed as wordRegex.
Because it's handled PCRE engine in superstring.
This was not problem in previous version.
This incompatibility in wordRegExp option used in various cursor's methods confuse pkg author(and of course limit what I want to do in vim-mode-plus).
From https://github.com/atom/atom/pull/15776 , this regex incompatibilities seems to be introduced.

OK: cursor.getPreviousWordBoundaryBufferPosition
NG: cursor.getBeginningOfNextWordBufferPosition
NG: cursor.getBeginningOfCurrentWordBufferPosition

I see error like thisError: PCRE does not support \L, \l, \N{name}, \U, or \u.
Steps to Reproduce

Execute following code in chrome-dev console

;(function regexIncompatibility() {
  const cursor = atom.workspace.getActiveTextEditor().getLastCursor()
  const wordRegex = cursor.subwordRegExp()
  try {
    console.log("OK", cursor.getPreviousWordBoundaryBufferPosition({wordRegex}))
  } catch (e) {}
  try {
    console.log("NG", cursor.getBeginningOfNextWordBufferPosition({wordRegex}))
  } catch (e) {}
  try {
    console.log("NG", cursor.getBeginningOfCurrentWordBufferPosition({wordRegex}))
  } catch (e) {}
})()

In v1.23.0-beta: Only 1st case("OK") is succeeded.
In v1.22.0: All success

Expected behavior: [What you expect to happen]
The wordRegex options used in cursor's method should be handled consistently(same regex should be supported ideally).
Actual behavior: [What actually happens]
Some cursors' method accept certain regex, but other throw exception with same regex.
Reproduces how often: [What percentage of the time does it reproduce?]
100%.
Versions
Atom    : 1.23.0-beta0
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0

Additional Information
In vim-mode-plus, in motion command.
It use cursor.getBeginningOfCurrentWordBufferPosition and pass various wordRegExp to achieve various movement in different command.
In subword movement command, I had call like following

cursor.getBeginningOfCurrentWordBufferPosition({wordRegex: cursor.subwordRegExp()})
From v1.23.0-beta, it throw error since passed regex is eventually handled by superstring's PCRE engine.

https://github.com/t9md/atom-vim-mode-plus/blob/741c38a425b2d9c60124b6852ea7cb568b1bed35/lib/motion.js#L452

/cc: @maxbrunsfeld @nathansobo

Wow, I'm sorry about that @t9md, I guess our test coverage of the subword commands is not great. I'll fix the subwordRegExp to be PCRE-compatible and we'll get that into a beta hotfix.

Thank you for really quick fix for this!
I could confirm fix with following build.
~/Downloads% ./Atom\ 10.app/Contents/MacOS/Atom  --version
Atom    : 1.24.0-dev-fd15062
Electron: 1.6.15
Chrome  : 56.0.2924.87
Node    : 7.4.0


General Issue: Running list of functions to remove from admiral

Background Information

[x] .rlang_as_friendly_type
[x] .rlang_as_friendly_vector_type
[x] .rlang_stop_unexpected_typeof
[ ] %notin% (keep in admiral)
[ ] %or%
[ ] anti_join
[ ] arg_name
[ ] as_name
[x] assert_character_scalar
[x] assert_character_vector
[x] assert_data_frame
[ ] assert_db_requirements
[x] assert_expr
[x] assert_filter_cond
[x] assert_function
[x] assert_function_param
[x] assert_has_variables
[x] assert_integer_scalar
[x] assert_list_element
[x] assert_list_of
[ ] assert_list_of_formulas
[x] assert_logical_scalar
[ ] assert_named_exprs
[x] assert_numeric_vector
[x] assert_one_to_one
[x] assert_order_vars
[x] assert_param_does_not_exist
[x] assert_s3_class
[x] assert_symbol
[ ] assert_terms (keep in admiral - rename?)
[x] assert_unit
[ ] assert_valid_queries
[x] assert_vars
[x] assert_varval_list
[x] backquote
[ ] contains_vars
[x] dataset_vignette
[x] dquote
[x] enumerate
[x] expect_dfs_equal
[ ] extend_source_datasets
[ ] extract_vars
[ ] format.sdg_select (keep in admiral)
[ ] format.smq_select (keep in admiral)
[ ] format_arg
[x] friendly_type_of
[ ] get_constant_vars
[ ] get_duplicates
[ ] get_source_vars
[ ] grapes-notin-grapes
[ ] inner_join
[x] is_auto
[x] is_date
[x] is_named
[x] is_order_vars
[x] is_timeunit
[x] is_valid_date_entry
[x] is_valid_day
[x] is_valid_dtc
[x] is_valid_hour
[x] is_valid_month
[x] is_valid_sec_min
[x] is_valid_time_entry
[ ] left_join
[ ] print.duplicates
[x] quo_c
[ ] quo_is_desc_call
[x] quo_not_missing
[ ] replace_values_by_names
[x] squote
[x] stop_input_type
[x] suppress_warning
[ ] valid_time_units
[ ] validate_query
[ ] validate_sdg_select
[ ] validate_smq_select
[x] warn_if_incomplete_dtc
[x] warn_if_inconsistent_list
[x] warn_if_invalid_dtc
[x] warn_if_vars_exist
[x] what_is_it

Definition of Done

[ ]  Final list of functions created
[ ]  This list of functions and tests are removed from admiral

In addition I'd move the following functions from R/duplicates.R to {admiraldev}:

[ ] extract_duplicate_records
[ ] signal_duplicate_records
[ ] print.duplicates
[ ] get_duplicates_dataset

Plus expect_dfs_equal() from R/test_helpers.R and the *_join() functions from R/joins.R.

Are you sure we should move get_duplicates_dataset()? Usually it is called by users and not within a function.

Good point. Maybe we should keep all of these duplicate related functions in {admiral} then? I feel like it would only lead to confusing having the signaling and retrieving of duplicates sit in two different packages.

Yes, I agree.

@thomas-neitmann @bundfussr I have a final list of all the functions that I think should be moved from admiral to admiraldev.
This is most recent extraction of admiral functions keywords and families from the 1105-restructure branch.  I marked ones I thought shoudl be moved in blue and that is the list above.
https://exbpbox.box.com/s/aj6t1c2tokoxs0g2a7in1yu7ioy136gk

I think classes and their methods should remain in one place, e.g., format.smq_select() should stay in create_query_data.R where the smq_select class is defined.
I would also keep functions which are just helper functions for one functions like assert_terms() in the place where the one function is defined.

%notin% may be useful in user scripts, i.e., maybe we should keep it in admiral.

should we keep assert_db_requirements in admiral or move here?

%notin% may be useful in user scripts, i.e., maybe we should keep it in admiral.

I'd rather not. While it could certainly be useful I'd rather like to keep {admiral} focussed on derivations and underlying data manipulation functions like filter_extreme().

I think classes and their methods should remain in one place, e.g., format.smq_select() should stay in create_query_data.R where the smq_select class is defined.
I would also keep functions which are just helper functions for one functions like assert_terms() in the place where the one function is defined.

Agreed!

I would keep assert_db_requirements() in admiral because it is used in get_terms_from_db() and it is unlikely that it will be used by any other function.

@bundfussr @thomas-neitmann I have updated the list with where "developer-facing" functions should have their final resting place.  Any issues that you see or misgivings?

The list in the issue description looks fine to me.

Look good to me 👍
Thanks a lot for putting in the effort @bms63!


[10.x] Added the ability to clear Factory afterMake and afterCreate callbacks

Hello,
I was in need to call a Factory without afterCreate defined callback and i thought that this feature could be useful for more people eventually, so I implemented the method withoutEvents() that allows to call the factory without events I also did the test.
Greetings
/roger

Thanks for your pull request to Laravel!
Unfortunately, I'm going to delay merging this code for now. To preserve our ability to adequately maintain the framework, we need to be very careful regarding the amount of code we include.
If possible, please consider releasing your code as a package so that the community can still take advantage of your contributions!
If you feel absolutely certain that this code corrects a bug in the framework, please "@" mention me in a follow-up comment with further explanation so that GitHub will send me a notification of your response.


Issue with the code

I am setting up h2o llm studio on GCP.
The problem is with when i am trying to hit the home page using private DNS using the tunnel
when i try to hit http://{publicIp}:10101 i can see the homepage loaded, but when i am trying to hit using private dns after connecting to tunnel, I am seeing following message
Disconnected.Reconnecting in 16s
Make sure your Wave server is running and the environement network policies allows websocket connections
I see below errors in logs, can you guide me to debug the issue from the below logs
2023-10-15 17:20:00,029 - ERROR: Unknown exception
Traceback (most recent call last):
File "/workspace/./llm_studio/app_utils/handlers.py", line 76, in handle
await home(q)
File "/workspace/./llm_studio/app_utils/sections/home.py", line 66, in home
stats.append(ui.stat(label="Current GPU load", value=f"{get_gpu_usage():.1f}%"))
File "/workspace/./llm_studio/app_utils/utils.py", line 1933, in get_gpu_usage
all_gpus = GPUtil.getGPUs()
File "/home/llmstudio/.local/share/virtualenvs/workspace-dqq3IVyd/lib/python3.10/site-packages/GPUtil/GPUtil.py", line 102, in getGPUs
deviceIds = int(vals[i])
ValueError: invalid literal for int() with base 10: 'Failed to initialize NVML: Unknown Error'
2023-10-15 17:20:00,030 - INFO: {'init_app'}
2023/10/15 17:22:10 # {"addr":":51676","route":"/","t":"ui_add"}
2023/10/15 17:22:10 # {"addr":":51676","route":"/9a9f1279-600b-4d5e-81c8-295c076ccb92","t":"ui_add"}
INFO: <IP_ADDRESS>:35804 - "POST / HTTP/1.1" 200 OK
2023-10-15 17:22:10,059 - INFO: Initializing client None
2023-10-15 17:22:10,061 - INFO: User name: anon
2023-10-15 17:22:10,063 - INFO: Reading user settings
2023-10-15 17:22:10,067 - INFO: Heap off
2023-10-15 17:22:10,214 - INFO: {'init_app'}
2023-10-15 17:22:10,247 - ERROR: Unknown exception
Traceback (most recent call last):
File "/workspace/./llm_studio/app_utils/handlers.py", line 76, in handle
await home(q)
File "/workspace/./llm_studio/app_utils/sections/home.py", line 66, in home
stats.append(ui.stat(label="Current GPU load", value=f"{get_gpu_usage():.1f}%"))
File "/workspace/./llm_studio/app_utils/utils.py", line 1933, in get_gpu_usage
all_gpus = GPUtil.getGPUs()
File "/home/llmstudio/.local/share/virtualenvs/workspace-dqq3IVyd/lib/python3.10/site-packages/GPUtil/GPUtil.py", line 102, in getGPUs
deviceIds = int(vals[i])
ValueError: invalid literal for int() with base 10: 'Failed to initialize NVML: Unknown Error'
2023-10-15 17:22:10,248 - INFO: {'init_app'}
2023/10/15 17:22:10 # {"path":"/f/8084b230-6393-4cb8-bc34-4f63faf21df1/tmpmki0zx3.min.js","t":"file_download"}
2023/10/15 17:22:10 # {"path":"/_f/bf0b3cf3-0b23-4df7-9e45-409f6b33a802/icon.png","t":"file_download"}
2023/10/15 17:23:31 # {"err":"websocket: request origin not allowed by Upgrader.CheckOrigin","t":"socket_upgrade"}
2023/10/15 17:23:34 # {"err":"websocket: request origin not allowed by Upgrader.CheckOrigin","t":"socket_upgrade"}
2023/10/15 17:23:39 # {"err":"websocket: request origin not allowed by Upgrader.CheckOrigin","t":"socket_upgrade"}

Hi @gadamkiran - this issue is very hard to debug without more details. Did you make any progress on it in the meantime?

closing this for now, please re-open with more details if issue still persists


Update module item styling to new design

This new styling improves usability by

removing the tabbed interface for the last successful build - users didn't always understand what the last successful tab meant and many users don't care about this information upfront
slimming down the module items - users can view more modules at the same time
adding a separate build log link in the module item summary - users were confused when they were redirected to a new page instead of expanding the module item when clicking on the module name
Making only the module build number link to the build log in the build activity table - users would sometimes unintentionally click on the build activity row, navigating them to the build log page, when trying to interact with the commit summary and relevant user links

The entire card is still clickable, clicking on the module name now expands the card. The hover state has been keep the same and the module name still has the link color to encourage discoverability that the cards are expandable.

The last successful build is now presented only when the card is expanded and there is a tooltip explaining what the number means.

The module statuses also now abbreviate the units for build durations at smaller screen sizes to make the page more responsive.

cc @markhazlewood @gchomatas @jonathanwgoodwin

@andyhuang91 can we toss in an easy win; linking the repo build# in the grouping to the old repo-build page?

@jonathanwgoodwin
Let's discuss tomorrow whether or not we want to add that link. It would provide a slight more streamlined way for people to view the interproject build info, which is currently missing from this page, but we probably shouldn't be encouraging people to use the old page. In addition, we want to eventually integrate interproject build information more directly  into this page in the future. Adding this link would only be a temporary measure and would still be equally unintuitive as the current method now of going through the build history page.
As an additional point of reference, I did try out adding the link and here's how it would look:

Visually to me it doesn't stand out much, looks a little awkward with the link color, and could be confusing because the build numbers in the build activity table now links to the individual module build, not the branch build.

👍 fyi @gchomatas @markhazlewood


Added a new whimsical plotting feature to lightkurve

lightkurve was looking a little less than whimsical so I added some whimsy. Whimsy is currently only engaged on All Hallows Eve.

Whimsy can be turned off using
lk.dewhimsify()

Whimsy has been thoroughly tested.

Strongly endorsed.

If the font for the units [e^{-}s^{-1}] could be comic sans as well, then that would be dope! Otherwise, this is ready to be merged!

Excellent job!!
Unfortunately the tests do not pass. I'm closing this for now until we figure out how to make the tests pass outside Halloween!


x/forwarding: bizarre and unexplained error handling to swallow up errors and return nil inside Decorator.CheckMessages

Just while auditing this code I noticed this strange pattern of returning a nil error even after encountering a prior error

https://github.com/noble-assets/noble/blob/d809e7e4111782a9f349d29599a1d4ffb2cdb698/x/forwarding/ante.go#L42-L45
https://github.com/noble-assets/noble/blob/d809e7e4111782a9f349d29599a1d4ffb2cdb698/x/forwarding/ante.go#L51-L71
The above do look really off and don't have any explanations for why they are like that; it also would mean that if intentional, there should be tests to that effect to assert these conditions

Thanks for your feedback here @odeke-em!
The reason why it's implemented like this, is because we'd prefer all errors to be handled by the x/cctp module directly, and not by this new module. Therefore, if we encounter an error, we simply don't check the account against the forwarding state.


Is this repository more accurate then OpenWakeWord ?

I want to learn that what is the difference between openwakeword and this repository ? Does accuracy differ ?

This is smaller model which can run on low power devices such as ESP32 S3

openWakeWord uses a pre-trained model from Google to increase accuracy. This works great, but the Google model is pretty complex.
microWakeWord is smaller and trained from scratch so it can run on ESP devices.

@synesthesiam I was trying to train a wake word using microWakeWord for Hey Pixa, but was finding it a bit difficult compared to openWakeWord, have you trained any wakeword here before? something you can help with?

It is much easier to train a good model with openWakeWord than microWakeWord. While the actual training of a mWW model only takes a couple hours on my hardware, it usually takes me a couple weeks of tweaking the TTS samples to get a usable model. That is a big part of the challenge for writing an all in one training script for microWakeWord!
It is hard to compare accuracy for wake word models as there isn't a standardized test that describes all situations well. For my specific tests, I have found the new V2 models are slightly better than openWakeWords, but it is unclear if this is reflected in real world use.

Thanks for information also for the work :rocket:

@kahrendt i have been able to use the pre-trained words efficiently but funny enough when my wife says alexa or hey jarvis from the same distance/volume than me it does not get recognized..
i tried using a higher tone and microwakeword stop detecting..
do you thing we might be training the model only with male samples? what about having always a male and a female option? this way it would be more inclusive given that we can use more than 1 wakeword at a time in the same device :)
amazing work and thanks again

Interesting result! The samples are all generated using models trained on the LibriTTS dataset. The dataset is roughly balanced between genders as a whole, so in theory, the generated samples should also be balance. I did however restrict the number of voices when generating samples for several of the V2 models, and it is possible that resulted in an unbalanced set. I'll investigate this, thanks for pointing it out!
Out of curiosity, have you tried the "Hey Mycroft" wake word? I'd be interested to hear if you experience the same behavior, as I used many real recordings in addition to TTS generated samples.

hey Kevin! interesting enough, hey mycroft works with her :)
On Mon, Jul 22, 2024 at 2:57 PM Kevin Ahrendt @.***>
wrote:

Interesting result! The samples are all generated using models trained on
the LibriTTS dataset. The dataset is roughly balanced between genders as a
whole, so in theory, the generated samples should also be balance. I did
however restrict the number of voices when generating samples for several
of the V2 models, and it is possible that resulted in an unbalanced set.
I'll investigate this, thanks for pointing it out!
Out of curiosity, have you tried the "Hey Mycroft" wake word? I'd be
interested to hear if you experience the same behavior, as I used many real
recordings in addition to TTS generated samples.
—
Reply to this email directly, view it on GitHub
https://github.com/kahrendt/microWakeWord/issues/28#issuecomment-2243509866,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABJNI25J4LW76R2X25XSSB3ZNVBXBAVCNFSM6AAAAABK7ISJEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBTGUYDSOBWGY
.
You are receiving this because you commented.Message ID:
@.***>

I had another thought as well that could improve it. The ESPHome 2024.7.0 release changed how loud the microphone audio was. Basically, it was 4 times quieter than previous version. The 2024.7.1 release reverted that change, so it should match the same behavior as before. If you were on the 2024.7.0 release, I'd appreciate if you updated ESPHome and tested again!

hey kevin, everything was on 7.1 already ;) hey microft works, all other v2
models do not for her: ok nabu, hey jarvis nor alexa
On Mon, Jul 22, 2024 at 5:13 PM Kevin Ahrendt @.***>
wrote:

I had another thought as well that could improve it. The ESPHome 2024.7.0
release changed how loud the microphone audio was. Basically, it was 4
times quieter than previous version. The 2024.7.1 release reverted that
change, so it should match the same behavior as before. If you were on the
2024.7.0 release, I'd appreciate if you updated ESPHome and tested again!
—
Reply to this email directly, view it on GitHub
https://github.com/kahrendt/microWakeWord/issues/28#issuecomment-2243734937,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABJNI26PASVEGRGSI2BQG7DZNVRVVAVCNFSM6AAAAABK7ISJEOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENBTG4ZTIOJTG4
.
You are receiving this because you commented.Message ID:
@.***>

@kahrendt Hi, I experience the same with Alexa and Hey Jarvis, my wife is not picked up at all unless she really lower the pitch of her voice, resulting in her telling me to remove it from the livingroom :) Currently running 2024.8.0. Tested on both the Atom Echo and the ESP32-S3-BOX-3.

@kahrendt Hi, I experience the same with Alexa and Hey Jarvis, my wife is not picked up at all unless she really lower the pitch of her voice, resulting in her telling me to remove it from the livingroom :) Currently running 2024.8.0. Tested on both the Atom Echo and the ESP32-S3-BOX-3.

Thanks for the feedback. I'm brainstorming ideas on how to properly address this, as the bias only gets worse when I additionally train on collected real samples. One thought I is to oversample the TTS samples that are based on female voices to see if that improves things. I'm also suspicious that the samples generated with slerp (so 2 trained voices are mixed together) are making this worse.

@kahrendt Hi, I experience the same with Alexa and Hey Jarvis, my wife is not picked up at all unless she really lower the pitch of her voice, resulting in her telling me to remove it from the livingroom :) Currently running 2024.8.0. Tested on both the Atom Echo and the ESP32-S3-BOX-3.

Thanks for the feedback. I'm brainstorming ideas on how to properly address this, as the bias only gets worse when I additionally train on collected real samples. One thought I is to oversample the TTS samples that are based on female voices to see if that improves things. I'm also suspicious that the samples generated with slerp (so 2 trained voices are mixed together) are making this worse.

I'm happy to test and use my wife as the female tester :)

can it be run on esp32c3 by any chance?

This is very cool.  I successfully got an ESP32-S3 responding to "Hey Jarvis".
Unfortunately, I wasted a lot of time training a new "Hey Eddie" openWakeWord, but I now realize this microWakeWord is a separate thing.
On device wake words are so much better.  No continuous bandwidth to Home Assistant, snappier response.
Are you in any way soliciting for new wake words?  My plan was to make my Assist act like Eddie the Shipboard Computer from The Hitchhiker's Guide to the Galaxy.  The AI prompt is working well, and the assistant is endlessly cheerful, and I even have a reasonably okay MaryTTS voice effect with reverb.

I'm not actively working on new wake words at this time. It would be better to build a decent all in one training script prepared than me attempting to do more wake words. The biggest problem is it takes a lot of tweaking and experimentation to get a usable model, especially with TTS samples. Lately I've been focused on helping getting Nabu Casa's voice satellite firmware ready to go, so getting a script together has been a lower priority. As I get the firmware components merged into ESPHome, I'll spend time preparing a script to make it easier for everyone to experiment with.

I understand, thank you for all you've already done on this, it's absolutely amazing!

@kahrendt  Can this pre-trained model run on a normal Ubuntu server? My test outputs are all 0

I'm not actively working on new wake words at this time. It would be better to build a decent all in one training script prepared than me attempting to do more wake words. The biggest problem is it takes a lot of tweaking and experimentation to get a usable model, especially with TTS samples. Lately I've been focused on helping getting Nabu Casa's voice satellite firmware ready to go, so getting a script together has been a lower priority. As I get the firmware components merged into ESPHome, I'll spend time preparing a script to make it easier for everyone to experiment with.

Can you explain why it takes a lot of time to tweak tts samples? Is this because tts generation is not really successful and variation is not enough?
I wonder if using new models like openai's gpt 4o mini audio or google's gemini flash 2.0 can be used to generate tts samples since you can customize the tone or pronunciation in the output audio. If the biggest problem of microwakeword is dataset generation, maybe these models can solve it

I wonder if using new models like openai's gpt 4o mini audio or google's gemini flash 2.0 can be used to generate tts samples since you can customize the tone or pronunciation in the output audio. If the biggest problem of microwakeword is dataset generation, maybe these models can solve it

There are also later SotA TTS that also can clone voices from short samples https://github.com/fishaudio/fish-speech and https://github.com/Plachtaa/VALL-E-X
You are right though as I listened through to the 1000 TTS wav samples Piper makes and its 2 very close voices when being slightly more make with a little pitch variration.
Its a million miles away from the intonation variance differing human voices make from various regions...
Its also synthetic sounding and likely that is embedded into the spectra and with the old saying 'garbage in, garbage out' that dataset makes quite bad models.

I wonder if using new models like openai's gpt 4o mini audio or google's gemini flash 2.0 can be used to generate tts samples since you can customize the tone or pronunciation in the output audio. If the biggest problem of microwakeword is dataset generation, maybe these models can solve it

By the way I tested this approach and I have got a pretty good result(I have previously trained openwakeword model with piper samples and compared to it this is much better). I have generated about 10000 samples with gpt4o mini api and verified them with gemini api.

Can you explain why it takes a lot of time to tweak tts samples? Is this because tts generation is not really successful and variation is not enough? I wonder if using new models like openai's gpt 4o mini audio or google's gemini flash 2.0 can be used to generate tts samples since you can customize the tone or pronunciation in the output audio. If the biggest problem of microwakeword is dataset generation, maybe these models can solve it

Correct, the variation does not seem to be enough. When I mention tweaking generation settings, I do mean playing with the various noise settings and try to use slightly different phonetic pronunciations to increase the variety.
Other TTS models could be very useful, but it's possible that using samples generated with commercial TTS engines are not licensed for training a new model with. That's probably not a large concern if you are only using it yourself, but it could potentially be an issue if you want to share the model with others.

It gets even stranger later where 3D room RIR's are converted into wavs without use of something like https://github.com/LCAV/pyroomacoustics or https://github.com/DavidDiazGuerra/gpuRIR to create the point sources of mic and speaker to record accurately how that room RIR would record the sample played... I guess they don't understand what RIR's are as the same but from a different angle is happening here. OHF-Voice/wake-word-collective#11

In an ideal world, collected wake word samples would be recorded with proper audio gear in a studio where we just get the high quality sample. We then could augment them freely with various RIRs to simulate many different rooms. We could also easily add a different source of noise to the sample coming from a different spot in the same simulated room. However, collecting samples in this way is expensive and challenging. Most people aren't equipped to record samples in this way, so it would be difficult to get the variety necessary to train a robust model. Collecting as many samples as possible, which capture real room impulse responses, is a simpler alternative that can still train a decent performing model.

The best collected wake word samples are from the device of use.
It is possible to create a rolling window to capture the KW on hit and send over websockets to a middle server to collate a local dataset.
It would be great if we had that function and an opt-in to upload to a opensource dataset with metadata filled in by the user.
Same with ASR as there is a pretty clear logic if a command is correct and those sentences of device would also be great.
It would be great also if you could load firmware or have a state machine where the device becomes a microphone so that you can use it for recordings.
https://github.com/StuartIanNaylor/ProjectEars/tree/main/dataset/reader
Is just a CLI recording 'boutique' that prompts the user to say keywords and words from phonetic pangrams 'sentences' containing all phonemes in a language.
The whole point of not just having a singular microphone to capture farfield is that the RIR causes the ripple of audio to hit and reflect off surfaces, all at different distances and then returning and mix at the microphone.
This depending on mic to source disyance causes huge spectra distortions as differing room time delays mix at the microphone.
That is why near all farfield tech tries to focus and remove the effects of RIRs before submitting to KW and ASR. Its RIRS and there effect why we have all these various multi microphone technologies in various voice tech all with differing algs.
You don't capture RIRs in a wav just the distortion the mix of reverbervation will of caused in that room causing a big increase in entropy of captured samples.
Capturing samples on any device of people in any room at any distance, with zero meta data will create a relatively useless data set and a pretty pointless alternative.
Even the device you are using processes and removes RIRs by extracting voice via 2 microphones and cleans the sample before the KWS.
So why would you train that KWS on samples containing farfield reverberation?
If you could just record room impulse responses via a simple voice sample the whole industry would need no microphone tech or algs, just the datasets of capture and the corresponding models.
Good luck with the models you will create.


Eq(1) error

Hi thanks for your great work!
It seems that some part of Eq.1 is wrong:

should be:

Oh my god. This must be a typo mistake.
Thank you so much for pointing it out.
I will update the arXiv version, but the camera ready version I don't know how should I update that.


fix: make clear_forces_and_impulses public

Objective
I am wanting to implement custom logic that runs just after ExternalForce is cleared. This helps solve issue #256.
Solution
Make the function clear_forces_and_impulses public, so that other external systems can order against it. In my case, I want to order .after(clear_forces_and_impulses).

Changelog
Changed
The function clear_forces_and_impulses was make public

OK I believe all changes are in order


Make client websocket aware of the used protocol (http/https -> ws/wss)

The websocket has to use the appropriate protocol, or else it can come to CORS errors.
Fixes the second part of #4.

sorry I didn't see this until now - thanks @koelle25 !


Success and Error in the same message

The following hover is quite confusing:
predicate f(x: int) {
  x > 0
}

predicate T(x: int, y: bool) {
  f(x) && y
}

method M()
  ensures T(-2, true)
{
}

Also: why is the underline all broken up?

Also: maybe we should document the meaning of the sidebar icons in the README (or put a link in there to the relevant docs): that's where I went to try to understand them.

The highlighting not ending on a parenthesis will be fixed when https://github.com/dafny-lang/dafny/pull/2202 will be merged.
There is one error and one success simply because under the caret, there are two postconditions in one. Dafny splits postconditions.
Once https://github.com/dafny-lang/dafny/pull/2153 will be finished and merged, I'll look into explicating what exactly fails in the error message.

Here are a few images I'm putting in the documentation, so that they can be accessed easily from the HTML and PDF versions from this PR:
https://github.com/dafny-lang/dafny/pull/2385

It would be good to put Success and Error in the same bold font; I did not understand that there was two separate things in that message.
I also find "this postcondition holds" quite confusing when we also say "A postcondition might not hold" in the same spot.
And, we talk about a return path, but the error isn't on a return path, right?
I'm not sure what the best fix is for the last two.


got this problem

recall bot start recording https://us05web.zoom.us/j/89245880857?pwd=2tEPjZ4sAWO0t6qqaRF6aS3cUYFYih.1
[1] Recall API returned https://api.recall.ai/api/v1/bot: 401 {"detail":"Invalid token."}
I don’t know which setting was missed.

@quboqin Make sure to use the correct endpoint, mine is us-west-2.recall.ai


Locator: better support for custom URLs

For example to be able to target Github URLs, like this: https://github.com/thetarnav/solid-devtools/blob/main/packages/debugger/src/index.ts#L51
The path that is provided to the function, should be relative to the project root, rather than absolute, as it is currently.

Supported in 1f14b6d2c3fa5d11f409fe3fd7b402352d644a86
Left TODO:

[ ] Update readme to include information about URL functions


IsarLink /IsarLinks not working

final englishTeacher = Teacher()..subject = 'English';

final linda = isar.students.where()
  .filter()
  .nameEqualTo('Linda')
  .findFirst();

await linda.teachers.load();
print(linda.teachers); // {Teacher('Math')}

linda.teachers.insert(englishTeacher);
await isar.writeTxn((isar) async {
  await linda.teachers.save();
});

print(linda.teachers);

Can't get the above code to work especially
linda.teachers.insert(englishTeacher);

The teachers is not available on linda object.

isar: ^2.2.1
isar_flutter_libs: ^2.2.1

https://isar.dev/links.html#backlinks

import 'package:isar/isar.dart';

import 'post.dart';

part 'user.g.dart';

@Collection()
class User {
  late int id = Isar.autoIncrement;
  late String name;
  final posts = IsarLinks<Post>();
}

import 'package:isar/isar.dart';

part 'post.g.dart';

@Collection()
class Post {
  late int id = Isar.autoIncrement;
  late String title;
}

Then
class IsarApi {
  addPosts() async {
    isar = isar = await Isar.open(
      directory: 'main',
      schemas: [UserSchema, PostSchema],
      inspector: true,
    );
    final linda = isar.users.where().filter().nameEqualTo('Linda').findFirst();
    linda.posts.add(Post()..title = 'Hello World');
  }
}

@richard457 Hi, can you also explain why the issue is closed? Because I have the same problem that you described above. But I don't understand how to solve it. Thank you!

using final was the issue, so I had to use the correct type example User linda= ......

Created examples here, I will keep updating as much as I can. https://github.com/yegobox/receipt


Build failing due to resource ...InAppMessagingDisplayResources.bundle not found

Bug report
Current behavior:
After adding the plugin on Ionic V3 or V4 project, build fails with the error bellow:
I tried the following commands to fix:

pod repo update
sudo gem install cocoapods
pod install
ionic cordova build ios (with or without sudo)

There is no code signing issue as I did use this plugin before and published the app. Just to be sure, I created a fresh project using the lonic cordova project, but still it throws the same error:

PhaseScriptExecution [CP]\ Copy\ Pods\ Resources /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh (in target 'myApp' from project 'myApp')
cd /Users/benazir/Projects/myApp/platforms/ios
/bin/sh -c /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh
error: Resource "/Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Products/Debug-iphonesimulator/FirebaseInAppMessaging/InAppMessagingDisplayResources.bundle" not found. Run 'pod install' to update the copy resources script.

** BUILD FAILED **
The following build commands failed:
PhaseScriptExecution [CP]\ Copy\ Pods\ Resources /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh
(1 failure)
xcodebuild: Command failed with exit code 65
[ERROR] An error occurred while running subprocess cordova.
    cordova build ios exited with exit code 65.

    Re-running this command with the --verbose flag may provide more information.

Expected behavior:
Ionic project builds successfully.

Steps to reproduce:

ionic start myApp tabs --cordova
ionic cordova platform add ios
ionic cordova build ios (successful)
ionic serve (successful)
ionic cordova plugin add cordova-plugin-firebsex
ionic cordova build ios (fails)

Screenshots

Environment information

Cordova CLI version

cordova -v: 9.0.0<EMAIL_ADDRESS>

Cordova platform version

cordova platform ls:
Installed platforms:
ios 5.1.1

Plugins & versions installed in project (including this plugin)

cordova plugin ls
cordova-plugin-androidx 1.0.2 "cordova-plugin-androidx"
cordova-plugin-androidx-adapter 1.1.0 "cordova-plugin-androidx-adapter"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-firebasex 9.1.1 "Google Firebase Plugin"
cordova-plugin-ionic-keyboard 2.2.0 "cordova-plugin-ionic-keyboard"
cordova-plugin-ionic-webview 4.2.0 "cordova-plugin-ionic-webview"
cordova-plugin-splashscreen 5.0.2 "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"

Dev machine OS and version, e.g.

OSX

sw_vers: Catalina 10.15.4

OS details

_e.g. iOS 13.4.1

iOS build issue:

Node JS version

node -v: v12.16.2

XCode version
11.4.1

Console output

console output

GenerateDSYMFile /Users/benazir/Projects/myApp/platforms/ios/build/emulator/myApp.app.dSYM /Users/benazir/Projects/myApp/platforms/ios/build/emulator/myApp.app/myApp (in target 'myApp' from project 'myApp')
    cd /Users/benazir/Projects/myApp/platforms/ios
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil /Users/benazir/Projects/myApp/platforms/ios/build/emulator/myApp.app/myApp -o /Users/benazir/Projects/myApp/platforms/ios/build/emulator/myApp.app.dSYM

PhaseScriptExecution [CP]\ Copy\ Pods\ Resources /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh (in target 'myApp' from project 'myApp')
    cd /Users/benazir/Projects/myApp/platforms/ios
    /bin/sh -c /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh
error: Resource "/Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Products/Debug-iphonesimulator/FirebaseInAppMessaging/InAppMessagingDisplayResources.bundle" not found. Run 'pod install' to update the copy resources script.

** BUILD FAILED **

The following build commands failed:
        PhaseScriptExecution [CP]\ Copy\ Pods\ Resources /Users/benazir/Library/Developer/Xcode/DerivedData/myApp-asdgmvpfzvjlrbajiyrxqlmvsnjk/Build/Intermediates.noindex/myApp.build/Debug-iphonesimulator/myApp.build/Script-C425B68117DFED80D0991756.sh
(1 failure)
xcodebuild: Command failed with exit code 65
[ERROR] An error occurred while running subprocess cordova.

        cordova build ios exited with exit code 65.

        Re-running this command with the --verbose flag may provide more information.

Other information:

https://github.com/dpa99c/cordova-plugin-firebasex#cordova-cli-builds


Add teams /1: database definitions

This is part 1 of the effort to add teams discussed in https://github.com/paris-saclay-cds/ramp-board/issues/505#issuecomment-853725196 , and is a subset of changes from this PR
For now this updates changes the DB definitions, to make the review easier,

Removes the previous team link mechanism from the Team table (acceptor_id, initiator_id) which wasn't used
Add Team.is_individual field to distinguish between individual and non individual teams
Add a new UserTeam table which does many to many relationships between teams and users.

This would require a DB migration, but there is already a commit on main which would require it.

thx @rth


Reference 'Enum Field' in application object 'Test Enum Table' does not exist

Describe the bug
A very simple use case: You create a new table that has an enum field and additionally a FlowField that accesses this enum field. When compiling, the following error appear:
"Reference 'Enum Field' in application object 'Test Enum Table' does not exist"
To Reproduce
Steps and/or AL code to reproduce the behavior:
enum 50000 "Test Enum"
{
    Extensible = true;

    value(0; Test)
    {
    }
    value(1; "Test 2")
    {
    }
}

table 50000 "Test Enum Table"
{
    DataClassification = CustomerContent;

    fields
    {
        field(1; "Primary Key"; Integer)
        {
            DataClassification = CustomerContent;

        }

        field(2; "Enum Field"; Enum "Test Enum")
        {

        }

        field(3; "Test Flow Field"; Integer)
        {
            BlankZero = true;
            FieldClass = FlowField;
            CalcFormula = Count ("Test Enum Table" WHERE ("Enum Field" = CONST (Test)));
        }
    }

    keys
    {
        key(PK; "Primary Key")
        {
            Clustered = true;
        }
    }
}

Expected behavior
The usage must work in the same way as it used to work with option fields.
Versions:

AL Langauge: 2.0.58805

Business Central: 13.0.25924

Hi @atoader. I installed new CU4 of BC on-premises but this fix isn't there.
Versions:

AL Language: 2.1.79379
Business Central: 13.0.27183

Hi @FSharpCSharp ,
I'm using same version as @dejfidson mentioned and is working fine, only thing I changed in your code is filtered the index of enum field.
"CalcFormula = Count ("Test Enum Table" WHERE ("Enum Field" = filter (0)));"

Hi @atoader. I installed new CU4 of BC on-premises but this fix isn't there.
Versions:

AL Language: 2.1.79379
Business Central: 13.0.27183

Hi @FSharpCSharp ,
I'm using same version as @dejfidson mentioned and is working fine, only thing I changed in your code is filtered the index of enum field.
"CalcFormula = Count ("Test Enum Table" WHERE ("Enum Field" = filter (0)));"

it's a workaround, but certinly a bad practice, let's see when this is fixed and we should be able to use Const and Filter with something like "Enum Object"::[Option]

@babak2000ir fixes are implemented only in the master branch which corresponds to the next major release. You can access Docker images from this branch through the Collaborate program.

Hi @atoader - has this been fixed in last version of BC ?


How use round robin mode for 5 or 6 players ?

Hello! Thank you for this awesome library! But I always need to provide 4,8...etc players to create a tournament
How to handle the situation with 5 or 6 players?

You need to take the next power of two (if you want 6, you need 8) and fill the gaps with BYEs.
A BYE is a null in the seeding.
So your seeding would be:
[
  "Team 1", "Team 2", "Team 3", "Team 4",
  "Team 5", "Team 6", null, null,
]


MudTabs: JsInteropException

Discussed in https://github.com/MudBlazor/MudBlazor/discussions/5976

Originally posted by JeremyVm December 13, 2022
Hi,
My site has a page using the MudTabs component. When I run it locally in VS Code, I don't get an issue. The page loads fine and I can use all functionality, i.e. click on tabs and navigation works.
However, when I run the site in Docker (or deploy to Azure) and navigate to the page containing the MudTabs then I get an error at the bottom of the page.
Mudblazor version: 6.1.5
Executing the sample code in try.mudblazor.com is working.
ReproSteps:

Create sample application via CLI (dotnet new mudblazor --host wasm --name MyTabsTest
Create docker file for it
Run in docker

Console gives me this exception:
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: An exception occurred executing JS interop: DeserializeNoConstructor, JsonConstructorAttribute, MudBlazor.Interop.BoundingClientRect Path: $[0] | LineNumber: 0 | BytePositionInLine: 2.. See InnerException for more details.
Microsoft.JSInterop.JSException: An exception occurred executing JS interop: DeserializeNoConstructor, JsonConstructorAttribute, MudBlazor.Interop.BoundingClientRect Path: $[0] | LineNumber: 0 | BytePositionInLine: 2.. See InnerException for more details.
---> System.NotSupportedException: DeserializeNoConstructor, JsonConstructorAttribute, MudBlazor.Interop.BoundingClientRect Path: $[0] | LineNumber: 0 | BytePositionInLine: 2.
---> System.NotSupportedException: DeserializeNoConstructor, JsonConstructorAttribute, MudBlazor.Interop.BoundingClientRect
Exception_EndOfInnerExceptionStack
at System.Text.Json.ThrowHelper.ThrowNotSupportedException(ReadStack& , Utf8JsonReader& , NotSupportedException )
at System.Text.Json.ThrowHelper.ThrowNotSupportedException_DeserializeNoConstructor(Type , Utf8JsonReader& , ReadStack& )
at System.Text.Json.Serialization.Converters.ObjectDefaultConverter1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]].OnTryRead(Utf8JsonReader& , Type , JsonSerializerOptions , ReadStack& , BoundingClientRect& )    at System.Text.Json.Serialization.JsonConverter1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]].TryRead(Utf8JsonReader& , Type , JsonSerializerOptions , ReadStack& , BoundingClientRect& )
at System.Text.Json.Serialization.JsonCollectionConverter2[[System.Collections.Generic.IEnumerable1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]].OnTryRead(Utf8JsonReader& , Type , JsonSerializerOptions , ReadStack& , IEnumerable1& )    at System.Text.Json.Serialization.JsonConverter1[[System.Collections.Generic.IEnumerable1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].TryRead(Utf8JsonReader& , Type , JsonSerializerOptions , ReadStack& , IEnumerable1& )
at System.Text.Json.Serialization.JsonConverter1[[System.Collections.Generic.IEnumerable1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ReadCore(Utf8JsonReader& , JsonSerializerOptions , ReadStack& )
at System.Text.Json.Serialization.JsonConverter1[[System.Collections.Generic.IEnumerable1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ReadCoreAsObject(Utf8JsonReader& , JsonSerializerOptions , ReadStack& )
at System.Text.Json.JsonSerializer.ReadCore[Object](Utf8JsonReader& , JsonTypeInfo , ReadStack& )
at System.Text.Json.JsonSerializer.Read[Object](Utf8JsonReader& , JsonTypeInfo )
at System.Text.Json.JsonSerializer.Deserialize(Utf8JsonReader& , Type , JsonSerializerOptions )
at Microsoft.JSInterop.JSRuntime.EndInvokeJS(Int64 , Boolean , Utf8JsonReader& )
Exception_EndOfInnerExceptionStack
at Microsoft.JSInterop.JSRuntime.d__161[[System.Collections.Generic.IEnumerable1[[MudBlazor.Interop.BoundingClientRect, MudBlazor, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null]], System.Private.CoreLib, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].MoveNext()
at MudBlazor.Services.ResizeObserver.Observe(IEnumerable`1 elements)
at MudBlazor.MudTabs.OnAfterRenderAsync(Boolean firstRender)
at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task , ComponentState )
Any ideas as to what I might be doing wrong?

The Docs are trimmed and don't have this exception. can you provide a trymudblazor?

Unfortunately no, as it works there - but, i can provide you a link to my app where the issue happens immediately on load: https://swizzy.github.io/ZENBitPackToolbox/
The full source code for this is available here; https://github.com/Swizzy/ZENBitPackToolbox
Am i missing something in my project configuration that's causing the error? the exception details i get are exactly the same as in #5976 either disabling trimming support for MudBlazor or going back to 6.0.10 makes the exception go away.

@ JeremyVm Looks like your not referencing the MudBlazor scripts from the package correctly here.
https://github.com/Swizzy/ZENBitPackToolbox/blob/27ad01be7b5b49707dc04808d1b5778447b52a2e/wwwroot/index.html#L32
Also I note you also have the same issue with your css.
You have taken a copy which will then be out of date with the library.
Please see our README on how to correctly reference the static assets of a Blazor Library

@JeremyVm Looks like you're not referencing the MudBlazor scripts from the package correctly here.
https://github.com/Swizzy/ZENBitPackToolbox/blob/27ad01be7b5b49707dc04808d1b5778447b52a2e/wwwroot/index.html#L32
Also I note you also have the same issue with your css.
You have taken a copy which will then be out of date with the library.
Please see our README on how to correctly reference the static assets of a Blazor Library

It's temporary while i'm trying to test my own builds, previously i had the correct reference for both the css and js, unfortunately when i make a release build myself of MudBlazor the normal method don't work.
The issue happens regardless if i use this copy or the others.

If you repro with one of our packages we will have a look.
Unfortunately we cant diagnose custom builds.

If you repro with one of our packages we will have a look. Unfortunately we cant diagnose custom builds.

The original was with the current release package - i managed to resolve the issue by creating a custom JsonConverter instead of relying on the default one, i'm not entirely sure why this was needed in the first place beyond the error message saying there is no constructor and that not being supported.
I did narrow it down to being related to trimming during my initial testing tho.
I'm currently creating a Unit test and will then make a new PR with this fix that works for me now.

@mikes-gh when you have time, could you check that the PR is ok?

If you repro with one of our packages we will have a look. Unfortunately we cant diagnose custom builds.

The original was with the current release package - i managed to resolve the issue by creating a custom JsonConverter instead of relying on the default one, i'm not entirely sure why this was needed in the first place beyond the error message saying there is no constructor and that not being supported.
I did narrow it down to being related to trimming during my initial testing tho.
I'm currently creating a Unit test and will then make a new PR with this fix that works for me now.

No Constructor usually means the code has been trimmed out.
What I am not getting here is why the Docs are OK.