GradleProject model should not include the task lists.

org.gradle.tooling.model.GradleProject is the key entry point for syncing project in IntelliJ (IJ) and Android Studio (AS). We need to query this model first before querying our more specialized models.
Currently, it also contains the list of tasks. This is used in IJ/AS to display the task in the Gradle pane on the right.
We would like to make this optional somehow. Maybe make the current model always return an empty list, and provide a different model that returns the task list if needed.
Our reasoning:

Nobody uses this in Studio (don't know about IJ). We don't have actual metrics (we will add some) but users have told us they don't use it.
This does not scale. A 100 module project will create 20,000 tasks. We have heard from users with several 100s of modules that this is something that impact performance and are doing hacks to disable it on the IDE side.
This triggers task configuration during sync because GradleTask includes the group and description that requires a task configuration. Side note, it would be nice to be able to set these, as well as dependencies on TaskProvider, but in our case it's just simpler to not return the tasks at all.

A different option might be to only provide the tasks that have a group associated with them. Right now it includes all the tasks, including the ones that don't have groups. None of these are meant to be called directly (in the case of Android at least). Doing this would require us to be able to set group on TaskProvider to avoid triggering configuration.

Also an overloaded register function to provide the task group earlier would be beneficial. In current API, tasks are needed to be realized and configured in order to determine their groups. This leads all tasks to be configured which is not necessary even when users are indeed using the pane.

@ducrohet There's already a Tooling API model (BasicGradleProject) that describes the project layout without the available tasks. Is this model useful for you or does it have missing features?

Sorry, my previous comment is not correct, BasicGradleProject is not a Tooling API model. Still, I think something similar should exist. We should extract the base functionality to a super-interface

Let's leave this open until we hear back from Xav.

It turns out that IntelliJ does not actually use GradleProject so we will attempt to fix this there.
However I think the bug still stands. BasicGradleProject is a good replacement for GradleProject (it's just missing getBuildDirectory).
Also the comment about group/description on TaskProvider still stands as well :)

So, if I get this right, we could split this issue into the following two issues:

Add getBuildDirectory() to the BasicGradleProject
Let TaskProvider configure group and description

@ducrohet If you are fine with this, I'll create two new issues and close this one.

We're currently looking into this more actively. IntelliJ has its own way to populate its task list window and we can (and will) disable that (or put it behind a setting at least.)
However, it does query for IdeaModel in the tooling action which internally gets created by building the hierarchy of GradleProject which builds the list of tasks.
We are going to need to find a way to do this. One possibility would be to include a parameter to call getModel() with on BuildController to basically disable task creation. Would that be acceptable?

Sorry for the late reply.
So, if I understand correctly, you need to change the content of the GradleProject model, because IDEA uses the same model internally. I guess using a different model would require more changes in Android Studio.
Parameterizing the corresponding model builder would be an option, but it requires a bit of design. I'm planning to create a Gradle test snapshot for which you can set a system property that disables the task creation. With that, you can measure the impact of skipping the task creation. How does that sound?

Hi,
we can do some test with a flag, that would be a good way to look at the impact of this. I think with regard to an actual solution, moving to  something that's compatible with TaskProvider is probably a better solution. I filed Issue 9823 for this a while back.

I've created patched Gradle 5.6 release in which you can influence the GradleProjectBuilder class with the GradleProjectOptions system property. The possible values are:

unmodified: the original behavior
skip_task_serialization load the tasks in the model builder but don't send it to the client
skip_task_load: don't realize the tasks

I've used the Gradle profiler in conjunction with the perf-android-large project (link) to measure the performance difference. I used the following scenario file for the measurement:
gradle_project {
  model = "org.gradle.tooling.model.GradleProject"
}

gradle_project_without_serializing_tasks {
  model = "org.gradle.tooling.model.GradleProject"
  system-properties {
    GradleProjectOptions = "skip_task_serialization"
  }
}

gradle_project_without_loading_tasks {
  model = "org.gradle.tooling.model.GradleProject"
  system-properties {
    GradleProjectOptions = "skip_task_load"
  }
}

Running the scenarios with 5 warm-ups and 50 iterations each I got the following results:

Value
gradle_project
without_serializing_tasks
without_loading_tasks

mean(ms)
1328.36
1305.16
903.92

stddev(ms)
146.080319
152.78
157.59

It seems that the serialisation is negligible in the tested scenario, and realising the task graph itself is also acceptable, just a few hundred milliseconds for a project with ~21.000 tasks.
Of course, this is not conclusive as the tested project is a synthetic one. Do you have a large, real-life project at hand on which you can reproduce this measurement?

Also keep in mind that this operation in IDEs are not run that often. Only when Gradle files actually change.

@tasomaniac opening the IDE / project and switching branches also triggers this, and it makes Android Studio unususable for a few minutes in projects with 1k modules.

@donat It seems the link to the patched 5.6 is gone?

Interesting. I'll recreate it for you today.
Or, if you need it faster, you can rebuild my version from the donat/remove-tasks-from-tapi-model branch with the ./gradlew install -Pgradle_installPath=/path/to/dist command.

@ducrohet if this makes it in gradle, will we have a UI button to enable/disable the task list from Android Studio ?

Better late than never, here's the patched distribution you can test with: https://services.gradle.org/distributions-snapshots/gradle-6.1-branch-donat_remove_tasks_from_tapi_model-20191004160515+0000-bin.zip

@donat , I tried your version. It works fine to build our project on the command line but I get this issue in Android Studio: '6.1-branch-donat_remove_tasks_from_tapi_model-20191004160515+0000' is not a valid Gradle version string (examples: '1.0', '1.0-rc-1')
I tried renaming the gradle distribution to change the version to 6.1, but it didn't work. Here is the full idea.log stack trace. Is the gradle version embedded in the jar ?
org.gradle.tooling.GradleConnectionException: Could not create an instance of Tooling API implementation using the specified Gradle distribution 'file:///<path>/gradle-6.1-bin.zip'.
        at org.gradle.tooling.internal.consumer.loader.DefaultToolingImplementationLoader.create(DefaultToolingImplementationLoader.java:114)
        at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:44)
        at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:43)
        at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:101)
        at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:83)
        at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
        at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:58)
        at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
        at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:55)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
        at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
        at java.lang.Thread.run(Thread.java:748)
        at org.gradle.tooling.internal.consumer.BlockingResultHandler.getResult(BlockingResultHandler.java:46)
        at org.gradle.tooling.internal.consumer.DefaultModelBuilder.get(DefaultModelBuilder.java:50)
        at org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper.getBuildEnvironment(GradleExecutionHelper.java:577)
        at org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper.getBuildEnvironment(GradleExecutionHelper.java:86)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.doResolveProjectInfo(GradleProjectResolver.java:181)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.access$200(GradleProjectResolver.java:73)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:736)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver$ProjectConnectionDataNodeFunction.fun(GradleProjectResolver.java:719)
        at org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper.execute(GradleExecutionHelper.java:227)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:138)
        at org.jetbrains.plugins.gradle.service.project.GradleProjectResolver.resolveProjectInfo(GradleProjectResolver.java:73)
        at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.lambda$resolveProjectInfo$0(RemoteExternalSystemProjectResolverImpl.java:36)
        at com.intellij.openapi.externalSystem.service.remote.AbstractRemoteExternalSystemService.execute(AbstractRemoteExternalSystemService.java:57)
        at com.intellij.openapi.externalSystem.service.remote.RemoteExternalSystemProjectResolverImpl.resolveProjectInfo(RemoteExternalSystemProjectResolverImpl.java:36)
        at com.intellij.openapi.externalSystem.service.remote.wrapper.ExternalSystemProjectResolverWrapper.resolveProjectInfo(ExternalSystemProjectResolverWrapper.java:44)
        at com.intellij.openapi.externalSystem.service.internal.ExternalSystemResolveProjectTask.doExecute(ExternalSystemResolveProjectTask.java:99)
        at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:165)
        at com.intellij.openapi.externalSystem.service.internal.AbstractExternalSystemTask.execute(AbstractExternalSystemTask.java:151)
        at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.executeImpl(ExternalSystemUtil.java:563)
        at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.lambda$execute$0(ExternalSystemUtil.java:399)
        at com.intellij.openapi.project.DumbServiceImpl.suspendIndexingAndRun(DumbServiceImpl.java:146)
        at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$3.execute(ExternalSystemUtil.java:399)
        at com.intellij.openapi.externalSystem.util.ExternalSystemUtil$5.run(ExternalSystemUtil.java:668)
        at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:731)
        at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:164)
        at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:586)
        at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:532)
        at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:86)
        at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:151)
        at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:403)
        at com.intellij.openapi.application.impl.ApplicationImpl$1.run(ApplicationImpl.java:312)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: '6.1-branch-donat_remove_tasks_from_tapi_model-20191004160515+0000' is not a valid Gradle version string (examples: '1.0', '1.0-rc-1')
        at org.gradle.util.GradleVersion.<init>(GradleVersion.java:110)
        at org.gradle.util.GradleVersion.version(GradleVersion.java:101)
        at org.gradle.tooling.internal.consumer.versioning.VersionDetails.from(VersionDetails.java:35)
        at org.gradle.tooling.internal.consumer.connection.CancellableConsumerConnection.<init>(CancellableConsumerConnection.java:36)
        at org.gradle.tooling.internal.consumer.connection.ShutdownAwareConsumerConnection.<init>(ShutdownAwareConsumerConnection.java:30)
        at org.gradle.tooling.internal.consumer.connection.TestExecutionConsumerConnection.<init>(TestExecutionConsumerConnection.java:33)
        at org.gradle.tooling.internal.consumer.connection.ParameterAcceptingConsumerConnection.<init>(ParameterAcceptingConsumerConnection.java:34)
        at org.gradle.tooling.internal.consumer.connection.PhasedActionAwareConsumerConnection.<init>(PhasedActionAwareConsumerConnection.java:46)
        at org.gradle.tooling.internal.consumer.loader.DefaultToolingImplementationLoader.create(DefaultToolingImplementationLoader.java:93)
        at org.gradle.tooling.internal.consumer.loader.CachingToolingImplementationLoader.create(CachingToolingImplementationLoader.java:44)
        at org.gradle.tooling.internal.consumer.loader.SynchronizedToolingImplementationLoader.create(SynchronizedToolingImplementationLoader.java:43)
        at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.onStartAction(LazyConsumerActionExecutor.java:101)
        at org.gradle.tooling.internal.consumer.connection.LazyConsumerActionExecutor.run(LazyConsumerActionExecutor.java:83)
        at org.gradle.tooling.internal.consumer.connection.CancellableConsumerActionExecutor.run(CancellableConsumerActionExecutor.java:45)
        at org.gradle.tooling.internal.consumer.connection.ProgressLoggingConsumerActionExecutor.run(ProgressLoggingConsumerActionExecutor.java:58)
        at org.gradle.tooling.internal.consumer.connection.RethrowingErrorsConsumerActionExecutor.run(RethrowingErrorsConsumerActionExecutor.java:38)
        at org.gradle.tooling.internal.consumer.async.DefaultAsyncConsumerActionExecutor$1$1.run(DefaultAsyncConsumerActionExecutor.java:55)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)

@stephanenicolas I think the easiest is to rebuild my fork locally. It might take a few minutes, but the result version should be accepted by the Tooling API.

@donat I will try later today. I never built gradle yet..
Was I right in how to pass the 2 params's values you introduced ?

Almost. The values should be specified as system properties (and not as project properties). The correct gradle.properties file should look like this:
systemProp.skip_task_serialization=true
systemProp.skip_task_load=true

Thx for the details with the properties. I was not sure about it. I guess
your fork is experimental only for now, but I would prefer project
properties,
if it makes sense and they can be passed easily during the sync. AS will
probably also want to have a few UI options to parametrize these.
Le mar. 8 oct. 2019 à 06:47, Donát Csikós<EMAIL_ADDRESS>a
écrit :

Almost. The values should be specified as system properties (and not as
project properties). The correct gradle.properties file should look like
this:
systemProp.skip_task_serialization=true
systemProp.skip_task_load=true
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gradle/gradle/issues/8898?email_source=notifications&email_token=AAN7PXIJUAU5EHVYDESIWO3QNSFQRA5CNFSM4HCLWYZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAUHGMA#issuecomment-539521840,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAN7PXLV2SH53R3ORS3UMATQNSFQRANCNFSM4HCLWYZQ
.

@donat I am not sure the system properties are correctly passed during a sync.
Can it be related to https://github.com/gradle/gradle/issues/6825 ?The sync time is unchanged and the task list is still filled in AS.

I think I understood the problem: the sync doesn't follow the gradle version used to build the app:
initscript {
  dependencies {
    classpath files(["/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/kotlin-gradle-tooling.jar","/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/sam-with-receiver-ide-plugin.jar","/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/kotlin-plugin.jar","/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/noarg-ide-plugin.jar","/Applications/Android Studio.app/Contents/lib/kotlin-stdlib-1.3.50.jar","/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/kapt3-idea.jar","/Applications/Android Studio.app/Contents/plugins/android/lib/android-extensions-ide.jar","/Applications/Android Studio.app/Contents/lib/external-system-rt.jar","/Applications/Android Studio.app/Contents/plugins/gradle/lib/gradle-tooling-extension-api.jar","/Applications/Android Studio.app/Contents/plugins/gradle/lib/gradle-api-impldep-4.10.3.jar","/Users/<>/Library/Application Support/AndroidStudio3.5/Kotlin/lib/allopen-ide-plugin.jar","/Applications/Android Studio.app/Contents/lib/gson-2.8.5.jar","/Applications/Android Studio.app/Contents/lib/groovy-all-2.4.15.jar","/Applications/Android Studio.app/Contents/plugins/gradle/lib/gradle-tooling-extension-impl.jar"])
  }
}

It uses the tooling apis shipped with AS... How can we change that ? @donat

AFAIC it can only be done by rebuilding AS from the sources. This is only an experiment thought. Why don't you change my branch and hard-code the removal of the task graph removal from the model, rebuild the Gradle distribution and use it in your AS project? You only need to comment out the parts that are guarded by the GradleProjectOptions system property.

I'm actually looking into how can we profile Gradle in the IDE-context.

@ducrohet

We're currently looking into this more actively. IntelliJ has its own way to populate its task list window and we can (and will) disable that (or put it behind a setting at least.)

AFAIU Android Studio is a fork of IDEA, right? If that's true, you can just replace loading GradleProject model with a custom one that does the same thing except loading the tasks. That solution would be also compatible with existing Gradle releases.

It is not a fork. It's a custom distribution of IDEA with the Android plugin and some custom productization (name, splashcreen and some custom UI around projects management to be Android only).
The code of the platform is untouched.

Good to know. Now, I understand the situation better.

For the sake of completeness, the PR for introducing system properties to disable task creation is merged.

Thx Donat, I could see it.
Le mar. 17 déc. 2019 à 07:55, Donát Csikós<EMAIL_ADDRESS>a
écrit :

For the sake of completeness, the PR
https://github.com/gradle/gradle/pull/11441 for introducing system
properties to disable task creation is merged.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/gradle/gradle/issues/8898?email_source=notifications&email_token=AAN7PXKKATPDGMWRFHNINMTQZDZAFA5CNFSM4HCLWYZ2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEHC25OQ#issuecomment-566603450,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAN7PXL2ULYGXP73AMF6N33QZDZAFANCNFSM4HCLWYZQ
.

As far as I know Android Studio did improvements on this area. The task list is no longer generated on sync which speeds up sync time. But that comes with a disadvantage since the tasks are no longer visible in the IDE and does not show up in autocompletion either.
That's why I don't think this issue is stale. It would be nice to benefit from this speed improvement while having just a list of task names available


Adds the ability to enable a redirect for a given storage provider

Fixes the following issue  #15
Signed-off-by: Kieran Robinson<EMAIL_ADDRESS>

@jessehu - we have updated per your comments sir.

@jessehu - any update?

@robbo10 I'm very sorry for the late response.

Hi @robbo10 did you get my review comments:
https://github.com/vmware/harbor-boshrelease/pull/16#discussion_r201609117
https://github.com/vmware/harbor-boshrelease/pull/16#discussion_r201609767

@jessehu - apologies we have been very busy, we can look into this in a few days, our original PR was fully tested though and worked fine.  In the spec file the default for registry_storage_provider.redirect is false.

Thanks @robbo10.

The line 55 "if ! grep -q 'redirect: {disable: true}' ; then" has grammar error because 'grep' command requires a file to search in.
https://docs.docker.com/registry/configuration/#storage contains the configuration

  redirect:
    disable: false

So I suggest naming the property as "registry_storage_provider.redirect.disable" to align with the yaml hierachy above.

Hey @jessehu we have made the required changes and have fully tested all possibilities through our CI pipeline.  All the changes are working as expected.
Thanks

Thanks @robbo10 . This patch looks great! +1 approval.
Copying @stonezdj to review as well.

Hey @robbo10 – thanks for the PR!


repo: remove outdated lists

This PR removes the files with the lists of used and unused images, now outdated.
relates to #1120

I assume that it's the lists that are outdated, not the images themselves.  I further assume that lists like this can be dynamically created.  If these assumptions are correct, then remove the lists.

Apologies for the dumb question: What were these lists used for?


[BUG] - Monitoring chart install error throws undefined variable "$forceHTTPSScheme" on Rancher v2.9-head

Rancher Server Setup

Rancher version: v2.9-12467fadeb539d35a249702dc0933bd84a166433-head
Installation option (Docker install/Helm Chart): helm chart

RKE2 - v1.24.4+rke2r1 and other on v1.25.9+rke2r1

Proxy/Cert Details: valid certs

Information about the Cluster

Kubernetes version: local cluster check kubernetes versions above.
Cluster Type (Local/Downstream): local / imported.

User Information

What is the role of the user logged in? admin

Describe the bug
An error is displayed on the helm installation shell container during the monitoring chart installation.
Error: parse error at (rancher-monitoring/charts/rke2Scheduler/templates/_helpers.tpl:131): undefined variable "$forceHTTPSScheme"
To Reproduce

Install a Rancher v2.9-head on an RKE2 local/imported cluster.
Login as Admin and navigate to Applications and proceed to install the latest Monitoring chart (at the time of this writing 104.0.2+up45.31.1 and just hit install with all the default options. I had a volume too for persistent prometheus storage if that's relevant)
Observe the shell UI component for the helm output logs (easier and automatic on UI) or inspect the helm install container with kubectl.

Result
The rancher-monitoring-crd app is deployed but the rancher-monitoring app fails with a template error:
---------------------------------------------------------------------
SUCCESS: helm upgrade --install=true --namespace=cattle-monitoring-system --timeout=10m0s --values=/home/shell/helm/values-rancher-monitoring-crd-104.0.2-up45.31.1.yaml --version=104.0.2+up45.31.1 --wait=true rancher-monitoring-crd /home/shell/helm/rancher-monitoring-crd-104.0.2-up45.31.1.tgz
---------------------------------------------------------------------
helm upgrade --install=true --namespace=cattle-monitoring-system --timeout=10m0s --values=/home/shell/helm/values-rancher-monitoring-104.0.2-up45.31.1.yaml --version=104.0.2+up45.31.1 --wait=true rancher-monitoring /home/shell/helm/rancher-monitoring-104.0.2-up45.31.1.tgz
Release "rancher-monitoring" does not exist. Installing it now.
Error: parse error at (rancher-monitoring/charts/rke2Scheduler/templates/_helpers.tpl:131): undefined variable "$forceHTTPSScheme"

Expected Result:
Both rancher-monitoring-crd and rancher-monitoring kubernetes apps of the Rancher Monitoring App should get installed on the local cluster. Attempting to install again should show Upgrade not Install buttons on the UI
Screenshots

Additional context

Also, failin on these files...
It appears that a variable $setHTTPSScheme based on .Values.clients.https.forceHTTPSScheme, but then later in the code, using $forceHTTPSScheme, which hasn't been defined.... We need to either change the variable name...
https://github.com/rancher/charts/blob/dev-v2.9/charts/rancher-monitoring/104.0.2%2Bup45.31.1/charts/rke2Scheduler/templates/_helpers.tpl#L105
rade.go:524: [debug] copying values from rancher-monitoring (v3) to new release.
Error: UPGRADE FAILED: parse error at (rancher-monitoring/charts/rke2Proxy/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
helm.go:84: [debug] parse error at (rancher-monitoring/charts/rke2Proxy/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
UPGRADE FAILED

upgrade.go:524: [debug] copying values from rancher-monitoring (v3) to new release.
Error: UPGRADE FAILED: parse error at (rancher-monitoring/charts/rke2IngressNginx/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
helm.go:84: [debug] parse error at (rancher-monitoring/charts/rke2IngressNginx/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
UPGRADE FAILED

upgrade.go:142: [debug] preparing upgrade for rancher-monitoring
upgrade.go:524: [debug] copying values from rancher-monitoring (v3) to new release.
Error: UPGRADE FAILED: parse error at (rancher-monitoring/charts/rke2Etcd/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
helm.go:84: [debug] parse error at (rancher-monitoring/charts/rke2Etcd/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"

upgrade.go:524: [debug] copying values from rancher-monitoring (v3) to new release.
Error: UPGRADE FAILED: parse error at (rancher-monitoring/charts/rke2ControllerManager/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
helm.go:84: [debug] parse error at (rancher-monitoring/charts/rke2ControllerManager/templates/_helpers.tpl:134): undefined variable "$forceHTTPSScheme"
UPGRADE FAILED

The files needs be to updated:
charts/rkeIngressNginx/templates/_helpers.tpl
charts/rkeProxy/templates/_helpers.tpl
charts/rke2IngressNginx/templates/_helpers.tpl
charts/rke2Etcd/templates/_helpers.tpl
charts/rkeControllerManager/templates/_helpers.tpl
charts/kubeAdmProxy/templates/_helpers.tpl
charts/rke2Proxy/templates/_helpers.tpl
charts/rkeScheduler/templates/_helpers.tpl
charts/kubeAdmEtcd/templates/_helpers.tpl
charts/k3sServer/templates/_helpers.tpl
charts/hardenedNodeExporter/templates/_helpers.tpl
charts/kubeAdmControllerManager/templates/_helpers.tpl
charts/rkeEtcd/templates/_helpers.tpl
charts/rke2ControllerManager/templates/_helpers.tpl
charts/kubeAdmScheduler/templates/_helpers.tpl
charts/hardenedKubelet/templates/_helpers.tpl
charts/rke2Scheduler/templates/_helpers.tpl

Yeah line got changed at some point and didn't notice when rebasing branch. Fix is already implemented, and will be merge with PRl 3317

I test this fix on rancher dev-v2.9 and its retest failed.
Error: parse error at (rancher-monitoring/charts/k3sServer/templates/_helpers.tpl:131): undefined variable "$forceHTTPSScheme"
rancher : v2.9-head
k8s : 	v1.26.4+k3s1
Charts: Monitoring (104.0.2+up45.31.1)

Retest passed on Rancher v2.9-head. Monitoring chart was successfully installed on rancher v2.9-head.
Charts: Monitoring (104.0.2+up45.31.1)


fix: correct the compatibility of types definition in package.json #87

fix #87

:tada: This PR is included in version 2.5.2 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.5.3 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Add GRCh38 to genome configuration

This works already somewhat: Merged BAM files are created.
Mapping is not ALT-aware and GATK fails, but hey, it’s a start!

To clarify: This is not full GRCh38 support, just the first step towards implementing it.


Adding Network interface samples

This PR includes:

Sample for creating a Network Interface that also gets a subnet and IP that exist in Azure
Sample for getting a Network Interface
Sample for deleting a Network Interface

Can one of the admins verify this patch?


Update CI for minibroker

The push to docker hub is broken because I had to rotate my creds due to the great docker breach of 2019.
I don't want to just put my personal creds in again (see #1). So I can either make a bot just for minibroker, or move two quay which lets you make robot accounts for stuff like this which is much easier to manage. So I'm thinking move to quay.
Travis was bought and gutted, we should move off of travis for our CI as well.

😱

The switch to quay is complete. I'm going to close this and chat with service catalog about how they do their CI. Hopefully I can standardize with them.


No values returned

If you wonder why is not working anymore, looks like yahoo started to encrypt the stores, there is also a thread on
There is also this thread on pandas datareader with the same problem

Any ideas about how to solve this?

Will change the request to get data from here https://query2.finance.yahoo.com/v8/finance/chart/BTC-EUR

Params from debugging yfinance
{'period1': -2208994789, 'period2':<PHONE_NUMBER>, 'interval': '1d', 'includePrePost': False, 'events': 'div,splits'}

As reference, the pandas datareader thread about this problem is https://github.com/pydata/pandas-datareader/issues/952


filtering out the reactions which the number of product is greater than 1

hello, folks:
when cleaning reaction smiles, could you help answer why need to remove reactions whose products are greater than 1?
could you explain more about this limitation? My understanding is that the input of the modeling is based on mol's fingerprint, it can't  indicate the mutiple product's fingerprint as input.
Thanks.
Philip Yang
I note below
Removing reactions based on these filters

products should be 1

the reason that I have this question is it is popular that many reactions lead to mutiple products, other side product may include h2o and co2 etc.  For such reactions, we may want to keep these reactions during trainning.
Thanks.

The reason for keeping 1 product is that these models are trained for retrosynthesis where you go from 1 product to 1 or more reactants. These reactions are never balanced, so by/side-products like H2O or CO2 are not included.

Closing due to inactivity


what's the NIWS means?

such as DefaultNIWSServerListFilter ,DiscoveryEnabledNIWSServerList
NIWS What does it mean

The Netflix Internal Web Service Framework (aka NIWS) forms the bedrock of this architecture in the realm of communication.

https://netflixtechblog.com/announcing-ribbon-tying-the-netflix-mid-tier-services-together-a89346910a62


Question regarding output_activation="linear"

HeadConfig(
name=f"num_tokens_regression",
layer_hook=-7,
hidden_size=128,  # MLP hidden size
num_layers=3,  # 2 hidden layers in MLP
in_size=hidden_size,
output_activation="linear",
is_causal_lm=False,
pred_for_sequence=False,
loss_fct="mse",
num_outputs=1,
is_regression=True,
loss_weight=0.0002,
)
In the above configuration from one of your scripts (joint_multitask_learning.ipynb) , it is defined as
num_layers = 3
output_activation="linear"
num_outputs=1

Here, does output_activation (linear) apply only to the last layer (output layer) in the transformer head?
or does it mean linear activation is applied for all the layers (3 layers) including the hidden layers in the transformer head?

Where do you define the linear activation in the transformer head code?

So linear commonly means "no activation". So it is defined in this activation_map which is used in MLPHead
Output activation only specifies the activation after the last layer. I.e. it specifies your output format (linear for any real number, sigmoid for 0-1 and ReLU for positive number)
The hidden activation is currently hard-coded to ReLU. I guess I do not know many situations where one benefits significantly from using something else.

Yes, exactly correct.

Thank you :)


GSA-4478 Move API samples to https://github.com/arup-group/oasys-api-…

…samples

Refer to following PR for new location
https://github.com/arup-group/oasys-api-samples/pull/1


[question] [suggestion] A place to chat about Odin

Hey,
I toy around, still being a beginner both at C but as well at Odin, so at times I have questions I normally would look up in the documentation. Odin by Example just doesn't cover every case yet and browsing the source here on GitHub mostly get me going but is a tedious process 😄
So I would like to suggest there'll be an "official" IRC channel for the Odin language or possibly a Slack if you're more into that.
Personally I'm more of an IRC kind of guy but I'm open to alternatives.
If anyone's up for a small chat I'll (for now) be in #OdinLanguage on freenode.

there is a forum on handmade network; https://odin.handmade.network/forums and Bill can often be found in its discord

There's a discord? Now look at that 😃 That's what I'm looking for I think. I can't seem to find it on odin.handmade.network, is it secret and for selected people only?

you'll find it on the home page of https://handmade.network/home

The discord is actually just the Handmade Network's discord. I talk a lot on there.

I see you all on discord. I'll take it. Thanks!

for anyone happening upon this issue, there is a #odin on the HMN discord now


Adjust text on Workflows screen

The text on the Workflows screen needs a slight adjustment as users can't create teams themselves.
From

Your personal playground to create and execute automation and work smarter. To collaborate on workflows, create a team.

To

Your personal playground to create and execute automation and work smarter. Use teams to collaborate on workflows.

Closed by #130


Can't build with the Tensorflow Lite on Raspberry pi 4B, 64 bit

I am aware of the solution described in the issue #132.
But my problem is that I use Pi OS Bullseye (64-bit), the prebuilt lib does not seem to be compatible. I read the builder's website, which states " Binaries are compatible with Raspberry Pi OS Bullseye (32-bit)."
Does that mean the prebuilt lib for 64-bit does not exist anywhere?
Anyway, I tried to build the latest Tensorflow Lite on the 64-bit and the build succeeded. The trouble is that the libcamera-apps cannot link with it because of these errors:
/usr/bin/ld: /usr/local/lib/libtensorflow-lite.so: undefined reference to `tensorflow::profiler::internal::g_trace_level'
/usr/bin/ld: /usr/local/lib/libtensorflow-lite.so: undefined reference to `tensorflow::profiler::TraceMeRecorder::Record(tensorflow::profiler::TraceMeRecorder::Event&&)'
/usr/bin/ld: /usr/local/lib/libtensorflow-lite.so: undefined reference to `tensorflow::profiler::GetCurrentTimeNanos()'
/usr/bin/ld: /usr/local/lib/libtensorflow-lite.so: undefined reference to `tensorflow::profiler::ScopedMemoryDebugAnnotation::ThreadMemoryDebugAnnotation()'

Could you please offer some suggestions?
Thanks.

I'm afraid we only support TF on our 32-bit releases for this very reason.  There has always been a problem building/compiling TFlite in our 64-bit environment.
I don't really have any suggestions as I've not looked into this for a long time, but you might want to revert to a 32-bit build for now if you want to use this module.

Thanks for the comments. I will keep this issue open for a while because I am trying to convince the Tensorflow people to fix their problems. This is not a libcamera problem.
I fixed it on my local machine. Basically, those "profiler" references, which reside on the tensorflow main branch, should never be referenced inside the TF Lite. Unfortunately, they are referenced, but the CMakeLists.txt of the Lite has never populated any of the code from the main branch. No wonder we see undefined reference.
The tricky part is that I am tempted to use populate_tf_source_vars to bring some code to the Lite. But, that opens a nasty can of worms because the references will escalate to reference a lot of other main branch stuff. That defeats the very motivation of the "Lite" version of Tensorflow, doesn't it?

I can close it. The issue was filed with Tensorflow. I am not sure how and when they are going to fix it.


Kendo unit tests improved

Coverage increased (+1.2%) to 90.53% when pulling a8d820c14808eaadf9ed3206d3b5dc28fc9952f2 on development into 64a1cdd6adc6a65b74d694691dc7a1567cd3b7b1 on master.


Mousewheel test example has a bug

Hi..
First off.. thx for this great plugin.
I tried to use something similar to your mousewheel example ..   actually it's about the ui-slider.
I noticed, that on long lists a dragscroll down will scroll down a lot and really fast.. but back up is almost not possible or very stuttering.
I had this problem on a long list of items but it didn't occur on smaller lists (well i guess I didn't notice)
I checked your example and made the picture and the holder 6000px high..
It has the same effect... scrolling down is VERY fast and scrolling up is not possible..  (dragscrolling)
This also causes issues on mobile devices (tested iPhone4 iOS5)
If you want I can send you a link to a live demo, so you can see what I'm talking about, or just try changing the image height in your example.
Well.. Of course, if I find the problem myself, I will post it here...
The problem seems to be in jquery.kineticScrollbar.js
happens when this is called
line 33

this.scrollLeft = settings.scrollLeft = options.left;
this.scrollTop  = settings.scrollTop  = options.top;

hey @pixelass,  i wouldn't be surprised if there are bugs in the scroll bar plugin :oS it's very much in an alpha state at the moment. i'll try and take a look at your findings. If you can't wait feel free to fork the project and see if there are any fixes you can add and send me a pull request.

Thx for the reply.
The issue occurs in the kineticScrollbar.js. Since I need a similar, but still different solution, I started writing my own scrollbar plugin. I am using this to copy the way the sidebar with the letters works in the "contacts app" or "Music App" on iOS, so I actually need increments that snap to the next letter instead of jumping by predefined steps. A little math and an array does the trick and makes it fully dynamic for further use, so once I got it to work better, you could probably look at that approach.


Sync with latest grakn-core changes

Why is this PR needed?
So we are able to bazel build this repo
What does the PR do?

Upgrades commit hash of @graknlabs_grakn
Adds missing dependencies (@graknlabs_graql)

Does it break backwards compatibility?
—
List of future improvements not on this PR
—

The tests seem to fail though, @vmax. I'll merge this first and we can investigate afterwards.


Nxt Compass sensor shows bad values

bin_data_format shows signed 8bit number and
expected values vs returned by value() function
0=0, 90=around 56, 180= around 124, 270= around -104
Values are from 0-127 then jump to -128 and from there to -77 and then back to 0

General bugs should be posted in https://github.com/ev3dev/ev3dev/issues this has nothing to do with python). Please also see http://www.ev3dev.org/support/. Also, a link to the sensor documentation would be helpful.

Thanks probably found where is problem


Update fold{l,r} examples to run on TensorFlow 1.9+

See #21340.

Nagging Assignee @protoget: It has been 14 days with no activity and this issue has an assignee. Please update the label and/or status accordingly.

61fef23485d9b1c0eaa8e46bdbbe82b6f2d8f83a changed this.


Pin to cython<0.29; avoid repeated np.matrix PendingDeprecationWarnings.

Not optimal, but better than a broken build and thousands of repeated
warnings.
Closes #49.

In favor of #51, I would like to close this. Is this okay for you?

Sure.


uv does not support keyring after 0.1.32

Hi astral team, I love this repository and save me a lot of time in github actions.
I have a problem trying to install a private repository with gcp using uv with docker
This is the dockerfile that contain the error:

Dockerfile with error
FROM python:3.10.14-bullseye

RUN pip install -U pip "uv==0.1.33" -q

ARG GOOGLE_APPLICATION_CREDENTIALS_PATH="./gcp.json"

COPY $GOOGLE_APPLICATION_CREDENTIALS_PATH /tmp/credentials.json
ENV GOOGLE_APPLICATION_CREDENTIALS /tmp/credentials.json

RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package

it throw the follow error

Detailed error
 => ERROR [4/4] RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q &  2.9s
------
 > [4/4] RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package:
2.838 error: HTTP status client error (401 Unauthorized) for url (https://location-python.pkg.dev/project-id/package-name/simple/private-package/)
------
Dockerfile:11
--------------------
   9 |
  10 |     # RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package
  11 | >>> RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package
  12 |
--------------------
ERROR: failed to solve: process "/bin/sh -c uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-repository" did not complete successfully: exit code: 2

and this error appear for the next versions like

0.1.33
0.1.34
0.1.35
0.1.36
0.1.37
0.1.38

But if we use the uv version 0.1.32 it works

Dockerfile worked
FROM python:3.10.14-bullseye

RUN pip install -U pip "uv==0.1.32" -q

ARG GOOGLE_APPLICATION_CREDENTIALS_PATH="./gcp.json"

COPY $GOOGLE_APPLICATION_CREDENTIALS_PATH /tmp/credentials.json
ENV GOOGLE_APPLICATION_CREDENTIALS /tmp/credentials.json

RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package

so, something it change and break the feature
Thanks you!

Can you include the uv logs from running with --verbose?

Sure!

Detailed error with -v

FROM python:3.10.14-bullseye

RUN pip install -U pip "uv==0.1.33" -q

ARG GOOGLE_APPLICATION_CREDENTIALS_PATH="./gcp.json"

COPY $GOOGLE_APPLICATION_CREDENTIALS_PATH /tmp/credentials.json
ENV GOOGLE_APPLICATION_CREDENTIALS /tmp/credentials.json

RUN uv pip install --system keyring keyrings.google-artifactregistry-auth -q && uv pip install --system --keyring-provider subprocess --extra-index-url https://location-python.pkg.dev/project-id/package-name/simple private-package -v

1.163 DEBUG Starting interpreter discovery for default Python
1.163 DEBUG Cached interpreter info for Python 3.10.14, skipping probing: usr/local/bin/python3
1.163 DEBUG Using Python 3.10.14 environment at usr/local/bin/python3
1.163 DEBUG Trying to lock if free: tmp/uv-39ee7c309557c5e9.lock
1.164 DEBUG Using registry request timeout of 300s
1.164 DEBUG Solving with target Python version 3.10.14
1.164 DEBUG Adding direct dependency: private-package*
1.164 TRACE Fetching metadata for private-package from https://location-python.pkg.dev/project-id/package-name/simple/private-package/
1.165 TRACE No cache entry exists for /root/.cache/uv/simple-v7/65a3230ca73dc537/private-package.rkyv
1.165 DEBUG No cache entry for: https://location-python.pkg.dev/project-id/package-name/simple/prisma-workflows/
1.165 TRACE Sending fresh GET request for https://location-python.pkg.dev/project-id/package-name/simple/private-package/
1.165 TRACE Handling request for https://location-python.pkg.dev/project-id/package-name/simple/private-package/
1.165 TRACE No credentials on request, checking cache...
1.165 TRACE No credentials in cache.
1.165 TRACE Skipping keyring lookup for https://location-python.pkg.dev/project-id/package-name/simple/private-package/ with no username
1.165 DEBUG No credentials found for https://location-python.pkg.dev/project-id/package-name/simple/private-package/
2.091 error: HTTP status client error (401 Unauthorized) for url (https://location-python.pkg.dev/project-id/package-name/simple/private-package/)

Hi! You need to provide a username for keyring.
See the 0.1.33 breaking changes

wonderful! it worked, thanks you so much!

 Sorry for the breaking change — it seemed incorrect for us hard-code the username for a specific service.

For the following people who come asking the same question, this was the solution:
uv pip install --system --keyring-provider subprocess --extra-index-url<EMAIL_ADDRESS>private-package


Support for Quest Controllers w/ Headset as Base Station?

Would it be possible to/does ALVR support using Quest controllers with Vision Pro by placing the Quest headset on a nearby table/vantage point?

ALVR supports "tracking reference only" mode for the headset, which means you can connect controllers and use another headset for video. The problem is we don't support running multiple ALVR instances at the same time. To properly support this we need to connect multiple headsets to the same ALVR streamer and select only one to stream video to.

Does it support any controllers? I've gotten as far as the lobby.
I have a DualSense that I've tried pairing to both the PC and the Vision Pro, and in neither case does Steam VR register the button inputs. It does, however, recognize that a standard controller is present (it changes the graphic to an Xbox controller) but none of the button inputs seem to register. Do I need to do anything to enable this?

@akre54 not paired with the headset itself.
You can use external controllers, however.
Predominant method you're likely to run into is:

2 SteamVR basestations
2 Basestation tracked controllers (Vive wands or Index controllers---I do not recommend the wands)
2 Dongles for each of the controllers
A piece of software called OVR Space Calibrator

The above setup is essentially its own 6DOF tracked space; OVR Space Calibrator then brings the AVP's playspace and the lighthouse tracked playspace into alignment with each other.

Okay, good to know it works with the Index setup - let me see if I can borrow a friend's. Would be great if it could work with the quest's inside-out setup. Thanks!

I wonder if anything could be done with the controller data forwarding server 🤷 https://x.com/studio_vron/status/1759358156927365483?s=61

This guy has managed to make it work with ODTKRA, Oculus Link, OpenVR-SpaceCalibrator, and some tape over the Pro's proximity sensor.
This does require a spare Quest headset just sitting around to act as man-in-the middle, and at a grand total of an apple vision pro, a mac with apple silicon for xcode, a pc, quest controllers, a quest headset, and about 6 separate pieces of software, I may've just hit my limit for the amount of expensive tech Rube Goldberg I want to dedicate to this project unfortunately. Hopefully someone comes out with inside-out controllers that can be paired to a PC with no headset in between

Yeah that is incredibly fair. Thanks for the share though I may actually try that since I have a Quest Pro.

Awesome. Looking forward to seeing the results!

Well I got it running. It actually wasn't that hard with the tutorial video you shared from Mysticle. It feels really good while it works, but there are frequent disconnects. Super interesting as a proof of concept if you ask me. I'll try it a few more times and see if I can figure out the interference and disconnects. https://x.com/Pwhizzard/status/1764804389284581839?s=20

OK, this may actually be more viable than I thought. After updating quest firmware and downloading Meta Quest developer hub, starting everything up after initial set up is much more simple and can all be done from the computer. I also just played for an hour without it disconnecting. If anyone is interested in chatting more about this, definitely let me know.

Sure thing, @joshuadmatthews. I’ll note that Quest 3 included Touch Plus controllers will require line of sight from the Quest but it should work. Quest Touch Pro controllers do their own SLAM/track themselves so don't need line of site from a Quest headset.
I originally followed this video https://www.youtube.com/watch?v=1zkp2fXzP4k which is mostly still up-to-date.
I will label the steps and some insight below:
Initial setup:

Oculus Touch Link - relays controller data: https://github.com/mm0zct/Oculus_Touch_Steam_Link/releases
ODTKRA - keeps the oculus runtime active so the headset doesn’t go to sleep and lowers the quality of Link so it's not taking as many PC resources to run: https://github.com/DeltaNeverUsed/ODTKRA/releases/tag/0.2.2

Move unzipped ODTKRA folder to folder location of SteamVR > Drivers
Add driver in command prompt (example below but could look different for you)

cd C:\Program Files (x86)\Steam\steamapps\common\SteamVR\bin\win64
vrpathreg adddriver “C:\Program Files (x86)\Steam\steamapps\common\SteamVR\drivers\OculusTouchLink”

OpenVR-SpaceCalibrator - syncs your Oculus playspace with the SteamVR playspace: https://github.com/ArcticFox8515/OpenVR-SpaceCalibrator?tab=readme-ov-file
*Optional but I recommend downloading Quest developer hub. In it you can disable the proximity sensor and initiate Link/Air Link from your PC without having to do anything on the Quest itself every time. https://developer.oculus.com/downloads/package/oculus-developer-hub-win/

Running:

Disable proximity sensor and initiate Link or AirLink - either on Quest headset or through Quest developer hub
Run ODTKRA - give it some time to run and don’t touch anything until it’s done. It needs to open oculus debug console and make changes without app focus being lost.
Oculus Touch Link folder from SteamVR > Drivers

Run ovr_dummy.exe
Run ovr_test.exe
Note: A window labelled “title” should open - make sure “Enable External Tracking” is checked.

Run ALVR server on PC & launch SteamVR from it
Run ALVR client from Vision
Open OpenVR-SpaceCalibrator

Reference space: use either your Vision HMD or a hand being tracking
Target space: select oculus link and one of the controllers.
Start calibration: I select fast then move in a figure 8 very slowly one time and that seems to work for a while.

Random bug - For Touch Pro controllers I found a couple times where I initially needed to let the Quest headset physically “see” the controllers themselves otherwise I only got 3DoF tracking data. I wouldn’t have to do this again but just at the beginning of the session.
Let me know if there are any questions you have. Also, free free to let me know if you want to chat in some other form.

Is it possible to connect Quest Touch Pro controllers without the glasses themselves, buy only the controllers?

I haven't found a way to connect the controllers directly to PC (granted I've only poked around that a little). You can use a Quest 2 and pair that with the Touch Pro controllers though. And you can find a relatively cheap, used Q2.

@pwhizzard I am having trouble towards the end, if I run ALVR on my Vision Pro and then take it off to run the OpenVr Space Calibrator, the VP goes to sleep as soon as I take it off and disconnects from ALVR. How do you work around that?

Also not sure how to disable proximity sensor, I can't get my quest to peer with the develper hub unfortunately.

I never had to pair it with the developer hub but I have previously paired it with the Oculus pc app. I wonder if doing that first would suffice. https://www.meta.com/help/quest/articles/headsets-and-accessories/oculus-rift-s/install-app-for-link/. Either way it'll have to be paired there anyway because you'll need to kick off Link/AirLink.
And we're chatting on Discord but for posterity re- Vision pro disconnecting when taking off to run OpenVR SC:
"If you can manage to point the unsynced controllers, then you can actually bring it up from in the headset SteamVR menu
Otherwise you peak without removing Vision or walk over to your PC if it's far enough from the 1.5m center area on Vision and it will fade in your monitor view so you can see it from headset.

I’m not sure if this is the right thread so let me know. I have used ALVR on AVP, but my computer right now is too slow to support decent resolution with Microsoft Flight Simulator or DCS. (NVIDIA 3070ti in a laptop).
So what I’m doing for now is streaming fairly high res 2D using Moonlight/Sunshine.
However, I need head tracking data for MSFS. I am using Aruco with OpenTrack and it works great, but requires a webcam and also a cardboard on my head.
What would be great for guys like me would be a windowed (not volume) AVP ALVR app that just passes head tracking data to steam VR or even OpenTrak.
I’m guessing this wouldn’t be too hard to implement, but the use case may be niche.

@kensuddaby not possible, visionOS only gives head tracking data to immersive applications, so Moonlight would have to implement an immersive space itself (which would shut out all other windows except its own)

Good to know. Thanks! ALVR can be used in 2-D and it does do head tracking. I’m wondering if there will be away to adjust the position and size of the screen in 2-D ALVR.

@shinyquagsire23 I'm running ALVR on the computer and steam VR. With MSFS, you launch in 2D and then only initiate 3d within the MSFS app. In ALVR, I'm presented a room with a screen with the 2D version of MSFS (haven't triggered VR yet). At that point Steam VR is passing through the head tracking to MSFS and I can play it in 2D. The screen is about 30degrees up from eye level so it's not practical.

I haven't found a way to connect the controllers directly to PC (granted I've only poked around that a little). You can use a Quest 2 and pair that with the Touch Pro controllers though. And you can find a relatively cheap, used Q2.

can you please try to play Eleven tennis game if you have it. and share your experience if its playable.


Fixed #30419 -- Improvements for docs related to Meta.indexes

Ticket - https://code.djangoproject.com/ticket/30419

All checks pass now, please let me know if there is anything else that needs to be done.

Not sure why the CI started running the tests again as soon as I sent my last comment. 😕

@carltongibson Can you please take a look at this?

It’s on the list. We’ll get to it.
Thank you for your input. It is appreciated!

@akki Thanks for this patch :rocket:


Should be able to update installed neo4j version with rake tasks

Maybe just running rake neo4j:install[version] again would do this.  Should leave data and conf intact, I think.  Right now it puts the folder neo4j-community-2.1.5 inside the db/neo4j/development directory for me.  Spent a little time trying to fix but was having trouble getting pry to get me in there, wanted to create an issue so that I didn't forget.

Moved from https://github.com/neo4jrb/neo4j-core/issues/120


Disabling AB test designer with Carthage

I'd like to use Mixpanel with Carthage, but disable the ABTestDesigner. At present, you can only disable it through the use of the DISABLE_MIXPANEL_AB_DESIGNER build setting, and Carthage doesn't support adding build settings.
Would it be possible to add a method to Mixpanel that disables the AB test designer?

Hi @mdiep - You can't add preprocessor macros on Carthage but we are planning to let devs customize the SDK programmatically without using build settings so people that use Carthage can benefit from all the SDK can do. Stay tuned and we will update this ticket as soon as we support this feature. In the meanwhile the only thing I can suggest is to integrate Mixpanel using Cocoapods. Thanks for your feedback!

we are planning to let devs customize the SDK programmatically without using build settings so people that use Carthage can benefit from all the SDK can do.

That's great news! Thank you!

Resolved in #504 which is on master.
This change will be packaged with the next official release.

This is now released with v3.0.0.


Copy text in training module history chats

AS A Trainer
I WANT to copy text in Bürokratt training module, that has written in Chatbot
SO THAT I can easily paste it where needed
Acceptance Criteria

[ ] In Bürokratt Training module Trainer has the option to copy text that has been written in Chatbot.

Additional
Same logic has been implemented in Chat module https://github.com/buerokratt/Buerokratt-Chatbot/issues/1004

Should work now:
Related PR.

Works as intended.


Bump snapshot version

Yes, we're bumping the version for each release, even if there are not changes. It's not really necessary, but it does make it easier to keep track of the CDAP -> plugin branch mapping (e.g: 6.3 -> 1.6 => 6.4 1.7).


Reset CSS

Hi there !
I am a newbie in Semantic UI, which I find very nice.
I found these properties active in my chrome web browser :
h1{
-webkit-margin-before: 0.67em;
-webkit-margin-after: 0.67em;
-webkit-margin-start: 0px;
-webkit-margin-end: 0px;
}
inactive with this code :
````Testactive with this code :     TestClick me```
Am I missing something? Should I import a css reset or something ?

There's a reset included with SUI
http://semantic-ui.com/globals/reset.html

Okay, thanks. Even in the reset 'test' page, the h1 margin is not set to 0. Should I make my fix only for my website ? Or is this a bug ?

It uses normalize.css
If you are including site component in your build this will add default h1-h6 stylings


pull request for e2e test at 11/22/2016 04:26:28

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

optest/docs/updated_at.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Handle possibility that EMS doesn't support targeted refresh in EmsEvent#manager_refresh_targets

At the moment the EmsEvent#manager_refresh_targets assumes that the EMS supports targeted refresh. However, if it doesn't then an error like uninitialized constant ManageIQ::Providers::Openstack::InfraManager::EventTargetParser will arise when it tries to dynamically generate an EventTargetParser subclass that doesn't exist.
Currently this is happening via automate hooks on an openstack provider, but could potentially happen elsewhere.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1867795

Ivanchuk backport details:
$ git log -1
commit 44720fbb50e8b04b406786de6d25f979bec9f5a9
Author: Adam Grare<EMAIL_ADDRESS>Date:   Tue Sep 1 15:28:21 2020 -0400

    Merge pull request #20509 from djberg96/ems_event_support_non_targeted

    Handle possibility that EMS doesn't support targeted refresh in EmsEvent#manager_refresh_targets

    (cherry picked from commit 0157a3c11f624f6295cced2879cc99cba1c529b9)

    https://bugzilla.redhat.com/show_bug.cgi?id=1867795

@simaishi I think it's ok. @agrare What say you?

:+1: that's fine, ExtManagementSystem#allow_targeted_refresh? exists on ivanchuk

Jansa backport details:
$ git log -1
commit 5b2b6ec1c0d03581e35c38d7905ad7c577c46c4e
Author: Adam Grare<EMAIL_ADDRESS>Date:   Tue Sep 1 15:28:21 2020 -0400

    Merge pull request #20509 from djberg96/ems_event_support_non_targeted

    Handle possibility that EMS doesn't support targeted refresh in EmsEvent#manager_refresh_targets

    (cherry picked from commit 0157a3c11f624f6295cced2879cc99cba1c529b9)


Gorm hooks BeforeUpdate and BeforeSave always works after every hook

Your Question
is there any solution to disable BeforeUpdate and AfterUpdate hooks, because this hooks always works after every hook.
The document you expected this should be explained
I can't find any explanation in document

https://gorm.io/docs/session.html#Skip-Hooks


Add sudoshivam to README.md

Description

Fixes #
Type of change

[ ] Updated documentation (updated the readme, templates, or other repo files)

How Has This Been Tested?

[ ] Ran tests with composer test
[ ] Added or updated test cases to test new features

Checklist:

[ ] I have checked to make sure no other pull requests are open for this issue
[ ] The code is properly formatted and is consistent with the existing code style
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings

Screenshots

Looks good 👍

Thank you :)


Fix deprecation warnings on 0.4

Requires https://github.com/JuliaLang/Compat.jl/pull/141

Thanks!

Compat requirement bump to 0.7.1


unexpected behavior (focus on the folderview)

when i select a file in the folder view (left side)... why this do not change the focus to the content of the file??
because my workflow is:

select a file
press Ctrl+f to search something (but nothing happens because the focus is still on the folder view)

everytime i have to click on the content of the file to get the focus... this is a bit disadvantageous

Couldn't this be an easy configuration setting? It is rather annoying.

@lee-dohm shouldn't Ctrl + 0 reset the font size?

@YemSalat On OS X Cmd+0 resets the font size. But yes, it does appear that there is a collision between Ctrl+0 the two functions on Windows/Linux.

I'd be willing to spike on making this a configurable setting if someone can point me in the right direction. It's endlessly frustrating to click on a file once and expect to begin editing, especially since tabs can now be "preview tabs"

Assuming making this a setting would take up too much time, is there any way we could put logic in the init script that listens for the tree view event and puts focus on the editor?  I feel like that may be a fair compromise for now, as long as it's possible to do :)

Did anyone have any luck with this? Is it a configurable setting now?

Single-clicking leaves the focus in the Tree View. Double-clicking shifts focus to the editor.


Fix Windows GitHub CI

Branch fix_windows_no_mecab_ci has a .github action file defined.
Tests are failing, should be investigated.
https://github.com/jzohrab/lute/actions?query=branch%3Afix_windows_no_mecab_ci++
Ultimately, all of this work is just to verify that Windows installs work when MeCab isn't installed ... but this is still decent work to do, to see if there is anything wonky in the code.
Adding "help wanted" just in case someone sees this and wants to take a shot at fixing the busted tests!

Down to 4 acceptance test failures.  All appear to happen only when the Term update form is submitted while reading ... maybe the page isn't reloading, maybe the form isn't submitting, I'm not sure ...
There were 4 failures:

1) App\Tests\acceptance\Reading_Test::test_reading_with_term_case_updates
Hola textitem click word status0 kwordmarked does not contain status1
Failed asserting that false is true.

D:\a\lute\lute\tests\acceptance\Contexts\ReadingContext.php:75
D:\a\lute\lute\tests\acceptance\Reading_Test.php:65

2) App\Tests\acceptance\Reading_Test::test_reading_with_term_multiple_parents_updates
Hola textitem click word status0 kwordmarked does not contain status1
Failed asserting that false is true.

D:\a\lute\lute\tests\acceptance\Contexts\ReadingContext.php:75
D:\a\lute\lute\tests\acceptance\Reading_Test.php:91

3) App\Tests\acceptance\Reading_Test::test_create_multiword_term
adios amigo grouped
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'Hola/. /Adios amigo/.'
+'Hola/. /Adios/ /amigo/.'

D:\a\lute\lute\tests\acceptance\Contexts\ReadingContext.php:57
D:\a\lute\lute\tests\acceptance\Reading_Test.php:119

4) App\Tests\acceptance\Reading_Test::test_create_term_with_period
cap. textitem click word status0 kwordmarked does not contain status1
Failed asserting that false is true.

D:\a\lute\lute\tests\acceptance\Contexts\ReadingContext.php:75
D:\a\lute\lute\tests\acceptance\Reading_Test.php:1[47](https://github.com/jzohrab/lute/actions/runs/6365497801/job/17282570865#step:15:48)

... aaaaand fixed, by adding a bunch of delays in GitHub/Windows.

Merged into develop branch, will be launched later.  Final run going through now.

All passed.


XMonad.Prompt and xdg base directory specification

Quoting: https://wiki.archlinux.org/index.php/XDG_Base_Directory
Alternatively the environments XMONAD_CONFIG_HOME, XMONAD_DATA_HOME, and XMONAD_CACHE_HOME are also available.
If you use the Prompt module it will automatically create a $HOME/.xmonad directory, in order to store the prompt-history, even if histSize is set to 0, and the compiler will complain.
It is possible that also this module can respect the xdg specification, thus not creating the directory in $HOME?

My bad i make a mistake.
I sometimes clean my home cache and if the module does not find an xmonad directory in XMONAD_CACHE_HOME it will create it in the $HOME directory.
Sorry for the distrub


Benchmarks to include in BLASBenchmarks docs and Octavian docs?

I think size ranges of 1:100 and logspace(100, 10_000, N) are good, where N is the number of sampled sizes.
I can add benchmarks for Skylake-X, Haswell (probably not all the way up to 10_000, perhaps stopping at just 1_000), and Tiger Lake.
Having example results would be nice for BLASBenchmarks, while Octavian should showcase its performance.

That sounds good to me!

That sounds good to me!

Depends on how patient you are.

Depends on how patient you are.

Would be cool if we could use Buildkite to auto generate these benchmark plots.

Yeah. Now that actions is reenabled, would be good to get around to setting it up.
I've been meaning to upload a few plots to Octavian's README.


Use file path to lint template

This PR fixes error The "path" argument must be of type string. Received type undefined introduced by this fix 🙈.
fixes ember-template-lint/ember-template-lint#1161

I think this would resolve #40 w/ the suggested change.


ArrayHandleMap (collection of arrays as keys and mixed values, for detecting cyclic/processed arrays in userland, etc)

(Not actually a reference, but the unique array a reference would point to. )

Teds\is_same_array_handle makes this functionality possible in userland, assuming typical use cases are shallow


Push v0.9.10 to NPM

Hi,
Looks like v0.9.10 never got pushed to NPM. Would you mind doing that?
Thanks!

Will do!

Done!

@wingrunr21

Thanks :+1:

:+1:
Let me know if it works out for you. Any problems? Just open a new issue.


Styling part for the layout section of blog tutorial is a little bit confusing

📚 Subject area/topic
Layouts section in Blog tutorial
📋 Page(s) affected (or suggested, for new content)
https://docs.astro.build/en/tutorial/4-layouts/1/
📋 Description of content that is out-of-date or incorrect
In the documentation, when giving the instructions for the about.astro page refactor, it says:

(Note: using the BaseLayout to render your about.astro page means you will lose the <style> tag added to the <head> of this page. If you want to keep the custom <h1> style, move the style tag to the body of the page component.)

Even if we do this, the h1 styles are not applied to the page because we are not using h1 in about.astro, so the BaseLayouts styles are applied. I guess this is the default behaviour but in this case the documentation might be confusing for learners. So, maybe there should be a reminder about this is the default behaviour and either we use the element itself in the page or we do not see the styles are applied.
🖥 Reproduction in StackBlitz (if reporting incorrect content or code samples)
https://stackblitz.com/github/withastro/blog-tutorial-demo/tree/complete

Hey Devserkan 👋 there is a bullet point stating what you asked for. If this is not what you asked for, feel free to share your thoughts here 😉

Hey there.
This is the thing. Even if you move the styles it does not work if the styled element does not exist in the page. Let me clarify the scenario.
You have a section which includes h1 tag in your page. Now, you refactored this section to a layout. The h1 is in this layout now. Even if you have styles for h1 it does not apply because h1 does not exist in the page.
In the documentation, this is not clear and even if we do what is told there, it does not work. You can check the official demo app i provided above. The style is there but it is now working.

Yes, I believe we had this conversation in Discord! Thank you for filing this issue to help me remember and track, and I know exactly what you're referring to!
I'm thinking the place to update would be here: https://docs.astro.build/en/tutorial/4-layouts/1/#try-it-yourself---use-your-layout-everywhere
It currently says:

What about a change something like:
Refactor your other pages (blog.astro and about.astro) so that they use your new <BaseLayout> component to render the common page elements.

Don't forget to...
(that whole list)

:::note[Keeping About page styles]
Using the `<BaseLayout>` to render your `about.astro` page means you will lose the `<style>` tag added to the `<head>` of this page. To continue to style items only at the page level using Astro's scoped styling, move the `<style>`  tag to the body of the page component. This allows you to style **elements created in this page component** (e.g. your list of skills).  Since your <h1> is now created by your layout component, you can add the `is:global` attribute to your style tag to affect every element on this page, including those created by other components: `<style is:global define:vars={{ skillColor, fontWeight, textCase }}>`
:::

This keeps the instructions to refactor and the list of things to remember cleaner, and easier to read. Then, calls out specifically what's going on in the About page without cluttering the stuff above?

This looks perfect. At least now we know that if we don’t add is:global, it won’t take effect. If we want it to apply, this seems to be one way (I assume) to make it work.
Thanks.

Great! Would you like to make the PR yourself @devserkan ? If not, no worries! I'll add the help wanted tag here and anyone is welcome to pick this up and contribute!

I can pick this up and submit a PR later today if @devserkan doesn't take it!

Sorry guys, I was on a vacation and a bit busy! Thanks for handling this. You are awesome.


Feature/bulk dataload results bug fix

This PR contains the fix to how Bulk API batch response is parsed. Work Item for this is : W-8880039
If a Bulk API Job has multiple batches, it only parses the failed and processed count from last batch:

@sfdcale Do you plan to submit this again later?

@prescod  Created another one and it is #2733


System could not dynamically load the shared library

I have setup the MQ container on my windows 10 machine using Linux containers. I can access the web interface using this uri "https://localhost:9443/ibmmq/console/" and everything seems to work. However I cannot connect to the MQ instance I get an error saying host could not be reached. I can telnet to the port. Looking at the logs however I get this error message.
2020-03-25T20:29:02.613Z AMQ6255E: The system could not dynamically load the shared library '/opt/mqm/lib64/libedit.so'.
2020-03-25T20:29:02.614Z AMQ6175E: The system could not dynamically load the shared library '/opt/mqm/lib64/libedit.so'. The system returned error message 'libncurses.so.5: cannot open shared object file: No such file or directory'.
if i run "ldd libedit.so" using bash I get:
libncurses.so.5 => not found
libtinfo.so.5 => not found

The libedit error is a known bug in MQ, and is nothing to worry about.
How are you trying to connect?  What configuration are you using for MQ?  It's worth noting that MQ is not typically configured out of the box — it will be listening on TCP, but won't allow any connections — you need to configure it yourself.  The exception is our MQ Advanced for Developers image, which is pre-configured.

Hi Arthur
I have a .net client app that currently connects to our production IBM MQ's I used that initially but could not connect. I did change the config.
I then tried this image and got the same issue :
docker run --rm --name mydemoibmmqclient --network mq-dev-network -ti mq-demo
the output is shown below:

Assuming you're using the pre-configured developer image for the server, then the issue I can see in the above example is that the client's connecting to localhost.  You'd need to make sure you specify the IP address or host name of the queue manager, on the mq-dev-network network.

Yes. You are correct. By specifying the actual IP of my machine it works fine.
Much appreciated for your time and help.


Configure applications from configuration file

Fix the existing functionality of configuring simtools using a configuration file, e.g.,
python simtools/applications/print_array_elements.py --config config.yml

With configurations listed in this example as
INPUT: ./tests/resources/telescope_positions-North-utm.ecsv
EXPORT: corsika
USE_CORSIKA_TELESCOPE_HEIGHT: True
OUTPUT_PATH: simtools-tests
SELECT_ASSETS:
  - LSTN
  - MSTN

Important to note that our configuration class is powerful, but with limits:

configuration is allowed through command line, configuration file, environmental variables, and direct pass of a dictionary from the application
difficult to determine priorities (as configuration parameters also have default values)

Also introduced a new parameter for Configurator::initialize(..., require_command_line=True/False, ...)` which means that this tools requires at least one command line parameter. If none is given, help is printed.

I've seen the codecov issue, but I think adding a test wouldn't add a lot: this is in the initialize, which calls a couple of sub functions. There is no logic at this steps and all of the functions called are tested.


[Bug]: N+1 Queries

What happened?
When editing a nested resource. it's not eager loading the parent.
How to reproduce the bug

I have https://github.com/beyondcode/laravel-query-detector installed and i have this message

Package Version
1.2.0
PHP Version
8.2.0
Laravel Version
10
Which operating systems does with happen with?
Windows
Notes
No response

I cloned your demo repository. demo
and installed the same package.
Same result! :/


Pool::acquire times out

I'm using a connection pool with a larger number of tokio tasks, see the example below. The tasks run a small query, do some work without holding on to a connection, then run another query. In the example, the second call to acquire quickly starts failing with PoolTimeout or it takes too long, roughly connect_timeout seconds.
Any ideas would be appreciated.
use sqlx::mysql::*;
async fn run_queries(i: u32, pool: &sqlx::Pool<MySql>) {
    {
        let mut conn = pool.acquire().await.unwrap();

        let _ = sqlx::query("SELECT 1").fetch_one(&mut conn).await.unwrap();

        // conn gets dropped here and should be returned to the pool
    }

    // (do some other work here without holding on to a connection)

    {
        let start = std::time::Instant::now();

        // this often fails (PoolTimedOut) or takes connect_timeout seconds
        let mut _conn = pool.acquire().await.unwrap();

        println!("{} pool.acquire() took {:?}", i, std::time::Instant::now() - start);

        // (run another query...)

    }
}

#[tokio::main]
async fn main() {
    let pool = MySqlPoolOptions::new()
        .max_connections(1) // also fails with higher counts, e.g. 5
        .connect(&std::env::var("DATABASE_URL").unwrap())
        .await
        .unwrap();

    let mut handles = vec![];
    for i in 0..100 {
        let pool = pool.clone();

        handles.push(tokio::spawn(async move {
            run_queries(i, &pool).await;
        }));
    }

    futures::future::join_all(handles).await;
}

[dependencies]
sqlx = { version = "0.4.0-beta.1", default-features = false, features = [ "runtime-tokio", "mysql" ] }
tokio = "0.2.22"
futures = "0.3.5"

Output snippets:
thread 'tokio-runtime-worker' panicked at 'called `Result::unwrap()` on an `Err` value: PoolTimedOut'
pool.acquire() took 30.001958452s

MySQL Engine version 8.0.17. Tested with stable-x86_64-unknown-linux-gnu and stable-x86_64-pc-windows-msvc.

I've ran into the same issue. I am not seeing connections recycled when they are dropped, which is causing issues when multiple queries happen on one web request/future.
I have worked around it by using deadpool for connection pooling, which appears to be more reliable in my limited tests.
Here's my (very simple) implementation. (also note: I needed to use DerefMut to coax the compiler, as I am not sure what combination of * and & is needed here.)
use std::ops::DerefMut;
use sqlx::{Connect, Connection, Error as SqlxError, Executor, PgConnection};

use async_trait::async_trait;
use deadpool::managed::{Manager, RecycleResult};
use log::*;
type Pool = deadpool::managed::Pool<PgConnection, SqlxError>;

struct DbPool {
    url: String,
}

impl DbPool {
    fn new(url: String, size: usize) -> Pool {
        Pool::new(DbPool { url }, size)
    }
}

#[async_trait]
impl Manager<PgConnection, SqlxError> for DbPool {
    async fn create(&self) -> Result<PgConnection, SqlxError> {
        PgConnection::connect(&self.url).await
    }
    async fn recycle(&self, obj: &mut PgConnection) -> RecycleResult<SqlxError> {
        Ok(obj.ping().await?)
    }
}

async fn main() {
    ...
    let pool = DbPool::new(url, 16);
    ...
    sqlx::query_as("select * from users where email = $1")
      .bind(&email)
      .fetch_one(pool.get().await?.deref_mut())
      .await?;
     ...
}

Thanks for sharing your workaround! deadpool looks great.

Currently the pool doesn't behave well if the acquire() future is cancelled; it fails to remove the waiter from the list, which holds up the queue. This could have a knock-on effect with other acquire() calls timing out due to the same problem. Each time a connection is returned to the pool it only attempts to wake the task at the head of the queue.
@skuzins in your example, could you please try debug-printing the pool after the second .acquire() call times out, instead of panicking:
if let Err(e) = pool.acquire().await {
    println!("acquire error: {}, pool state: {:?}", e, pool);
}

I'm not sure any future would/should normally be cancelled in this example - I believe they should all just run to completion.
Here's the debug message, please let me know if you need more information.
acquire error: pool timed out while waiting for an open connection, pool state:
Pool { size: 1, num_idle: 0, is_closed: false, options: PoolOptions {
max_connections: 1, min_connections: 0, connect_timeout: 30s,
max_lifetime: Some(1800s), idle_timeout: Some(600s), test_before_acquire: true } }

The timeout itself cancels the internal future that's actually waiting in the queue.
However, I'd expect to see num_idle: 1 if that was the case. How about with .max_connections(5)?

I am not seeing cancellations in my code and the example posted doesn't have them either.   It feels more like an issue with waking up after the pool has stopped using a connection.

@abonander The thing is, there shouldn't be any timeouts. The task acquires the connection, performs a short query, drops the connection and does the same thing once more. The whole program should finish within milliseconds without any timeouts.
Here's the output with .max_connections(5):
acquire error: pool timed out while waiting for an open connection, pool state: Pool
{ size: 5, num_idle: 0, is_closed: false, options: PoolOptions {
max_connections: 5, min_connections: 0, connect_timeout: 30s,
max_lifetime: Some(1800s), idle_timeout: Some(600s), test_before_acquire: true } }

FWIW, I think I'm hitting this (or something like it) when using try_acquire with Postgres.
I have a loop which waits 5 seconds and calls try_acquire to see if any connections are available. The loop also does some work with the pool in a spawned task.
Once the 5 seconds elapse the pool shows all connections idle, but try_acquire returns None.

I'm not certain this bug has been fixed, as I've been required to use the deadpool workaround, which has entirely solved the problems we've been having. PgPool seems to, in seemingly simple cases, break even under a very basic load.

Yeah I think adding this periodic wake was a mistake: https://github.com/launchbadge/sqlx/blob/master/sqlx-core/src/pool/inner.rs#L180
After a single wait period it effectively makes the pool unfair again as it becomes dependent on the timing of when tasks wake and poll the future.
Something I realized in 0.6 that I want to backport is that if a task is "woken" (as in its woken flag is set) but it doesn't try to acquire, on drop of the Waiter it needs to wake the next task in the list so that it can attempt to acquire. I think without that it leads to a knock-on effect where there's a connection in the idle queue and tasks waiting but none are getting woken because the first task was woken but didn't poll (either because it timed out or was cancelled).
The idle reaper might also be unintentionally preempting waiting tasks, I need to look into that.

Just spotted another bug, too; since waking a waiting task involves popping it from the SegQueue, if the task wakes and doesn't get a connection, it'll just... go back to sleep without putting itself back in the queue.
Using SegQueue was probably a bad idea anyway since waiting tasks can't retain their spot in line and have to get returned to the back of the queue. In 0.6 we're switching to an intrusive linked list where waiting tasks aren't removed until acquire() completes or is cancelled, so that should avoid this issue.
The idle reaper is also definitely preempting some waiting tasks since it directly pops connections from the idle queue without checking if any tasks are waiting.

I met similiar problem, Using MySQLPool in Actix-web 4.0-beta server.
Codes are mentioned in https://github.com/launchbadge/sqlx/issues/1199#issuecomment-833201789
I make async queries by using the pool directly in each small queries, and request queries in 512 connections concurrently.
Then I met PoolTimedOut error. Shouldn't block in pool connections since every query will ran successfully.

@slhmy if you would, please try #1211 to see if that fixes the issue.

@slhmy if you would, please try #1211 to see if that fixes the issue.

😍fixed, I checked Tokio runtime.

That's awesome to hear, thanks!

#1211 fixed my issue thanks @abonander

I have a minimal repro of the timeout issue in async. This might be a wrongful usage, please tell me if that's the case!
Cargo.toml
[package]
name = "repro_sqlx_timeout"
version = "0.1.0"
edition = "2021"

[dependencies]
sqlx = { version = "0.5", features = [
    "sqlite",
    "any",
    "runtime-tokio-native-tls",
] }

tokio = { version = "1", features = ["full"] }
futures = "0.3"

[dev-dependencies]
tempfile = "3.2.0"

main.rs
fn main() {}

#[cfg(test)]
mod tests {
    use futures::future::join_all;
    use sqlx::{migrate::MigrateDatabase, Executor};
    use std::{thread, time::Duration};

    #[tokio::test]
    async fn sqlx_timeout() {
        let dir = tempfile::tempdir().unwrap();
        let path = dir.path();
        let db_path = path.join("database.db3");
        let database_uri = format!("sqlite://{}", db_path.to_str().unwrap().replace('\\', "/"));

        sqlx::Any::create_database(&database_uri).await.unwrap();

        let connection = sqlx::any::AnyPoolOptions::new()
            .max_connections(1)
            .connect_timeout(Duration::from_millis(300))
            .connect(&database_uri)
            .await
            .unwrap();

        connection
            .execute("CREATE TABLE some_table(some_number BIGINT);")
            .await
            .unwrap();

        let mut vec_future = Vec::new();

        for _ in 1..3 {
            vec_future.push(async {
                connection
                    .execute(sqlx::query("SELECT * FROM some_table"))
                    .await
                    .unwrap(); // thread 'tests::sqlx_timeout' panicked at 'called `Result::unwrap()` on an `Err` value: PoolTimedOut'
                thread::sleep(Duration::from_secs(1));
                connection
                    .execute(sqlx::query("SELECT * FROM some_table"))
                    .await
                    .unwrap();
            });
        }

        let _results = join_all(vec_future).await;
    }
}

@fjoanis-legion That thread::sleep() blocks the Tokio runtime and doesn't let the connection cleanup tasks execute. You want tokio::time::sleep(Duration::from_secs(1)).await; instead.

Locking this issue to prevent further necroing. If anyone is encountering sporadic timeouts on SQLx 0.6.0, please open a new issue.


"Invalid frame header" error in browser

First off, the example echo server example works for me.  But when I try to modify it for my needs, I get an "Invalid frame header" error in browser at the end of the connection.  Instead of a forever loop as in the echo example, I want to make a connection, send data, receive data and end the connection.  I can send and receive data fine, but always get an "Invalid frame header" error in the browser at the end of the connection.  My websocket endpoint is this:
@sock.route('/ws')
def ws(sock):
    data = sock.receive()
    app.logger.info(data)   # "HI" from client received fine
    sock.send(1)
    sock.send(2)
    sock.send(3)
    sock.close(message="BYE") # Error occurs in browser with or without this close()

On the client side:
const socket = new WebSocket('wss://myhost/ws');
socket.addEventListener('message', ev => { console.log(ev); })
socket.onopen = () => socket.send("HI");

I see the "HI" on the server, and I see all the integer data on the client.  But the browser gets an error after the integer data is sent.  It doesn't matter how many sends I do from the server, all the data is received by the client fine.  It's only at the end that I always get an error on the browser.
On Chrome, the error is "Invalid frame header".  On Firefox, the error is "The connection to wss://host/ws was interrupted while the page was loading."
I am using:
Python 3.8.10
gunicorn 20.1.0
gevent 21.12.0
nginx 1.18.0
gunicorn is being proxied by nginx.  (As I'm detailing these versions, I now wonder if it's gunicorn/nginx not closing the connection properly.)
Does anyone know how to prevent the error from occurring?
edit: I took nginx and wss out of the equation and the error still occurs.

I'm not sure if this can be fixed. The issue happens because Flask, which does not recognize WebSocket requests, tries to issue a standard HTTP response when the connection ends.

OK, thanks for looking into it.  Do the reason and message parameters in socket close function do anything at the moment (accessible by client)?

I've made some improvements. Could you please test the main branch of this repo and report back?
Here is a summary:

If you use the eventlet or gunicorn servers, closing the connection works cleanly.
If you use the gevent server, closing the connection works cleanly from the browser's side, but the server shows a stack trace. I will need to spend more time investigating if that can be addressed.
If you use the werkzeug/Flask server, closing the connection remains broken. This requires fixes for Flask and/or Werkzeug, which do not know how to end a WebSocket request properly.


Add loading component

Description
Replace the loading spinner with one global loading component
Changes

Related Issues

#2086

Checklist

[ ] Tests included
[x] Build pass
[x] Documentation
[x] Code format and docstrings
[x] Screenshots/Video attached (needed for UI changes)

@samaradel
Can we define loading component globally as we will/are use/ing it in the entire app?
Also can we rename it to something like TfLoading to avoid conflicts?
to define component as global component in playground simple follow next steps

Add component type here https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/playground/src/global-components.d.ts#L18-L31

Add component itself in global component array here https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/playground/src/config.ts#L18-L31

use component where you need without importing it in every single component

@samaradel
alternate enhance might we can update VCircularProgress defaults in vuetify instance like here https://github.com/threefoldtech/tfgrid-sdk-ts/blob/development/packages/playground/src/plugins/vuetify.ts#L9-L13
so we can set :size="70" :width="7" indeterminate color="primary" as default

@AlaaElattar fixed

@samaradel changes are still not applied in here

<v-progress-circular

resolved

Loading not removed in node_details
https://github.com/threefoldtech/tfgrid-sdk-ts/assets/31689104/e3b426e8-4d7b-41bc-bbe0-e13cd4ea5d71

@MohamedElmdary I didn't remove any spinner, just replaced with one component

It's working in development_314 but stopped work on this branch
I think you forgot to add v-if or something

@MohamedElmdary I didn't remove any spinner, just replaced with one component

It's working in development_314 but stopped work on this branch I think you forgot to add v-if or something

check  here please https://github.com/threefoldtech/tfgrid-sdk-ts/pull/2140/files#r1501783266

@MohamedElmdary I didn't remove any spinner, just replaced with one component

It's working in development_314 but stopped work on this branch I think you forgot to add v-if or something

check here please https://github.com/threefoldtech/tfgrid-sdk-ts/pull/2140/files#r1501783266

fixed

I don't think we should have our own loader component while using vuetify

I don't think we should have our own loader component while using vuetify

done


[v1.12] bpf, maps: Don't set nodeid to 0 when nodeid allocation fails.

/test

/test-backport-1.12

lgtm
It was a bit unobvious, because now allocation doesn't return an error, instead it just returns an empty nodeID which is not used in case of lack of IPSec:
https://github.com/cilium/cilium/blob/bbb03106d55e4c124b2538e0326f8bb38e9000da/pkg/datapath/linux/node.go#L866C3-L866C15

/test-1.18-4.9

/test-runtime


Add complexity of all the algorithms in scipy.sparse.csgraph?

It could be useful to add the complexity of all the algorithms implemented in scipy.sparse.csgraph, in order to know which one can scale to "big" graphs.
For most algorithms, the complexity can be found on Wikipedia (for example), but it will help to add it in the doc (either of each function or of the module page)
For example, this page about scikit-learn.clustering shows which techniques can be used even for pretty large graphs and which cannot.

Any update ?
I would be very useful to have what I suggested on the documentation.

@Naereen thanks for the idea, I think that would be quite nice to have. It needs someone willing to work on this though.

I miss a good reference book on sparse graph algorithms, in fact, that's why I haven't started to do it myself.

The reference book is not the main work - it's easy enough to get from Wikipedia, for example: https://en.wikipedia.org/wiki/Shortest_path_problem#Single-source_shortest_paths. The issue there is that there are multiple implementations of an algorithm possible, for example in the table I linked to there are 3 variants of Dijkstra's algorithm with different time complexity. So the real work is to check the csgraph source code to figure out which version was implemented.

I want to do that, but still couldn't find the time to do it yet, sorry.

I'm going to chime in here because I feel like the entire compressed graph module could use an update both in functionality and in documentation. For example, the Dijkstra docs
indices : array_like or int, optional

    if specified, only compute the paths for the points at the given indices.

is that just taking the sub-matrix? or only starting at indices. It is unclear.
At the very least, n-best should be supported.
Further, targeted searches should also be added (e.g. from i to j)


The dashboard and the exporter use completely different metic-names?

When I use the exporter like this
BootStrap: docker
From: utkuozdemir/nvidia_gpu_exporter:1.1.0

%environment
    export NVIDIA_VISIBLE_DEVICES=all

%post
    # Ensure necessary permissions are set
    chmod +x /usr/bin/nvidia_gpu_exporter

%startscript
    exec /usr/bin/nvidia_gpu_exporter

together with the dashboard:
https://grafana.com/grafana/dashboards/19172-nvidia-gpu-metrics/
I get:

It seems there is a mismatch between the exported metrics and the ones expected by the dashboard.

This looks more like there's an issue with the data source, as none of the metrics are populated. Can you check the service logs?
Also pls try to hit the exporter's metrics endpoint in your browser (http://<host>:9835/metrics) and see two things:

what it returns
what it logs

you can post them here, they can be helpful.

Another possibility is, nvidia-smi binary not working in the container for some reason. If you find out that is the case (let's say from the logs), you can execute a shell in the container, try to run nvidia-smi manually to debug.

Hi @utkuozdemir :
I have the same issue with @sorenwacker . The different thing is I setup the exporter as a service running on GPU server.
When I curled the metrics, did not see full nvdi-smi metrics like the dashboard query.
Mine is only shown:
# HELP nvidia_smi_command_exit_code Exit code of the last scrape command
# TYPE nvidia_smi_command_exit_code gauge
nvidia_smi_command_exit_code 4
# HELP nvidia_smi_failed_scrapes_total Number of failed scrapes
# TYPE nvidia_smi_failed_scrapes_total counter
nvidia_smi_failed_scrapes_total 607325

Checking the service using journalcl command, I found warning and error like below
Nov 29 16:19:08 gpuserver  nvidia_gpu_exporter[50719]: ts=2024-11-29T05:19:08.465Z caller=exporter.go:184 level=error error="error running command: exit statu> exit status 4: command failed. code: 4 | command: nvidia-smi --query-gpu=encoder.stats.av>.....

Please advise. Thank you.

Also, looking at return value 4, it seems it is returned when the user does not have required permissions - see the return value section here on page 7: https://developer.download.nvidia.com/compute/DCGM/docs/nvidia-smi-367.38.pdf
Can you try to run the failed command manually (get it from the log) as the user nvidia-smi is using? You can try to get it working by trying to give that user different permissions.

Many thanks @utkuozdemir. Following your advice, I ran the command manually and found the permission issue. Now I can see all smi* relating metrics.
Thank you.


Condition examples

Every N calls conditions added to folder

Okay so looks like PyTorch test examples are failing the checks.

@Ivy8127 If you merge  #283 into the conditions branch here, and then merge that into yours, the tests should pass.

@Ivy8127 If you merge #283 into the conditions branch here, and then merge that into yours, the tests should pass.

I don't think I have write access to merge.

Not sure to merge given that it's failing on ubuntu & macOS because of  tests/test_examples.py, might this bc this file performs tests on all files in the examples folder, including in the conditions directory?

See https://github.com/Ivy8127/MDF/pull/2

I'd like to note that I've added the conditions readme but haven't added in the images bc I'm still figuring out the graphical export bit

The failure ubuntu is:
/opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages/networkx/algorithms/__init__.py:12: in <module>
    from networkx.algorithms.dag import *
/opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/site-packages/networkx/algorithms/dag.py:2: in <module>
    from fractions import gcd
E   ImportError: cannot import name 'gcd' from 'fractions' (/opt/hostedtoolcache/Python/3.9.13/x64/lib/python3.9/fractions.py)

fractions.gcd was deprecated in python3.5 and removed in python 3.9:
https://github.com/python/cpython/issues/83531
This has been fixed in networkx already, but CI is using an ancient version of networkx: networkx-1.11. This is because CI ends up using psyneulink <IP_ADDRESS>, which pins networkx to 1.11:
https://github.com/PrincetonUniversity/PsyNeuLink/blob/40726d5a38abc88125c1dc5c26ee9d45835798fe/requirements.txt
I'm not currently sure why it resorts to psyneulink <IP_ADDRESS>. Maybe it's worth applying a minimum constrain to the psyneulink version?


5.4

Hi. How about a package for version 5.4?
cheers

Didn't realize 5.4 broke plugin compatibility; will look into it. Thanks

Tranquilo! :-)
Would you have a nice setup for a precise search with pt-br? like correct verbs, singular&plural stuff, etc... heer is my actual setup. cheers
https://gist.github.com/PtkFerraro/018ac787cfd10a977def552a1bdfeebe


add initial backup doc

What does this PR do?
Adds initial documentation around backing up Crossplane resources.
Motivation
This is a fairly often asked questions by AWS customers and in Crossplane slack channels.

@nabuskey May I know know where I can find the doc?

@kkkksu It's available as a blog post here: https://aws.amazon.com/blogs/opensource/disaster-recovery-when-using-crossplane-for-infrastructure-provisioning-on-aws/