BUG: Unresponsve page when visiting navbar menu links

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
The navbar menu link for testimonials, when clicked, takes us to the section but makes the page unresponsive.
You can do nothing on there, no clicks, hover nothing. It seems the error happens only when the link takes you to a section of the home page, when visiting a completely different page, no issue is there.
To check:

Go to the website
Click on either Reviews or Services in navbar menu.
Visit the section and see error.

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@Its-Aman-Yadav kindly assign this issue to me.

It's is working for me dear please check once again


Allow local testing of Temporal.schedule_workflow

Summary
Today if you call Temporal.schedule_workflow in local testing mode, you'll get an RPC error.
Scenario: someone is exercising some code that schedules a workflow in an integration test. They should be able to check that the workflow was scheduled with the cron parameters they expect, then run it to simulate deferred execution.
Seems harder to test/simulate the actual cron schedule, so  I didn't do that.
Test plan
rspec ./spec/unit/lib/temporal/testing_spec.rb

This is a very good addition, thank you. One thing that I'm not so sure about is allowing the execution of the scheduled workflows in tests. I just can't think of a scenario when this would be needed.
Normally when you are scheduling a workflow you never expect it to be run immediately (min resolution of a cron schedule is a minute). So when you are testing the schedule_workflow you only really care that it got scheduled (which you got covered via scheduled hash). Then when you need to test the workflow's code itself — you can do this as you would normally using the start_workflow call.
Please let me know if I'm missing something here

This is a very good addition, thank you. One thing that I'm not so sure about is allowing the execution of the scheduled workflows in tests. I just can't think of a scenario when this would be needed.
Normally when you are scheduling a workflow you never expect it to be run immediately (min resolution of a cron schedule is a minute). So when you are testing the schedule_workflow you only really care that it got scheduled (which you got covered via scheduled hash). Then when you need to test the workflow's code itself — you can do this as you would normally using the start_workflow call.
Please let me know if I'm missing something here

@antstorm good question.  It's not useful in unit tests, but it comes up for us in integration tests.  Suppose an API call schedules a workflow (among other things).  You'd like to make sure the API did the right thing (i.e. scheduled it properly, called it with the right parameters, etc).  So you just execute exactly what it enqueued, and that's a better test than separately re-creating what it did.

@antstorm good question.  It's not useful in unit tests, but it comes up for us in integration tests.  Suppose an API call schedules a workflow (among other things).  You'd like to make sure the API did the right thing (i.e. scheduled it properly, called it with the right parameters, etc).  So you just execute exactly what it enqueued, and that's a better test than separately re-creating what it did.

@drewhoskins-stripe but in that case you are kinda trying to just execute the workflow at the time of schedule, there's no real benefit in waiting to execute it later. I would also expect that inline workflow execution can be quite expensive, so kinda creates an anti-pattern if you just need to check that something got scheduled with the right arguments.
I wonder if there's a better way to check argument compatibility

@drewhoskins-stripe but in that case you are kinda trying to just execute the workflow at the time of schedule, there's no real benefit in waiting to execute it later. I would also expect that inline workflow execution can be quite expensive, so kinda creates an anti-pattern if you just need to check that something got scheduled with the right arguments.
I wonder if there's a better way to check argument compatibility

@anthonydmitriyev Today with our legacy system, our test wrappers around API calls execute the immediately scheduled async events and don't execute the deferred ones.  This works reasonably well in practice, allowing the developer to choose whether to execute is a flexible option, and we haven't found that giving developers the option of executing the async events has led to anti-patterns.  (More often, they're surprised when stuff doesn't get run that they wanted to be run.)
Auto-executing everything inline isn't a great option for speed as you point out.  Synchronous execution also reorders the typical execution flow, making the test less valid.
As a typical example, you could imagine say 30 tests testing an API endpoint, and only 2 will care about the workflow's result enough to execute it and pay the cost in CI.
That said, I like the idea of having an opt-in inline execution mode for scheduled workflows.  I may not have time to build that in this PR, but it could be easily added!

@anthonydmitriyev Today with our legacy system, our test wrappers around API calls execute the immediately scheduled async events and don't execute the deferred ones.  This works reasonably well in practice, allowing the developer to choose whether to execute is a flexible option, and we haven't found that giving developers the option of executing the async events has led to anti-patterns.  (More often, they're surprised when stuff doesn't get run that they wanted to be run.)
Auto-executing everything inline isn't a great option for speed as you point out.  Synchronous execution also reorders the typical execution flow, making the test less valid.
As a typical example, you could imagine say 30 tests testing an API endpoint, and only 2 will care about the workflow's result enough to execute it and pay the cost in CI.
That said, I like the idea of having an opt-in inline execution mode for scheduled workflows.  I may not have time to build that in this PR, but it could be easily added!


chore(deps): upgrade cdklabs-projen-project-types

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-cdklabs-projen-project-types-main" workflow

This PR is no longer needed.  There's has been another PR that updates deps further.

@davidhessler - which PR covered this already?


Add special corner case: support for Error type under opaque value mode

Small part of radar rdar://problem/30080769
Adds support for Swift's Error types, changing the way existential boxes behave under opaque value mode.
Existential boxes need to contain addresses, as such, a special-case consideration is required under opaque value mode - reverting to addresses when dealing with Error types.

@swift-ci Please smoke test


Typo in usage string

fix trivial typo (statuc->status) in usbc shell.

Please to see https://docs.zephyrproject.org/latest/contribute/guidelines.html#static-code-analysis, and modify your commit message.
for example
xxx: title

content

Signed-off-by: last first<email>

assigning to self as a trivial spelling fix


Page 97 has pesky empty page (due to tables being moved)

I tried removing some \clearpages but it's more fiddly than that (like last time)....

The caption was too long for table 25 "Time-series of median posterior population" I remove a couple of redundant words to shorten it.


"Not logged in"

Hello.
I have a problem logging in. Complements the data correctly in the configuration file and turn on BOT;
pietr@VPS:~/PokemonGo-Bot$ ./run.sh
[09:48:54]  PokemonGO Bot v1.0
[09:48:54]  Configuration initialized
[09:48:54]  Not logged in!
Traceback (most recent call last):
  File "pokecli.py", line 465, in <module>
    main()
  File "pokecli.py", line 81, in main
    report_summary(bot)
  File "pokecli.py", line 89, in report_summary
    metrics.capture_stats()
  File "/home/pietr/PokemonGo-Bot/pokemongo_bot/metrics.py", line 75, in capture_stats
    response_dict = self.bot.api.call()
  File "/home/pietr/PokemonGo-Bot/pokemongo_bot/api_wrapper.py", line 57, in call
    if not self._can_call():
  File "/home/pietr/PokemonGo-Bot/pokemongo_bot/api_wrapper.py", line 29, in _can_call
    raise NotLoggedInException()
pgoapi.exceptions.NotLoggedInException

The login details are correct.
Please help.
Thank you.
Other Information
OS:  Debian 7 64
Git Commit: e65602eec5526a74941f17e36f0c90ce49ef018a
Python Version: Python 2.7.3

I think that your config.json file is incorrect. Could you post it?

pietr@VPS:~/PokemonGo-Bot$ cat configs/config.json
{
    "auth_service": "ptc",
    "username": "pkmngopl17",
    "password": "mypassword",
    "location": "Krakow",
    "gmapkey": "AIzaSyA8vIM4rLHcdY8D-xh7okjjBykIoZzScQA",
    "tasks": [
      {
        "type": "HandleSoftBan"
      },
      {
        "type": "CollectLevelUpReward"
      },
      {
        "type": "IncubateEggs",
        "config": {
          "longer_eggs_first": true
        }
      },
      {
        "type": "TransferPokemon"
      },
      {
        "type": "EvolveAll",
        "config": {
          "evolve_speed": 20,
          "use_lucky_egg": true
        }
      },
      {
        "type": "RecycleItems"
      },
      {
        "type": "CatchVisiblePokemon"
      },
      {
        "type": "CatchLuredPokemon"
      },
      {
        "type": "SpinFort"
      },
      {
        "type": "MoveToFort"
      },
      {
        "type": "FollowSpiral"
      }
    ],
    "max_steps": 5,
    "forts": {
      "avoid_circles": true,
      "max_circle_size": 50
    },
    "websocket_server": false,
    "walk": 4.16,
    "action_wait_min": 1,
    "action_wait_max": 4,
    "debug": false,
    "test": false,
    "health_record": true,
    "location_cache": true,
    "distance_unit": "km",
    "reconnecting_timeout": 15,
    "item_filter": {
      "Pokeball":       { "keep" : 100 },
      "Potion":         { "keep" : 10 },
      "Super Potion":   { "keep" : 20 },
      "Hyper Potion":   { "keep" : 30 },
      "Revive":         { "keep" : 30 },
      "Razz Berry":     { "keep" : 100 }
    },
    "evolve_all": "NONE",
    "evolve_cp_min": 300,
    "evolve_captured": "NONE",
    "catch_randomize_reticle_factor": 1.0,
    "catch_randomize_spin_factor": 1.0,
    "catch": {
      "any": {"catch_above_cp": 0, "catch_above_iv": 0, "logic": "or"},
      "// Example of always catching Rattata:": {},
      "// Rattata": { "always_catch" : true }
    },
    "release": {
      "any": {"release_below_cp": 0, "release_below_iv": 0, "logic": "or"},
      "// Example of always releasing Rattata:": {},
      "// Rattata": {"always_release": true},
      "// Example of keeping 3 stronger (based on CP) Pidgey:": {},
      "// Pidgey": {"keep_best_cp": 3},
      "// Example of keeping 2 stronger (based on IV) Zubat:": {},
      "// Zubat": {"keep_best_iv": 2},
      "// Also, it is working with any": {},
      "// any": {"keep_best_iv": 3},
      "// Example of keeping the 2 strongest (based on CP) and 3 best (based on                                                                                IV) Zubat:": {},
      "// Zubat": {"keep_best_cp": 2, "keep_best_iv": 3}
    },
    "vips" : {
         "Any pokemon put here directly force to use Berry & Best Ball to captur                                                                                e, to secure the capture rate!": {},
        "any": {"catch_above_cp": 1200, "catch_above_iv": 0.9, "logic": "or" },
        "Lapras": {},
        "Moltres": {},
        "Zapdos": {},
        "Articuno": {},

        "// S-Tier pokemons (if pokemon can be evolved into tier, list the repre                                                                                sentative)": {},
        "Mewtwo": {},
        "Dragonite": {},
        "Snorlax": {},
        "// Mew evolves to Mewtwo": {},
        "Mew": {},
        "Arcanine": {},
        "Vaporeon": {},
        "Gyarados": {},
        "Exeggutor": {},
        "Muk": {},
        "Weezing": {},
        "Flareon": {}

    }

The login and password are correct. I checked on another bot.

Don't know if the credentials are your actual ones, but remove them if they are 😉.
Will look into it and try some things, hold on.

You try. Password; pkmngopl

No, I mean that you should remove them from your posts. Otherwise other people will be able to log into your account. Remove the username, password and google maps key.

The problem was your Google Maps Key, it was incorrect. I tried it with mine and it worked. Try another one.

I created a new key in https://console.developers.google.com/apis
Still not working.
https://zapodaj.net/images/c342a87823709.png

Thanks. I fixed the problem. :)

Nice! You're very welcome 😄

Tell everyone how to solve the problem. Faced with the same. :(

Also faced with this problem would love to know how to resolve?
Thanks

@pickett2k  Try another location, it helped me.
Example: "location": "-33.857783, 151.215069"

Yea this is a location error, I realised I had not put a , in between coordinates, after that it worked straight away


Do people run tests with ruby -Ilib:test?

Had someone reach out because running tests with the following invocation doesn't work:
ruby -Ilib:test test/models/user_test.rb

Is that a normal way to invoke tests? I've always used rails test ... or rake test TEST=....

I also just run rails test

I just tried the ruby -Ilib:test method of invocation and this is the error, just for reference:
$ ruby -I"lib:test" test/models/user_test.rb
/Users/jgreen/projects/bullet-train-co/bullet_train/config/initializers/bullet_train.rb:1:in `<main>': undefined method `configure' for BulletTrain:Module (NoMethodError)

BulletTrain.configure do |config|
           ^^^^^^^^^^
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:667:in `load'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:667:in `block in load_config_initializer'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/activesupport-<IP_ADDRESS>/lib/active_support/notifications.rb:208:in `instrument'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:666:in `load_config_initializer'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:620:in `block (2 levels) in <class:Engine>'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:619:in `each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/engine.rb:619:in `block in <class:Engine>'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:32:in `instance_exec'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:32:in `run'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:61:in `block in run_initializers'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:228:in `block in tsort_each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:422:in `block (2 levels) in each_strongly_connected_component_from'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:431:in `each_strongly_connected_component_from'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:421:in `block in each_strongly_connected_component_from'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:50:in `each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:50:in `tsort_each_child'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:415:in `call'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:415:in `each_strongly_connected_component_from'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:349:in `block in each_strongly_connected_component'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:347:in `each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:347:in `call'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:347:in `each_strongly_connected_component'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:226:in `tsort_each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/tsort.rb:205:in `tsort_each'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/initializable.rb:60:in `run_initializers'
        from /Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/gems/3.2.0/gems/railties-<IP_ADDRESS>/lib/rails/application.rb:372:in `initialize!'
        from /Users/jgreen/projects/bullet-train-co/bullet_train/config/environment.rb:5:in `<top (required)>'
        from /Users/jgreen/projects/bullet-train-co/bullet_train/test/test_helper.rb:2:in `require_relative'
        from /Users/jgreen/projects/bullet-train-co/bullet_train/test/test_helper.rb:2:in `<top (required)>'
        from <internal:/Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
        from <internal:/Users/jgreen/.asdf/installs/ruby/3.2.2/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:85:in `require'
        from test/models/user_test.rb:1:in `<main>'

I really don't think that's a valid way to run a single test if you're inside of a rails application. It seems to skip some of the Rails Magic around loading of gems, or something.
I think we can close this one.

Just here to confirm that I got the same error.
If it's an eager loading issue, that's been one of the big problems we've encountered with tests across the whole bt architecture. Also in favor of closing this one.


Job Queue Priority (nice)

yipdw: anyway, I'm not sure if we really need pipeline-only queues anymore
yipdw: they were added to solve a "I gotta get this shit archived now" need but I'm wondering if there is perhaps a cleaner solution
yipdw: as it stands, pipeline-specific queues interact badly with !status, queue persistence, !ao
yipdw: perhaps the solution is to just clean those up
chfoo: maybe unix nice values
chronomex: yeah
chronomex: nice values for pipelines
chronomex: i was typing the same thing in more words
yipdw: niceing a job?
yipdw: or the pipeline
chronomex: job
aaaaaaaaa: I don't understand nicing?  you mean giving them different priorities?
chronomex: anyone can submit a job, operators can submit a job with priority
chronomex: yes
yipdw: what if you have a bunch of jobs at default nice, it fills the pipeline, and a job comes in at max nice
chronomex: max nice = lowest pri, so that goes to the end of the queue
chronomex: and stays there until the q is empty
yipdw: er
yipdw: oops
yipdw: min
chronomex: jumps to the front of the q
yipdw: oh, wait
chfoo: maybe use redis sorted sets. not sure if it offers atomicity needed though
chronomex: q is sorted into zones by nice
yipdw: I think I get it
yipdw: chfoo: they don't sadly, there's no ZPOP
yipdw: though I think one could be implemented with a Lua script
yipdw: er no equivalent of RPOPLPUSH
chronomex: yipdw: yeah. high-old then high-new, then low-old, then low-new jobs
chronomex: in that order
yipdw: chronomex: I guess if a pipeline was told to only look at nice > = n then it'd effectively be the "high priority" pipeline
chronomex: right
chronomex: you could do that
yipdw: ok
yipdw: someone file that as an issue
yipdw: :P
yipdw: or I can do it, it'll just be a while
chfoo: yipdw: i'll do it

I think this should really behave like Unix nice, i.e. the default niceness is zero, and normal users can always increase the niceness of their jobs but only ops can decrease it or modify the niceness of others' jobs. And it would be nice (pun intended) if there was a !renice <jobid> <niceness> command as well, equivalent to renice(1), to change the priority while a job is still in the queue. That would allow ops to reorder the queue. It would obviously have to throw an error if the job is already in progress.


<EMAIL_ADDRESS>download via aria2 failed

The log I got after running the command
scoop install okular
` WARN  Purging previous failed installation of okular.
ERROR 'okular' isn't installed correctly.
Removing older version (23.08.4-1673).
'okular' was uninstalled.
Starting download with aria2 ...
Download: 03/03 15:54:10 [ERROR] CUID#8 - Download aborted. URI=https://binary-factory.kde.org/job/Okular_Release_win64/Download: Exception: [AbstractCommand.cc:351] errorCode=19 URI=https://binary-factory.kde.org/job/Okular_Release_win64/1Download:   -> [AbstractCommand.cc:789] errorCode=19 CUID#8 - Name resolution for binary-factory.kde.org failed:Domain nDownload: Download Results:
Download: gid   |stat|avg speed  |path/URI
Download: ======+====+===========+=======================================================
Download: 2baf71|ERR |       0B/s|D:/Program Files/Scoop/cache/okular#23.08.4-1673#https_binary-factory.kde.org_job_Okular_Release_win64_1673_artifact_okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z
Download: Status Legend:
Download: (ERR):error occurred.
Download: aria2 will resume download if the transfer is restarted.
Download: If there are any errors, then see the log file. See '-l' option in help/man page for details.
ERROR Download failed! (Error 19) Name resolution failed
ERROR https://binary-factory.kde.org/job/Okular_Release_win64/1673/artifact/okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z
referer=https://binary-factory.kde.org/job/Okular_Release_win64/1673/artifact/
dir=D:\Program Files\Scoop\cache
out=okular#23.08.4-1673#https_binary-factory.kde.org_job_Okular_Release_win64_1673_artifact_okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z
ERROR & 'D:\Program Files\Scoop\apps\aria2\current\aria2c.exe' --input-file='D:\Program Files\Scoop\cache\okular.txt' --user-agent='Scoop/1.0 (+http://scoop.sh/) PowerShell/7.4 (Windows NT 10.0; Win64; x64; Core)' --allow-overwrite=true --auto-file-renaming=false --retry-wait=2 --split=5 --max-connection-per-server=5 --min-split-size=5M --console-log-level=warn --enable-color=false --no-conf=true --follow-metalink=true --metalink-preferred-protocol=https --min-tls-version=TLSv1.2 --stop-with-process=3548 --continue --summary-interval=0 --auto-save-interval=1
Please try again or create a new issue by using the following link and paste your console output:
https://github.com/ScoopInstaller/Extras/issues/new?title=okular%4023.08.4-1673%3A+download+via+aria2+failed `
Maybe some of you would say, you should have scoop install extras/okular run these!
But the error persist
Also I found a file named "okular.txt" in cache folder with,
https://binary-factory.kde.org/job/Okular_Release_win64/1673/artifact/okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z     referer=https://binary-factory.kde.org/job/Okular_Release_win64/1673/artifact/     dir=D:\Program Files\Scoop\cache     out=okular#23.08.4-1673#https_binary-factory.kde.org_job_Okular_Release_win64_1673_artifact_okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z
these in it.
Need something else I didn't provide let me know

Tried using scoop config aria2-enabled false
still No such host is known. (binary-factory.kde.org:443) URL https://binary-factory.kde.org/job/Okular_Release_win64/1673/artifact/okular-23.08.4-1673-windows-cl-msvc2019-x86_64.7z is not valid

Relates to #12897.


GEODE-2409: Beautify readme

Add Apache Geode banner image
Add badges for the latest version in Maven Central and for the Apache 2.0 license
Improve formatting for the table of contents

See here to view the updated readme in your browser.

+1 - Looks great, Jared.

+1


Add Couscous to 'Static Site Generators' section

Added http://couscous.io/ to the 'Static Site Generators' section.

:+1:

Thanks!

Hello!
New message, please read http://free-tatting.com/could.php?ug
<EMAIL_ADDRESS>


"tag" in sti command --help causes confusion

For example...
$ sti rebuild --help
...
Usage:
  sti rebuild <image> [<new-tag>] [flags]

$ sti build --help
...
Usage:
  sti build <source> <image> [<tag>] [flags]

It seems that <tag> and <new-tag> means image name. However, in general docker, "tag" means latest, v3 and so on.

$ docker build also has --tag option to add Repository name. So it may be not wrong.
Is it just me or it causes confusion?

The syntax follows docker's build syntax which uses the "-t" tag argument
to tag the result image of a docker build.
Tag can mean either what you described, or the entire name of the image.
Ben Parees | OpenShift
On Aug 19, 2015 2:27 AM, "Kenjiro Nakayama"<EMAIL_ADDRESS>wrote:

For example...
$ sti rebuild --help
...
Usage:
sti rebuild  [] [flags]
$ sti build --help
...
Usage:
sti build   [] [flags]
It seems that  and  means image name. However, in general
docker, "tag" means latest, v3 and so on.
—
Reply to this email directly or view it on GitHub
https://github.com/openshift/source-to-image/issues/269.

Thank you. I understand. It looks like no problem. Please feel free to close this issue.


remaining issue on the mljinterface

          @Rockdeldiablo I've added the following changes now to make things work without having to overload the `update` method or changing it in MLJFlux:

The train method now returns la, optimiser_state, history where la is the Laplace object. This way, the object does not need to be stored as a field of the struct and the problem with update is avoided.
To facilitate this change, calling a Laplace object on an array, (la::AbstractLaplace)(X::AbstractArray) now simply calls the underlying neural network on data. In other words, it returns the generic predictions, not LA predictions.
The fitresult method was adjusted also for the classification case.

Now that tests are passing, there are a few more things to do (possibly in a new issue + PR) if you like.

[ ] Add a (short) tutorial to the documentation.
[ ] Double-check if the code in src/mlj_flux.jl can be streamlined further (e.g. do we actually still need to overload MLJFlux.build)?

For now, feel free to to focus on the other PR, just ping me and @MojiFarmanbar when you come back to this one. I need to move on to other things for now.
Originally posted by @pat-alt in https://github.com/JuliaTrustworthyAI/LaplaceRedux.jl/issues/92#issuecomment-2200204269

[ ]  i have been trying to  cross check the various branches and i think that the new parameter ret_distr has to be added to the struct.

I will work on the docs in a pull request separate from the coding part if you don't mind.


can the "time" variable(s?) be called something other than "time"?

We've had some similar discussions in the past, how to identify time variables / dimensions / coordinates, following CF conventions, with or without access to udunits, and so on. Annick recently brought this up again (although more aimed at regrid), related discussion on Slack in #ops-development: https://metocean.slack.com/archives/C014SM7A5AN/p1680230791844669 .

Some code in this repo currently definitely does rely on the variable having the name "time", for example:
https://github.com/metocean/cf-json/blob/21a3d2e497c29011880b7d78177b02468d1cdfc0/cfjson/xrdataset.py#L84-L88

Almost certainly the case in some of our other repos too (e.g., regrid-api / interpolation_library).

And at the moment, I'm pretty sure we're not requiring that name by convention (CF 1.10 definitely doesn't care: "This convention does not standardize any variable or dimension names.", and we don't mention it in our API conventions either), so that combo is of course not ideal... :)


Using Firebase Firestore Listener with Firebase Authentication Freezes in Editor every time

Unity editor version: 2021.2.18f1
Firebase Unity SDK version: 9.1.0
Source you installed the SDK: unity package (.unitypackage or Unity Package Manager)
Problematic Firebase Component: Auth (Auth, Database, etc.)
Other Firebase Components in use: FireStore (Auth, Database, etc.)
Additional SDKs you are using: _____ (Facebook, AdMob, etc.)
Platform you are using the Unity editor on: Windows (Mac, Windows, or Linux)
Platform you are targeting: Android (iOS, Android, and/or desktop)
Scripting Runtime: IL2CPP (Mono, and/or IL2CPP)

[REQUIRED] Please describe the issue here:
Followed the tutorial on the firebase youtube channel for Firestore listener that updates on firestore and on the game as a text field using a getCharacterData  script that uses a characterData struct  to listen for updates and a setCharacterData script for writing to firestore from input fields on button press. The game also has a Login and Registration function with Firebase Authentication in a seperate Auth script. Both the set of 3 Firestore Scripts and the 1 Authentication scripts work fine alone. The issue that keeps occurring is when both are included the unity editor freezes when running the game to test. Removing either of them solves this for the other. Is there a way to use Authentication and FireStore in the same App that will resolve this issue? I get no error codes. The editor just freezes on run. :/ Based on it crashing I assume the issue is the start function setting firestore as a default instance of firebase and running the listener on the GetPlayerData Script or the Initialize Firebase on the Awake function for Authentication on the Auth script. I am guessing they are clashing since removing the game object with the scripts solves the issues for the other and does not crash the game when running the unity editor. Sorry if this was too detailed or not detailed enough, this is my first question on here, I have honestly tried so hard to make this work and have hit a full dead end with no error codes to guide me and no documentation that solves this issue. Any help would be greatly appreciated.
Steps to reproduce:
Running a firestore listener with an authentication script and running the game in unity crashes unity
Relevant Code:
//Firestore Get Player Data Listener code snippet
private ListenerRegistration listenerRegistration;
void Start()
{
    var firestore = FirebaseFirestore.DefaultInstance;

    listenerRegistration = firestore.Document(playerPath).Listen(snapshot =>
    {
        var playerData = snapshot.ConvertTo<PlayerData>();

        userNameText.text = $"UserName: {playerData.UserName}";
        factionText.text = $"Faction: {playerData.Faction}";
    });
}

//Awake and Initialize Firebase Functions for Auth
void Awake()
{
//Check that all of the necessary dependencies for Firebase are present on the system
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
{
dependencyStatus = task.Result;
if (dependencyStatus == DependencyStatus.Available)
{
//If they are avalible Initialize Firebase
InitializeFirebase();
}
else
{
Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
}
});
}
private void InitializeFirebase()
{
    Debug.Log("Setting up Firebase Auth");
    //Set the authentication instance object
    auth = FirebaseAuth.DefaultInstance;
}

// TODO(you): code here to reproduce the problem

//Code to reproduce
//The PlayerData Struct used for listener
[FirestoreData]
public struct PlayerData
{
[FirestoreProperty]
public string UserName { get; set; }

[FirestoreProperty]

public string Faction { get; set; }

}
//The Set Player Data Script
public class SetPlayerData : MonoBehaviour
{
[SerializeField] private string playerPath = "Users/Player1";

[SerializeField] private TMP_InputField userName;
[SerializeField] private TMP_InputField faction;

[SerializeField] private Button submitButton;

void Start()
{
    submitButton.onClick.AddListener(() =>
    {

        var playerData = new PlayerData
        {
            UserName = userName.text,
            Faction = faction.text,
        };

        var firestore = FirebaseFirestore.DefaultInstance;
        firestore.Document(playerPath).SetAsync(playerData);
    });
}

}
//Get Player Data Script
public class GetPlayerData : MonoBehaviour
{
[SerializeField] private string playerPath = "Users/Player1";
[SerializeField] private TMP_Text userNameText;

[SerializeField] private TMP_Text factionText;

private ListenerRegistration listenerRegistration;

void Start()
{
    var firestore = FirebaseFirestore.DefaultInstance;

    listenerRegistration = firestore.Document(playerPath).Listen(snapshot =>
    {
        var playerData = snapshot.ConvertTo<PlayerData>();

        userNameText.text = $"UserName: {playerData.UserName}";
        factionText.text = $"Faction: {playerData.Faction}";
    });
}

void OnDestroy()
{
    listenerRegistration.Stop();
}

}
//End of Firestore Scripts
//The Auth Script
public class Auth : MonoBehaviour
{
//Firebase variables
[Header("Firebase")]
public DependencyStatus dependencyStatus;
public FirebaseAuth auth;
public FirebaseUser User;
//Login variables
[Header("Login")]
public TMP_InputField emailLoginField;
public TMP_InputField passwordLoginField;
public TMP_Text warningLoginText;
public TMP_Text confirmLoginText;

//Register variables
[Header("Register")]
public TMP_InputField usernameRegisterField;
public TMP_InputField emailRegisterField;
public TMP_InputField passwordRegisterField;
public TMP_InputField passwordRegisterVerifyField;
public TMP_Text warningRegisterText;

void Awake()
{
    //Check that all of the necessary dependencies for Firebase are present on the system
    FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task =>
    {
        dependencyStatus = task.Result;
        if (dependencyStatus == DependencyStatus.Available)
        {
            //If they are avalible Initialize Firebase
            InitializeFirebase();
        }
        else
        {
            Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
        }
    });
}

private void InitializeFirebase()
{
    Debug.Log("Setting up Firebase Auth");
    //Set the authentication instance object
    auth = FirebaseAuth.DefaultInstance;
}

//Function for the login button
public void LoginButton()
{
    //Call the login coroutine passing the email and password
    StartCoroutine(Login(emailLoginField.text, passwordLoginField.text));
}
//Function for the register button
public void RegisterButton()
{
    //Call the register coroutine passing the email, password, and username
    StartCoroutine(Register(emailRegisterField.text, passwordRegisterField.text, usernameRegisterField.text));
}

private IEnumerator Login(string _email, string _password)
{
    //Call the Firebase auth signin function passing the email and password
    var LoginTask = auth.SignInWithEmailAndPasswordAsync(_email, _password);
    //Wait until the task completes
    yield return new WaitUntil(predicate: () => LoginTask.IsCompleted);

    if (LoginTask.Exception != null)
    {
        //If there are errors handle them
        Debug.LogWarning(message: $"Failed to register task with {LoginTask.Exception}");
        FirebaseException firebaseEx = LoginTask.Exception.GetBaseException() as FirebaseException;
        AuthError errorCode = (AuthError)firebaseEx.ErrorCode;

        string message = "Login Failed!";
        switch (errorCode)
        {
            case AuthError.MissingEmail:
                message = "Missing Email";
                break;
            case AuthError.MissingPassword:
                message = "Missing Password";
                break;
            case AuthError.WrongPassword:
                message = "Wrong Password";
                break;
            case AuthError.InvalidEmail:
                message = "Invalid Email";
                break;
            case AuthError.UserNotFound:
                message = "Account does not exist";
                break;
        }
        warningLoginText.text = message;
    }
    else
    {
        //User is now logged in
        //Now get the result
        User = LoginTask.Result;
        Debug.LogFormat("User signed in successfully: {0} ({1})", User.DisplayName, User.Email);
        warningLoginText.text = "";
        confirmLoginText.text = "Logged In";
    }
}

private IEnumerator Register(string _email, string _password, string _username)
{
    if (_username == "")
    {
        //If the username field is blank show a warning
        warningRegisterText.text = "Missing Username";
    }
    else if (passwordRegisterField.text != passwordRegisterVerifyField.text)
    {
        //If the password does not match show a warning
        warningRegisterText.text = "Password Does Not Match!";
    }
    else
    {
        //Call the Firebase auth signin function passing the email and password
        var RegisterTask = auth.CreateUserWithEmailAndPasswordAsync(_email, _password);
        //Wait until the task completes
        yield return new WaitUntil(predicate: () => RegisterTask.IsCompleted);

        if (RegisterTask.Exception != null)
        {
            //If there are errors handle them
            Debug.LogWarning(message: $"Failed to register task with {RegisterTask.Exception}");
            FirebaseException firebaseEx = RegisterTask.Exception.GetBaseException() as FirebaseException;
            AuthError errorCode = (AuthError)firebaseEx.ErrorCode;

            string message = "Register Failed!";
            switch (errorCode)
            {
                case AuthError.MissingEmail:
                    message = "Missing Email";
                    break;
                case AuthError.MissingPassword:
                    message = "Missing Password";
                    break;
                case AuthError.WeakPassword:
                    message = "Weak Password";
                    break;
                case AuthError.EmailAlreadyInUse:
                    message = "Email Already In Use";
                    break;
            }
            warningRegisterText.text = message;
        }
        else
        {
            //User has now been created
            //Now get the result
            User = RegisterTask.Result;

            if (User != null)
            {
                //Create a user profile and set the username
                UserProfile profile = new UserProfile { DisplayName = _username };

                //Call the Firebase auth update user profile function passing the profile with the username
                var ProfileTask = User.UpdateUserProfileAsync(profile);
                //Wait until the task completes
                yield return new WaitUntil(predicate: () => ProfileTask.IsCompleted);

                if (ProfileTask.Exception != null)
                {
                    //If there are errors handle them
                    Debug.LogWarning(message: $"Failed to register task with {ProfileTask.Exception}");
                    FirebaseException firebaseEx = ProfileTask.Exception.GetBaseException() as FirebaseException;
                    AuthError errorCode = (AuthError)firebaseEx.ErrorCode;
                    warningRegisterText.text = "Username Set Failed!";
                }
                else
                {
                    //Username is now set
                    //Now return to login screen
                    UIManager.instance.LoginScreen();
                    warningRegisterText.text = "";
                }
            }
        }
    }
}

}

Fixed

Hi @og1337og,
Thanks for reporting this issue. Based on the code you provided, it seems that you're declaring two Firestore instances in your app. This may be related to an issue (#928) with how persistence is implemented when running on desktop.
Could you confirm if disabling persistence makes a difference? You may do so by adding something like:
#if UNITY_EDITOR
  FirebaseFirestore.DefaultInstance.Settings.PersistenceEnabled = false;
#endif

Additionally, does the crash occur using an Android build?

Hello,
Yes the issues was that I was calling two default instances. One for Auth to handle User Login, Register and UID check for Documnet Name but also another for the Firestore Database to have a listener on the user's database info. The 2 of them running at the same time using
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(async task =>
{ }
in the Awake function was not compatible with 2 of them on the desktop and was freezing the app when testing in the editor.
Also, you were right, changing the build to Android allowed it to run without freezing. The only issue I had was it only allowed auth login and register and the write to firestore but the listener to read from firestore as updates came in was did not work, I guess because it wouldn't allow two instances.
I altered the code by adding the Get Player Data script to the Auth script both the declarations and the start function. Then modified the Awake function to
async void Awake()
{
//Check that all of the necessary dependencies for Firebase are present on the system
//   FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(async task =>
//   {
var dependencyStatus = await FirebaseApp.CheckAndFixDependenciesAsync();
if (dependencyStatus == DependencyStatus.Available)
{
//If they are avalible Initialize Firebase
InitializeFirebase();
}
else
{
Debug.LogError("Could not resolve all Firebase dependencies: " + dependencyStatus);
}
//  });
}
You can see that I changed it to an async void Awake() and removed the
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(async task =>
{ }
The last thing I did was I added "await" in front of the FirebaseApp.CheckAndFixDependenciesAsync();
Using this method I can now run the game in Unity editor without the game freezing and it runs on Desktop using both an Auth DefaultInstance and a Firestore DefaultInstance so I can register a new user, update the Firestore database with their info and and use the listener on button click to update that information on their screen and still login in and out again with out any interference from either Firebase product. Thank you so much for taking time to help. Without error codes I felt lost, I hope this code helps others trying to run authentication and Firestore at the same time and run into this problem that want to keep being able to test in the editor. Thank you again.

Glad to hear that you've found a solution, @og1337og. I'll be closing this for now. Let me know if a new issue arises with this,

The work around unfortunatley only works on desktop. On android neither one works. When I added the FirebaseFirestore.DefaultInstance.Settings.PersistenceEnabled = false; in the awake method like you recomended the application stops crashing in the editor but on android only Firebase Authentication works. Its like this bit of code just disabled Firestore when using that line of code. Is there some workaround for this because at this point I don't think it is possible to use both Firestore and Authentication in the same app due to the default instance being required for both Firestore as db and Authentication as auth.

Hi @og1337og,
Were you able to include the conditional compilation for the Unity editor (#if UNITY_EDITOR) in your code? That should ensure that the persistence is only disabled when using the editor.
Also, when you mentioned "neither one works", do you mean that Firestore doesn't function regardless whether the workaround is there or not?
If the issue is still there, it would be helpful if you share a minimal, reproducible example of your implementation so that we could analyze this behavior.

Hi @og1337og,
So far, I haven't successfully built and replicated the issue. Is it possible for you to upload a sample project that reproduces the issue? You may do so by uploading this to a GitHub repository and adding me as a collaborator.

I've created a repository that has the scripts used and the scenes used in the build and added you as a collaborator. Please let me know if there is anything else I can do to help. Thank you.

Thanks for this, @og1337og. I'm getting a warning that a certain AuthManager is missing. Could you confrim if this script is needed?

The AuthManager is not being used currently, I instead am using the Auth script instead but I added the old AuthManager script now for reference to the repository if that helps.

Hi @og1337og,
After tinkering the repository you provided to make a working Unity project, I was able to replicate the issue you're facing. Upon inspecting your code, I noticed that Auth is being initialized in Awake() function while Firestore is being initialized in Start() function. Take note that Awake is called when an active GameObject that contains the script is initialized when a Scene loads while Start is called on the frame when a script is enabled.
With that, Firestore should work when you place its initializtion (followed by the conditional compilation) after the Auth initialization in the Awake() function. It should look something like this:
private void InitializeFirebase()
    {
        auth = FirebaseAuth.DefaultInstance;
        db = FirebaseFirestore.DefaultInstance;
#if UNITY_EDITOR
        db.Settings.PersistenceEnabled = false;
#endif
...
}

Let me know if the solution doesn't apply to your use case or if an issue arises.

Hello, thank you so much that was 100% the problem calling one in the awake and one in the start. Works 100% now.


Doesn't work on the mobile version of safari

ios 14.8.1
npx esbuild main.js --outfile=../dist/js/bundle.js --bundle --watch

import Clipboard from "@ryangjchandler/alpine-clipboard"

Alpine.plugin(Clipboard)

window.Alpine = Alpine;

Alpine.start()

        <p>
            <button type="button" @click="$clipboard(res)" class="btn-pink">Copy</button>
        </p>

According to caniuse, it should work fine: https://caniuse.com/mdn-api_clipboard_writetext

I found the problem, Mobile phone debugging requires https, for example: https://<IP_ADDRESS>
https://segmentfault.com/q/1010000019566122

@jet10000 Yeah, that's a requirement. HTTPs or localhost domains are required.


Thumbnail quality updates

Return webp thumbnails instead of jpg thumbnails
Return higher resolution thumbnails

After the merge, I went through and tried to tidy up everything that relies on thumbnails so that if webp is available, that is used.  Thanks for the suggestion.


Don't expose rpc component to outside

Purpose of the pull request

Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

(or)
If your pull request contain incompatible change, you should also add it to docs/docs/en/guide/upgrede/incompatible.md

Codecov Report
Attention: Patch coverage is 66.66667% with 8 lines in your changes are missing coverage. Please review.

Project coverage is 39.76%.  Consider uploading reports for the commit a076303 to get more accurate results

Files
Patch %
Lines

...ase/server/SpringServerMethodInvokerDiscovery.java
0.00%
8 Missing :warning:

Additional details and impacted files
@@             Coverage Diff              @@
##                dev   #15946      +/-   ##
============================================
- Coverage     39.79%   39.76%   -0.03%
+ Complexity     5044     5027      -17
============================================
  Files          1353     1353
  Lines         45619    45603      -16
  Branches       4891     4891
============================================
- Hits          18156    18136      -20
- Misses        25553    25557       +4
  Partials       1910     1910

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Fix for nvim (Updated Elapsed time) - call it with either s:warn nor setline(1,..)

I got problem with current buffer what littered with text "Updated. Elapsed time ..." on :PlugUpgrade

I can't reproduce the problem. You might want to see if the problem still exists in the latest version of vim-plug.


Docstring tooltips not shown for Player etc. moddable properties in inspector

Reproduced in Godot 4.3.stable and 4.4-dev3.

@wjt if you close the project, remove the .godot folder and then open the project again. Do the tooltips show up?

It's non-deterministic… I now can't reproduce this problem at all, whether or not I delete .godot.

While experimenting I gave player.gd a class_name and top-level docstring, which I added to #11 together with some further documentation and a bunch of CI fixes.


Is anyone get a files.json dowload link from {{url}}?

If I upload an image or an pdf file, everything works fine.  But if I upload a different kind of file, like a .docx, and use {{file.url}} to link to the file, even though it says the correct url, when I click to download, it downloads a "files.json" file. If I use {{file.path}} to link to the file, I get an "unexpected error" message at the link.  Has this happened to anyone else?  I can see in my database that both the absolute url and the path are correct, so I'm wondering if this is an issue related to file type.
update: I changed the extension from json back to docx, and low and behold, it was my file.  So now I am totally miffed, I checked the response headers and they looked correct...really don't understand why it changed the name and extension of my file

Friday will check this asap.

FridaG, I checked it today and I got the standard behaviour and can download anything I can. I have created a small test project which you can find here https://dl.dropboxusercontent.com/u/3418607/UploadTest.zip. Try if it is doing the same.

Tomitrescak, I hope you know how much I appreciate the work and help you've put into this project, I will definitely be passing the help on as much as I can.  What browser are you using?  I tried your test project, but it gave me the same behavior I was receiving: a .doc gave me a files.json in both mozilla firefox and chrome, but I can change the extension of the file after download and it is correct.
Do you think sending an application/octet-stream header would sort it out?

Here are my headers.  of note is that when I have this issue with the files.json, I get three GET requests, wheras I only have one for files like pdfs where it works perfectly:

and here with a .docx (please don't waste your time if you think this is just an issue with my personal hardware!)

info callback:

last one: here's a working pdf example:

and the single GET request:

Frida, version 1.2.0 solves these problems. I had to replace the whole file serving middleware since connect was acting up on me. Now I'm checking also on file existence and returning 404 when file does not exist or 403 when trying to get the directory or 500 when trying to go for symlinks. Also please note that server now supports these mime types:
mimeTypes: {
    "html": "text/html",
    "jpeg": "image/jpeg",
    "jpg": "image/jpeg",
    "png": "image/png",
    "gif": "image/gif",
    "js": "text/javascript",
    "css": "text/css",
    "pdf": "application/pdf",
    "doc": "application/msword",
    "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "zip": "application/zip, application/x-compressed-zip",
    "txt": "text/plain"
  }

everything else is served as octet stream. I hope this will work for you, please close this issue if it will.

<3!! you are a miracle worker, it is all sorted now.  yes, thank you very much.

closed #45

Glad I could help, I'll close this issue if you don't mind. Please reopen if necessary.


[Docs][Rail] Add font-size: inherit; to segments in the “Size” section

In the wiki, the rail size is same. did I missing somthing ?

Hi @AaricChen, sorry about the documentation, it could be better. As stated in the beginning of the page, the rail is always 300px, and different sizes simply change a rail’s font-size. Inspect a segment inside of a rail, find the .ui.segment, .ui.segments .segment rule, and change its font-size to inherit to see it.

thanks for your response.

At some point in the past segments changed to rem so they wouldnt apply. Modified examples.


true is not iterable while installing sdk

Hello harness people,
when installing ff sdk to my project (latest version 1.4.9), yarn install fails with
Yarn version:
  1.22.17

Node version:
  14.18.1

Platform:
  darwin x64

Trace:
  TypeError: true is not iterable!
      at module.exports.module.exports.__webpack_require__.getIterator (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:105587:42)
      at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:48787:192)
      at Generator.next (<anonymous>)
      at step (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:310:30)
      at /usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:328:14
      at new Promise (<anonymous>)
      at new F (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:5301:28)
      at PackageLinker.<anonymous> (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:307:12)
      at PackageLinker.linkBinDependencies (/usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:48834:20)
      at /usr/local/Cellar/yarn/1.22.17_2/libexec/lib/cli.js:49400:28

when tryin 1.4.7, all looks fine.

Hi @trubi, pull request PR67 was created. pls try rc version:
yarn add<EMAIL_ADDRESS>


Use exit_spot to draw spot indicator

Coverage decreased (-0.2%) to 36.267% when pulling 303d53bcacf23f681408eb5bf46ffb746daaba9c on qingweibinary:qingwei/better_spot_indicator_in_contract into 141a4dbfc1250162f44fa9920de2d2c5821ec1ef on binary-com:master.

Not ready to merge


Handle memory limits dynamically

There are two places in the pipeline where we merge nodes and edges, removing duplicates and consolidating properties: during the normalization of a data source and during graph building where multiple data sources are combined. These are the events that have historically caused memory issues when holding many edges or nodes in memory at once. To avoid memory issues a hybrid on-disk merging technique was implemented.
As of now whether or not the on-disk merging technique is used is determined by a list of data sources considered "resource hogs". This is not perfect because merging a large number of small data sources could still consume too much memory. It is also complicated by the inclusion of sub graphs which may or may not include resource hogs. Additionally, there is currently no way to specify the amount of available RAM or to have which sources are considered hogs adapt to that configuration.
We should instead implement an environment variable specifying the amount of available memory and dynamically recognize before merges whether or not the specified amount of RAM is sufficient for merging in memory vs on disk. This could be done by eliminating the resource hog list and checking the actual metadata available at the time for the sources being used.

Additionally, the in memory merging technique has converted node or edge objects to json strings during the merging process to conserve memory, but it's become apparent by data sources with a very high number of merges that this technique is unacceptably slow. On disk merging works and is faster in these cases. The json strategy should be removed when we implement a dynamic way to recognize when too much memory would be consumed.


Support for Invoking Edge Functions Returning a Stream in supabase-flutter

Hi supabase-flutter maintainers,
thanks for the great work! I have a feature request regarding invoking edge functions outlined below:
Is your feature request related to a problem? Please describe.
Yes. Currently, there seems to be no possibility to invoke an Edge Function that returns a Stream using supabase-flutter.
Describe the solution you'd like
I would like to see the implementation of an additional function, which could return a Stream of server-sent events instead of a Future.
Describe alternatives you've considered
One alternative I considered was to simply await the full result. However, this would leave the user waiting for a long period, which is not an ideal user experience.
Additional context
The motivation is a project, where we are looking to implement a ChatGPT interface within our Flutter application, and we need to stream the response of the API call to OpenAI to the user in real-time.
Implementing this functionality on the backend as an Edge Function was straightforward enough - I followed the tutorial on Streaming Data in Edge Functions by Supabase (https://www.youtube.com/watch?v=9N66JBRLNYU).
The challenge is on the client side. The SupabaseClient.functions.invoke method in supabase-flutter appears to await the full result and doesn't provide an option to return a stream of server-sent events.
Thanks for the consideration!
Best,
David

@david-fischer
We actually will not support this on our client library, but there are third party packages such as flutter_client_sse that you can use to get data as stream.
Here is an javascript implementation sample that might help!
https://github.com/orgs/supabase/discussions/13124#discussioncomment-5596708

Hello @dshukertjr,
thanks for the quick reply and the guidance regarding the implementation!
Definetly, implementing calling the edge-function and get the data as stream would be another possibility, that I did not explicitly state in my issue. Generally, this is something I would be very happy to avoid, as I basically have to duplicate logic from the SupabaseClient, introducing a further coupling to specifics in the API, authentication, etc... into our codebase.
Is there any place, where Supabase users can upvote feature-requests to maybe influence your roadmap? I feel like specifically with chatGPT, this seems like a very common use-case that greatly improves the end-user experience!
Thanks and kind regards,
David

@david-fischer We don't really have a single source of truth for the community to upvote on feature requests, but I can pass the feedback to the functions team internally.

Let me transfer this issue to functions-js repo so that more people can see this and comment on it.


[website] Open Staff Engineer role for Pigment CSS

Preview: https://deploy-preview-42531--material-ui.netlify.app/careers/staff-engineer-pigment-css/

Rebased on HEAD to avoid #42530.


Designed the HomePage

Add the preview of your Home Page

ok i will

i Did my changes plz check

hi, plz tell me where i need to do else how to solve this conflict files


Search for bind in pipeline state viewer

Description
With bindless tables, the number of resources listed in the pipeline state viewer can get out of hand. Even with the filtering to used/non-empty entries, there are still a lot of resources to scroll through to find a specific entry. Having a button to search for a specific bind, by register space and shader register, would help when you know about where you're looking (such as when shader debugging an error with a wrong resource array index).
Steps to reproduce

Create a shader with a very large bindless table
Fill it in with a lot of entries
Pick one of the entries and find the needle in the haystack

Environment

RenderDoc version: latest commit
Operating System: Windows 10
Graphics API: D3D12

Is this still relevant now that bindless feedback is supported on D3D12 as well? You can still have a lot of resources used in some rare cases, and in theory you could search for other things like resources by name, but now that bindless tables aren't all listed exhaustively this feels like quite low utility and unless you disagree I'm going to close this as the underlying motivation has been addressed in a better way.

I think with bindless feedback, this is pretty low priority, feel free to close.
The only useful scenario I can think of that wouldn't be solved is when you're accessing a resource with a dynamic index, there's a bug in that logic, and seeing all resources (or being able to filter a range) could help narrow down the problem. But that's a pretty niche issue that has alternatives to track down (such as shader debugging the logic).


Fix bugs in comment processing

This is a fix for https://github.com/att/XACML/issues/35

Thank you!


Add name and version to ILibraryInsallationState

Adds Name and Version properties to ILibraryInstallationState
Adds a naming scheme which splits LibraryId into Name and Version (and combines them back) using @ as the split character

Will do a rebase and merge once the tests pass.


Upload of 100 GB VHD Fails with 407 Proxy Authentication Required after 1/3 to 1/2

Preflight Checklist

[X] I have installed the latest version of Storage Explorer.
[X] I have checked existing resources, including the troubleshooting guide and the release notes.
[X] I have searched for similar issues.

Storage Explorer Version
1.31.2 (94)
Regression From
No response
Architecture
x64
Storage Explorer Build Number
20231004.10
Platform
Windows
OS Version
Windows 10
Bug Description
5 gb vhd upload without issue - 70 gb fails about halfway through with 407
Proxy is set to System and valid auth credentials supplied
Steps to Reproduce

Launch Storage Explorer
Navigate to Disks
Select VM
dlick upload
select local vhd
selecting V1 or V2 does not affect outcome

Actual Experience
after some time failsRESPONSE Status: 407 Proxy Authentication Required
Content-Length: [2309]
Content-Type: [text/html]
Date: [Sun, 04 Feb 2024 10:39:44 CST]
Mime-Version: [1.0]
Proxy-Authenticate: [NTLM]
Expected Experience
successful upload of vhd which I can then attach
Additional Context
No response

@Davidmack can you go to your <user directory/.azcopy/ folder, find the log file associated with this disk upload, and then share that log file here? Thanks!


Fix MXNet path in ~/.bashrc file

$MXNET_HOME is "$HOME/mxnet/"
The old version added double / in the path.

double // wouldn't hurt. This is wrong if MXNET_HOME doesn't end with /


Uploaded Enemy Attack behavior

Supports multiple damage types through scriptable objects (will automatically select the best damage type based on range and damage per second)
Supports Multiple Player Targets (selection based on maximum damage)
Draws a designer-specified random range for damage
Player objects must be tagged in the editor with Player
Updates on movement (for damage type optimization at different ranges)
Responsive to player death events
Test scene included

I put this together in a couple hours as a proof of concept. It sounds like you want to stick with your original implementation of attacking like your player attack design. Just go that way with it. I was trying to accommodate additional capabilities like we had discussed on Twitch including targeting multiple players (with some smarter decision logic) and handling multiple attack types (to support inventory items or other ideas). I don't think were on the same page here. I'm going to bow out so you can do your thing. Best of luck!


Updated edge-utils SHA which adds EU Edge URLs

Adding @costanic to review since he's got more Yocto experience than me.


Bump clang-sys version to 0.18.0

This update improves detection of versioned instances of libclang.so (e.g., libclang.so.3.9).
See here for information on which instance is selected when there are more than one to choose from.
Thanks to @semarie for a pull request implementing this.

Needs a cargo.lock update, but r=me with that.
Thanks a lot!

Done.

@bors-servo r=emilio
Thanks @KyleMayes !

:pushpin: Commit abe5d89 has been approved by emilio

:hourglass: Testing commit abe5d89c6a46f2b667ae1f60240ad7f6b25c87fd with merge e87699c061c22bd468830f3046e33fc784a76298...

:sunny: Test successful - status-travis
Approved by: emilio
Pushing e87699c061c22bd468830f3046e33fc784a76298 to master...


Fix typo in comments

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Experimental feature PSNativeCommandArgumentPassing doesn't support arguments with embedded double quotes when calling batch files

Similar to #15239, this issue would be resolved by the proposal in #15143. See also: #15261 and #15276
Note that high-profile CLIs such as az and npm (Node.js's package manager), for script-based utilities that come with packages, use batch files as their entry points.
Steps to reproduce
Run the following on Windows:
# Switch to a temporary directory.
Push-Location -ea Stop ($tmpDir = (New-Item -Type Directory -Force (Join-Path Temp:/ $PID)).FullName)

# Create a batch file that strips enclosing double quotes from the first argument and deduplicates the
# embedded ones.
@'
@echo off & setlocal
set Arg1=%~1
echo [%Arg1:""="%] [%2]
'@ > foo.cmd

./foo.cmd 'Andre "The Hawk" Dawson' | Should -Be '[Andre "The Hawk" Dawson] []'

# Clean up.
Pop-Location; Remove-Item $tmpDir -Recurse

Expected behavior
The test should succeed.
Actual behavior
The test fails, because the argument with embedded " isn't passed batch-file-appropriately - batch files (cmd.exe) do not recognize \" as an escaped " and require "" instead:
InvalidResult: Expected strings to be the same, but they were different.
Expected length: 28 Actual length:   30 Strings differ at index 7.
Expected: '[Andre "The Hawk" Dawson] []'
But was:  '[Andre \"The] [Hawk\" Dawson"]'

Note the literally retained \ and the unexpected breakup into two arguments.
For this invocation to succeed it would have to pass verbatim Andre "The Hawk" Dawson as "Andre ""The Hawk"" Dawson" - i.e. escaping the embedded " as "" rather than \" - on the command line used behind the scenes.
Environment data
PowerShell Core 7.2.0-preview.5 on Windows

The proposed fix would be to special case cmd.exe and files ending with .bat or .cmd to pass enclosed double quotes as ""?

Indeed, @SteveL-MSFT.
It is part of what I've been proposing for months, repeatedly, in conversations you were a part of: here and here and here, which finally evolved into a - hopefully comprehensive and final - proposal in #15143, which summarizes all accommodations that I think are vital to make on Windows, the need to escape " as "" for batch files being just one of them.
Excuse me for shouting, but it's out of desperation over these issues seemingly never being paid proper attention to; this isn't a personal concern; rather, I think these issues are of vital importance, and we should finally get them right.
Therefore, I ask you to please take the time to fully understand and discuss:

the proposed accommodations, presented in detail in #15143, and exemplified for convenience below.
required fixes, summarized from their separates issues below.

PSNativeCommandArgumentPassing: WHAT IS MISSING, WHAT NEEDS FIXING:
Setup:
Install-Module Native

Note:

The diagnostic output below, via argument-/command-line diagnosing function dbea (which uses -ie to use the ie function behind the scenes, which ensures the desired behavior); these functions are from the Native module. It is my hope that the need for ie will go away with proper implementation of PSNativeCommandArgumentPassing (though it will still be useful in older PS versions).

First shows the verbatim arguments that the target batch file / conventional executable ends up seeing after parsing its own command line, i.e. the effective values.

Then shows the raw command line (sans executable) that was passed (which by definition only applies on Windows): this is what PowerShell must construct from the given arguments and assign to System.Diagnostics.ProcessStartInfo.Arguments.

Accommodation A: Calling a batch file: Must escape embedded " as "":
PS> dbea -ie -UseBatchFile -- 'Andre "The Hawk" Dawson' 'another argument'
2 argument(s) received (enclosed in «...» for delineation):

  «"Andre ""The Hawk"" Dawson"»
  «"another argument"»

Command line (without executable; the value of %*):

  "Andre ""The Hawk"" Dawson" "another argument"

Note how the verbatim embedded "The Hawk" was escaped as ""The Hawk"", to ensure that the batch file properly recognized the entire token as a single argument.

Accommodation B: Calling a batch file: Space-less arguments (ones that normally do not trigger enclosure in "...") must still be double-quoted if any of the following cmd.exe metacharacters is present: & | < > ^ , ;
PS> dbea -ie -UseBatchFile -- 'http://example.org?foo=1&bar=2' 'another argument'
2 argument(s) received (enclosed in «...» for delineation):

  «"http://example.org?foo=1&bar=2"»
  «"another argument"»

Command line (without executable; the value of %*):

  "http://example.org?foo=1&bar=2" "another argument"

Note how the URL was double-quoted, despite not containing spaces.
Currently, this fails,  both with and without PSNativeCommandArgumentPassing in effect, because in the absence of double-quoting cmd.exe (which parses the batch file's command line) interprets the unquoted & as a statement separator.

Accommodation C: Passing a PROPERTY=VALUE-style argument (and variations thereof, prefixed with / or - optionally combined with : instead of =)  to any executable: Must selectively "..."-enclose only the VALUE part, if it contains spaces so as to satisfy the particular, nonstandard quoting requirements of executables such as msiexec (to conventional executables, this quoting variation makes no difference, so it is safe to use):
PS> dbea -ie -- INSTALLDIR=$PSHOME  'another argument'
2 argument(s) received (enclosed in «...» for delineation):

  «INSTALLDIR=C:\Program Files\PowerShell\7»
  «another argument»

Command line (without executable):

  INSTALLDIR="C:\Program Files\PowerShell\7" "another argument"

Note how INSTALLDIR=$PSHOME turned into selectively double-quoted INSTALLDIR="C:\Program Files\PowerShell\7"
Note:

Accommodation B and C must situationally be combined.
Accommodation B, due to the need for Accommodation C, must actually be performed in the context of a cmd /c "<batch-file> ... & exit" call -  see below.

Accommodation D: Support reliable exit-code reporting from batch files:
PS> '@echo off & whoami -nosuch 2>NUL || exit /b' | Set-Content test.cmd; ie ./test.cmd; $LASTEXITCODE
1

Without ie, this currently reports 0 (both with and without PSNativeCommandArgumentPassing in effect), i.e. whoami's failure exit code was not reported.
For this to work as intended, PowerShell must translate ./test.cmd ... into cmd /c "c:\path\to\test.cmd ... & exit, as explained in detail here. Due to cmd.exe not expecting escaping inside the overall "..." string, the encoding of the arguments is the same as would be needed for Accommodation B in isolation.

Accommodation E: Transform multi-argument direct cmd /c / cmd /k executable calls into single-argument, overall "..."-enclosed ones behind the scenes.
This accommodation is arguably the least important, but I think it would be beneficial, because it's one less thing for users to worry about; plus, the important Accommodation D would give us the implementation for free:
PS> ie cmd /c "C:\Program Files\PowerShell\7\pwsh" -noprofile -c " 'hi there' "
hi there

Without ie, this command breaks, both with and without PSNativeCommandArgumentPassing in effect, due to cmd.exe's own limitations.
If PowerShell transformed the above command line into the following, verbatim single-argument cmd /c form in .Arguments (which is what ie does), the command would work:
" "C:\Program Files\PowerShell\7\pwsh" -noprofile -c " 'hi there' " "

To simulate this with --%:
PS> & { $PSNativeCommandArgumentPassing='Legacy'
      cmd --% /c " "C:\Program Files\PowerShell\7\pwsh" -noprofile -c " 'hi there' " "
    }

For details, see https://github.com/PowerShell/PowerShell/issues/14747#issuecomment-800376364

Fix 1: Calling cmd.exe /c / cmd.exe /k directly with a command line (as a single argument) must continue to work properly, as it (by lucky accident) always has, even with PSNativeCommandArgumentPassing in effect:
# Legacy behavior is actually *ok* in this case:
PS> & { $PSNativeCommandArgumentPassing='Legacy'; cmd /c ' echo "Andre ""The Hawk"" Dawson" ' }
"Andre ""The Hawk"" Dawson"

With PSNativeCommandArgumentPassing in effect ($PSNativeCommandArgumentPassing='Standard'), you'll now get (broken)
\"Andre \"\"The Hawk\"\" Dawson\" .
Such cmd /c calls have historically been valuable for workaround quoting headaches in PowerShell.
They will continue to be useful:

For - hopefully very rare - quoting edge cases that the accommodations do not cover, as a superior alternative to --%, given that embedding PowerShell variable values and expressions is then easily possible via string interpolation.
Probably more frequently, to work around the PowerShell limitation of not providing raw byte handling in the pipeline, and therefore needing to resort to cmd.exe's |.

See #15239.

Fix 2: --% must continue to work even with PSNativeCommandArgumentPassing in effect:
--% is a per-call syntax override, and its functioning should not be affected by whether or not PSNativeCommandArgumentPassing in effect. While --% is virtually useless on Unix, on Windows there will still be - hopefully very rare - edge cases that require it, and there's also no need to break existing calls using it.
# --% use: OK only in legacy mode:
PS> & { $PSNativeCommandArgumentPassing='Legacy'
             cmd /c --% echo "Andre ""The Hawk"" Dawson"
    }
"Andre ""The Hawk"" Dawson"

With PSNativeCommandArgumentPassing in effect ($PSNativeCommandArgumentPassing='Standard'), you'll now get
(broken) "\"Andre" "\"\"The" "Hawk\"\"" "Dawson\""
See #15261.

Any updates on this bug?

Bump to keep open

Bump to keep open

This is still an issue


Added Azure VMware Services

The page https://learn.microsoft.com/en-us/azure/azure-vmware/architecture-private-clouds details the Azure VMware Services multi-AZ  support

@anaharris-ms
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

Thanks @Court72  and @anaharris-ms  for looking at this. I see the PR was approved but it seems to have a problem where it can't merge.
Any ideas?


Troubleshooting hint about Ingress issue out of date?

Environment

OS: AlmaLinux 8.6 binary compatible to CentOS 8.6
Kubernetes/K3s: v1.23.6+k3s1 (418c3fa8) go version go1.17.5
AWX Operator: git tag 0.23.0

Description

Troubleshooting hint on Ingress problems tells us two steps to #1 add a /var/lib/rancher/k3s/server/manifests/traefik-config.yaml and that first step works well.
BUT it then says step #2:
"The last step is modifying AWX. By default, AWX uses only `REMOTE_ADDR` and `REMOTE_HOST` headers to determine the remote host (means HTTP client). Therefore, you have to make AWX to use `X-Forwarded-For` header.

Modify your `base/awx.yaml` and add following three lines."

spec:
    ...
    extra_settings:     👈👈👈
    - setting: REMOTE_HOST_HEADERS     👈👈👈
        value: "['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']"     👈👈👈

Then apply this change and wait for your AWX will be reconfigured.
kubectl apply -k base

But that returns:
error: accumulating resources: accumulation err='accumulating resources from 'awx.yaml': yaml: line 51: mapping values are not allowed in this context': got file 'awx.yaml'

and line 51 corresponds to the 3rd line, the 'value' line above
Step to Reproduce

amend the base/awx.yaml file as per troubleshooting.md Ingress section
run kubectl apply -k base

@TheBigBear
Thanks for reporting this, sorry it's my fault, it's indentation issue.
This is the corrected example; Add two spaces before - settings (or remove two spaces before value: is also acceptable).
spec:
    ...
    extra_settings:     👈👈👈
      - setting: REMOTE_HOST_HEADERS     👈👈👈
        value: "['HTTP_X_FORWARDED_FOR', 'REMOTE_ADDR', 'REMOTE_HOST']"     👈👈👈

Will update my guide 😃

@TheBigBear
Hi, according to the comment in the gist, seems there are some misconfigured hostname.

But if I try to connect to my k3s node with https://awx.example.com I get     👈👈👈
Bad gateway

k3s kubectl describe ingress awx-ingress -n awx
Name:             awx-ingress
Labels:           app.kubernetes.io/component=awx
                  app.kubernetes.io/managed-by=awx-operator
                  app.kubernetes.io/name=awx
                  app.kubernetes.io/operator-version=0.23.0
                  app.kubernetes.io/part-of=awx
Namespace:        awx
Address:          <IP_ADDRESS>
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  awx-secret-tls terminates awx.example.com     👈👈👈
Rules:
  Host            Path  Backends
  ----            ----  --------
  awx.ict.om.org     👈👈👈
                  /   awx-service:80 (<IP_ADDRESS>:8052)
Annotations:      <none>
Events:           <none>

If you want to access your AWX via https://awx.example.com, all of above have to be awx.example.com, but your ingress has different hostname awx.ict.om.org.

@TheBigBear
Hi, any update on this?

Closing "due to inactivity.


Update Forestry configuration

PR Overview
Type of contribution

[x] Code
[ ] Documentation

Reference: Issue or Pull Request (PR)

[x] Towards #12    [this will keep reference issue or PR open]  <=== When in doubt, pick this one.
[ ] Fixes #xxx. See also #xxx   [this will close the referenced issue or PR]
[ ] Resolves #xxx, #xxx [for multiple issues, this will close them]

Description: What does this implement/fix? Explain your changes.
Updates the configuration for forestry which enables preview
Reminders

[x] Did you review the CONTRIBUTING GUIDE?
[x] Did you reference an issue or another pull request?

Any other comments?

@reshamas Hi, would it be possible for you to try this out ? On a separate branch? Once you are logged in, you have to click on add site and provide the repository name along with branch, and then go to the settings>previews and click on start preview.

@SangamSwadiK
Are there instructions for using Forestry?
For example, do we need to create an account? Clone the repo?

I tested Forestry with Sangam.
Does @symeneses want to test it next?

I tested Forestry with Sangam.
Does @symeneses want to test it next?

It's possible to add collaborators to a project or leave it open? So that people we want to contribute don't have to setup the site. Could I try it with the configuration you have done already?

I tested Forestry with Sangam.
Does @symeneses want to test it next?

It's possible to add collaborators to a project or leave it open? So that people we want to contribute don't have to setup the site. Could I try it with the configuration you have done already?

@SangamSwadiK What are your thoughts on this?

Sounds good @SangamSwadiK.
We should probably focus first on adding the content, then doing the bells and whistles (images, etc) anyway.


[Secure JSON RPC] Inline helper methods.

Motivation
This (tiny) PR inlines two helper methods in the secure JsonRpcClient. This is beneficial for code clarity and avoids forcing the reader to jump around in the code.
Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
All local tests still pass.
Related PRs
None.

Thanks, David! 😄 @bors-libra r=davidiw

:pushpin: Commit 298a969 has been approved by davidiw

:bulb: This pull request was already approved, no need to approve it again.

There's another pull request that is currently being tested, blocking this pull request: #4581

:pushpin: Commit 298a969 has been approved by davidiw

:hourglass: Testing commit 298a969d373af208a42166c977af3b50c755e8cc with merge 9e910161f4f825a447a5e132f05558f646f8a404...

:sunny: Test successful - checks-actions_land_blocking_test, checks-circle_commit_workflow
Approved by: davidiw
Pushing 9e910161f4f825a447a5e132f05558f646f8a404 to master...


upgrade to iota_stronghold 2.0.0

As discussed with @FabianLars, I have upgraded iota_stronghold to v2.0.0. The plugin compiles (the sql plugin is preventing a clean build) and works in my test app

Apologies for the delay in getting back to this, I had a busier week than I was expecting. It looks like you may have already made the changes?


MS Entra ID Authentication question

I wanted to ask if we need to implement the token refresh mechanism by ourselves if we use MS Entra for cache authentication (https://learn.microsoft.com/en-us/azure/azure-cache-for-redis/cache-azure-active-directory-for-authentication)
client, err := rueidis.NewClient(rueidis.ClientOption{
	InitAddress:       []string{addr},
	TLSConfig:         tlsConfig,
	AuthCredentialsFn: authCredentialsFn(ctx, logger, clientID),
})

func authCredentialsFn(ctx context.Context, logger logging.Logger, clientID string) func(acc rueidis.AuthCredentialsContext) (rueidis.AuthCredentials, error) {
	return func(acc rueidis.AuthCredentialsContext) (rueidis.AuthCredentials, error) {
		logger.Info("auth: connecting to redis", "username", clientID)
		credProvider := azureCredentialProvider(logger)
		accessToken, err := credProvider(ctx, policy.TokenRequestOptions{Scopes: []string{tokenScope}})
		if err != nil {
			logger.Error(err, "failed to get access token for connecting to redis")
			return rueidis.AuthCredentials{}, err
		}

		return rueidis.AuthCredentials{
			Username: clientID,
			Password: accessToken.Token,
		}, nil
	}
}

This is how we want to do it. My questions are:

We use Azure Redis and how it works is the redis connection is terminated if the token expires. Do we need to implement the token refresh mechanism by ourselves ?
My guess is this callback function is only invoked when a new connection is setup ?

Yes, you need to implement the refresh mechanism by yourself.
Yes, the callback is invoked only when establishing a new connection.

I have no experience using MS EntryID, but I guess the token refresh mechanism can be implemented like this:
package main

import (
	"context"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
	"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
	"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	"github.com/redis/rueidis"
	"sync"
	"time"
)

func getAzureToken() (azcore.AccessToken, error) {
	cred, err := azidentity.NewDefaultAzureCredential(nil)
	if err != nil {
		return azcore.AccessToken{}, err
	}
	token, err := cred.GetToken(context.Background(), policy.TokenRequestOptions{...})
	if err != nil {
		return azcore.AccessToken{}, err
	}
	return token, nil
}

func main() {
	var mu sync.Mutex
	var token azcore.AccessToken
	client, err := rueidis.NewClient(rueidis.ClientOption{
		AuthCredentialsFn: func(_ rueidis.AuthCredentialsContext) (rueidis.AuthCredentials, error) {
			mu.Lock()
			defer mu.Unlock()
			if token.ExpiresOn.Before(time.Now()) {
				tk, err := getAzureToken()
				if err != nil {
					return rueidis.AuthCredentials{}, err
				}
				token = tk
			}
			return rueidis.AuthCredentials{Username: "...", Password: token.Token}, nil
		},
	})
	if err != nil {
		panic(err)
	}
	go func() {
		for {
			mu.Lock()
			duration := time.Until(token.ExpiresOn.Add(time.Minute * -10))
			mu.Unlock()
			time.Sleep(duration)
			tk, err := getAzureToken()
			if err != nil {
				continue
			}
			mu.Lock()
			token = tk
			mu.Unlock()
			for _, c := range client.Nodes() {
				c.Do(context.Background(), c.B().Auth().Username("...").Password(token.Token).Build())
			}
		}
	}()
}

Thanks @rueian for your response. I wanted to ask the implications of not implementing this renewal mechanism.

Is a new connection setup immediately when a connection is terminated for some reason ? Is there a possibility of downtime ?
If we have a pubsub connection that breaks for some reason, will it be re-established again ? or do these connections have to be established manually ?

Hi @yash-nisar,

No, a new connection is setup when there is a new request. Old pending read-only requests will be retried by default. Other requests will see errors until the new connection is established.
Yes, the client.Receive will keep retrying to subscribe those provided channels.

@rueian
So, if we have 500 requests per second being sent to Azure Redis, does each request enforce a new connection ? or am I misunderstanding something here ?

@yash-nisar,
No, there will be at most 2^PipelineMultiplex connections to each redis node.

Awesome @rueian, really appreciate the prompt response.

Ok, so if that variable is set to 32, then there will be atmost 32 connections ?
Will those 500 requests will each spin a new connection from this connection pool and release it back to the pool ?
If we won't implement this manual renewal mechanism, do you think there will be downtime ?

Awesome @rueian, really appreciate the prompt response. Last set of questions, I promise 😛

Ok, so if that variable is set to 32, then there will be atmost 32 connections ?
Will those 500 requests will each spin a new connection from this connection pool and release it back to the pool ?
If we don't implement this manual renewal mechanism, do you think there will be downtime ?

If you set PipelineMultiplex=32, then there will be 4,294,967,296 connections.
It is not a connection pool but a multiplexer. 500 requests will be distributed across 2^PipelineMultiplex connections and be pipelined in each connection.
Yes, I think there will be noticeable errors pop up. I suggest implementing the manual renewal mechanism.

Thanks @rueian, closing the issue because all questions were answered ! Really appreciate it :)


Update to ajv 6

Can you update to ajv 6?

Just updated, using ajv-6 from @2.0.0 upwards!

Awesome thanks!