Reconciliations blocking unexpectedly

What happened?
Fairly regularly, we're seeing reconciliations back up behind long running terraform apply/destroy operations. We have ~180 workspaces of two types: those which provision GKE clusters (which take 10-15 minutes to apply/destroy), and those which provision DNS records (which take 10-20 seconds to apply/destroy). On average there are twice as many DNS workspaces as GKE workspaces.
I wrote a tool to parse the provider debug logs to illustrate this; the results are in this spreadsheet. The results show each individual reconciliation, ordered by the time at which they started/finished. For confidentiality reasons the workspace names have been replaced with hashes (the first 8 bytes of a sha256 hash).
There are multiple examples of the errant behaviour, but to pick one let's look at row 3469 of the 'Ordered by Start Time' sheet:

We can see that this is a creation of a GKE cluster which took ~10 minutes to complete, finishing at 2024-02-01T11:13:24Z. Note that the did init field on this row is unknown because there is no logging when a Workspace's checksum is blank.
The next 3 reconciliations (of up-to-date workspaces) took less than 4 seconds each as expected
Row 3473 is the first example which appeared to get stuck; it finished ~30 seconds after row 3469
Row 3474 is another create operation. This appeared to start ~2 minutes after the first, but then took ~20 minutes instead of ~10. Reading GCP logs, it looks like that cluster wasn't actually created until 2024-02-01T11:14:20Z, which suggests that reconciliation didn't actually start until the first creation completed
The next 25+ rows are other reconciliations which started after the first 4, and all completed at around 2024-02-01T11:14:06Z (42 seconds after the first reconciliation completed). This appears to be these reconciliations getting stuck behind the first.

What this looks like in the logs is:
# The first creation
2024-02-01T11:04:33.467Z	DEBUG	provider-terraform	Reconciling	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-1"}}

# Other reconciliations start
2024-02-01T11:04:50.169Z	DEBUG	provider-terraform	Reconciling	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-2"}}
2024-02-01T11:04:50.174Z	DEBUG	provider-terraform	Checksums match - skip running terraform init	{"request": "redacted-workspace-2"}
2024-02-01T11:05:09.230Z	DEBUG	provider-terraform	Reconciling	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-3"}}
2024-02-01T11:05:09.234Z	DEBUG	provider-terraform	Checksums match - skip running terraform init	{"request": "redacted-workspace-3"}
# Repeated for many other workspaces

# The first creation finishes and the workspace is immediately requeued
2024-02-01T11:13:24.291Z	DEBUG	provider-terraform	Successfully requested creation of external resource	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-1"}, "uid": "0254a9c2-8a4f-4209-aba0-60937789a667", "version": "947058634", "external-name": "", "external-name": "redacted-workspace-1"}
2024-02-01T11:13:24.305Z	DEBUG	provider-terraform	Reconciling	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-1"}}

# Other reconciliations finish (not in the same order that they started)
2024-02-01T11:13:55.363Z	DEBUG	provider-terraform	External resource is up to date	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-4"}, "uid": "2b811eb9-b837-4e42-8515-5b7a8656eecd", "version": "946986250", "external-name": "redacted-workspace-4", "requeue-after": "2024-02-01T11:44:55.013Z"}
2024-02-01T11:14:04.429Z	DEBUG	provider-terraform	External resource is up to date	{"controller": "managed/workspace.tf.upbound.io", "request": {"name":"redacted-workspace-5"}, "uid": "1a9cfddf-9228-4a31-a0a4-6e69902b9b1d", "version": "946873818", "external-name": "redacted-workspace-5", "requeue-after": "2024-02-01T11:55:20.401Z"}
# Repeated for many other workspaces

This behaviour can be seen in the metrics - each time we have a GKE cluster which needs creating/deleting, the number of active workers starts to grow and the reconcile rate drops to 0. Once it finishes, we see a big spike in the reconcile rate as all the backup up reconciles finish at once.

Hypotheses and debugging

My first instinct was to look at the lock which guards the TF plugin cache, but reading the code the only thing which does a write lock is a call to Init(), which happens rarely (except for after the provider restarts, which invalidates all of the checksums). Every other terraform operation uses RLock, which should allow for multiple concurrent operations
I'm currently working on reproducing this with a smaller number of resources, with a doctored provider image which wraps the terraform binary to log all invocations

What environment did it happen in?

Crossplane Version: 0.14.2
Provider Version: 0.12.0
Kubernetes Version: v1.24.17-gke.2266000
Kubernetes Distribution: GKE

@bobh66 yes we are, but if you look at the graphs above we're not CPU-bound. We currently have --max-reconcile-rate=50, with 4 CPUs requested and a limit of 7.5. I did wonder if this was related (see this comment on a different issue), but if we were being limited to our CPU count I'd expect reconciles to still be making progress instead of getting completely stuck.

I wonder if the large difference between max-reconcile-rate and the available CPU count is a factor?  It would be interesting to see what happens if you set them both the same value (4 in this case).  If you still see the problem then I have to assume the locking is not working as expected.  I'll take a look at the locking code again and see if anything obvious jumps out.

There may be a quirk to the way the locking works that is problematic.  If I'm reading the code correctly:

There can be only one Lock holder at a time
There can be many RLock holders
RLock requests will block if a Lock is held
Lock requests will block until all current RLocks are released AND will block the acquisition of new RLocks until it has acquired the lock AND finished it's work

This can result in a long-running RLock process blocking the acquisition of new RLocks if there is also a Lock pending.
The Lock request will wait for the long-running RLock process to finish before it runs, and meanwhile will block all other RLock requests so we end up single-threaded until the long-running RLock thread is finished, at which time the Lock process runs and then unblocks all of the other RLock requests.
Practically this means that any time a new Workspace is created, regardless of it's content, because it needs to run terraform init it will block the reconciliation of all other Workspaces while it waits for any current RLock processes to finish.
This is all conjecture for the moment but I think it sounds plausible.  Figuring out how to solve it is the next problem.

Oh, yeah, that makes sense, and explains why in the example above a few things did get processed while the first create was running, until the second create entered the metaphorical "queue" and called Lock()
One potential workaround: can we avoid locking entirely if the plugin cache is disabled? Currently the lock is used regardless of whether the plugin cache is enabled

Just thinking out loud - do we need to be RLock'ing for terraform plan?  If it fails due to some race condition we'll just retry it on the next reconciliation anyway.  init and apply definition need to Lock/RLock, and I'm not sure about delete.  But it seems like we could mitigate much of the problem if we didn't lock on plan and just allow the reconciliation to try again if it fails due to some race condition.   @ytsarev @negz ?

One potential workaround: can we avoid locking entirely if the plugin cache is disabled? Currently the lock is used regardless of whether the plugin cache is enabled

That's a possibility too - the only reason for locking is to prevent cache corruption issues, so if the cache is disabled there is no need to lock.

I can make a PR for that.
Not locking for a plan operation would also help, but we'd still potentially underutilise concurrent reconciles. Challenging to fix without risking starvation though :/

Yes - new resource creation during long-running applies/deletes will still cause throttling but at least the other reconciliations could still run assuming no changes in the terraform plan output.

A better overall solution may be to replace the in-memory storage of terraform workspaces with a persistent volume that can be sized as needed.  That would allow sufficient storage space to run with caching disabled without using excessive memory, and it also allows for pod updates to not have to re-run terraform init on all Workspaces since the workspaces are persistent.  I'm pretty sure we could do this today using a DeploymentRuntimeConfig mounted on /tf

It doesn't even need to be mounted on /tf; the XP_TF_DIR env var can make it use a different location

@bobh66 we intentionally avoid the lock on plan https://github.com/upbound/provider-terraform/blob/main/internal/terraform/terraform.go#L503 so your idea sounds safe.

I think 503 is the creation of the Command object but it doesn't get executed until https://github.com/upbound/provider-terraform/blob/main/internal/terraform/terraform.go#L514 which is after the RLock() call.

I think @ytsarev was referring to the -lock=false flag?
Should I remove the locking for plans in #240, or is that best done separately?

I think @ytsarev was referring to the -lock=false flag?

You're right - my mistake.  Apologies @ytsarev

Should I remove the locking for plans in https://github.com/upbound/provider-terraform/pull/240, or is that best done separately?

I think it makes sense to do it in #240

Just to report back on this - I just upgraded our production cluster to 0.14.1 successfully, and discovered a small side effect of not locking for plans. As the provider was starting up and recreating all of the workspaces (hopefully for the last time as we added a persistent volume at the same time), we saw the same plugin cache conflict errors that we saw previously:
Error: Failed to install provider

Error while installing hashicorp/google-beta v5.0.0: open
/tf/plugin-cache/registry.terraform.io/hashicorp/google-beta/5.0.0/linux_amd64/terraform-provider-google-beta_v5.0.0_x5:
text file busy

What I think is happening here is that while we do only have one terraform init running, the fact that terraform plan operations can run at the same time causes a conflict. I didn't reproduce that in my local testing because I wasn't creating Workspaces fast enough to trigger it, and I already had the persistent volume.
The backoff and retries resolved this eventually - on startup it took about 15 minutes to re-initialise our 150 workspaces (with --max-reconcile-rate=50; our maximum CPU usage was 2.5 CPU). However, those errors aren't ideal, so maybe we want to reinstate the locking for terraform plan?

I saw the same behavior but I'm not sure it merits reinstating the lock for plan.  My next step is to create a PVC and mount it to the pod so that the /tf directory is persistent across reboots.  That should eliminate the need to run init on all Workspaces on a restart, and also preserve the cache content.  That seems like a more stable solution in general, especially for installations with large numbers of Workspaces.

Ack, the PV has definitely helped us. Looking at our graphs today with lots of Workspaces being created and destroyed, I'm confident that this is now fixed.
Thank you Bob for figuring out the root cause and helping get the fix reviewed and released!

Ah sorry for all the issues with the locks. The terraform cache is really really picky. I feel like the execution model for the terraform plugin is just poor in general. A PVC would help. I think sharding would also help greatly if you have a lot of terraform workspaces. @toastwaffle can you share your grafana graph json by chance? I would like to analyze our pipelines similarly.

I am facing the issue even on PV enabled .
Warning: Unable to open CLI configuration file
│
│ The CLI configuration file at "./.terraformrc" does not exist.
╵
Error: Failed to install provider
Error while installing hashicorp/aws v5.44.0: open
/tf/plugin-cache/registry.terraform.io/hashicorp/aws/5.44.0/linux_arm64/terraform-provider-aws_v5.44.0_x5:
text file busy
Error: Failed to install provider
Error while installing hashicorp/kubernetes v2.30.0: open
/tf/plugin-cache/registry.terraform.io/hashicorp/kubernetes/2.30.0/linux_arm64/terraform-provider-kubernetes_v2.30.0_x5:
text file busy

@balu-ce I guess you might need to disable completely the TF provider cache (maybe by using some environment variable or by putting a configuration value into the /.terraformrc).
It looks like no one mentioned this, but the fix implies both:

mount a PV to /tf
disable TF shared provider cache

After that it makes perfect sense that you don't get any of those "text file busy".

@project-administrator Mount a PV to /tf is already done. Disabling the plugin cache is fine but it downloads the provider every time. This make the downloading of provider each time which affects the NAT cost. We have around 300+ workspaces

@balu-ce We're still running the TF version 0.12 because of this issue, and I thought the /tf PV mount and disabling the TF cache could mitigate the issue... But I have not considered the NAT costs and TF downloading the providers for each workspace every hour or so (depending on how many workspaces you have and your concurrency settings).
If you have an issue with the latest TF provider version, you might try asking it here: https://github.com/upbound/provider-terraform/issues/234
I'm also interested in getting it to work properly, but from your experience, it sounds like it's not working properly yet even with PV mount to /tf.

Note that the providers won't be re-downloaded for every reconcile - they're only downloaded when the workspace is created, or if the contents change to require new/different providers.
When we refer to 'the plugin cache', that's about sharing providers between workspaces, but without that the providers are still saved locally inside the /tf/ directory (iirc the shared plugin cache works by hard-linking the providers into that directory).

@toastwaffle I can see that inside the running provider-terraform pod it would regularly delete the workspace directory under the "/tf" directory, and then re-create it empty, populate it from the git repository, and after that run "terraform init". Do you mean in this case does not download the providers while it's running "terraform init"?

That's very surprising - I've only ever used inline workspaces which don't get recreated, so it must be something about how the git-backed workspaces are managed. Probably worth creating a separate issue for that, as it seems very inefficient to clone the git repository from scratch for every reconcile

The provider does remove the current workspace and recreate it every time for remote repos:  https://github.com/upbound/provider-terraform/blob/main/internal/controller/workspace/workspace.go#L233
It is using go-getter which has issues when retrieving a git repo into an existing directory (https://github.com/hashicorp/go-getter/issues/114), so the workaround is to remove the directory and re-pull the repo.   Definitely not very efficient.
It might be better to use go-git to clone the remote repo and then use fetch to determine if the repo has been updated, and only run terraform init when fetch returns new commits.

OK, so if I'm getting it right, currently there is no reliable way to use the "--max-reconcile-rate" greater than "1" with the remote repo?
If the plugin cache is enabled, then you get some "text file busy" randomly.
If the plugin cache is disabled, then you get lots of traffic re-downloading TF providers on each reconciliation.

If the plugin cache is disabled, then you get lots of traffic re-downloading TF providers on each reconciliation.

Well it's pretty reliably doing that, but yes - the current implementation of remote repos seems to limit the concurrency to 1.
I wonder if we could use TF_DATA_DIR (https://developer.hashicorp.com/terraform/cli/config/environment-variables#tf_data_dir) to store the .terraform directory somewhere else so that it's not removed when the download directory is removed, and then presumably if the remote content hasn't changed the checksum would be the same and it would not be necessary to run terraform init.
I don't know if this is directly related to #230 but it seems like it might be similar.  If we move the .terraform directory for all Workspaces to a separate path it might solve both problems.


Radial polar bar have bug rendering 0 data

Version
4.5.0
Steps to reproduce
test/bar-polar-basic-radial.html

Data is data: [1, 2, '-', 3, 0, 5, 7]
What is expected?
No sector for 0 data.
What is actually happening?
Small sector for 0 data.

This is caused by barMinHeight and is expected.


Replace nodejs with bun

Not yet work with bun and vite
https://github.com/oven-sh/bun/issues/250
https://github.com/bluwy/bun-vite-ts-test


[Story] Provide a linter for Bicep

It's probably too early to ask, but please provide a linter for Bicep (just like what ARM-TTK does for ARM Template) so it's easier to leverage Bicep in a CI/CD pipeline in the future.
And also, when the linter is available, please make it available in the GitHub Super Linter container image.

If/when we do a linter, we'd like to have certain things show up as you are authoring the bicep file in VS code, but there may also be certain things that would only be checked at build time as well. And either way, this should be able to be run adhoc in a pipeline.

MVP Scope

Refined set of arm-ttk rules (see below) with auto-fixes (VS Code, CLI)
Configurable On/Off and Severity through config file
Baked into Bicep core (for now), rules defined in code

Initial rules:

Parameters must exist
Declared parameters must be used
Secure parameters can't have hardcoded default
Environment URLs can't be hardcoded
Location uses parameter
Declared variables must be used
Dynamic variable should not use concat - encourage interpolation instead of concat
dependsOn best practices - Unnecessary dependsOn

Phase 2

Add new rules based on feedback
Rules language to add extensibility for things like ARMory
Additional VS Code features
Open questions: How will this play with public modules? How will this work for things that need auth (like template specs).

Question: Location uses parameter. Typically I use var location = resourceGroup().location. Is this a poor practice?

Question: Location uses parameter. Typically I use var location = resourceGroup().location. Is this a poor practice?

@jabbera Using the resourceGroup().location function is certainly an improvement from hardcoding the region name. However, you can go a step further by adding a location parameter that defaults to resourceGroup().location. This way users can use the default value, but also have the option to specify a different region if needed. The arm-ttk test case Location uses parameter describes this in more detail.

Is the linter likely to be available in the CLI? e.g. bicep lint main.bicep?

The linter rules will be evaluated on a bicep build or deploy via Az PoSH or Az CLI. @johndowns - are you looking to run the linter rules separate from the core validation warnings/errors?

@alex-frankel Cool. I'm thinking about how to run this in a CI/CD pipeline. The bicep build exit code seems to be 0 even when there are linter failures. Also, that emits an output file, which I don't need. I was thinking it'd be nice to have a bicep lint command that does nothing except lint, and which I can use to quickly check the exit code != 0.
I guess the workaround for now would be to update the bicepconfig.json file to set the level to Error for all rules?

I guess the workaround for now would be to update the bicepconfig.json file to set the level to Error for all rules?

Yep, exactly. I wouldn't necessarily say it's a workaround, since we chose to make linter violations warnings. That being said I can see a bicep lint command still being useful if you don't want to/can't modify that file.

@alex-frankel Should I set this up as a new feature request?

That also goes to my thoughts that people will want to disable lint or config it via command-line args and not a config file.  For instance, in the quick-starts pipeline.  For now I can add a config on disk.


Add changelog to readthedocs

Convert the documentation to the ReST format and include it with the rest of the documentation.

Also improve the format to be more in line with http://keepachangelog.com/en/0.3.0/


Should use Release version instead of Debug version of OpenCover.

There appears to be a debug version of OpenCover into your repository. The debug version has a LOT of diagnostics, which can be viewed via DebugView, and is a lot, lot, lot slower than the release version.
I advise you to use supported release versions from OpenCover Downloads and only use debug versions if you are developing against opencover itself.
If you need silverlight support or have assemblies that use AllowPartiallyTrustedCallersAttribute (or similar) then the Beta 2.0.* might be worth a look as that version doesn't not mess with any permissions in order to instrument the target assemblies.

Shaun:
I've spent considerable time trying this approach (release version of OpenCover) and while perf has seemed to improve somewhat, its still many orders of magnitude slower than when we run our tests under the old NCover 1.5.8 (the last free release of that product from many, many years ago).
I'm still seeing a build+test run that takes perhaps 30 mins under NCover take well over 2+ hours using OpenCover.  The most egregious offender seems to be something in our Spring.Core.Tests.dll...these tests alone have escalated from 2-5 mins for perhaps 30-45 mins.
I'd really like to find a way to make OpenCover work for us b/c being able to profile coverage under .NET 4.0 MSIL is important to us (and the much older ver. of NCover only supports .NET 2.0 MSIL) but I of course need to find a way to get the test runs to at least approximate the perf we see under NCover.
Do you have any other suggestions re: what we might be able to do in this case?

I'd have to investigate to see where the bottleneck - do you have any output from opencover that you can supply for initial analysis?

Not sure what or how you are running the code but I built the code and ran the following line from the debug folder (2.0)
..\..\..\..\build-support\tools\OpenCover\OpenCover.Console.exe -register:user -mergebyhash
-target:"..\..\..\..\build-support\tools\nunit\net-2.0\nunit-console-x86.exe" -targetargs:"/noshadow
Spring.Core.Tests.dll Spring.Web.Tests.dll Spring.Aop.Tests.dll Spring.Data.Tests.dll
Spring.Data.Integration.Tests.dll Spring.Services.Tests.dll Spring.Testing.NUnit.Tests.dll
Spring.Messaging.Nms.Tests.dll Spring.Messaging.Nms.Integration.Tests.dll
Spring.Scheduling.Quartz.Tests.dll Spring.Messaging.Tests.dll Spring.Template.Velocity.Tests.dll"
-filter:"+[Spring*]* -[*Tests]*"

3669 (67 Errors, 1 Failure and 34 ignored) tests and this completed in 665 seconds (compared to 357 no coverage, as measured from TestResult.xml) and about 120 (45 otherwise) seconds was in the Spring.Core.Tests.dll it also resulted in an 18 MB results file.
The summary at the end of the run was
Visited Classes 936 of 1368 (68.4210526315789)
Visited Methods 5928 of 11243 (52.726140709775)
Visited Points 41988 of 77431 (54.2263434541721)
Visited Branches 9355 of 18483 (50.6140778012227)

==== Alternative Results (includes all methods including those without corresponding source) ====
Alternative Visited Classes 949 of 1470 (64.5578231292517)
Alternative Visited Methods 6081 of 11853 (51.3034674765882)

NOTE: I didn't run the NHibernate tests as I encountered loading (binding) errors so I skipped them
Not sure where to go from here - I think I need to know more about your setup

This is interesting...when I run your command-line I am seeing about the same perf you report, which is not at all like what we are seeing under our build scripts.  Some things I notice that you're doing in your command that is different than our build scripts (no idea if any of this is likely to be the cause of our slowdown)...

You are invoking OpenCover (and NUnit) once and passing it the long list of test assemblies to execute all at once.  Our build script is considerably more 'atomic' in that we are executing OpenCover (and this NUnit) once per each assembly containing tests (e.g., we iterate over ea. *Tests.dll and invoke tests + coverage for each ass'y).  This was done b/c its more extensible for the build script, but if there is significant 'startup overhead' for OpenCover each time invoked this might be part of the issue we're seeing.

What's the -mergebyhash command-line opt do?  I'm not familiar with that switch.  Could my lack of using it in our build scripts contribute to the perf. we're seeing?

Our build scripts also make use of ReportGenerator to post-process the xml results into html and that's factored into the overall observed increased run-length of our build script (though I've tested our scripts without any xml-file-to-report post-processing at all and we still experience significant increases in run-duration).  I wonder: since your approach to running all the tests + coverage in a single invocation also (presumably) results in a single xml file (that would only be a single call to ReportGenerator to post-process), is a single ReportGenerator call on a single (large) .xml file significantly faster than mutiple ReportGenerator invocations targeting many (small) .xml files?  This is somewhat orthogonal to the issue we are experiencing with OpenCover (esp. since ReportGenerator is a whole sep, project) but it all plays into our collective experienced longer build-runs with OpenCover (since for now at least ReportGenerator seems the only viable choice for xml report post-processing to produce navigable HTML from OpenCover output files).

I'll take some more time to experiment further with these variables over the weekend and see what I can isolate as the factors contributing to the significant differences we're seeing between your command-line invocation test (and my repo of it on my end) and our build script's invocation of more or less the same tests.
Thanks again for your willingness to stick with us on this -- I think we're getting close to isolating the cause (and thus also probably a viable solution!).

there will be some cost as the profiler has to analyze each assembly to assign numbers to sequence and branch points - if you use the same assemblies per test run then you will incur that cost each time - I am looking at ways to improve that speed probably by doing the work asynchronously with the profiler.

-mergebyhash - is for when an assembly is loaded multiple times from different locations (usually) and allows the merging of results - i.e. nunit uses an agent process you will only need this option when running multiple Test assemblies. Otherwise you will get some unusual results if you are not expecting it and saves doing the processing post test run.

probably - I assume you are using reportgenerator to merge the results which it will have to do before it can start analyzing them - again a single run will help cut that cost down.

  From my prelim. testing, it DOES seem that the perf we've been seeing with OpenCover is definitely related to our very fine-grained multiple-invocations of it (e.g., invoking it ONCE per each test assembly rather than once across a collection of our test assemblies).  I too am able to run the full test-suite in the manner you're suggesting in about 7 mins +/- and the subsequent report generation takes a quite short 75 secs or so now.
It looks like the issues we've been experiencing re: perf can probably be resolved by changing the manner in which we're invoking OpenCover + ReportGenerator.  I will wire this into our build scripts in the next day or so and get back with you about our final results, but I just wanted to get back with you on this to let you know that we're still plugging away on it (and also to say THANKS for your suggestions -- looks like we should be able to get this working for us hopefully!)

I am glad you are finding it useful - any feedback on features or issues appreciated


[legacy] Removing information about updating from async model

Internal work item.
Usage for the async model is practically non-existent. These docs will only confuse new users.

Docs Build status updates of commit 7f549f6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/develop/excel-async-model.md
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded
View

docs/toc.yml
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Update colibri, colibri-jsdom to 0.3.3

Updates

com.github.cornerman:colibri
com.github.cornerman:colibri-jsdom

from 0.2.6 to 0.3.3.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.github.cornerman" } ]

labels: library-update, early-semver-major, semver-spec-minor, commit-count:1

Superseded by #594.


Publish version 8.0

I'm gonna park this PR here. Whenever we want to publish a new version, we can merge this one and create a release.
There are no breaking changes so far.

Weirdly tests are occasionally failing in CI. I assume the LocalDb is still not up or something similar. I'll have to investigate this.
(Connection Timeout Expired.  The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement.  This could be because the pre-login handshake failed or the server was unable to respond back in time.  The duration spent while attempting to connect to this server was - [Pre-Login] initialization=80890; handshake=9; )

PR #357 fixed CI issues.


Update complain functional

[ ]  Add possibility to complain on users
[ ] Return the possibility of complaints for everyone, but differentiate between letters and flags (for top and regular users)

@MoMentalochka isn't the 1-st item already made on #455. I'm curious what it does then 😄


Implement sampling in float32

Right now everything in nutpie (the sampler and the logp functions) are working in float64. For some models we could get decent speedups if we also support float32.
Pytensor can already compile float32 logp functions, but we have to change the python wrapper to make use of that. We also have to add a <F: Float> type parameter to some operations in nuts-rs, and figure out how to do the simd functions with that.

I now think that keeping the sampler itself in float64 isn't such a bad thing. For pymc models it now supports float32 gradient functions.


Update index.html

Done the changes according to issue number pranjay-poddar #1524
Title and Issue number

Close #<issue_no>

Checklist:

[] I have mentioned the issue number in my Pull Request.
[] I have commented my code, particularly in hard-to-understand areas
[] I have created a helpful and easy to understand README.md

Follow PR TEMPLATE correctly


Do not auto-close after string expression

This PR fixes #132912

Thank you for the PR. I've decided to go with a more complex fix in 6add87d4512711440c3a3e302d629d36f774a98d . The root problem is that auto closing pairs have been using the character before to determine the context they get typed in. But as is shown in this case, the context can be a string even though the previous character is not a string. The fix I did consists of pretending to type a neutral character, like 0 and then asking the tokenizer what token type that character would be if inserted, and then using that for the context test of the auto-closing pair.

Nice work! I had considered simulating a user adding another character but wasn't sure if it was worth it. It is definitely better than my hacky solution in terms of accuracy.


Old Version of Save File Crashes

I have an old save from an older version of the mod from last year. I think the version number is 1.03. The version of the mod with the old start screen and old music.
Anyway, I recently updated to 1.13. When I select my old save, the game crashes. If I pick a new scenario it works just fine. I tried fixing it by doing a full reinstall of the mod, but it still doesn't work.

There is not backward compatibility between 1.13 and 1.03. I.e. you can't play a 1.03 save with 1.13.


What option should I use in api so that skip fragment does not occur?

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm asking a question and not reporting a bug or requesting a feature
[X] I've looked through the README
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've searched known issues and the bugtracker for similar questions including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Please make sure the question is worded well enough to be understood
hello
I will download using the source of the project.
But while downloading, when the internet is weak, I encounter skip fragment.
What should I do to avoid skip fragment?
What option should I add when using yt_dlp.YoutubeDL class?
Provide verbose output that clearly demonstrates the problem

[ ] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[ ] If using API, add 'verbose': True to YoutubeDL params instead
[ ] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
No response

The same options you would use for the CLI. Namely --fragment-retries , --retry-sleep, --abort-on-unavailable-fragments, etc.
You can use devscripts/cli_to_api.py to convert from CLI to API.

ydl_opts = {'skip_unavailable_fragments': False}


SAM for dynamic aspect ration images

Hi @heyoeyo  , I'm trying to fine-tune SAM for panorama images of the indoor scenes, which are all of different rations, but as they are panoramas their width is always longer then height.

What will you recommend as the best approach to deal with different resolution images if SAM requires 1024x1024 images as input?
I implemented custom point grid to work in the automatic SAM mode. By custom I mean non-square one: with bigger amount of points for X side. I'm wondering if I need to change something with initialization of point embedding in prompt_encoder.py? My point grid changed density, so not sure if I need to do something with point weights?

To provide a better context, here is the example of the panorama image I use as input and the masks output I got after fine-tuning. The masks are targeting the objects of interest but they are clearly over-segmented. I'm trying to understand if it's because of the image pre-processing or changes with the point grid.

Thank you!

What will you recommend as the best approach to deal with different resolution images if SAM requires 1024x1024 images as input?

As-is, there's not really a lot of alternatives to handling non-square images, other than the existing padding that the SAM model uses. I have a modified copy of the model that can directly process non-square images and at sizes higher than 1024 (or lower) and the model seems to work just fine. It's currently a messy w.i.p., but if I remember, I'll post a link to it here once I've uploaded it.
In the meantime, I think there's not really any option, other than to scale/pad the image to 1024x1024 as it already does. If you're really worried about it, you can try manually stretching your image vertically so that it is square, then run the SAM model on that stretched image. This should give the model much more 'resolution' to work with, though the masks will also be vertically stretched, so you'll have to un-stretch them afterwards.

My point grid changed density, so not sure if I need to do something with point weights

The automatic mask generator just runs the normal 'single point prompt' version of SAM repeatedly for every point on your point grid (and then does some work to clean-up/merge all of the separate mask results). So adjusting the point grid shouldn't require any changes to the prompt-encoder weights.
If you're running the automatic mask generator script directly on your computer (i.e. not through a notebook/collab) then you can visualize the points on your image, by adding a few lines of code. In the segment_anything/automatic_mask_generator.py script, after line 240, you can add:
debug_img = cv2.cvtColor(cropped_im, cv2.COLOR_RGB2BGR)
for xy in points_for_image:
    pt_xy = xy.astype(np.int32).tolist()
    cv2.circle(debug_img, pt_xy, 2, (255,0,255), -1)
cv2.imshow("POINTS", debug_img)
cv2.waitKey(0)
cv2.destroyWindow("POINTS")

You'll also need to add import cv2 to the top of the script for this to work.
This will draw the image with the point grid overlayed, so it might help diagnose any problems with the points. Once you press any key, it'll close the window and continue processing.
Another thing worth trying is the crop-n-layers argument for the automatic mask generator. Based on the image you posted, it sort of looks like the error on the masking might be a 'low resolution' issue (when the image is scaled/padded to fit the square 1024 resolution, that lamp might be very small/blurry and that's what the mask is fitting to). That cropping argument causes the image to be zoomed/cropped before processing (if you add that visualization code above, you can see what it's doing), and that might give more resolution to the lamp for masking?


Feature Request:  Set Start Day of Week

The default day of week start day is Saturday in many countries.
This plugin does not allow setting the week start to either Friday or Saturday.
Ref: https://github.com/unicode-cldr/cldr-core/blob/master/supplemental/weekData.json#L62
Primarily Calendar week-start day is based on Country, and is language independent.
German-US, Spanish-US, English-US - all start on Sunday
German-DE, Spanish-DE, English-DE - all start on Monday
English-AE, Arabic-AE -- start on Saturday.
English-MV, dv-MV  -- start on Friday.
Arabic should default to "saturday";  or "sunday" in some regions.
Spanish is monday or sunday, depending on country
English is Sunday or monday, and sometimes sat or friday, depending on country of use.
https://help.salesforce.com/articleView?id=000338932&type=1&mode=1
Moment for AR: correctly shows start day as Saturday: https://github.com/moment/moment/blob/develop/locale/ar.js#L193
This plugin uses Sunday.

This should now be possible in v1.4.13

This should now be possible in v1.4.13

Thanks for everything and especially this feature. But it's inconsistent with #48 . For example, if starting day of week is Saturday, weekend would be Thursday and Friday (Though I'm not sure if every country or company has two days off at the weekend; maybe some have one.)


Add gnomAD link

woo thanks for the contribution! ❤ open source 😄

argh sorry for merging, should have let you. next time!


AMP-47088 Updated Ampli Kotlin codegen for identify() method

Since there are no file changes marking as closed.


Auto linking with lld-linker

Is your feature request related to a problem? Please describe.
As of Visual Studio Pro 2022, version 17, auto-linking of libraries is not supported with lld-linker. See here. Please see if it can be supported too.
Proposed solution
Develop support for lld-linker.
Describe alternatives you've considered
No response
Additional context
No response

Or better not?

Auto-linking is a dangerous feature. Don't use it. Also wrong place to ask since it is a link.exe compatibility issue in lld-link not accepting wildcards and as such an issue for LLVM and not vcpkg.

Convinced.


Ensure that CollectionPage implement CollectionInterface

Overall improve the CollectionPage and OrderedCollectionPage structs and related functionality because it's unlikely to ever use the Collection structs themselves in a real scenario, without attaching pagination to it.
See littr.go #10.

Done a while back. Added some tests for it also.


[AutoRelease] t2-search-2022-10-28-80139(Do not merge)

https://github.com/Azure/sdk-release-request/issues/3312
Live test fail, detailed info is in pipeline log(search keyword FAILED)!!!
https://dev.azure.com/azure-sdk/internal/_build?definitionId=1027
BuildTargetingString
azure-mgmt-search
Skip.CreateApiReview
true

issue link:https://github.com/Azure/sdk-release-request/issues/3312


Added a framework for a CONTRIBUTING.md file

Here is a proposal for a CONTRIBUTING.md file. Still sans tests, best practices for pull requests, and code style/linting suggestions, but it is a start we can build on.
Please comment if anyone has any suggestions to add to this.

FYI someone who has admin access can activate github discussions from the repo settings (https://docs.github.com/en/discussions/quickstart)


multiple galleries on same page

How can i have multiple galleries on the same page ? This code will open all images in the same lightbox, but i want to display only the images in the current gallery
In other words, when clicking first link, display the 2 cats images in the lightbox, and when clicking second link display the 2 others images. I don't want to display the 4 images at same time.
I know i could do this by adding more $('#lightbox a').tosrus({ in jquery, but i have 100 different galleries on the same page it would be non-sense to do this 100 times
If TosRUs can't do this i'll have to go back to slimbox :(

				1

				2

Images are grouped into a gallery based on the set of DOM elements you used to call the plugin.
For example, this will create one gallery for all images inside a DIV.lightbox:
// one set of DOM elements for all anchors
$("div.lightbox a").tosrus();

And this will create a gallerie per DIV.lightbox:
$("div.lightbox").each(function() {
    // a set of DOM elements inside each div.lightbox
    $(this).find( "a" ).tosrus();
});

Thanks for the reply ! But i can't get it to work :( What's wrong with my code ? Sorry for the noobish questions i'm not very good with javascript stuff

		1

		2

You're selecting divs with a class "lightbox" (indicated by the dot . before the class name), but your actual divs have an id "lightbox" (that would be a # before the name. An id is only allowed once per document, by the way).


Pylance suggests wrong import

Environment data
2020.11.0

Language Server version: XXX
OS and version: Windows 10 x64
Python version (& distribution if applicable, e.g. Anaconda): Python 3.7.4. -32

Expected behaviour
import re
Actual behaviour
import request from urllib

Logs

XXX

Code Snippet / Additional information

XXX

Thanks @LeoGSA, thanks for the report. Could you please try enabling the indexer and seeing if that fixes the problem?
To enable the indexer, add the following setting to your settings JSON file
"python.analysis.indexing": true

thanks

Hi Jude )
Thanks for answering.
Do you mean that I should add this line
"python.analysis.indexing": true
to a VSCode settings json file?
If yes, then I've done it right now:
[image: image.png]
Restarted VSCode.
After that it started to prompt a BIG number of imports.
[image: image.png]
[image: image.png]
Well. It is definitely better than trying to import "from urllib import
requests"
but... if it is "re.something" - there is no sense searching for all words
having "re" in it.
I mean - it is "re" with a dot. It's a complete module name.
On the other hand, situation with requests got much better.
[image: image.png]
Thank you, Jude. ) Good luck in your job. )
Let me know if I can be of any help.
чт, 5 нояб. 2020 г. в 21:55, Jude Kavalam<EMAIL_ADDRESS>
Thanks @LeoGSA https://github.com/LeoGSA, thanks for the report. Could
you please try enabling the indexer and seeing if that fixes the problem?
To enable the indexer, add the following setting to your settings JSON file
"python.analysis.indexing": true
thanks
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/pylance-release/issues/567#issuecomment-722573219,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGBQL2WZU4A4CMALM4XONJLSOLYJBANCNFSM4TLLORQQ
.

I think your email client and GitHub didn't get along; you may need to use the web UI to upload screenshots.
The expected behavior with indexing enabled is that re is presented at the very top of the quick fix list. There may be others below it (and we are working on the volume), but re should be there regardless of if it's been used yet.

@LeoGSA I believe we are still waiting for a screenshot with indexing enabled. That should have gotten re back into the list, but it appearing by default without being loaded some other way isn't expected at the moment due to the indexer still being disabled (outside of insiders).
If you have indexing enabled and don't see re at the top of the list of choices, we can open this, but I'm going to close it for now as it's been sitting for more than a month.

hi,
thank you for your letter.
it works fine for me after enabling indexing.
so if you ask me - yes, it may be closed now.
пн, 14 дек. 2020 г. в 23:49, Jake Bailey<EMAIL_ADDRESS>
@LeoGSA https://github.com/LeoGSA I believe we are still waiting for a
screenshot with indexing enabled. That should have gotten re back into
the list, but it appearing by default without being loaded some other way
isn't expected at the moment due to the indexer still being disabled
(outside of insiders).
If you have indexing enabled and don't see re at the top of the list of
choices, we can open this, but I'm going to close it for now as it's been
sitting for more than a month.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/microsoft/pylance-release/issues/567#issuecomment-744701686,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AGBQL2RPHVHFM6YRZ6NU3CTSUZ24DANCNFSM4TLLORQQ
.


⚠ SceneTime has degraded performance

In bfbde60, SceneTime ($ST) experienced degraded performance:

HTTP code: 200
Response time: 1617 ms

Resolved: SceneTime performance has improved in 9956c00 after 11 minutes.


Add helper macros for setting LED flash intervals

Currently only setting either none or specific LEDs is implemented, this is a reminder to add more helper functions and types to utilise all of the LED formatting features before sending an output report.

See here especially.


[Question] Dynamically loaded dialogs fails to cast into IDialog

Hello,
We used an answer in #2407 and it helped to make stuff work in ASPX project, but now we are in self hosted environment and start controller from there.
We try to load dialogs dynamically the following way:

Load instance of IDialog from dll
Create next dialog from JSON file and continue there
Continue as needed

When we try to load simple EchoBot - everything is working fine, but as long as next step is involved or we try to load JSON, we give the following exception:
Object of type 'OrderBotSample.CustomerEntryDialog' cannot be converted to type 'Microsoft.Bot.Builder.Dialogs.IDialog`1[System.Object]'.
Stack trace:
   at System.RuntimeType.TryChangeType(Object value, Binder binder, CultureInfo culture, Boolean needsSpecialCast)
   at System.RuntimeType.CheckValue(Object value, Binder binder, CultureInfo culture, BindingFlags invokeAttr)
   at System.Reflection.RtFieldInfo.UnsafeSetValue(Object obj, Object value, BindingFlags invokeAttr, Binder binder, CultureInfo culture)
   at System.Runtime.Serialization.FormatterServices.SerializationSetValue(MemberInfo fi, Object target, Object value)
   at System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder holder, Boolean bObjectFullyComplete)
   at System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder holder)
   at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
   at Microsoft.Bot.Builder.Internals.Fibers.FormatterStore`1.Microsoft.Bot.Builder.Internals.Fibers.IStore<T>.TryLoad(T& item) in C:\Projects\CSharp\Library\Microsoft.Bot.Builder\Fibers\Store.cs:line 65
   at Microsoft.Bot.Builder.Internals.Fibers.ErrorResilientStore`1.Microsoft.Bot.Builder.Internals.Fibers.IStore<T>.TryLoad(T& item) in C:\Projects\CSharp\Library\Microsoft.Bot.Builder\Fibers\Store.cs:line 108

And dialog starts over again.
Our code is pretty straightforward, we start in controller:
await Conversation.SendAsync(activity, () =>
{
   var assembly = Assembly.LoadFrom(@"..\OrderBotSample.dll");
   IDialog<object> dialog = (IDialog<object>)assembly.CreateInstance("OrderBotSample.CustomerEntryDialog");
   return dialog;
});

CustomerEntryDialog is as following:
namespace OrderBotSample
{
    [Serializable]
    public class CustomerEntryDialog : IDialog<object>
    {
        private static readonly Logger _logger = LogManager.GetCurrentClassLogger();
        public CustomerEntryDialog()
        {
            Debug.WriteLine("CustomerEntryDialog: Constractor Created");
        }

        public async Task StartAsync(IDialogContext context)
        {
            _logger.Trace(string.Empty);
            context.Wait(MessageReceivedAsync);
        }

        public async Task MessageReceivedAsync(IDialogContext context, IAwaitable<IMessageActivity> argument)
        {
            _logger.Trace("In");
            context.Forward(FormDialog.FromForm(() => BuildJsonForm("..\ServiceSelect.json"), FormOptions.PromptInStart), DialogCompleted, context.Activity.AsMessageActivity()).Wait();
            _logger.Trace("Out");
            context.Wait(MessageReceivedAsync);
        }

        private IForm<JObject> BuildJsonForm(string strPath)
        {
            using (var stream = File.OpenRead(strPath))
            {
                var schema = JObject.Parse(new StreamReader(stream).ReadToEnd());
                return new FormBuilderJson(schema)
                    .AddRemainingFields()
                    .Build();
            }
        }
        private async Task DialogCompleted(IDialogContext context, IAwaitable<object> result)
        {
            context.Done(true);
            return;
        }
    }
}

ServiceSelect.json:
{
  "type": "object",
  "required": [
    "ServiceSelect",
    "CustomerId",
    "Language"
  ],
  "Templates": {
    "NotUnderstood": {
      "Patterns": [ "I do not understand \"{0}\".", "Try again, I don't get \"{0}\"." ]
    },
    "EnumSelectOne": {
      "Patterns": [ "Please let me know the {&}: {||}" ],
      "ChoiceStyle": "PerLine"
    }
  },
  "properties": {
    "ServiceSelect": {
      "Prompt": {
        "Patterns": [ "What service you would like to get ? {||}" ]
      },

      "Before": [ { "Message": [ "Welcome to our bot selfservice example!" ] } ],
      "Describe": { "Image": "https://placeholdit.imgix.net/~text?txtsize=16&txt=CCSPBot&w=125&h=40&txttrack=0&txtclr=000&txtfont=bold" },

      "type": [
        "string",
        "null"
      ],
      "enum": [
        "Queue 1",
        "Queue 2",
        "Check Order",
        "Open Case"
      ]
    },
    "CustomerId": {
      "type": [ "number", "null" ],
      "Active": "return (string) state[\"ServiceSelect\"] == \"Check Order\";"
    },
    "Language": {
      "Prompt": {
        "Patterns": [ "In what Language  do you want get service? {||}" ]
      },
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "English",
        "Japanese"
      ],
      "Active": "return (string) state[\"ServiceSelect\"] != \"Check Order\";"
    },

    "PhoneNumber": {
      "type": [ "string", "null" ],
      "pattern": "(\\(\\d{3}\\))?\\s*\\d{3}(-|\\s*)\\d{4}",
      "Active": "return (string) state[\"ServiceSelect\"] != \"Check Order\";"
    }
  },
  "OnCompletion":  "context.Done<bool>(true);"
}

Tried couple of ways, but it all comes down to this issue.
Any ideas? Any possibilities to load dialogs dynamically from outer dlls?

We have same issue - any response about exception and workaround?

@vovanb & @Enghouse-CCSP-PS
I'm not sure why the error is occurring, but have either of you tried  Assembly.LoadFile instead of Assembly.LoadFrom ?

Closing due to no response.


Fix MSAL-CPP injecting javascript loop

@richard1122 Please do not put things like 'hacking' in PR titles. Because this is an auth library, it sends the wrong message

Hi @jbzdarkid , I'm trying fix the PRT tests signin issue. Here are what I found:
UITestAutomation.js is injected every time when com.microsoft.identity.common.internal.ui.webview.OnPageLoadedCallback#onPageLoaded is called, Which causes page reload (form submit?).
So in this PR I added a set to make sure we will only inject once for the same URL.
Changes to UIAutomation.js (only add logs)
--- a/test/testdata/UIAutomation.js
+++ b/test/testdata/UIAutomation.js
@@ -200,6 +200,7 @@ function SignIn(username, password)
     {
         throw "Couldn't find SignIn button";
     }
+    console.log('signinbutton.click');
     signInButton.click();
 }

@@ -295,6 +296,7 @@ var BACK_BUTTON = [

 function ExitWithError(message)
 {
+    console.log('ExitWithError', message);
     window.location = window.redirect + '?error=UIAutomation.js&error_description=' + encodeURI(message);
     return;
 }
@@ -324,6 +326,7 @@ function ExecuteSignIn()
     }
     catch (e)
     {
+        console.error(e);
         errorDescription = 'Failed attempt ' + attemptNo + '. Last error "' + e + '". ';
     }

@@ -486,6 +489,7 @@ function ClickBackButton()

 function Main()
 {
+    console.log('action: ', window.action);
     switch (window.action)
     {

We intentionally re-run javascript on every page load. It is the responsibility of the javascript to take an action which progresses the page.
If the UI is unable to make progress, then that's a scenario bug, not a javascript bug (or a web browser bug).
Can you describe in a bit more detail what pages are being loaded, what action the javascript is taking, and what action a user would take?
From: Richard<EMAIL_ADDRESS>Sent: Saturday, February 20, 2021 12:47 AM
To: AzureAD/microsoft-authentication-library-common-for-android<EMAIL_ADDRESS>Cc: Joe Blackman<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [AzureAD/microsoft-authentication-library-common-for-android] WIP: Fix MSAL-CPP injecting javascript loop (#1238)
[image]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F2534277%2F108589573-e5f28980-7399-11eb-9e68-3789e5555bf9.png&data=04|01|Joseph.Blackman%40microsoft.com|de95a7c3084641f1f64608d8d57c1c59|72f988bf86f141af91ab2d7cd011db47|1|0|637494076587084310|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=8RfsuN5WxndOITpkIyCcBlNZ2fr%2FRt0hCybm%2BMx%2B3KM%3D&reserved=0
[image]https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fuser-images.githubusercontent.com%2F2534277%2F108589812-30c0d100-739b-11eb-8a7f-09a21e1638dc.png&data=04|01|Joseph.Blackman%40microsoft.com|de95a7c3084641f1f64608d8d57c1c59|72f988bf86f141af91ab2d7cd011db47|1|0|637494076587084310|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=LWS6IEH78yeXPyGmhDzCUbwwYyuhRXNCqZxapeCeBnQ%3D&reserved=0
Hi @jbzdarkidhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fjbzdarkid&data=04|01|Joseph.Blackman%40microsoft.com|de95a7c3084641f1f64608d8d57c1c59|72f988bf86f141af91ab2d7cd011db47|1|0|637494076587094304|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=62LAVDKIzlRf7BZeXbI4QXnOHaxUsF0reSdE5WWqwoo%3D&reserved=0 , I'm trying fix the PRT tests signin issue. Here are what I found:
UITestAutomation.js is injected every time when com.microsoft.identity.common.internal.ui.webview.OnPageLoadedCallback#onPageLoaded is called, Which causes page reload (form submit?).
So in this PR I added a set to make sure we will only inject once for the same URL.
Changes to UIAutomation.js (only add logs)
--- a/test/testdata/UIAutomation.js
+++ b/test/testdata/UIAutomation.js
@@ -200,6 +200,7 @@ function SignIn(username, password)
 {

     throw "Couldn't find SignIn button";

 }

console.log('signinbutton.click');
signInButton.click();

}
@@ -295,6 +296,7 @@ var BACK_BUTTON = [
function ExitWithError(message)
{

console.log('ExitWithError', message);
window.location = window.redirect + '?error=UIAutomation.js&error_description=' + encodeURI(message);
return;

}
@@ -324,6 +326,7 @@ function ExecuteSignIn()
 }

 catch (e)

 {

   console.error(e);

   errorDescription = 'Failed attempt ' + attemptNo + '. Last error "' + e + '". ';

}

@@ -486,6 +489,7 @@ function ClickBackButton()
function Main()
{

console.log('action: ', window.action);
switch (window.action)
{

You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzureAD%2Fmicrosoft-authentication-library-common-for-android%2Fpull%2F1238%23issuecomment-782589133&data=04|01|Joseph.Blackman%40microsoft.com|de95a7c3084641f1f64608d8d57c1c59|72f988bf86f141af91ab2d7cd011db47|1|0|637494076587094304|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=bPK2PnzTgn671%2BmzY7Z608XBmqQM%2FLyoV6IEpZ2gsVE%3D&reserved=0, or unsubscribehttps://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABJUZDJTSL64KNU4IP74QP3S75ZI3ANCNFSM4X344HNQ&data=04|01|Joseph.Blackman%40microsoft.com|de95a7c3084641f1f64608d8d57c1c59|72f988bf86f141af91ab2d7cd011db47|1|0|637494076587104299|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=0y8%2F8qUiu9%2BmH%2BlvGJhY6FR9VwHIdF7t2Y7A69DHBIc%3D&reserved=0.

See comment in the thread. I don't think this is the correct approach. Feel free to schedule some time with me if you'd like to discuss in person.

@shahzaibj FYI ^^ -- I requested his review as well, lest this have any impact on our automated tests


Update cookiecutter.json

Username, not User, per https://github.com/collective/cookiecutter-plone-starter/pull/97#pullrequestreview-1654570470

Heh, my approval doesn't count since I'm not a codeowner, but I can merge it anyway since I'm an org Owner 🤷♂


UPDATE: Readonly for admin role

Closes #296

@iTitus I know what you'll thinking: it's ugly. But it works perfectly and is easy enough to understand :smile:

Still missing safe guards in service code


Disable images

There is already proposal using image and traffic going on, we should probably put this in standby or find an img mirroring service.

@bonustrack
So, could you add some more details if we still need this issue opening?


Helm Repo web site certificate has expired

Welcome!

[X] Yes, I've searched similar issues on GitHub and didn't find any.
[X] Yes, I've searched similar issues on the Traefik community forum and didn't find any.

What version of the Traefik's Helm Chart are you using?
10
What version of Traefik are you using?
2.5.4
What did you do?
helm install traefik traefik/traefik
Helm Repo(https://helm.traefik.io/traefik/index.yaml ) web site certificate has expired
What did you see instead?
Helm Repo web site certificate has expired
What is your environment & configuration?
Helm Repo web site certificate has expired
Additional Information
No response

Same problem here

The site certificate is replaced by a self-signed certificate 😭😭😭😭😭😭

can confirm:
openssl s_client -connect helm.traefik.io:443
CONNECTED(00000003)
depth=0 CN = TRAEFIK DEFAULT CERT
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = TRAEFIK DEFAULT CERT
verify return:1
---
Certificate chain
 0 s:CN = TRAEFIK DEFAULT CERT
   i:CN = TRAEFIK DEFAULT CERT
---

I just was about to post this. Thanks. Here the output of the helm binary:
STDERR:
  Error: looks like "https://helm.traefik.io/traefik" is not a valid chart repository or cannot be reached: Get "https://helm.traefik.io/traefik/index.yaml": x509: certificate is valid for 1c2f9c3ef780121923d06e6ba2f98f03.9f7f00942d5a07efc825f015d8886829.traefik.default, not helm.traefik.io

The site certificate is replaced by a self-signed certificate 😭😭😭😭😭😭

Update clearly they need to integrate with cert manager 😂😂😂

The site certificate is replaced by a self-signed certificate 😭😭😭😭😭😭

Clearly they need to integrate with cert manager 😂😂😂

Do you want to say "Caddy YES!"?  XDDD

Hello, we are on it, it will be fixed quickly

The problem is fixed.


Libgdx 1.11.0 crashes on iPad air with iOS version 12.4 through 12.5.5

I ran into this issue with my own app, but I tried again with a completely fresh installation with the latest LibGDX version, and it's still happening.
Issue details
The app immediately crashes on iOS with a fresh installation of LibGDX with the example project.
Reproduction steps/code
First, build a 1.11.0 LibGDX project with the build tool
Then, with XCode, download the iOS 12.4 Simulator via "Preferences" -> "Components"
Then, start a simulator for an "iPad Air" on iOS 12.4 and use the InteliJ roboVM plugin to build a simulator build for that simulator.
The app will immediately crash. See crash log below
Version of libGDX and/or relevant dependencies
gdxVersion = '1.11.0'
roboVMVersion = '2.3.16'
box2DLightsVersion = '1.5'
ashleyVersion = '1.7.4'
aiVersion = '1.8.2'
gdxControllersVersion = '2.2.1'
Stacktrace
fullcrash.txt
Process:               IOSLauncher [45882]
Path:                  /Users/USER/Library/Developer/CoreSimulator/Devices/D64F960E-A2BA-4F24-A75C-92CDD7A7E646/data/Containers/Bundle/Application/47424548-0A84-4E4F-B129-F44961569F06/IOSLauncher.app/IOSLauncher
Identifier:            IOSLauncher
Version:               1.0 (1)
Code Type:             X86-64 (Native)
Parent Process:        launchd_sim [20302]
Responsible:           SimulatorTrampoline [39674]
User ID:<PHONE_NUMBER>

Date/Time:             2022-08-02 20:56:15.890 -0400
OS Version:            macOS 11.4 (20F71)
Report Version:        12
Bridge OS Version:     5.4 (18P4663)
Anonymous UUID:        6A59DB64-9C90-E871-6692-6BA16E8C4C6D

Sleep/Wake UUID:       926258B7-E2F3-459A-AC70-300994C7A7BD

Time Awake Since Boot: 44000 seconds
Time Since Wake:       8700 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called
CoreSimulator 783.5 - Device: iPad Air (D64F960E-A2BA-4F24-A75C-92CDD7A7E646) - Runtime: iOS 12.4 (16G73) - DeviceType: iPad Air

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00000001091f792e __pthread_kill + 10
1   libsystem_pthread.dylib       	0x0000000109bda5bd pthread_kill + 263
2   libsystem_c.dylib             	0x0000000108fba01d abort + 127
3   com.apple.audio.toolbox.AudioToolbox	0x00000001085aa5e2 _ReportRPCTimeout(char const*, int) + 167
4   com.apple.audio.toolbox.AudioToolbox	0x000000010820818b _CheckRPCError(char const*, int, int) + 187
5   com.apple.audio.toolbox.AudioToolbox	0x000000010820d6a7 AURemoteIO::Start() + 551
6   com.apple.audio.toolbox.AudioToolbox	0x00000001085bf3b5 AUMethodStart(void*) + 63
7   com.apple.audio.toolbox.AudioToolbox	0x0000000108407000 AudioUnitGraph::Start() + 304
8   com.apple.audio.OpenAL        	0x000000010814da1b OALDevice::ConnectContext(OALContext*) + 755
9   com.apple.audio.OpenAL        	0x000000010814ae2c OALContext::ConnectMixerToDevice() + 98
10  com.apple.audio.OpenAL        	0x000000010814e824 alcMakeContextCurrent + 378
11  com.mygdx.game                	0x0000000105664d5e +[ALWrapper makeContextCurrent:deviceReference:] + 42 (ALWrapper.m:472)
12  com.mygdx.game                	0x0000000105668c5e -[OpenALManager setCurrentContext:] + 249 (OpenALManager.m:225)
13  com.mygdx.game                	0x0000000105655491 -[OALSimpleAudio initCommon:] + 75 (OALSimpleAudio.m:95)
14  com.mygdx.game                	0x0000000105655783 -[OALSimpleAudio initWithSources:] + 184 (OALSimpleAudio.m:161)
15  com.mygdx.game                	0x00000001056551d6 +[OALSimpleAudio sharedInstanceSynch] + 58 (OALSimpleAudio.m:69)
16  com.mygdx.game                	0x00000001057faf65 0x10546d000 + 3727205
17  com.mygdx.game                	0x00000001057fa9fc 0x10546d000 + 3725820
18  com.mygdx.game                	0x00000001057fa9b5 0x10546d000 + 3725749
19  com.mygdx.game                	0x00000001057fa697 [J]com.badlogic.gdx.backends.iosrobovm.objectal.OALIOSAudio.<init>(Lcom/badlogic/gdx/backends/iosrobovm/IOSApplicationConfiguration;)V + 71 (OALIOSAudio.java:38)
20  com.mygdx.game                	0x00000001057e3306 [J]com.badlogic.gdx.backends.iosrobovm.IOSApplication.createAudio(Lcom/badlogic/gdx/backends/iosrobovm/IOSApplicationConfiguration;)Lcom/badlogic/gdx/backends/iosrobovm/IOSAudio; + 46 (IOSApplication.java:161)
21  com.mygdx.game                	0x00000001057e30bd [J]com.badlogic.gdx.backends.iosrobovm.IOSApplication.didFinishLaunching(Lorg/robovm/apple/uikit/UIApplication;Lorg/robovm/apple/uikit/UIApplicationLaunchOptions;)Z + 890 (IOSApplication.java:140)
22  com.mygdx.game                	0x00000001057e54e6 [J]com.badlogic.gdx.backends.iosrobovm.IOSApplication$Delegate.didFinishLaunching(Lorg/robovm/apple/uikit/UIApplication;Lorg/robovm/apple/uikit/UIApplicationLaunchOptions;)Z + 91 (IOSApplication$Delegate.java:64)
23  com.mygdx.game                	0x00000001057e5708 0x10546d000 + 3639048
24  com.mygdx.game                	0x00000001057e4f96 0x10546d000 + 3637142
25  com.apple.UIKitCore           	0x000000010c2ff731 -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 280
26  com.apple.UIKitCore           	0x000000010c3010cd -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3932
27  com.apple.UIKitCore           	0x000000010c3064e6 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1617
28  com.apple.UIKitCore           	0x000000010bb4aa4e __111-[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:]_block_invoke + 904
29  com.apple.UIKitCore           	0x000000010bb53346 +[_UICanvas _enqueuePostSettingUpdateTransactionBlock:] + 153
30  com.apple.UIKitCore           	0x000000010bb4a664 -[__UICanvasLifecycleMonitor_Compatability _scheduleFirstCommitForScene:transition:firstActivation:completion:] + 236
31  com.apple.UIKitCore           	0x000000010bb4afc0 -[__UICanvasLifecycleMonitor_Compatability activateEventsOnly:withContext:completion:] + 1091
32  com.apple.UIKitCore           	0x000000010bb49332 __82-[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:]_block_invoke + 782
33  com.apple.UIKitCore           	0x000000010bb48fe9 -[_UIApplicationCanvas _transitionLifecycleStateWithTransitionContext:completion:] + 433
34  com.apple.UIKitCore           	0x000000010bb4dd2e __125-[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:]_block_invoke + 576
35  com.apple.UIKitCore           	0x000000010bb4e988 _performActionsWithDelayForTransitionContext + 100
36  com.apple.UIKitCore           	0x000000010bb4da95 -[_UICanvasLifecycleSettingsDiffAction performActionsForCanvas:withUpdatedScene:settingsDiff:fromSettings:transitionContext:] + 223
37  com.apple.UIKitCore           	0x000000010bb52a48 -[_UICanvas scene:didUpdateWithDiff:transitionContext:completion:] + 392
38  com.apple.UIKitCore           	0x000000010c304dc8 -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 514
39  com.apple.UIKitCore           	0x000000010bebc02f -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 361
40  com.apple.FrontBoardServices  	0x000000011428ad25 -[FBSSceneImpl _didCreateWithTransitionContext:completion:] + 448
41  com.apple.FrontBoardServices  	0x0000000114294ad6 __56-[FBSWorkspace client:handleCreateScene:withCompletion:]_block_invoke_2 + 283
42  com.apple.FrontBoardServices  	0x0000000114294300 __40-[FBSWorkspace _performDelegateCallOut:]_block_invoke + 53
43  libdispatch.dylib             	0x0000000108e66d02 _dispatch_client_callout + 8
44  libdispatch.dylib             	0x0000000108e69d41 _dispatch_block_invoke_direct + 295
45  com.apple.FrontBoardServices  	0x00000001142c60da __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 30
46  com.apple.FrontBoardServices  	0x00000001142c5d92 -[FBSSerialQueue _performNext] + 451
47  com.apple.FrontBoardServices  	0x00000001142c6327 -[FBSSerialQueue _performNextFromRunLoopSource] + 42
48  com.apple.CoreFoundation      	0x000000010a13fdb1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
49  com.apple.CoreFoundation      	0x000000010a13f633 __CFRunLoopDoSources0 + 243
50  com.apple.CoreFoundation      	0x000000010a139cef __CFRunLoopRun + 1231
51  com.apple.CoreFoundation      	0x000000010a1394d2 CFRunLoopRunSpecific + 626
52  com.apple.GraphicsServices    	0x000000011108e2fe GSEventRunModal + 65
53  com.apple.UIKitCore           	0x000000010c307fc2 UIApplicationMain + 140
54  com.mygdx.game                	0x0000000105d68530 0x10546d000 + 9418032
55  com.mygdx.game                	0x0000000105d67a82 [J]org.robovm.apple.uikit.UIApplication.main([Ljava/lang/String;Ljava/lang/Class;Ljava/lang/Class;)V + 935 (UIApplication.java:446)
56  com.mygdx.game                	0x0000000105d66a34 0x10546d000 + 9411124
57  com.mygdx.game                	0x000000010597dbc5 [J]com.mygdx.game.IOSLauncher.main([Ljava/lang/String;)V + 74 (IOSLauncher.java:19)
58  com.mygdx.game                	0x000000010601f15e 0x10546d000 + 12263774
59  com.mygdx.game                	0x0000000106014698 0x10546d000 + 12220056
60  com.mygdx.game                	0x0000000106016ea6 0x10546d000 + 12230310
61  com.mygdx.game                	0x0000000106016f76 0x10546d000 + 12230518
62  com.mygdx.game                	0x000000010600f5c5 0x10546d000 + 12199365
63  com.mygdx.game                	0x00000001060054e0 0x10546d000 + 12158176
64  libdyld.dylib                 	0x0000000108ed4541 start + 1

Please select the affected platforms

[ ] Android
[x] iOS
[ ] HTML/GWT
[ ] Windows
[ ] Linux
[ ] macOS

Can't reproduce testing on Intel MacOS 12.4 using Idea Plugin 2.3.16.
Does it run for you on iOS 15 or others?
Can you retry deleting RoboVM caches (RoboVM -> Clean Global cache) or even deleting the simulator and downloading it again?

@obigu Still the same problem after cleaning the global cache, and deleting the simulator. This happens on both a physical device and a simulator, and a multitude of my customers have complained about it.
Totally fine on new iOS versions, but not on older devices that are locked at those older versions.

FWIW, i'm using Intel Mac OS 11.4

This is weird, we have thousands of users across several apps using 2.3.16 with no issues and I'm not aware of any other recent OpenAL reported related bug.
Just to confirm the basics, can you please check and confirm that in addition to the build.gradle declarations, the version of the installed Idea plugin is 2.3.16 (IntellJ Idea -> Preferences -> Plugins)?

@obigu
I recently updated my roboVMVersion and gradle plugion to 2.3.18 after submitting this issue, which has the same problem.
So, to confirm, both the "roboVMVersion" and the Plugin version is 2.3.18.

I've found somebody complained on 2020 about this same issue occurring on Simulator 13.5 https://gitter.im/MobiVM/robovm?at=5fb554a8c10273610a12f4fa but I think there was not a proper follow-up.
Does it reproduce with libGDX 1.10.0? If it does, my advice is to ask on MobiVM Gitter, maybe dkmitsa (mobiVM mantainer) can help.

@obigu
Yeah, as I said it happens with LibGDX 1.10.0. It looked like this issue was specific to LibGDX, but I can ask dkmitsa just to see if they have any advice. Just to re-iterate, it happens on physical devices as well as simulators. Also, I just tried building on an intel Mac MINI from 2019, and I still had the same problem.
Thanks!

In the meantime, I'm disabling Audio on particular devices by doing:
        IOSApplicationConfiguration config = new IOSApplicationConfiguration();
        config.useAudio = false;
        config.allowIpod = false;
        return new IOSApplication(new MyGdxGame(), config);

which stops the crashing on those devices. Can only really be done if audio isn't a core component of your app.


Port notification upon job completion functionality from private repo

Expand ngen-cal utilities, consider some simple event notifications which allow user/caller scripts to do what they see fit.
Do not leave user property in Evaluatable or EvaluationOptions!

Related to https://github.com/NOAA-OWP/ngen-cal/pull/126

I looked into how we might do this yesterday using this pure python example and how we might do this for gmail. The more that I look into it and think about it, I think we can just provide an example of how to do this using a plugin, but I don't think this is something that we will want to maintain as a feature longterm. I think we can support simple the SMTP case, but that is less and less applicable these days (e.g. MFA / BioAuth requirements).

Implementing as an ngen_cal_finish plugin hook in a top level example_plugins or even plugins directory under python/ngen_cal.  Things to consider: how to provide name/path to plugins in config.yaml, installed modules vs local file modules, ect.

Yeah, im not sold that we need to worry / consider those things. At the end of the day, it all comes down to how python imports modules. So, the three main options are:

Run ngen.cal from the same directory that contains your plugin. Then you can just ngen_cal_plugin (note, drop .py) for a function based plugin or ngen_cal_plugin.MyPlugin if it's a class based plugin.
Using PYTHONPATH to add a directory for python to search (i.e. PYTHONPATH=~/plugins python -m ngen.cal config.yaml)
Creating an installable plugin (i.e. define pyproject.toml). Then you can just provide the module path in the config.

Closing this b.c. the ngen_cal_finish plugin satisfies what is required implement this feature. Its of our opinion that a notification is workflow specific and should be implemented as a custom or installable plugin.


Before secret chat keys exchange, allow to store messages to be automatically sent after the exchange

Currently one establishes a secret chat in order to write a message, but must wait for the key exchange to do so. cc @FrayxRulez

This is unlikely to be implemented, because this is not safe. Before you can use a secret chat, you must compare encryption keys to ensure its safety. If a message will be automatically sent when the chat is established, then it is impossible to guarantee that it will be seen only by desired recipient.


Update status

DO NOT MERGE YET, IN PROGRESS

@FBRTMaka we need to chat about the asset information and how to update it when your back

@birdage , YEAH we do! I'll see you tomorrow!

@FBRTMaka how goes it?

@birdage goes well, how things on your side?

@birdage WHere are we here?

@DanielJMaher services need to be merged first

Ok, I see the comment about the services merge and it looks like this is ready.


Increase the cadence, adjust timing of indexing

Right now the indexer doesn't run very often. Let's make sure it runs:

Before the work day starts (~6am or 7am)
More often - 4x a day instead of 2x?

Originally posted by @alexpiet in https://github.com/AllenNeuralDynamics/aind-data-access-api/discussions/81#discussioncomment-10352414

Dupe


Interop working from Xamarin to Blazor.

I already merged your fork in the https://github.com/Daddoon/BlazorMobile/tree/dev_postmessage_update branch.
As i want to do a little review on your code this evening.
I will then merge this branch to the master and release a NuGet package update.

Ok,
Sounds good.
If you need anything, let me know.
Victor J. Gorri
973-800-0625
victor<EMAIL_ADDRESS>From: Guillaume ZAHRA<EMAIL_ADDRESS>Sent: Thursday, October 3, 2019 8:25 AM
To: Daddoon/BlazorMobile<EMAIL_ADDRESS>Cc: Victor Gorri<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [Daddoon/BlazorMobile] Interop working from Xamarin to Blazor. (#127)
I already merged your fork in the https://github.com/Daddoon/BlazorMobile/tree/dev_postmessage_update branch.
As i want to do a little review on your code this evening.
I will then merge this branch to the master and release a NuGet package update.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Daddoon/BlazorMobile/pull/127?email_source=notifications&email_token=ADK66Q5KXBC6MHPRGBY3KELQMXQBTA5CNFSM4I5CLCGKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEAIAWAA#issuecomment-537922304, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ADK66Q3I2DSAPVAHEGIYRMTQMXQBTANCNFSM4I5CLCGA.


C and C++ Implementation

Implemented examples, READMEs, launch and tasks, compiler and extension recomendations for both C and C++ in their respective folders.

Please, review READMEs for grammatical erros before approving.


Android Types do not match underlying objects

Description
The Product and Subscription types in the latest version do not match the underlying objects returned by the native layer.
Expected Behavior
The type definitions should at least reflect the real object shapes. See images below for discrepancies.
More specifically:

Product / Android: the property type does not exist on Android. Instead, only productType exists during runtime.
Product / Android: the localizedPrice property exists during runtime, but not on the typescript types.

See images below.
Screenshots

Environment:

react-native-iap: 12.10.5
react-native: 0.71
Android

same here

+1


change the cache time does't work

I change the cache time from 5m to 0s, it does't work. use v1.0.1
can you fix it? thx

At the risk of ME-TOO'ing this I'm seeing the same issue. Not only that but according to my webserver logs, Grafana isn't even querying the source after 5 minutes. Even restarting the Grafana server doesn't guarantee a refresh. (plugin v1.0.1 Grafana versions 7.5.2 and 7.5.3)

@henley-regatta I have a temporary solution，

clone code
modify ’cacheDurationSeconds‘ and 'defaultCacheDuration',   300 -> 0

npm install  && npm run build
use dist install, you can see document (https://marcus.se.net/grafana-json-datasource/installation)
it's work

but still hope Author fix the bug, this plugin is very useful.

Hi @felixglow and @henley-regatta,
I'd like to fix this as soon as possible, but I'm having some trouble replicating this. Just to clarify, you change the cache from 5m 0s, but no request is made? Is this only when creating variable queries, or does it apply in the dashboard query as well?
Honestly I'm debating whether it's time to remove the cache altogether. It's the cause of most issues reported, and I'm not even sure how many are actually using it.

Thanks for looking at this, @marcusolsson
I can confirm having just tested it that using the JSON-API plugin in a (Chart) Query also doesn't respect the cache setting.
The nginx access logs show Grafana going back to the source file once, and then never again within the testing window, despite me both changing the cache to 0 and force-reloading the page.

@marcusolsson thanks，in my opinion，this cache function is not important for me。

@henley-regatta I have a temporary solution，

clone code
modify ’cacheDurationSeconds‘ and 'defaultCacheDuration',   300 -> 0
npm install  && npm run build

note for anyone else trying this: I had to use npm install --legacy-peer-deps to avoid errors on incompatible/unresolvable dependencies.

use dist install, you can see document (https://marcus.se.net/grafana-json-datasource/installation)
it's work

Ah now here's a thing - it's not working for me. I'm not seeing requests to the server's access log based on this change. I've set cache to zero (knowing it's now dummied-out), I've restarted the Grafana server, I've used Query-Inspector -> Refresh, I've force-reloaded the page... I'm still not seeing requests to the (web) source. I'm still seeing the data but the Query Inspector shows the source as url:"api/datasources/proxy/3 (although I'll note that any "Query Strings" I add to the source URL - the old trick to force a webserver to not present a cached response - are added to that re-written URL too, without getting a call back to the source).
I don't know how this works internally and what that datasources proxy represents but.... is it possible that this is internal to Grafana and not the plugin?

@henley-regatta I forgot to tell you，the old page does't work, you must add a new variable, then the cache time will set 0s default.

While digging in this I found an issue that could be the reason for this (and several other reported issues). I've fixed it, but I'm working on a few other features that I'd like for to make it to the next release. I'll let you know when I've published it.

While digging in this I found an issue that could be the reason for this (and several other reported issues). I've fixed it, but I'm working on a few other features that I'd like for to make it to the next release. I'll let you know when I've published it.

OK，thank you very much~

@henley-regatta I forgot to tell you，the old page does't work, you must add a new variable, then the cache time will set 0s default.

Thanks, @felixglow . That's worth knowing. However, I've tried deleting and re-creating the Variable, the panel that's using the query, the whole dashboard and even the Datasource itself and I'm not seeing re-requests to the source data. Given the progress being made on resolving the core issues I'm not sure it's worth pursuing this line of inquiry..
@marcusolsson thank you very much for your work on this. I look forward to the next release of the plugin with great interest!

I've just published v1.1.0 to the marketplace. While I haven't worked on this specifically. I've fixed a couple of related issues. Would you mind letting me know if this issue is still there in 1.1.0?

I've just tested v1.1.0 on 2 servers (Grafana 7.4.1 and 7.5.4)  and I'm still not seeing any change to refresh behaviour.:Once Grafana's done a query that's gotten results, I'm not seeing any further queries from Grafana to the data source (my nginx-hosted JSON), it's all coming from the proxy url I previously listed. And that's after deleting &  recreating the dashboard, variables and datasource
(and also, because I'm paranoid, forcing debug log on the nginx process to make sure it's reporting all hits even cached ones).

Thank you for confirming. I'll give another go at reproducing this.

Is there any fix? I right now have the same problem when I changed key x to y in a JSON file. It still only shows key x and doesn't update. When I create a new Datasource it works and shows key y.

Hi,
At 5s cache time, the refresh seems to work for me (grafana-v9.3.2, marcusolsson-json-datasource @ 1.3.6)  in the dashboard with a golang webserver hosting JSON-encoded measurements (last 3s). The auto-refresh does not work in Edit mode, only by pressing refresh manually.
The cache-time list seems to be fixed, I cannot give other values than in the list (e.g. 1s), else the value becomes NaNh and the plugin indicates Error: "Cache timeout needs to be positive number". Would it be possible to use custom cache times and add them to the list like the refresh timeout does?
Kind regards,
Dennis


Default Width for LineStringViz was being coerced to a String

closes #108

Looks great!  Thanks for the quick fix @jamiecook.


Update CONTRIBUTING.md

Pull Request
Related issue
Fixes #283
What does this PR do?

Fix the command in Contributing.md to launch the tests.

PR checklist
Please check if your PR fulfills the following requirements:

[X] Does this PR fix an existing issue, or have you listed the changes applied in the PR description (and why they are needed)?
[X] Have you read the contributing guidelines?
[X] Have you made sure that the title is accurate and descriptive of the changes?

Thank you so much for contributing to Meilisearch!

Hello @Smartmind12,
Thank you very much for contributing to Meilisearch :heart:.
However, I am not available on the weekend, but I will be back on Monday :blush:.
PS: This message was sent automatically!

Thanks, @Smartmind12 for this PR. I just made a few suggestions.

@alallema I have resolved the suggestions and updated the same ...Kindly review!

@alallema Kindly review now!

bors merge

This message is sent automatically
Thanks again for contributing to Meilisearch :heart:
If you are participating in Hacktoberfest, and you would like to receive some gift from Meilisearch too, please complete this form.


Stop Textext from adding height and width styles?

div class="text-core" style="height: 22px;"
div class="text-wrap" style="width: 12px; height: 22px;"

Which makes this now unreadable/usable.
How can I make textext stop adding the height and width attributes so that I can just rely on CSS?

Currently experiencing this exact same issue. This has been open since Oct 13, 2014 not sure if that's because everyone has moved onto plugins that work for the big new frameworks like Angular, Vue and React but either way its unfortunate to bump into unresolved issues like these on unmaintained projects.

Line 973,
width = self.originalWidth + ‘px’,
causes that issue. I know this shouldn’t be the end solution but as a workaround comment it away as following,
width,  // = self.originalWidth + ‘px’,
I don’t know why he would force that there... Original width doesn’t need to be set so it always end up 0 pixels wide


LIVE-3045 Fix Cardano address validation

📝 Description
Cardano address validation was flawed, some BNB address were allowed for instance.
Fixed by updating the @stricahq/typhonjs js lib used to do this.
❓ Context

Impacted projects: ledger-live-common
Linked resource(s): https://ledgerhq.atlassian.net/browse/LIVE-3045

✅ Checklist

[x] Test coverage
[x] Atomic delivery
[x] No breaking changes

📸 Demo

🚀 Expectations to reach

Pending some test coverage.

:information_source: This should be merged, unrelated known issue on flaky Desktop tests


[Feature Request] Disable Auto-Hiding Progress Bar

Awesome tweak, do you think you could add an option to keep the Progress Bar active instead of auto-hiding it? I would like it to stay visible so that it doesn't animate the rest of the page elements, and keeps everything static!

+1

I would also be glad to see that added!

stay visible
umm, YouTube doesn't provide that api. I'll try but I can't make any promises.

doesn't animate the rest of the page elements
planning to change v3 due to many requests.

@Deagan @wooshaq
Implementation of v3 is complete.
Due to many requests, the playback bar will always be displayed from the next version. In other words, the playback bar is always visible when it is outside.
The v3 version is currently under store review, so please wait a little longer.

v3 is already available now.
close https://github.com/1natsu172/Outside-YouTube-Player-Bar/releases/tag/v3.0.0


Create CONTRIBUTING.md

Seems like this would be a good idea. Nothing fancy.

They're only a rough guide in most places, but they do have some good ideas!
The "Code Formatting" one should be all enforced by rustfmt, so it's slightly less interesting. I'll include that mention in there because I seem to have forgotten it.


Atoms generated from scoped named function will have the same values

We are using jotai-swc in next.js 14 with the swc plugin enabled and encounter the following issue:
When the atom is generated from a scoped named function all atoms return from that function will share the same scoped identities.
export function yieldAtoms() {
  function wrapper<T>(theAtom: PrimitiveAtom<T>): PrimitiveAtom<T> {
    return atom(
      (get) => get(theAtom),
      (_, set, arg) => {
        set(theAtom, arg);
      },
    );
  }

  const wrappedAtom = wrapper(atom(''));
  const affectedAtom = atom('');
  const someObject = { foo: 'bar' };

  return {
    wrappedAtom,
    affectedAtom,
    someObject,
  };
}

const a = yieldAtoms();
const b = yieldAtoms();

console.log({
  atomsDuplicated: a === b, // false
  wrappedDuplicated: a.wrappedAtom === b.wrappedAtom, // true
  affectedDuplicated: a.affectedAtom === b.affectedAtom, // also true
  someObjectDuplicated: a.someObject === b.someObject, // false
});

If we modify the named function part to const arrow function then the issue will be resolved:
  const wrapper = <T>(theAtom: PrimitiveAtom<T>): PrimitiveAtom<T> => {
    return atom(
      (get) => get(theAtom),
      (_, set, arg) => {
        set(theAtom, arg);
      },
    );
  };

Reproduction
https://github.com/hikariNTU/jotai-swc-test
Note
I've checked that if not enabling the plugin everything is fine, but I am not sure if the above sample code is the minimal reproduce example though since the behavior is too bizarre to get the root cause.
In the end of the day, I would probably like to see some "Caveats" section in jotai-swc documentation if these kind of bugs are as expected behaviors since they are hard to track down.

Hi!
Thanks for reporting. 🙏🏼
Can you provide a reproduction with latest versions of the packages?

Hi!
Thanks for reporting. 🙏🏼
Can you provide a reproduction with latest versions of the packages?

@Thisen Here https://github.com/hikariNTU/jotai-swc-test
If there's something unclear I can provide more information

@hikariNTU with the new version of react-refresh plugin, could you check if this is still an issue? 🙏🏼

@hikariNTU with the new version of react-refresh plugin, could you check if this is still an issue? 🙏🏼

Fixed! 0.2.0 does fix all the issues in the repository. Big thank to @martinhath 🙏🏼


core: implement optional external routes and use to toggle "Create Component" button

Hey, I just made a Pull Request!
Adds support for
const myRouteRef = createExternalRouteRef({ id: 'my-ref', optional: true })

// ...

const MyComponent = () => {
  const myLink = useRouteRef(myRouteRef)
  if (myLink) {
    return Link
  } else {
    return No link :(
  }
}

optional "Create Component" button!

:heavy_check_mark: Checklist

[x] A changeset describing the change and affected packages. (more info)
[x] Added or updated documentation
[x] Tests for new functionality and regression tests for bug fixes
[ ] Screenshots attached (for UI changes)

Tugboat has finished building the preview for this pull request!
Link:

https://pr4700-ganv3xteolgfatzdojfhyjsf5ysti7q6.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/6037d920fcb22dbc446075c8

Tugboat has finished building the preview for this pull request!
Link:

https://pr4700-ganv3xteolgfatzdojfhyjsf5ysti7q6.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/6037d920fcb22dbc446075c8

Very nice, I like that.
I guess I have to resolve some conflicts in #4628 afterwards 😆


[BRANCH - "convert-react"] website reloading while navigating page

Navigate to the folder
Check 2nd Branch, name- convert-react
Clone this, and navigate to main-website folder, this is the main website we are converting into react website after you have done, PR to the convert-react branch, not in the "main" branch. Add your details to contributors.json file.
Feature?
NO
Bug?
Website reloading while we navigate the menu, it shouldn't. check if you are able to solve this bug.
Task:
clone this repo, checkout to convert-react branch, and work on the navbar!
Expected behavior:
website shouldn't reload while navigating from one page to another page. But Logo working fine.
You can join our discord server - let's build together Join

Assign this to me @devvsakib

@devvsakib Check PR: #116

#116  it didn't solve

solved commit #3f6b285


Update exploits-malware.md

Updated WannaCry to a more recent example of exploit kit use by a ransomware threat actor.

Hi @Sarit1046! I've moved this PR to our private repo: https://github.com/MicrosoftDocs/defender-docs-pr/pull/593