KeycloakPlugin freezes Camunda Platform when user claims task

Hi,
Running:
Camunda Platform Run 7.15.0
KeycloackIdentifyProviderPlugin 2.1.0
Keycloak 13
I am not sure anymore that the refresh token thing has something to do with this, so we can probably close #68 as it is only a finding while actually investigating this issue:
Everything is fine, until I claim my first user task. The UI does not respond to the claim, but in database, I can verify that I am the assigne. Also in camunda cockpit I am the assignee:

Also in Task Authorization, I can see that I have ALL rights to the task.

But I cannot work on the task. From that time on, opening the task list crashes the database access after 30 seconds:
2021-07-14T19:17:46.097265933Z org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms.
2021-07-14T19:17:46.097270122Z 	at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:309) ~[spring-jdbc-5.3.4.jar!/:5.3.4]
2021-07-14T19:17:46.097274053Z 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) ~[spring-tx-5.3.4.jar!/:5.3.4]
2021-07-14T19:17:46.097277851Z 	at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-5.3.4.jar!/:5.3.4]
2021-07-14T19:17:46.097281325Z 	at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137) ~[spring-tx-5.3.4.jar!/:5.3.4]
2021-07-14T19:17:46.097284797Z 	at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:70) ~[camunda-engine-spring-7.15.0.jar!/:7.15.0]
2021-07-14T19:17:46.097288112Z 	at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:70) ~[camunda-engine-7.15.0.jar!/:7.15.0]
2021-07-14T19:17:46.097291475Z 	at org.camunda.bpm.engine.impl.interceptor.CommandCounterInterceptor.execute(CommandCounterInterceptor.java:35) ~[camunda-engine-7.15.0.jar!/:7.15.0]
2021-07-14T19:17:46.097294805Z 	at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33) ~[camunda-engine-7.15.0.jar!/:7.15.0]
2021-07-14T19:17:46.097310237Z 	at org.camunda.bpm.engine.impl.IdentityServiceImpl.isReadOnly(IdentityServiceImpl.java:85) ~[camunda-engine-7.15.0.jar!/:7.15.0]
2021-07-14T19:17:46.097314066Z 	at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.needsInitialUser(ProcessEnginesFilter.java:247) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]
2021-07-14T19:17:46.097318850Z 	at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.serveIndexPage(ProcessEnginesFilter.java:175) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]
2021-07-14T19:17:46.097322545Z 	at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.applyFilter(ProcessEnginesFilter.java:127) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]
2021-07-14T19:17:46.097325836Z 	at org.camunda.bpm.webapp.impl.filter.AbstractTemplateFilter.doFilter(AbstractTemplateFilter.java:58) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]
2021-07-14T19:17:46.097329121Z 	at org.camunda.bpm.spring.boot.starter.webapp.filter.LazyDelegateFilter.doFilter(LazyDelegateFilter.java:60) ~[camunda-bpm-spring-boot-starter-webapp-core-7.15.0.jar:7.15.0]

After a few minutes, camunda platform recovers, but as soon as I open the task list, the db connection crashes again.
If I remove the assigne from the task (either through direct DB  access or cockpit), I can again open the complete tasklist. But as soon as I claim a task, weirdness starts all over.
And this only happens, when I have the KeycloakPlugin installed. It works fine without it. This is so confusing :confused:
Regards,
Markus

@Noordsestern:
Do you have any TaskListeners attached to the activity "Retoure korrigieren"? Any other cross cutting concepts like e.g. Spring Boot Event Listeners?
This really sounds confusing. The Keycloak Plugin has nothing to do with transactions.
How many users do you have in Keycloak? Are you using the LDAP user federation? Anything else? Typically this performs well, even if you have > 10.000 users within Keycloak.
In order to make sure that this has nothing to do with bad Keycloak performance: can you temporarily try the 2.2.0-SNAPSHOT version of the Keycloak Identity Provider Plugin and then set the cacheEnabled attribute to true?

... Sorry, 2.1.1-SNAPSHOT is the newest Snapshot version.

Another hint: please set the authorizationCheckEnabled configuration attribute of the plugin to false and check whether this is different.

If this property is set to true, then authorization checks are performed when querying for users or groups. Otherwise authorization checks are not performed when querying for users or groups. Default: true.
Note: If you have a huge amount of Keycloak users or groups we advise to set this property to false to improve the performance of the user and group query.

Do you have any TaskListeners attached to the activity "Retoure korrigieren"? Any other cross cutting concepts like e.g. Spring Boot Event Listeners?

There are not listeners or anything attached. Only bare Camunda Run with KeycloakPlugin jar :
FROM camunda/camunda-bpm-platform:run-7.15.0

USER camunda
ADD camunda-bpm-identity-keycloak-run-2.1.0.jar /camunda/configuration/userlib/
ADD --chown=camunda:camunda default.yml /camunda/configuration/default.yml

ENTRYPOINT ["/sbin/tini", "--"]
CMD ["./camunda.sh"]

How many users do you have in Keycloak? Are you using the LDAP user federation?
I do not know how many users we have, but i assume it doesnt exceed hundreds. We do use User Federation.

please set the authorizationCheckEnabled
We did try authorizationCheckEnabled last week. But without success.

On the other hand, we were so desperate that we just tried any possible configuration, maybe we missed something. I will try 2.1.1-SNAPSHOT and the configuration this afternoon.

I do not know how many users we have, but i assume it doesnt exceed hundreds. We do use User Federation.
You should check the synchronisation settings of the user federation as well.

The snapshot seems to have missing dependencies:
│ Caused by: java.lang.ClassNotFoundException: com.github.benmanes.caffeine.cache.Ticker                                                                                ││     at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[na:na]                                                                                ││     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[na:na]                                                                                ││     at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[camunda-bpm-run-core.jar:7.15.0]                                                                                ││     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]

I will check that soon.

The snapshot seems to have missing dependencies:
│ Caused by: java.lang.ClassNotFoundException: com.github.benmanes.caffeine.cache.Ticker                                                                                ││     at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[na:na]                                                                                ││     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[na:na]                                                                                ││     at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:151) ~[camunda-bpm-run-core.jar:7.15.0]                                                                                ││     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]

Sorry for that. So we currently can't test it using the supposed new cache feature. The build process started to have problems with the maven shade plugin here on the community hub - which should not affect you and is a different story. So the cache feature is sadly not near to be released and will take some time. It would have been a quick identication that your Keycloak server is not that responsive...

If you're not tired of testing:
If you still want to check if this is a performance issue by activating a cache feature (it caches results of Keycloak queries for a certain time), attached you'll find the Keycloak Plugin. Build locally and thus free of the Community Hub specifics when deploying artifacts to Nexus. Tested with Camunda Run 7.15.3-ee
camunda-bpm-identity-keycloak-run-2.1.1-SNAPSHOT.jar.zip
Besides this small test, I would a) set the flag "authorizationCheckEnabled" of the Keycloak plugin to false and then b) look at the synchronization frequency between Keycloak & LDAP / Active Directory in the User Federation.
If you don't mind you can send me your default.yaml

Snapshot contain dependencies now, thank you 👍
Unfortunately, the behaviour remains the same 😢
Our default.yml is:
# Externalized Keycloak configuration
keycloak:
  # Keycloak access for the Identity Provider plugin.
  url.plugin: ${ENV_KEYCLOAK_URL_PLUGIN:https://localhost:9001}

  # Keycloak Camunda Identity Client
  client.id: ${ENV_KEYCLOAK_CLIENT_ID:camunda-identity-service}
  client.secret: ${ENV_KEYCLOAK_CLIENT_SECRET:42xx42xx-a17b-c63d-e26f-42xx42xx42xx42xx}

# Camunda Keycloak Identity Provider Plugin
plugin.identity.keycloak:
  keycloakIssuerUrl: ${keycloak.url.plugin}/auth/realms/dpa
  keycloakAdminUrl: ${keycloak.url.plugin}/auth/admin/realms/dpa
  clientId: ${keycloak.client.id}
  clientSecret: ${keycloak.client.secret}
  useUsernameAsCamundaUserId: true
  useGroupPathAsCamundaGroupId: true
  administratorGroupName: DL - Camunda - Admins
  disableSSLCertificateValidation: true
  cacheEnabled: true
  authorizationCheckEnabled: false

camunda.bpm:
  # https://docs.camunda.org/manual/latest/user-guide/security/#authorization
  # https://docs.camunda.org/manual/latest/user-guide/process-engine/authorization-service/
  authorization.enabled: true

Hmmm.... Just thinking out aloud:
It says "2021-07-14T19:17:46.097265933Z org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30000ms."
So there are no database connections available any more. The plugin does nothing special with transactions. All REST queries against Keycloak might be part of an overal Camunda transaction, ok. The plugin might query authorization information which is still part of the database and not Keycloak. By setting authorizationCheckEnabled to false this is disabled.
What database do you use for Camunda? Have you configured the connection pool? What is your min size and max size?
Setting
 logging.level.org.camunda.bpm.extension.keycloak: DEBUG
 logging.level.org.springframework.web.client.RestTemplate: DEBUG

might give you further debug info on the queries against the Identity Provider Plugin and the ones sent to Keycloak. Would be interesting to see what happens once you try to open the task list.

Uffff... the worst possible outcome: when activating DEBUG it suddenly worked. Not at first, but once the first request failed, the caching must have kicked in and everything is fast and works properly.
We run Postgres12 DB with default settings on Camunda side. I will try to override the hikari settings and see if that has an effect. We assume now, that querying users from keycloak takes for some reason a looooong time. Because also listing users in Admin panel takes forever. When opening a task list, the tasks belonging to my user are fetched. If now the user query take forever it might exceed transaction timeout.
By the way, this is the full stacktrace:
org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30001ms.                                                              ││     at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:309) ~[spring-jdbc-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:400) ~[spring-tx-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:373) ~[spring-tx-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:137) ~[spring-tx-5.3.4.jar!/:5.3.4]                                                                                ││     at org.camunda.bpm.engine.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:70) ~[camunda-engine-spring-7.15.0.jar!/:7.15.0]                                                                                ││     at org.camunda.bpm.engine.impl.interceptor.ProcessApplicationContextInterceptor.execute(ProcessApplicationContextInterceptor.java:70) ~[camunda-engine-7.15.0.jar!/:7.15.0]                                                                                ││     at org.camunda.bpm.engine.impl.interceptor.CommandCounterInterceptor.execute(CommandCounterInterceptor.java:35) ~[camunda-engine-7.15.0.jar!/:7.15.0]                                                                                ││     at org.camunda.bpm.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33) ~[camunda-engine-7.15.0.jar!/:7.15.0]                                                                                ││     at org.camunda.bpm.engine.impl.IdentityServiceImpl.isReadOnly(IdentityServiceImpl.java:85) ~[camunda-engine-7.15.0.jar!/:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.needsInitialUser(ProcessEnginesFilter.java:247) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.serveIndexPage(ProcessEnginesFilter.java:175) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.engine.ProcessEnginesFilter.applyFilter(ProcessEnginesFilter.java:127) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.filter.AbstractTemplateFilter.doFilter(AbstractTemplateFilter.java:58) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.spring.boot.starter.webapp.filter.LazyDelegateFilter.doFilter(LazyDelegateFilter.java:60) ~[camunda-bpm-spring-boot-starter-webapp-core-7.15.0.jar:7.15.0]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.camunda.bpm.webapp.impl.security.filter.headersec.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:89) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.camunda.bpm.webapp.impl.security.filter.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.java:177) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.camunda.bpm.webapp.impl.security.filter.SecurityFilter.doFilterSecure(SecurityFilter.java:73) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.security.filter.SecurityFilter.doFilter(SecurityFilter.java:57) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.spring.boot.starter.webapp.filter.LazyDelegateFilter.doFilter(LazyDelegateFilter.java:60) ~[camunda-bpm-spring-boot-starter-webapp-core-7.15.0.jar:7.15.0]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter$1.execute(AuthenticationFilter.java:62) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter$1.execute(AuthenticationFilter.java:60) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.security.SecurityActions.runWithAuthentications(SecurityActions.java:44) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.camunda.bpm.webapp.impl.security.auth.AuthenticationFilter.doFilter(AuthenticationFilter.java:60) ~[camunda-webapp-7.15.0-classes.jar:7.15.0]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.4.jar!/:5.3.4]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:887) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1684) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]                                                                                ││     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]                                                                                ││     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.43.jar!/:9.0.43]                                                                                ││     at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]                                                                                ││ Caused by: java.sql.SQLTransientConnectionException: HikariPool-1 - Connection is not available, request timed out after 30001ms.                                                                                ││     at com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:695) ~[HikariCP-3.4.5.jar!/:na]                                                                                ││     at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:197) ~[HikariCP-3.4.5.jar!/:na]                                                                                ││     at com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:162) ~[HikariCP-3.4.5.jar!/:na]                                                                                ││     at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:128) ~[HikariCP-3.4.5.jar!/:na]                                                                                ││     at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:265) ~[spring-jdbc-5.3.4.jar!/:5.3.4]                                                                                ││     ... 61 common frames omitted

I think you are on the right track.
Typically Keycloak itself is very fast. I would definitely check the user federation settings. If Keycloak itself syncs user data with LDAP / Active Directory on each single request this might be the reason for Keycloak answering so slowly. Of course there might other reasons for Keycloak being slow.

Alright. Another day of wonders and learning:
It turns out, that the GET {realm]/users endpoint is extremely slow in our Keycloak. But we cannot figure out why. Sync wth LDAP should happen only every 12 hours. I limit the number of users imported from LDAP to 120, which improves performance only a bit.
Now, opening the task list containg at least 1 assigned user takes roughly 1 minute. But then caching seems to work and everything goes fast.
This is the log I get when opening the task list:
2021-07-20 14:11:08.298 DEBUG 10 --- [nio-8080-exec-5] org.camunda.bpm.extension.keycloak       : KEYCLOAK-01050 Keycloak group query results: [UserEntity[id=stah045, revision=0, firstName=Markus, lastName=Stahl<EMAIL_ADDRESS>password=null, salt=null, lockExpirationTime=null, attempts=0], ]
2021-07-20 14:11:08.874 DEBUG 10 --- [nio-8080-exec-9] org.camunda.bpm.extension.keycloak       : KEYCLOAK-01021 FIND user with query ?max=250
2021-07-20 14:11:08.875 DEBUG 10 --- [nio-8080-exec-9] o.c.b.e.k.rest.KeycloakRestTemplate      : HTTP GET https://sso.test.dpa.postadress.io/auth/admin/realms/camunda/users?max=250
2021-07-20 14:11:08.876 DEBUG 10 --- [nio-8080-exec-9] o.c.b.e.k.rest.KeycloakRestTemplate      : Accept=[text/plain, application/json, application/*+json, */*]
2021-07-20 14:11:34.581 DEBUG 10 --- [nio-8080-exec-9] o.c.b.e.k.rest.KeycloakRestTemplate      : Response 200 OK
2021-07-20 14:11:34.581 DEBUG 10 --- [nio-8080-exec-9] o.c.b.e.k.rest.KeycloakRestTemplate      : Reading to [java.lang.String] as "application/json"

We do have like 800 groups. Maybe that is an issue?
What still confuses me that on login everything is fast and fine. But only when Admin / List all users is called or Tasklist is opened in the UI, things somehow slow down. When I log in, I can see all my LDAP groups in my Camunda profile. But if everything is there after login, why does Camunda query ALL users / groups when I only want to see my tasks.

Hi @Noordsestern
have you checked the basics of your Keycloak installation? Database, Memory, ... etc.? Sorry for asking, but sometimes we forget the very basic things. 25 seconds for querying ~ 100 users?!? No way that this is normal behaviour. Maybe count down 2 seconds if its really bad.
The question I can't answer is why the Camunda Tasklist queries all users upon opening it.

Alright. I can't figure out, why it is so slow. A few findings:
Suspicious
Big group-query
KeycloackPlugin or Camunda trigger a huge group-query when opening a task list, querying basically every group that is available in this log line:
2021-07-21 12:51:16.970 DEBUG 9 --- [nio-8080-exec-8] org.camunda.bpm.extension.keycloak       : KEYCLOAK-01050 Keycloak group query results:

The query is huge, because we have roughly 800 groups.
Thoughts about big query group
I cannot imagine, why all have to be queried, even though there are only 2 tasks available.
Tweaks
In case somebody runs in to a similar problem. those action showed improvements:
[Camunda] Enhance Hakari config 👈
Camunda seems to keep an open db transaction for the duration of its keycloak-queries. When queries are slow the db connections block the complete database. Adding the following to your default.yml or production.yml helps:
spring.datasource:
    # see https://github.com/brettwooldridge/HikariCP#gear-configuration-knobs-baby
    hikari:
      connectionTimeout: 30000
      idleTimeout: 600000
      maxLifetime: 900000
      #Hikari 4.0
      keepaliveTime: 60000

      # see https://github.com/brettwooldridge/HikariCP#gear-configuration-knobs-baby (minimumIdle)
      # and https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing
      minimumIdle: 10
      maximumPoolSize: 20

[Camunda] Keycloak Plugin>=2.1.1 required 👈
In our experiments we always required the properties. Because caching is only available in version 2.1.1 onwards, you do require the current snapshot in order to set cacheEnabled:
# Camunda Keycloak Identity Provider Plugin
plugin.identity.keycloak:
  cacheEnabled: true
  authorizationCheckEnabled: false

[Keycloak] Limit amount of users in User Federation 👈
I left the company realm and created a realm specific for Camunda. I narrowed down the LDAP Tree which will be synced to only people who might possibly work with Cmaunda. Now I have only 125 users and 440 groups (groups have recurions). That improved query performance.
[Keycloak] More performance for Keycloak DB 🤷
We increased cluster resources for Keycloak Postgres DB to 1 cpu and 2 Gib . But we did not witness any effect.

I will post this also to Camunda and close this issue then. I might have a few requests for the cashing feature, though ;)

Thanks for your investigations and especially for sharing your findings.

I'd like to add one thing to your findings: the Keycloak Identity Provider Plugin never queries all users or all groups configured in Keycloak. There is a maxResultSize parameter with a default value of 100 exactly for preventing side effects of such queries.
I have seen a Keycloak installation with more than 10.000 users and still the user query returned in acceptable time. I strongly suspect that the cause is to be found in Keycloak itself.
However, this is a good motivation to make the new cache feature release-ready. The current SNAPSHOT build process is unfortunately still having problems, but that will hopefully be solved soon.


Dotnet Try tool dosent work in linux

Describe the bug
I installed dotnet tool on linux using .
sudo dotnet tool install -g --add-source "https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json" Microsoft.dotnet-try
Ran sudo dotnet try command and follwoing error occured
Could not execute because the specified command or file was not found.
Possible reasons for this include:

You misspelled a built-in dotnet command.
You intended to execute a .NET Core program, but dotnet-try does not exist.
You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH.

Did this error occur while using dotnet try or online?

[x] dotnet-try
[ ] online

What kind of error was it?

[ ] User Interface (UI):  For example the output never displayed
[ ] Service Error: For example "The service is temporarily unavailable. We are working on it"
[x] Other:

Screenshots
If applicable, add screenshots to help explain your problem.
Please complete the following:

OS

[ ] Windows 10
[ ] macOS
[x] Linux (Ubuntu 18.04)
[ ] iOS
[ ] Android

Browser

[ ] Chrome
[ ] Edge
[ ] Safari

Can you post the results of dotnet --info and dotnet tool list -g?

I'm getting the same error (on a mac).
dotnet --info
.NET SDK (reflecting any global.json):
Version:   5.0.102
Commit:    71365b4d42
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.15
OS Platform: Darwin
RID:         osx.10.15-x64
Base Path:   /usr/local/share/dotnet/sdk/5.0.102/
Host (useful for support):
Version: 5.0.2
Commit:  cb5f173b96
.NET SDKs installed:
1.1.11 [/usr/local/share/dotnet/sdk]
2.0.0 [/usr/local/share/dotnet/sdk]
2.1.400 [/usr/local/share/dotnet/sdk]
2.1.505 [/usr/local/share/dotnet/sdk]
2.1.700 [/usr/local/share/dotnet/sdk]
3.0.103 [/usr/local/share/dotnet/sdk]
5.0.102 [/usr/local/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
dotnet tool list -g
Package Id      Version      Commands
luisgen         2.1.2        luisgen

I'm getting the same error (on a mac).
dotnet --info
.NET SDK (reflecting any global.json):
Version:   5.0.102
Commit:    71365b4d42
Runtime Environment:
OS Name:     Mac OS X
OS Version:  10.15
OS Platform: Darwin
RID:         osx.10.15-x64
Base Path:   /usr/local/share/dotnet/sdk/5.0.102/
Host (useful for support):
Version: 5.0.2
Commit:  cb5f173b96
.NET SDKs installed:
1.1.11 [/usr/local/share/dotnet/sdk]
2.0.0 [/usr/local/share/dotnet/sdk]
2.1.400 [/usr/local/share/dotnet/sdk]
2.1.505 [/usr/local/share/dotnet/sdk]
2.1.700 [/usr/local/share/dotnet/sdk]
3.0.103 [/usr/local/share/dotnet/sdk]
5.0.102 [/usr/local/share/dotnet/sdk]
.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.0.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.2 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.13 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.10 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.9 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.11 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 3.0.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
dotnet tool list -g
Package Id      Version      Commands
luisgen         2.1.2        luisgen


[STYLE]The drop-down box is not visible

Before submitting your bug report

[X] I believe this is a bug. I'll try to join the Continue Discord for questions
[X] I'm not able to find an open issue that reports the same bug
[X] I've seen the troubleshooting guide on the Continue Docs

Relevant environment info
- OS:
- Continue version:
- IDE version:
- Model:
- config.json:

Description
After I open the pop-up window to switch models, the text in the drop-down box is not visible, the theme I am using is vitesse dark.

To reproduce

click left menu's continue function
click model select
see the Add Chat model
click select,only see icon,but the text invisible

Log output
No response

@sestinj Can I work on this issue.

We just merged a fix for this before I saw your comment. Let me know if there are other issues you're interested in and I'll gladly assign you!


Problem with scroll container

In this case:

When dragging the "LI" elements, they get behind the scroll, when the desired behavior is that they get above all elements.

+1


.vcd.gz-support

Probably others as well, but GHDL has a switch to create this and I bravely stated that Surfer support all of GHDLs output formats... (Which is still sort of correct.)

Where would you want to extract the VCD data to? If we extract it into memory, we might easily run out of RAM. A temp file?

I'd say RAM. If one runs out of RAM (and has disk space), one can manually unpack it before loading.

I have been thinking about this more and - honestly - I would prefer if we could handle this in the surfer code instead of wellen.

Sure, no problems!


Reorganise Python files

The parser does much more than every other part of the pipeline. I should rethink what the pipeline actually does and separate it into smaller chunks. For example:

Extract raw data from Discord and save it.
Parse the data and save it, including social media.
Create and retrieve thumbnails for every attachment (use an attachment map).
Write everything to blog posts.

It could be good to split up the writing of the actual blog files with the templating. So, any changes that get made in writer.py right now could go in a second parser level before it is stylised by the writer module.
Alternatively, we can eventually decide the site is good as-is and we'll start to accept manual fixes for MD files, eventually archiving the entire project.

Nah, I think it's good as-is, or at least good enough.
The whole project was a rush job at the start and the distributed files are not Python. We have a good basis for a 2022 refresh where I can start the project with more timing.
Closing.


Page closed error trying to run

Trying to set this up and get the following error.
Is there something I'm missing here?
(Path)/lib/node_modules/auto-vo/node_modules/playwright/lib/server/chromium/crPage.js:341
            this._firstNonInitialNavigationCommittedReject(new Error('Page closed'));
                                                           ^

Error: Page closed
    at CRSession.<anonymous> (Path)/lib/node_modules/auto-vo/node_modules/playwright/lib/server/chromium/crPage.js:341:60)
    at Object.onceWrapper (node:events:513:28)
    at CRSession.emit (node:events:406:35)
    at (Path)/lib/node_modules/auto-vo/node_modules/playwright/lib/server/chromium/crConnection.js:177:43

@JavaDevilNZ are you using the CLI? does the chrome browser open at all? how long does it stay open?

@JavaDevilNZ you may need to install playwright-chromium. Try npm i -g playwright-chromium and run again.

@ckundo Thanks.
Apologies for the lack of details previously, I was in a rush to get it posted.
I should have said that this is running via a Jenkins CI pipeline which is part of the issue.
The above error occurs when I'm not signed in as the configured Jenkins user.
I also added in the playwright-chromium install to my node installation.
There were a few other hoops to jump through to ensure this was working, like making sure that some scripts had access to system settings around accessibility.
Once I was signed in and had permissions set, I could run my jenkins job and see the browser open and run using your example.

thanks @JavaDevilNZ, glad its working now.


Deadlock closing channel object from Python server

What version of gRPC and what language are you using?
Version 1.15.0 with Python 2.7
What operating system (Linux, Windows, …) and version?
Linux, Debian 9.4
What runtime / compiler are you using (e.g. python version or version of gcc)
Python 2.7.13
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
What did you do?
We were running speech to text calls in a Python Tornado server.  To avoid memory leaks with channels, we explicitly create the grpc channel to pass to the SpeechClient.  Example:
creds = service_account.Credentials.from_service_account_file(self.application_credentials_file)
with speech_grpc_transport.SpeechGrpcTransport.create_channel(credentials=creds) as channel:
    try:
        transport = speech_grpc_transport.SpeechGrpcTransport(
            address=speech.SpeechClient.SERVICE_ADDRESS,
            channel=channel,
            credentials=None,
        )

        google_client = speech.SpeechClient(transport=transport)
    except Exception:
        return

What did you expect to see?
Successful closing of the channel.
What did you see instead?
Our server works fine in most cases but we had two instances where the process deadlocked.  What appeared to happen was that when the with statement triggered the channel close, it initiated a grpc shutdown which triggered the timer thread(s) to exit.  When one of the timer threads was closing it initiated a destruction of the Credentials object which then required access to the Python GIL.  It appears that closing the channel is not releasing the GIL so depending on the timing and reference counting, our Python code can request a shutdown of the channel while still holding the GIL but then be blocked waiting for the timer thread to exit which is waiting on the GIL.  In looking though the Cython files, I didn't see any references to with nogil before the grpc_shutdown call in the channel _close method (https://github.com/grpc/grpc/blob/master/src/python/grpcio/grpc/_cython/_cygrpc/channel.pyx.pxi#L395)
(gdb) thread apply all py-list

Thread 7 (Thread 0x7f21b7813700 (LWP 12493)):
 263                            if wacquire is None:
 264                                send(obj)
 265                            else:
 266                                wacquire()
 267                                try:
>268                                    send(obj)
 269                                finally:
 270                                    wrelease()
 271                    except IndexError:
 272                        pass
 273            except Exception, e:

Thread 6 (Thread 0x7f21b8815700 (LWP 12489)):
Unable to locate gdb frame for python bytecode interpreter

Thread 5 (Thread 0x7f21bb016700 (LWP 12488)):
Unable to locate gdb frame for python bytecode interpreter

Thread 4 (Thread 0x7f21b8014700 (LWP 12487)):
Unable to locate gdb frame for python bytecode interpreter

Thread 3 (Thread 0x7f21b7012700 (LWP 12486)):
 949            return _StreamStreamMultiCallable(
 950                self._channel, _channel_managed_call_management(self._call_state),
 951                _common.encode(method), request_serializer, response_deserializer)
 952
 953        def _close(self):
>954            self._channel.close(cygrpc.StatusCode.cancelled, 'Channel closed!')
 955            _moot(self._connectivity_state)
 956
 957        def _close_on_fork(self):
 958            self._channel.close_on_fork(cygrpc.StatusCode.cancelled,
 959                                        'Channel closed due to fork')

Thread 2 (Thread 0x7f21ae80d700 (LWP 3484)):
 335            waiter.acquire()
 336            self.__waiters.append(waiter)
 337            saved_state = self._release_save()
 338            try:    # restore state no matter what (e.g., KeyboardInterrupt)
 339                if timeout is None:
>340                    waiter.acquire()
 341                    if __debug__:
 342                        self._note("%s.wait(): got it", self)
 343                else:
 344                    # Balancing act:  We can't afford a pure busy loop, so we
 345                    # have to sleep; but if we sleep the whole timeout time,

Thread 1 (Thread 0x7f21cc6fb700 (LWP 2729)):
 858                        # clear alarm so it doesn't fire while poll is waiting for
 859                        # events.
 860                        signal.setitimer(signal.ITIMER_REAL, 0, 0)
 861
 862                    try:
---Type <return> to continue, or q <return> to quit---
>863                        event_pairs = self._impl.poll(poll_timeout)
 864                    except Exception as e:
 865                        # Depending on python version and IOLoop implementation,
 866                        # different exception types may be thrown and there are
 867                        # two ways EINTR might be signaled:
 868                        # * e.errno == errno.EINTR
(gdb) thread apply all bt

Thread 7 (Thread 0x7f21b7813700 (LWP 12493)):
#0  0x00007f21cc2e0536 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0x56049af80310) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x56049af80310, abstime=0x0) at sem_waitcommon.c:111
#2  0x00007f21cc2e05e4 in __new_sem_wait_slow (sem=0x56049af80310, abstime=0x0) at sem_waitcommon.c:181
#3  0x000056049a103a04 in PyThread_acquire_lock () at ../Python/thread_pthread.h:324
#4  0x000056049a14f83a in PyEval_RestoreThread () at ../Python/ceval.c:359
#5  0x00007f21c8a9c0ed in conn_send_string.isra.2 (string=<optimized out>, length=25) at ./Modules/_multiprocessing/socket_connection.c:122
#6  0x00007f21c8a9caed in connection_send_obj (self=0x56049bd52a40, obj=<optimized out>) at ./Modules/_multiprocessing/connection.h:277
#7  0x000056049a12e510 in call_function (oparg=<optimized out>, pp_stack=0x7f21b7812538) at ../Python/ceval.c:4340
#8  PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#9  0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#10 0x000056049a143778 in function_call.lto_priv () at ../Objects/funcobject.c:523
#11 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#12 0x000056049a12f3a0 in ext_do_call (nk=0, na=0, flags=<optimized out>, pp_stack=0x7f21b78127f0, func=<function at remote 0x7f21c5058938>) at ../Python/ceval.c:4666
#13 PyEval_EvalFrameEx () at ../Python/ceval.c:3028
#14 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21b7812938, func=<function at remote 0x7f21c96ceed8>) at ../Python/ceval.c:4437
#15 call_function (oparg=<optimized out>, pp_stack=0x7f21b7812938) at ../Python/ceval.c:4372
#16 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#17 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21b7812a88, func=<function at remote 0x7f21c964f0c8>) at ../Python/ceval.c:4437
#18 call_function (oparg=<optimized out>, pp_stack=0x7f21b7812a88) at ../Python/ceval.c:4372
#19 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#20 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#21 0x000056049a1435be in function_call.lto_priv () at ../Objects/funcobject.c:523
#22 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#23 0x000056049a159e1e in instancemethod_call.lto_priv () at ../Objects/classobject.c:2602
#24 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#25 0x000056049a132a10 in PyEval_CallObjectWithKeywords () at ../Python/ceval.c:4221
#26 0x000056049a1fb722 in t_bootstrap () at ../Modules/threadmodule.c:620
#27 0x00007f21cc2d8494 in start_thread (arg=0x7f21b7813700) at pthread_create.c:333
#28 0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 6 (Thread 0x7f21b8815700 (LWP 12489)):
#0  0x00007f21cc2e0536 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0x56049af80310) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x56049af80310, abstime=0x0) at sem_waitcommon.c:111
#2  0x00007f21cc2e05e4 in __new_sem_wait_slow (sem=0x56049af80310, abstime=0x0) at sem_waitcommon.c:181
#3  0x000056049a103a04 in PyThread_acquire_lock () at ../Python/thread_pthread.h:324
#4  0x000056049a14f83a in PyEval_RestoreThread () at ../Python/ceval.c:359
#5  0x000056049a207f2f in PyGILState_Ensure () at ../Python/pystate.c:611
#6  0x00007f219d89022e in __pyx_f_4grpc_7_cython_6cygrpc__destroy (__pyx_v_state=0x7f21c3b15250) at src/python/grpcio/grpc/_cython/cygrpc.cpp:18766
#7  0x00007f219d981ca6 in grpc_call_credentials_unref (creds=0x7f2184028aa0) at src/core/lib/security/credentials/credentials.cc:91
#8  0x00007f219d98c126 in ssl_channel_destroy (sc=0x7f2178010ee0) at src/core/lib/security/security_connector/security_connector.cc:654
#9  0x00007f219d914560 in grpc_channel_args_destroy (a=0x7f21780cad70) at src/core/lib/channel/channel_args.cc:205
#10 0x00007f219d9b5ab5 in grpc_subchannel_key_destroy (k=0x7f217800b2f0) at src/core/ext/filters/client_channel/subchannel_index.cc:89
#11 0x00007f219d9b3a88 in subchannel_destroy (arg=0x7f217800ac70, error=<optimized out>) at src/core/ext/filters/client_channel/subchannel.cc:192
#12 0x00007f219d92bb5c in exec_ctx_run (error=0x0, closure=<optimized out>) at src/core/lib/iomgr/exec_ctx.cc:40
#13 grpc_core::ExecCtx::Flush (this=0x7f21b8814ea0) at src/core/lib/iomgr/exec_ctx.cc:134
#14 0x00007f219d93db2a in run_some_timers () at src/core/lib/iomgr/timer_manager.cc:121
#15 timer_main_loop () at src/core/lib/iomgr/timer_manager.cc:222
#16 timer_thread (completed_thread_ptr=0x7f218400d300) at src/core/lib/iomgr/timer_manager.cc:269
#17 0x00007f219d9113bc in grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::operator() (__closure=0x0, v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:100
#18 grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::_FUN (v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:103
#19 0x00007f21cc2d8494 in start_thread (arg=0x7f21b8815700) at pthread_create.c:333
#20 0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

---Type <return> to continue, or q <return> to quit---
Thread 5 (Thread 0x7f21bb016700 (LWP 12488)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f219d90f952 in gpr_cv_wait (cv=0x7f21840964c8, mu=0x7f2184096490, abs_deadline=...) at src/core/lib/gpr/sync_posix.cc:79
#2  0x00007f219d92c711 in GrpcExecutor::ThreadMain (arg=0x7f2184096490) at src/core/lib/iomgr/executor.cc:174
#3  0x00007f219d9113bc in grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::operator() (__closure=0x0, v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:100
#4  grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::_FUN (v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:103
#5  0x00007f21cc2d8494 in start_thread (arg=0x7f21bb016700) at pthread_create.c:333
#6  0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 4 (Thread 0x7f21b8014700 (LWP 12487)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f219d90f952 in gpr_cv_wait (cv=0x7f21840a5b38, mu=0x7f21840a5b00, abs_deadline=...) at src/core/lib/gpr/sync_posix.cc:79
#2  0x00007f219d92c711 in GrpcExecutor::ThreadMain (arg=0x7f21840a5b00) at src/core/lib/iomgr/executor.cc:174
#3  0x00007f219d9113bc in grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::operator() (__closure=0x0, v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:100
#4  grpc_core::(anonymous namespace)::ThreadInternalsPosix::__lambda0::_FUN (v=<optimized out>) at src/core/lib/gprpp/thd_posix.cc:103
#5  0x00007f21cc2d8494 in start_thread (arg=0x7f21b8014700) at pthread_create.c:333
#6  0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 3 (Thread 0x7f21b7012700 (LWP 12486)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185
#1  0x00007f219d90f952 in gpr_cv_wait (cv=0x7f219ddf28c0 <g_cv_shutdown>, mu=0x7f219ddf2940 <_ZL4g_mu>, abs_deadline=...) at src/core/lib/gpr/sync_posix.cc:79
#2  0x00007f219d93d737 in stop_threads () at src/core/lib/iomgr/timer_manager.cc:311
#3  0x00007f219d911a4b in grpc_shutdown () at src/core/lib/surface/init.cc:165
#4  0x00007f219d9056cf in __pyx_f_4grpc_7_cython_6cygrpc__close (__pyx_v_channel=__pyx_v_channel@entry=0x7f21c3af8cb0, __pyx_v_code=__pyx_v_code@entry=GRPC_STATUS_CANCELLED, __pyx_v_details=__pyx_v_details@entry='Channel closed!', __pyx_v_drain_calls=False)
    at src/python/grpcio/grpc/_cython/cygrpc.cpp:15637
#5  0x00007f219d906291 in __pyx_pf_4grpc_7_cython_6cygrpc_7Channel_14close (__pyx_v_details='Channel closed!', __pyx_v_code=<optimized out>, __pyx_v_self=0x7f21c3af8cb0) at src/python/grpcio/grpc/_cython/cygrpc.cpp:17646
#6  __pyx_pw_4grpc_7_cython_6cygrpc_7Channel_15close (__pyx_v_self=<grpc._cython.cygrpc.Channel at remote 0x7f21c3af8cb0>, __pyx_args=<optimized out>, __pyx_kwds=<optimized out>) at src/python/grpcio/grpc/_cython/cygrpc.cpp:17624
#7  0x000056049a12884a in call_function (oparg=<optimized out>, pp_stack=0x7f21b7010db8) at ../Python/ceval.c:4352
#8  PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#9  0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21b7010f08, func=<function at remote 0x7f21c4f97050>) at ../Python/ceval.c:4437
#10 call_function (oparg=<optimized out>, pp_stack=0x7f21b7010f08) at ../Python/ceval.c:4372
#11 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#12 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#13 0x000056049a1435be in function_call.lto_priv () at ../Objects/funcobject.c:523
#14 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#15 0x000056049a159e1e in instancemethod_call.lto_priv () at ../Objects/classobject.c:2602
#16 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#17 0x000056049a11d799 in PyObject_CallFunctionObjArgs () at ../Objects/abstract.c:2774
#18 0x000056049a12b207 in PyEval_EvalFrameEx () at ../Python/ceval.c:2950
#19 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#20 0x000056049a143778 in function_call.lto_priv () at ../Objects/funcobject.c:523
#21 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#22 0x000056049a12f3a0 in ext_do_call (nk=0, na=1, flags=<optimized out>, pp_stack=0x7f21b70117f0, func=<function at remote 0x7f21c50eb8c0>) at ../Python/ceval.c:4666
#23 PyEval_EvalFrameEx () at ../Python/ceval.c:3028
#24 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21b7011938, func=<function at remote 0x7f21c96ceed8>) at ../Python/ceval.c:4437
#25 call_function (oparg=<optimized out>, pp_stack=0x7f21b7011938) at ../Python/ceval.c:4372
#26 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#27 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21b7011a88, func=<function at remote 0x7f21c964f0c8>) at ../Python/ceval.c:4437
#28 call_function (oparg=<optimized out>, pp_stack=0x7f21b7011a88) at ../Python/ceval.c:4372
#29 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#30 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#31 0x000056049a1435be in function_call.lto_priv () at ../Objects/funcobject.c:523
#32 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#33 0x000056049a159e1e in instancemethod_call.lto_priv () at ../Objects/classobject.c:2602
#34 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
---Type <return> to continue, or q <return> to quit---
#35 0x000056049a132a10 in PyEval_CallObjectWithKeywords () at ../Python/ceval.c:4221
#36 0x000056049a1fb722 in t_bootstrap () at ../Modules/threadmodule.c:620
#37 0x00007f21cc2d8494 in start_thread (arg=0x7f21b7012700) at pthread_create.c:333
#38 0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 2 (Thread 0x7f21ae80d700 (LWP 3484)):
#0  0x00007f21cc2e0536 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0x7f2198000b10) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x7f2198000b10, abstime=0x0) at sem_waitcommon.c:111
#2  0x00007f21cc2e05e4 in __new_sem_wait_slow (sem=0x7f2198000b10, abstime=0x0) at sem_waitcommon.c:181
#3  0x000056049a103a04 in PyThread_acquire_lock () at ../Python/thread_pthread.h:324
#4  0x000056049a1c8742 in lock_PyThread_acquire_lock.lto_priv.2499 () at ../Modules/threadmodule.c:52
#5  0x000056049a12884a in call_function (oparg=<optimized out>, pp_stack=0x7f21ae80c118) at ../Python/ceval.c:4352
#6  PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#7  0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#8  0x000056049a12e448 in fast_function (nk=0, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21ae80c328, func=<function at remote 0x7f21c96ce320>) at ../Python/ceval.c:4447
#9  call_function (oparg=<optimized out>, pp_stack=0x7f21ae80c328) at ../Python/ceval.c:4372
#10 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#11 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#12 0x000056049a12e448 in fast_function (nk=0, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21ae80c538, func=<function at remote 0x7f21c9581d70>) at ../Python/ceval.c:4447
#13 call_function (oparg=<optimized out>, pp_stack=0x7f21ae80c538) at ../Python/ceval.c:4372
#14 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#15 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#16 0x000056049a143778 in function_call.lto_priv () at ../Objects/funcobject.c:523
#17 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#18 0x000056049a12f3a0 in ext_do_call (nk=0, na=0, flags=<optimized out>, pp_stack=0x7f21ae80c7f0, func=<function at remote 0x7f21c50d2c08>) at ../Python/ceval.c:4666
#19 PyEval_EvalFrameEx () at ../Python/ceval.c:3028
#20 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21ae80c938, func=<function at remote 0x7f21c96ceed8>) at ../Python/ceval.c:4437
#21 call_function (oparg=<optimized out>, pp_stack=0x7f21ae80c938) at ../Python/ceval.c:4372
#22 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#23 0x000056049a12e14f in fast_function (nk=<optimized out>, na=<optimized out>, n=<optimized out>, pp_stack=0x7f21ae80ca88, func=<function at remote 0x7f21c964f0c8>) at ../Python/ceval.c:4437
#24 call_function (oparg=<optimized out>, pp_stack=0x7f21ae80ca88) at ../Python/ceval.c:4372
#25 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#26 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#27 0x000056049a1435be in function_call.lto_priv () at ../Objects/funcobject.c:523
#28 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#29 0x000056049a159e1e in instancemethod_call.lto_priv () at ../Objects/classobject.c:2602
#30 0x000056049a1150c3 in PyObject_Call () at ../Objects/abstract.c:2547
#31 0x000056049a132a10 in PyEval_CallObjectWithKeywords () at ../Python/ceval.c:4221
#32 0x000056049a1fb722 in t_bootstrap () at ../Modules/threadmodule.c:620
#33 0x00007f21cc2d8494 in start_thread (arg=0x7f21ae80d700) at pthread_create.c:333
#34 0x00007f21cb6f5acf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97

Thread 1 (Thread 0x7f21cc6fb700 (LWP 2729)):
#0  0x00007f21cc2e0536 in futex_abstimed_wait_cancelable (private=0, abstime=0x0, expected=0, futex_word=0x56049af80310) at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x56049af80310, abstime=0x0) at sem_waitcommon.c:111
#2  0x00007f21cc2e05e4 in __new_sem_wait_slow (sem=0x56049af80310, abstime=0x0) at sem_waitcommon.c:181
#3  0x000056049a103a04 in PyThread_acquire_lock () at ../Python/thread_pthread.h:324
#4  0x000056049a14f83a in PyEval_RestoreThread () at ../Python/ceval.c:359
#5  0x000056049a22007d in pyepoll_poll.lto_priv () at ../Modules/selectmodule.c:1035
#6  0x000056049a12884a in call_function (oparg=<optimized out>, pp_stack=0x7ffe06529fb8) at ../Python/ceval.c:4352
#7  PyEval_EvalFrameEx () at ../Python/ceval.c:2989
#8  0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#9  0x000056049a12eb78 in fast_function (nk=0, na=<optimized out>, n=<optimized out>, pp_stack=0x7ffe0652a1c8, func=<function at remote 0x7f21c8cb5e60>) at ../Python/ceval.c:4447
#10 call_function (oparg=<optimized out>, pp_stack=0x7ffe0652a1c8) at ../Python/ceval.c:4372
#11 PyEval_EvalFrameEx () at ../Python/ceval.c:2989
---Type <return> to continue, or q <return> to quit---
#12 0x000056049a1269f5 in PyEval_EvalCodeEx () at ../Python/ceval.c:3584
#13 0x000056049a1267b9 in PyEval_EvalCode (co=<optimized out>, globals=<optimized out>, locals=<optimized out>) at ../Python/ceval.c:669
#14 0x000056049a156bff in run_mod.lto_priv () at ../Python/pythonrun.c:1376
#15 0x000056049a151b52 in PyRun_FileExFlags () at ../Python/pythonrun.c:1362
#16 0x000056049a15169e in PyRun_SimpleFileExFlags () at ../Python/pythonrun.c:948
#17 0x000056049a102771 in Py_Main () at ../Modules/main.c:640
#18 0x00007f21cb62d2e1 in __libc_start_main (main=0x56049a1020a0 <main>, argc=6, argv=0x7ffe0652a608, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffe0652a5f8) at ../csu/libc-start.c:291
#19 0x000056049a101f9a in _start ()

Anything else we should know about your project / environment?

Thanks for the detailed bug report and analysis! Your diagnosis as to the cause seems reasonable, but I haven't been able to repro/verify this yet. Initial thoughts are below:
In spirit, I don't think the Cython _close method should need to release the GIL before invoking grpc_shutdown(), as this call should only decrement a counter and return until all application-owned gRPC objects have been destroyed (see docstring here, and implementation here - core tracks the # of calls to grpc_init, and grpc_shutdown only actually shuts things down when the count drops to 0). So if the credentials count as application-owned gRPC objects, they should have been destroyed before grpc_shutdown() actually performs non-trivial operations, and the gRPC C++ code will not call back into Python, and can't block on other code that requires the GIL. This is not what's happening today - as you are running into, the credentials objects still exist in Python when grpc_shutdown() is shutting down, and results in the callback into the Python credentials code.
I would think that the credential objects returned by the call to grpc_metadata_credentials_create_from_plugin() should count as application owned gRPC objects, and hence should make use of the grpc_init()/grpc_shutdown() "ref" counting mechanism. However, looking at the Cython credentials.pyx.pxi file, while this is being done for server-side credentials (note the calls to fork_handlers_and_grpc_init() and grpc_shutdown() in, e.g., ServerCredentials), there are no such calls to grpc_init() for the MetadataPluginCallCredentials objects that end up used by the client code in your example. I'm not sure of the reasoning (if any) behind the different treatment for client and server credentials objects. I'm not intimately familiar with the gRPC core credential "plugin" mechanism that Python is using, so I'll need to dig into that code a little further to determine if I'm on the right track with a fix here.
I'll be traveling/out-of-office through next week, but I'll try to find some time to investigate this a bit more and will update this issue once I have more info.

Sorry for the delay. This should now be fixed on master via #17396.
I was unable to reproduce this failure directly, but it's clear from the backtraces you provided (extremely helpful, thank you for those!) and further auditing the codepaths involved that the "final" grpc_shutdown() call should not be made until the credentials object is fully destroyed. More details are in the PR description. The current grpc_init()/grpc_shutdown() logic in our Python layer is a bit more finicky than I would like; let me know if I have missed some case and these problems persist, and we will reopen the issue. Thanks again.


[FLINK-26318][tests] Recover from the latest checkpoint in ChangelogCompatibilityITCase

What is the purpose of the change
A trivial fix to recover the latest checkpoint obtained after job cancellation - that one won't be subsumed.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? no

Rebased.


Remove internal package usage from Backend interface

This change removes backend.Backend's dependencies on internal packages.
I'm not 100% satisfied with how the packages turned out, wonder if more should live under backend/ instead but it's a start and should work.
Closes: #238

@cschleiden great stuff! I started working on a postgres backend implementation, and found it wasn't possible to inject a custom implementation from my client application for this very reason. Kudos! 🙏🏻


feat: add detection + nice error message for npm import errors

Closes https://github.com/netlify/pod-compute/issues/287

we should really install a pre-commit hook with prettier ...


Fix separator var for text qualifiers

Update the variable used for separators when a text qualifier is in use.

CLA completed

Hey thanks for this PR, I'll try to get to it soon, but I'm currently in the progress of migrating all of the existing connectors to be google-owned scripts, so it might take me a bit to get to this one.


docs: dynamic ogImage feature url format fix and clean up

What is it?

[x] Feature / enhancement
[x] Bug
[x] Docs / tests / types / typos

Description
Minor fix to the url structure of the edge function that generates the ogImage by replacing " " with "-"
from:
https://opengraphqwik.vercel.app/api/og?subtitle=Project Structure&title=Qwik City&level=1
to:
https://opengraphqwik.vercel.app/api/og?subtitle=Project-Structure&title=Qwik-City&level=1
Enhancement notes

the dynamic ogImage feature will now work reliably on twitter
the change in the edge function will not affect the ogImage output

Checklist:

[x] My code follows the developer guidelines of this project
[x] I have performed a self-review of my own code
[x] I have made corresponding changes to the documentation
[x] Added new tests to cover the fix / functionality

Feels like the root of the problem is that we are generating a URL using string concatenation, let's do the right thing:
like this
const url = new URL('https://builder.io/api/v2/content')

url.searchParams.set('model', model)
url.searchParams.set('locale', locale)
url.searchParams.set('text', text)

const res = await fetch(url.toString())

More info: https://www.builder.io/blog/new-url

Feels like the root of the problem is that we are generating a URL using string concatenation

You are right, thank you so much for the resource 👌.
I've committed the changes to match the pattern from the article.
@manucorporat


Audio record sample rate per word is not 192000

In the documentation of pynq.lib.audio, it states: "The sample rate per word is 192000Hz.". However, this is not always the case. When self.sample_rate = num_samples_32b / (end - start) is run, this rate is variable (for me between 195300 and 1953010). This makes the record function record shorter audio samples than expected.
I would suggest using self.sample_rate (if set by a previous recording) in the num_samples_32b calculation. This does not make it perfect, but come closer to the actual record value than a hardcoded 192000.

Hi,
I have the same situation.
According to my measurement, on Pynq-Z2, the ADAU1761 samples around 48740Hz, 1.6% error comparing to the standard. And the above situation is 195300 or 195310, which is also around 1.6%, so I believe we have the same problem.
This is annoying, so I wish you can fix this frequency error.
Thank you!


set ansible_python_interpreter

I'm creating CoreOS cluster through Terraform and to provision this machines with ansible i need to set ansible_python_interpreter in the inventory file. Is there a way to set this variable with terraform-inventory?

Hey, I did this by creating the following outputs in my terraform master:
output "ansible_ssh_user"           { value = "core" }
output "ansible_python_interpreter" { value = "PATH=/home/core/bin:$PATH python" }

looks like you can override any of the ansible_* settings this way


Environment Variables

Support Environment Variables at the Collection level.

@helloanoop how to use variables in the application?

@Butochnikov You can use the {{var}} syntax
Right now the envs gets parsed everywhere except the json body.

Yes, It should be possible
When you click on send request, the interpolation should happen on the query strings
https://github.com/usebruno/bruno/blob/main/packages/bruno-app/src/utils/collections/index.js#L375

@helloanoop  tested like this:
GET: {{host}}/version - it didn't work
Network Error

Please note that if you are using Bruno on the web, then the api you are connecting to must allow CORS. If not, please use the chrome extension or the desktop app

@Butochnikov Are you using the web app or the Desktop App?
On the webapp, there is no way to overcome the CORS restriction enforced by the browser.
So, if your api does not support CORS, then you need to use the desktop app.
Also note that on the desktop app you have the feature of local collections, where the collections are stored directly on the local filesystem in the location you choose. I explain it in the video https://youtu.be/wwXJW7_qyLA?t=159 at 2:40s

Chrome extension should also fix this. Its pending review in the chrome web store.

I also see a bug, Unless you save the request (the env vars are not getting parsed), but it should work after parsing.
You can open developer console to see the outgoing request.

@helloanoop  I am using a desktop application.
yes, it worked after saving. thanks

@ButochnikovI have fixed this in the v0.2.0 release that just went out.
Now you should be able to use the env vars without saving the request also.
You can download the latest versions at https://www.usebruno.com/downloads
PS:
In case you love dark more, its included in the v0.2.0 release
Currently its based on vscode dark theme, but plan to support custom themes in the near future.


questions on the class Dataset

Hi,
w.r.t to
class MyOwnDataset(Dataset):
1/ Should I understand that the method process is called each time I instantiate the class? But if the raw files were already processed the way I wanted (with some pre_filter and pre_transform), how can I avoid this step?
2/ How to set num_class for the dataset?
3/ There is nothing to do for transform, the transformations will be automatically applied each time get() is called, right? depending on the transformation, that means  a bit of work for each sample at each epoch; correct?

process will only get called in case processed files are not found or the process method is not implemented.
They are automatically determined in case data.y is present in the data. Otherwise, you can overwrite the property by yourself.
Exactly. In case transformation will be slow, we recommend to outsource them via pre_transform.

thanks


Ripple effect is not animated in release build

That happens when shrinkResources is true and minifyEnabled is true. How can this be fixed?
https://user-images.githubusercontent.com/13766004/120435781-d1edf900-c386-11eb-8c89-56206af9944f.mp4

same here.
did not resolve it yet, but the solution, seems to be in this link.

Yes. The following code in proguard-rules.pro solves it.
-keep class it.sephiroth.android.library.xtooltip.TooltipOverlayDrawable { *; }
I guess it can be narrowed to keep as less as possible.


Use tex instead of this.texture

In update method , there is already  tex , we shouldn't use this.texture any more.

I don't see the need to cache a short and well described member variable into an even shorter, less clear local variable that isn't used much. Can't everything be this._texture?

@finscn I have a request. You have been making a lot of code cleanup pull requests, like this one. It's very helpful and we appreciate it, but it generates a lot of work for the team to field every PR. We would be very interested in seeing a larger PR of trivial changes rather than many trivial PRs.

@bigtimebuddy   , I know your mean.
But  I said at  https://github.com/pixijs/pixi.js/pull/3480#issuecomment-267782119  .
I'm afraid that if I change many file in different modules ， it's too dangerous.

@themoonrat  ， in update method of  TextureTransform.js ,  there are many places need this._texture , So I think use a short name is worth.
But I don't like  tex ,  in other files of PIXI.js , the texture is used generally.

@finscn I mostly disagree that it is too dangerous. Your changes, like the _texture fixes, would be better as one thorough PR rather than one at a time. We have to balance risk with time required to review each PR. Please consider bundling changes that are similar.

@bigtimebuddy  , I see.
In the future , I'll make a larger PR for the similar trivial PRs as possible as I can. ( If I won't find the issues at the same time , I can't pull the larger PR ).
But  I hope this issue and  issue https://github.com/pixijs/pixi.js/pull/3532 could be merged.

@themoonrat I agree, but take a look at the file and you'll see that without the abbreviations (more than just tex) those fomulas are probably way too verbose.  I gave a refactor a shot, wasn't pretty - wanna give it a try?

👍


Electron can't access cashe Error

Discord username
No response
What type of issue is this?
Permanent – Occurring repeatably
Is this issue blocking you from using Enso?

[ ] Yes, I can't use Enso because of this issue.

Is this a regression?

[X] Yes, previous version of Enso did not have this issue.

What issue are you facing?
Each time I open Enso it asks me to log in.
https://github.com/enso-org/enso/assets/108271897/6591e7f0-b4d9-46cd-bca4-75002e1ae9e6
Expected behaviour
Once logged in it shouldn't ask me each time for credentials.
How we can reproduce it?
No response
Screenshots or screencasts
No response
Logs
[trace] [2023-06-29T11:09:23.155Z] [org.enso.loggingservice.LoggingServiceSetupHelper] Logging service has been set-up and is listening at ws://localhost:62943/.
│ ╰ Done in 99.5 ms.
│ Loading the window address 'http://localhost:8081/?startup.platform=win32'.
╰ Done in 188.7 ms.
[55404:0629/130923.246:ERROR:cache_util_win.cc(20)] Unable to move the cache: Access is denied. (0x5)
[55404:0629/130923.246:ERROR:cache_util_win.cc(20)] Unable to move the cache: Access is denied. (0x5)
[55404:0629/130923.309:ERROR:disk_cache.cc(205)] Unable to create cache
[55404:0629/130923.309:ERROR:gpu_disk_cache.cc(673)] Gpu Cache Creation failed: -2
[55404:0629/130923.309:ERROR:disk_cache.cc(205)] Unable to create cache
[55404:0629/130923.310:ERROR:gpu_disk_cache.cc(673)] Gpu Cache Creation failed: -2
Backend exited with code 1.
[39988:0629/130925.250:ERROR:cache_util_win.cc(20)] Unable to move the cache: Access is denied. (0x5)
[39988:0629/130925.251:ERROR:disk_cache.cc(205)] Unable to create cache
[55404:0629/130926.258:ERROR:service_worker_storage.cc(1945)] Failed to delete the database: Database IO error
Opening URL in system browser: 'https://production-enso-domain.auth.eu-west-1.amazoncognito.com/oauth2/authorize?redirect_uri=enso%3A%2F%2Fauth&response_type=code&client_id=4j9bfs8e7415erf82l129v0qhe&identity_provider=Github&scope=email openid&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM&code_challenge=yN-BlxcM_VtTaibJxeflGNuHKq7_ADdgXtRU6LC79hg&code_challenge_method=S256'.
Expecting URL callback, acquiring the lock.
Got data from 'second-instance' event: 'C:\Users\xvc\AppData\Local\Programs\Enso\enso.exe,--allow-file-access-from-files,enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM'.
URL callback completed, releasing the lock.
Checking if 'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM' denotes a URL to open.
Parsed 'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM' as URL: enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM. Protocol: enso:.
Got URL from 'second-instance' event: 'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM'.
Got URL from second instance: 'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM'.
Received 'open-url' event for 'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM'.
'enso://auth/?code=a6b138a7-2dd6-4e60-9969-5eae4e10ceeb&state=MNlNfEwzew2mUgtGH5XWuKJhiSsiKEBM' is a deep link, sending to renderer.
Resource '/new-project.svg' not found.
Resource '/project.svg' not found.
Enso Version
2023.6.29 nightly
Browser or standalone distribution
Standalone distribution (local project)
Browser Version or standalone distribution
standalone
Operating System
Windows
Operating System Version
Win11pro 22H2 22621.1555
Hardware you are using
12th Gen Intel(R) Core(TM) i9-12900HK / RTX3060 Laptop / Nvidia Drivers 531.68

Cannot reproduce on Linux. Here, even a freshly downloaded nightly build seems to know who I am.

Cannot reproduce it on Nightly 2023.7.3 - closing


<EMAIL_ADDRESS>decompress error

Installing 'twilio' (5.3.0) [64bit] from twilio-scoop bucket
Loading twilio-win32-x64.tar.xz from cache
Checking hash of twilio-win32-x64.tar.xz ... ok.
Extracting twilio-win32-x64.tar.xz ... ERROR Exit code was 2!
Failed to extract files from C:\Users\oseveriche_teclogi\scoop\apps\twilio\5.3.0\twilio-win32-x64.tar.
Log file:
~\scoop\apps\twilio\5.3.0\7zip.log

This looks like a duplicate issue.
Please try running this cmd in Powershell ran as an Admin.


Grafana username "admin" and password not working

Hi All,
I'm Ira from SAS Technical Support. I'm working on a ticket opened by a PSD engineer following Viya 2021.2.5 deployment on AWS.
Viya Monitoring has been installed with the project Viya 4 Deployment . He configured the password in the ansible-vars.yaml file with the variable V4M_GRAFANA_PASSWORD.
In the Ansible installation log, the following message appears:
TASK [monitoring : cluster-monitoring - output credentials] ********************
ok: [localhost] => {
"msg": [
"Grafana - username: admin, password: Password123"
]
}
When he logs in to Grafana, he gets an error: invalid username or password. He also tried admin/admin but it doesn't work.
I've asked him to check the current password, which is kept as a pod secret, by querying the info using Kubectl. He tried it, but the issue is still persisting:
kubectl -n monitoring get secret v4m-grafana -o yaml
apiVersion: v1
data:
admin-password: UGFzc3dvcmQxMjM=
admin-user: YWRtaW4=
echo "YWRtaW4=" | base64 --decode
admin
echo "UGFzc3dvcmQxMjM=" | base64 --decode
Password123
Is there any additional steps to be performed while setting up Grafana by using this project?
Thank you for your help
Best regards,
Ira

@irchum I think there may be two separate issues here.  First, the it appears that the Viya 4 Deployment project did not honor/use the password the user provided.  That issue will have to be addressed by the Viya 4 Deployment project team.  I would suggest you open an (separate) issue with that team directly.
Second, it appears that the password stored in the v4m-grafana secret is not correct.  That does appear to be a problem on this project.  Or, possibly with the prometheus-operator we use to deploy Grafana.  In any case, I have confirmed that if you change the Grafana password the secret is not updated.  That is a bug and we will address it in a future release.  In the meantime, users will need to manually update the v4m-grafa secret after they change Grafana password.  Instructions for how to change the Grafana password are included in the ACCESS MONITORING APPLICATIONS section of the monitoring/README.md file in this repo.  After following the instructions there for changing the password, the user can manually update (using a tool like Lens, perhaps) the admin-password data item in v4m-grafana secret can be updated with the new password.

@gsmith-sas Thank you for your feedback. I have asked the user to manually update v4m-grafa secret. He did it but the behavior is still the same. He performed the following:

Updated the v4m-grafana secret via kubectl
Reset the password with grafana-cli admin reset-admin-password.
Restarted the pod

@irchum I apologize for the delayed response, I was out of the office.
I have confirmed that after following the following steps I can a) log into Grafana with the new password; and, b) the secret contains the new password.  I have also confirmed that I can still access Grafana with the new password after restarting the Grafana pod.
-bash-4.2$ kubectl exec -n monitoring v4m-grafana-579bd99797-95cnd -c grafana -- bin/grafana-cli admin reset-admin-password password
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Starting Grafana" version= commit= branch= compiled=1970-01-01T00:00:00Z
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="The state of unified alerting is still not defined. The decision will be made during as we run the database migrations"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=warn msg="falling back to legacy setting of 'min_interval_seconds'; please use the configuration option in the `unified_alerting` section if Grafana 8 alerts are enabled."
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config loaded from" file=/usr/share/grafana/conf/defaults.ini
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_PATHS_DATA=/var/lib/grafana/"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_PATHS_LOGS=/var/log/grafana"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_PATHS_PLUGINS=/var/lib/grafana/plugins"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_SECURITY_ADMIN_USER=admin"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Config overridden from Environment variable" var="GF_SECURITY_ADMIN_PASSWORD=*********"
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Path Home" path=/usr/share/grafana
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Path Data" path=/var/lib/grafana/
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Path Logs" path=/var/log/grafana
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Path Plugins" path=/var/lib/grafana/plugins
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="Path Provisioning" path=/etc/grafana/provisioning
logger=settings t=2022-06-14T20:06:46.18+0000 lvl=info msg="App mode production"
logger=sqlstore t=2022-06-14T20:06:46.18+0000 lvl=info msg="Connecting to DB" dbtype=sqlite3
logger=migrator t=2022-06-14T20:06:46.25+0000 lvl=info msg="Starting DB migrations"
logger=migrator t=2022-06-14T20:06:46.27+0000 lvl=info msg="migrations completed" performed=0 skipped=381 duration=1.027581ms

Admin password changed successfully ✔

-bash-4.2$ echo Grafana User: $(kubectl -n monitoring get secret v4m-grafana -o=jsonpath={.data.admin-user} | base64 -d)
Grafana User: admin
-bash-4.2$ echo Grafana Password: $(kubectl -n monitoring get secret v4m-grafana -o=jsonpath={.data.admin-password} | base64 -d)
Grafana Password: admin
-bash-4.2$
-bash-4.2$ echo password|base64
cGFzc3dvcmQK
-bash-4.2$ kubectl -n monitoring patch secret v4m-grafana --type='json' -p='[{"op" : "replace" ,"path" : "/data/admin-password" ,"value" : "cGFzc3dvcmQK"}]'
secret/v4m-grafana patched
-bash-4.2$ echo Grafana User: $(kubectl -n monitoring get secret v4m-grafana -o=jsonpath={.data.admin-password} | base64 -d)
Grafana User: password

I am not sure why your customer ran into problems.  Please ask them to follow the steps (as shown above) and confirm the problem persists.

@irchum Hmmm, given all of the messages indicating success, it is very strange that the problem persists.  How is the problem presenting itself?  When the user attempts to log into Grafana with the updated credentials, is Grafana displaying error messages indicating that the password is invalid?  After removing and reinstalling the monitoring tools, why was the password changed?  Was that just to verify the password change process?

@gsmith-sas password changed to verify if it works with the updated password. The engineer confirmed that there is only one instance of Grafana. he works on the same environment (Viya 2021.2.5 deployed on AWS). SAS Viya 4 team was't able to create the issue the enginner has. They also see some different behavior regarding the logging of errors and informational messages when they access Grafana. Viya 4 team has proposed a team session with the engineer to see the installation etc.

We found that another grafana installation was using the same DNS name grafana.<domain_name> as the instance installed by viya4 deployment.  The customer updated V4M_GRAFANA_FQDN to be viyagrafana.<domain_name> and was able to successfully log in to the viya4 deployment instance.

Thanks for the update @Andy-Tr.  I'm glad the problem was resolved.


Fix the resource naming in the UI

Use proper English for the UI representation without breaking the component.
Description:
Related issue (if applicable): fixes #
Pull request in home-assistant.github.io with documentation (if applicable): home-assistant/home-assistant.github.io#<home-assistant.github.io PR number goes here>
Example entry for configuration.yaml (if applicable):

Checklist:
If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated in home-assistant.github.io

If the code communicates with devices, web services, or third-party tools:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] New dependencies have been added to the REQUIREMENTS variable (example).
[ ] New dependencies are only imported inside functions that use them (example).
[ ] New dependencies have been added to requirements_all.txt by running script/gen_requirements_all.py.
[ ] New files were added to .coveragerc.

If the code does not interact with devices:

[ ] Local tests with tox run successfully. Your PR cannot be merged unless tests pass
[ ] Tests have been added to verify that the new code works.

This fix doesn't just alter the UI representation, it changes the related entity_ids too.

Right, thanks for pointing that out, @fanaticDavid.


Past recurrences

This PR provides a new user preference generatePastRecurrences which defaults to true to preserve the existing behavior.  However if you set it to false in the user-preferences.json you will get the new behavior of not generating past recurrences until the original task is marked completed.  Only one recurrence task will be generated each time the existing task is completed.  This is the behavior that @rzelnik was requesting in #147 I think.
@ransome1, as you suggested, it might make sense to make false the default if more people prefer that.  I certainly do.  If you think anybody is depending on the old behavior, you could keep the user preference, but just change the default.

Oops, sorry.  Git pushed more commits to this branch than I intended.  Not sure how to fix it so I will close this PR and delete the branch and try again.


replace generate-internal-groups with newer kube-codegen

-- Just putting this already here as draft, so I don't forget it in the future --

What this PR does / why we need it:
Allows for using make make update-codegen without having your code inside GOPATH, which is in line with Go development standards. In addition resolves "unsupported type" warnings like this one
W0619 10:30:57.813447   34549 parse.go:863] Making unsupported type entry "T" for: &types.TypeParam{check:(*types.Checker)(nil), id:0x1, obj:(*types.TypeName)(0xc00fed58b0), index:0, bound:(*types.Named)(0xc0000221c0)}
Generating defaulters

What type of PR is this?

/kind cleanup
Special notes for your reviewer:
Ran make update-codegen afterwards to ensure that there are no changes in the generated code.
Does this PR introduce a user-facing change? Then add your Release Note here:

NONE

Documentation:

NONE

Superseded by #3406
/close


.gitignore for public/javascripts/translations.js??

question, am I suppose to ignore the file public/javascripts/translations.js, which seems to constantly update when I am updating text keys?
Is it necessary to put that file in repository?
Will it automatically generate on a production server?
Does it require some kind of setting?
Sorry for the question, I am probably overlooking some documentation about it.

What is you environment and settings?
Things like gems you are using, gem versions, using asset pipeline or not, etc.

Probably same issue with #209


BMT Backend: Endre projectContext til projectmastercontext som kilde for prosjekter

Test: Tested that the search function is working in BMT QA environment. Searched projects: Johan Castberg, Åsgard, Kharynga and compared the number of projects in BMT towards what is listen in CommonLib Project Master.


Syscall Error Verbose from Command Line

Right now there's a verbose flag at the top of the errnos.rs file that toggles Error logging in safeposix. We don't want this on all the time unless specified.
I think to do this we have to make it so NaCl sends some info when verbose is triggered to lindrustinit(). Shouldn't be too difficult an improvement.

I added this last week.


:sparkles: add hass-cli

Proposed Changes
Adds hass-cli in pip install step
setup auto completion for hass-cli like done in addon-ssh

(Describe the changes and rationale behind them)

Related Issues

(Github link to related issues or pull requests)

Fixes #35

sorry made a PR too soon - seems the python version in the IDE is python 2.7? how do we get that upgraded :)

@maxandersen We can't, hence I didn't add the cli to the IDE add-on.
Cloud9 IDE development has been stalled since Amazon acquired it.
The c9 project is considered dead at this point. I'm currently working on a replacement.


Bag (DateTimeEditorAttribute)

Can't change minutes manually

please be more spesific

Sorry, i didn't know that i should click " : " after hours
example if i wanted '22:00' i clicked -> 2200 not 22:00


Netty Transport not found on autobahn-java docker images

When I compile a code running a service that uses NettyTransport library, the compilers shows me a error "cannot find symbol import io.crossbar.autobahn.wamp.transports.NettyTransport" for the class NettyTransport. I've tried with the images :latest, :netty and :netty-17.10.5 and got exactly the same result.
Bellow the console output
docker run -it --rm \
		--link crossbar \
		-v /Users/rafael/git/parcIT_demo/java_mock_backend:/build \
		crossbario/autobahn-java:latest \
			/bin/bash -c \
				"cd /build; gradle -Dfile.encoding=ISO-8859-1 \
				-Pautobahn=/autobahn \
				-Pcrossbar_url=ws://crossbar:8088/ws \
				-Pcrossbar_realm=realm1 \
				run"
Unable to find image 'crossbario/autobahn-java:latest' locally
latest: Pulling from crossbario/autobahn-java
Digest: sha256:7ca66636eaa5c3f7d10e04f678c7b3cb1d35514b1f35f24b535ace9400393023
Status: Downloaded newer image for crossbario/autobahn-java:latest
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details

> Task :compileJava
/build/src/main/java/mock/Service.java:10: error: cannot find symbol
import io.crossbar.autobahn.wamp.transports.NettyTransport;
                                           ^
  symbol:   class NettyTransport
  location: package io.crossbar.autobahn.wamp.transports
/build/src/main/java/mock/Service.java:55: error: cannot find symbol
        transports.add(new NettyTransport(url));
                           ^
  symbol:   class NettyTransport
  location: class Service
Note: /build/src/main/java/mock/Database.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
2 errors

The current Docker container that we have is explicitly for Android, where we don't want to support the Netty based transport. We will need to create a separate container for Netty transport.


Type checking fails

Description
Type checking based on type property value fails to check whether:

property has a correct type
property value satisfy the provided conditions

Steps to reproduce

Create schemas/sample.toml.json:

{
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "Sample schema",
    "description": "Validation fails property type",
    "x-taplo-info": {
        "authors": ["Emily Grace Seville (https://github.com/EmilySeville7cfg)"],
        "patterns": ["\\._config.toml$"]
    },
    "properties": {
        "sample": {
            "description": "Sample property",
            "type": "string"
        }
    }
}

Create test/_config.toml:

sample = 3

Create .vscode/settings.json:

{
    "evenBetterToml.schema.associations": {
        "file:///home/emilyseville7cfg/Documents/mine/schemas/taplo/test/_config.toml": "file:///home/emilyseville7cfg/Documents/mine/schemas/taplo/schemas/sample.toml.json",
    }
}

Obtain no errors about wrong sample value.

Due to this issue I can't check whether I can or not extend some schema definition like this:
    "definitions": {
        "string-array-unique": {
            "type": "array",
            "items": {
                "type": "string"
            },
            "uniqueItems": true
        },

and:
        "exclude": {
            "description": "Exclude directories and/or files from the conversion. These exclusions are relative to the site's source directory and cannot be outside the source directory.",
            "$ref": "#/definitions/string-array-unique",
            "items": {
                "minLength": 1
            }
        },

The next version on the next branch is almost ready which is a complete rewrite that uses a proper schema validator under the hood, I think I should have it done next weekend, as most stuff left is just documentation and CI/CD changes.

Due to this issue I can't check whether I can or not extend some schema definition like this:

Don't, the new validator only supports draft 7, which should ignore anything beside a $refaccording to the spec. You should be able to use "allOf": [ { "$ref": "..." } ] for similar effects however.

I think I should have it done next weekend, as most stuff left is just documentation and CI/CD changes.

Yeah this part did not quite work out.
I have just released new versions eveywhere, please reopen this if the problem still persists.


Unit testing

This enhancement has been officially released in

v2.0.0 for Vue 2
v3.0.0 for Vue 3


Design workflow for missing questions identified through Pima County line list analysis

As a user, I need to be able to provide answers to the required questions in the Pima County line list.

[ ] Update mock ups with required data fields.
[ ] Design a workflow for questions that are relevant to positive cases only.

See line list analysis below to identify fields that need to be incorporated:
https://docs.google.com/spreadsheets/d/1EKyqtuSHp0wFVUymBpjSPg5Qnj4Qb1iy/edit#gid=1550030719

Moving to backlog -- Wait until we get some positives and see how facilities handle this scenario. All these questions are designed for positive cases only.

Deferring until we hear this is more of a use case


Build(deps-dev): Bump @testing-library/dom from 8.13.0 to 8.14.0 (#3666)

Pull request opened by the merge tool on behalf of #3666

Merged in 0cab0e3a6c65ea578b3ab29f0c0998762946ae44