A question about the Eq.4

Excellent work. I have a question about Eq.4.
Is the optimization of this Eq.4 using the Sinkhorn-Knopp algorithm equivalent to cross-entropy loss and label smoothing?
What are the advantages of using the Sinkhorn-Knopp algorithm instead of cross-entropy loss?
Thank you! Expect your reply.

Thank you so much!


Base ui for deployment form

@miq-bot add_label providers/containers, enhancement, wip

screenshot?


[Bug Report] VNEI 0.8.0 - Jotun Puffs and Magecap appear in VNEI regardless of settings or discovery

As the report title says, Jotun Puffs and Magecap appear in the VNEI tab - Before you discover them in-game, and with Show Only Known enabled.
Here's a screenshot with a brand new save:

Thanks for the report, I will look at the Problem soon.

Fixed in 0.8.1


Allow extension to enable aztec macros via environment variable

Problem
In https://github.com/noir-lang/noir/pull/3596, we moved away from using separate binaries. This issue is made so that users can select the aztec macros using the extension.
Happy Case
.
Alternatives Considered
No response
Additional Context
No response
Would you like to submit a PR for this Issue?
No
Support Needs
No response

Closing this as its no longer relevant


PHP Fatal error:  Call to undefined function database()

From the site error log (not a one off either)... not sure about the path ....
"PHP Fatal error:  Call to undefined function database() in /sources/Load.php on line 1833"
Rreading response header request: "GET /community/themes/default/cache/hive-12346.css?20e24729 Referrer: "http://www.elkarte.net/community/index.php?topic=123.0;prev_next=prev"

It doesn't make much sense TBH...
It's requesting the CSS, why should it run php at all? :confused:
I noticed that using any non-existing css shows the home page, except when the first character after the ? is a number, in that case gives a white page (and most likely the error in the log).
So:
/community/themes/default/cache/hive-12346.css?a0e24729 <= good
/community/themes/default/cache/hive-12346.css?20e24729 <= white page
@Spuds based on nginx redirects, what could be trying to execute?

I wonder if it has something to do with this function 	private function _checkNumericKeys() ....

@Spuds can this be considered fixed?

I think so, at least this seems to stop the behavior outlined above.  If it shows up again, we can reopen 💃


Fix issues with batch and command parsing

If the first line of a batch was blank and the second line had a variable reference in it, we were calculating the offset to the variable incorrectly.
Identifiers surrounded by [] were not being properly read
exit command had a buggy regex which matched variants like exit_something

Fixes #197
Fixes #198

rollback isn't a sqlcmd command so I didn't think it was affected.

@shueybubbles SQLCMD was throwing errors for me on labels like Rollback_Record: and renaming them to something like zRollback_Record: fixed it.  Perhaps this is separate - let me try.

OK seems to work for me on this version.  👍

Looks good to me (100% code coverage for fix)

Thank you for doing this.  I know you're dealing with some license generation stuff now and the build is failing, but when you get that squared away, doing a release would be very much appreciated.  Thanks for all of your hard work on robustifying go-sqlcmd to work with our legal but gross T-SQL :-)


Coordinator: remove SolrQueryRequest.getCloudDescriptor

I don't love seeing SolrQueryRequest.getCloudDescriptor -- we should be conservative of adding more methods to SolrQueryRequest.  It only has one caller.
Tests pass.  If it serves a purpose, removing it ought to demonstrate something's wrong.

@patsonluk do you know about this?
If there's a problem, it's HttpShardHandler (the only caller) who passes this cloudDescriptor on to org.apache.solr.handler.component.HttpShardHandler#canShortCircuit which we want to return false for any coordinator.  Maybe it will do so anyway.  If we want to guarantee it, we could modify this code to recognize the coordinator somehow.

@patsonluk do you know about this? If there's a problem, it's HttpShardHandler (the only caller) who passes this cloudDescriptor on to org.apache.solr.handler.component.HttpShardHandler#canShortCircuit which we want to return false for any coordinator. Maybe it will do so anyway. If we want to guarantee it, we could modify this code to recognize the coordinator somehow.

I am unfamiliar with the short circuit logic but based on debugging if we stop using _ as shard id in CloudDescriptor (as in this PR), then canShortCircuit would return true. Not totally sure about the implication but  rb.shortCircuitedURL =             ZkCoreNodeProps.getCoreUrl(zkController.getBaseUrl(), coreDescriptor.getName()); will be executed and a short circuited URL will be used? which seems incorrect since the coordinator node does not actually host the shard?
Sorry I'm really helping much here 😓 , however to play safe, we might want to keep returning false for  canShortCircuit calls done on Cooridnator node as you proposed (ie modify this code to recognize the coordinator somehow)?


Please add stylus support

It's easy to add by the users.  Just do
npm install stylus-loader stylus --save-dev

But It will be nice to have it out of the box
It would be easier for people migrating from existing projects using stylus
I was thinking creating pull request for this but i don't have rights to create/commit to a branch

You need to Fork the project, then make your changes in a branch there, and then you can send pull requests :)
Also I believe the goal is to keep it simple (more unopiniated), there is information in the Wiki about adding SASS for example. Stylus would be almost identical.
https://github.com/AngularClass/angular2-webpack-starter/wiki/How-to-include-SCSS-in-components

@MarkPieszak Thanks for the info on creating pull requests.
sass (.scss) is supported out of the box.  But stylus is not.   I just think it will be nicer for me and others to upgrade the build tool without having to reinstall other popular tools.


[Feature] Cloud database record sorting

Search before asking

[X] I had searched in the issues and found no similar issues.

Feature Request
The cloud database records need to be sorted according to the latest time. The latest records are at the top, and you want to increase the time of data records
Are you willing to submit PR?

[X] Yes I am willing to submit a PR!

This depends on the custom time field in the collection.
May not be suitable for general-purpose use.


Upgrade django to 1.11 LTS

Coverage increased (+2.7%) to 94.203% when pulling 8e1ae58e323e69412aa2987e1488355d94d00782 on django-upgrade into e9fa46bfd10501a03db71d3a71c480b0fe7298c9 on master.


feat: backrefs from user secrets

Part of #509.
/deploy #notest renku=feat-jupyter-free-sessions amalthea-sessions=main renku-ui=andrea/jupyter-free-build extra-values=amalthea-sessions.deployCrd=false

You can access the deployment of this PR at https://renku-ci-ds-523.dev.renku.ch


Selenium session fails with new geckodriver 0.30.0

geckodriver 0.30.0 release introduces a change that breaks Firefox Selenium sessions:
Improved Host header checks to reject requests not sent to a well-known
local hostname or IP, or the server-specified hostname.
Selenoid logs:
[SESSION_FAILED] [http://<IP_ADDRESS>:40377] [500 Internal Server Error]
geckodriver logs:
WebDriver Host header doesn't match server localhost

I wonder if this could be related with #1128

+1, also encountered this issue. I wonder if it is possible to configure something in browsers.json to circumvent this? Like configuring the whitelisted ips?

Also a Note: I see this in Selenoid version 1.10.4. Which does not contain the changes from #1128.

@kornel-filep Yes. I also confirm that #1128 is not causing this. I suggest to stick to geckodriver 0.29.1 when building the browser images until this issue is fixed. You just need to pass -d 0.29.1 to the images command

Did you try version 1.10.5?

@kornel-filep currently there is no such setting to overcome this. Because this is related to HTTP header checking.

@vania-pooh This issue does happen with Selenoid 1.10.5 as well as when building images and running selenoid-container-tests.

Hi, any news regarding a fix for this issue? Can't this be solved the same way as https://github.com/aerokube/selenoid/issues/1070 was solved?

That was fixed in 0.31.0.

@vania-pooh - do we need to update geckodriver to 0.31.0 and selenoid for this to work?  Or will just the upgraded geckodriver 0.31.0 suffice?  I ask because we forked an older version of selenoid and would need to do a  sizeable project to merge in the latest selenoid code.  I know - not the best way to use open source.  But it is what it is.  We'll upgrade Selenoid at some point.  But for the time being can we update just the 0.31.0 driver to solve this issue?

@callenmas14 there is 0.32.0 already. https://github.com/mozilla/geckodriver/releases/tag/v0.32.0

@vania-pooh - I would use that but 0.32.0 has a min of 102 ESR.  We provide browsers starting from 95.0 internally.  So we'll need 0.31.0.
BTW I tried out 0.31.0 last night, without the selenoid changes and by providing the --host-names argument and I didn't get the 'Invalid host header' error.


CentOS 8: Install libgcrypt v1.8.5 required by libvirt 6.0

Description
Fixes: https://github.com/apache/cloudstack/issues/4969
This PR upgrades the version of libgcrypt that is required by libevirt 6.0

Types of changes

[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] New feature (non-breaking change which adds functionality)
[X] Bug fix (non-breaking change which fixes an issue)
[ ] Enhancement (improves an existing feature and functionality)
[ ] Cleanup (Code refactoring and cleanup, that may add test cases)

Feature/Enhancement Scale or Bug Severity
Bug Severity

[ ] BLOCKER
[ ] Critical
[X] Major
[ ] Minor
[ ] Trivial

Screenshots (if appropriate):
How Has This Been Tested?
Successfully deployed a CentOS 8 based ACS env

@blueorangutan package

@Pearl1594 a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.

Packaging result: :heavy_check_mark: centos7 :heavy_check_mark: centos8 :heavy_check_mark: debian. SL-JID 483

@blueorangutan test centos8 kvm-centos8

@Pearl1594 a Trillian-Jenkins test job (centos8 mgmt + kvm-centos8) has been kicked to run smoke tests

Needs manual or smoketest confirmation against centos8

Trillian test result (tid-555)
Environment: kvm-centos8 (x2), Advanced Networking with Mgmt server 8
Total time taken: 33696 seconds
Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr4970-t555-kvm-centos8.zip
Intermittent failure detected: /marvin/tests/smoke/test_deploy_vm_iso_uefi.py
Intermittent failure detected: /marvin/tests/smoke/test_outofbandmanagement.py
Intermittent failure detected: /marvin/tests/smoke/test_hostha_kvm.py
Smoke tests completed. 84 look OK, 3 have error(s)
Only failed tests results shown below:

Test
Result
Time (s)
Test File

ContextSuite context=TestDeployVMFromISOWithUefi>:setup
Error
0.00
test_deploy_vm_iso_uefi.py

test_oobm_background_powerstate_sync
Failure
21.72
test_outofbandmanagement.py

test_oobm_enabledisable_across_clusterzones
Error
35.90
test_outofbandmanagement.py

test_oobm_issue_power_cycle
Error
19.74
test_outofbandmanagement.py

test_oobm_issue_power_off
Error
19.72
test_outofbandmanagement.py

test_oobm_issue_power_on
Error
18.69
test_outofbandmanagement.py

test_oobm_issue_power_reset
Error
19.75
test_outofbandmanagement.py

test_oobm_issue_power_soft
Error
19.86
test_outofbandmanagement.py

test_oobm_issue_power_status
Error
19.70
test_outofbandmanagement.py

test_oobm_multiple_mgmt_server_ownership
Failure
27.79
test_outofbandmanagement.py

test_oobm_zchange_password
Error
7.33
test_outofbandmanagement.py

test_hostha_kvm_host_degraded
Error
9.90
test_hostha_kvm.py

test_hostha_kvm_host_fencing
Error
8.74
test_hostha_kvm.py

test_hostha_kvm_host_recovering
Error
8.75
test_hostha_kvm.py

Failures don't look related to this change, @Pearl1594 you may investigate them and propose a new PR. Looks like env deployment and other tests pass, will merge based on review/lgtm and smoketests.


4.2 dev5 - Borderless fullscreen window size is incorrect

Godot version
v4.2.dev5.mono.official [e3e2528ba]
System information
Windows 10, Nvidia RTX 3090
Issue description
I discovered this when testing the new integer scaling option in Project Settings.

The DisplayServer is reporting a window size that is not the same as the screen size in full screen mode. I wrote a MRP with a script which prints the screen vs window size.
The output for me is this:
Screen(1920, 1080)
Window: (1918, 1078)
The window is 2 pixels smaller in both dimensions than the screen size, which means even though the the screen size is divisible by the viewport size,   integer scaling leaves black bars around the viewport. Is this a settings problem I have in my project and the repro or a bug? Maybe I'm misunderstanding something.
I get the same behavior on my Windows 11 laptop as well.
Thank you
Steps to reproduce
Run the attached project and observe console output / game appearance
Minimal reproduction project
windowsize_fullscreen.zip

Thanks for the report. Duplicate of https://github.com/godotengine/godot/issues/63500, see https://github.com/godotengine/godot/issues/63500#issuecomment-1418733855 for more information.
If you are not planning on creating multiple windows, you should probably just use "Exclusive Fullscreen" mode.

I see. Thank you


Update fork

Summary by CodeRabbit

New Features

Introduced a lottery simulation tool that allows users to simulate ticket purchases and winning scenarios.
Added functionality to track and calculate winnings based on user-defined lottery numbers.
Implemented a system to monitor and display the frequency of various winning combinations.

Bug Fixes

Enhanced accuracy in the winning amount calculations based on matching numbers.

Documentation

Added detailed descriptions of the lottery simulation process and winning logic for user clarity.

@coderabbitai review


fix KeyError bug in dht

Fixes #436.
Here's how this happens:
Each DHT node starts with 1 bucket for all of its contacts. When the bucket is full and a new contact should be added, one of two things happens.

If the bucket contains the node's id, it is split into two buckets which together cover the same range.
If the bucket does not contain the node's id, we store the contact in that bucket's replacement cache. When a contact is removed from a bucket, contacts from the replacement cache are filled into the bucket.

In the latter case, the replacement cache for a given bucket may also fill up, in which case the oldest contact in the replacement cache is dropped before adding the new contact. The bug occurs when dropping the old contact. The code on lines 412-413 says
elif len(self._replacementCache) >= constants.k:
  self._replacementCache.pop(0)

when it should be
elif len(self._replacementCache[bucketIndex]) >= constants.k:
  self._replacementCache[bucketIndex].pop(0)

Instead of popping the contact, the code tries to pop the whole replacement cache for bucket 0. If there is no replacement cache for bucket 0, a KeyError is raised.

          1 Error

:no_entry_sign:
Please include a CHANGELOG entry.

          1 Message

:book:
See http://keepachangelog.com/en/0.3.0/ for details on good changelog guidelines

  Generated by :no_entry_sign: Danger


Extension issue

Issue Type: Bug
Extension Name: js-debug
Extension Version: 1.53.0
OS Version: Windows_NT x64 10.0.19042
VSCode version: 1.53.0

:warning: We have written the needed data into your clipboard. Please paste! :warning:

/needsMoreInfo


Add documentation for the discovery.type setting

Documentation was missing although we refer to it inside our guides on how to setup a single-node cluster (https://crate.io/docs/crate/guide/en/latest/deployment/containers/docker.html#troubleshooting).

left one minor comment, otherwise LGTM


Support deletable accounts in archive nodes

See description in ### Updating the archive node

This is not blocked by but is highly related to #15829 and #15830


⚠ Bofrost.nl has degraded performance

In 68e4215, Bofrost.nl (https://www.bofrost.nl) experienced degraded performance:

HTTP code: 200
Response time: 1080 ms

Resolved: Bofrost.nl performance has improved in 2f98222.


build: add dependabot

Codecov Report

Merging #8 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master       #8   +/-   ##
=======================================
  Coverage   28.09%   28.09%
=======================================
  Files           5        5
  Lines         121      121
  Branches       20       20
=======================================
  Hits           34       34
  Misses         87       87

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 0ff6439...4b5abb7. Read the comment docs.


Missing autocomplete and documentation [>=0.76]

What is the IDE/editor that are you using? Since v0.76 I've changed the location for the generated sources (in the output directory instead of src), but it should work fine with IntelliJ IDEA and rust-analyzer based IDEs and editors.

I use vscode

Looks like I overestimated the readiness of rust-analyzer. There are known issues about resolving #[path] for modules: https://github.com/rust-lang/rust-analyzer/issues/11682 https://github.com/rust-lang/rust-analyzer/issues/9173 So far there is no workaround, but I'll try to see if generating a single file can be a solution.

Can you please check version 0.76.4, it should be fixed there.

New version works with my vscode.
In my case, after updating the version number in Cargo.toml from 0.75 to 0.76.4,  rust-analyzer errored with [ERROR rust_analyzer::lsp_utils] failed to run build scripts: at first, and finally it ended up with cargo clean.

It’s great to hear that!


websocket

websocket how to use proxy

Use ws_proxy and wss_proxy environment variables.
Use proxy=... parameter.

However, you need to make sure that your proxy server supports websocket proxy.


Create fork

Hey, @kimeta,
welcome to the Spin project!
Is this an intended contribution you are looking to make to the project?
It's unclear from the pull request.
If you are interested in contributing, we are happy to help you get started.
Thanks!

Hi,
I accidentally pulled, just wanted to fork repo.
Thanks anyway.

On Aug 1, 2024, at 13:16, Radu Matei @.***> wrote:
Hey, @kimeta https://github.com/kimeta,
welcome to the Spin project!
Is this an intended contribution you are looking to make to the project?
It's unclear from the pull request.
If you are interested in contributing, we are happy to help you get started.
Thanks!
—
Reply to this email directly, view it on GitHub https://github.com/fermyon/spin/pull/2696#issuecomment-2262893580, or unsubscribe https://github.com/notifications/unsubscribe-auth/AW73HHAVEAKLVPO3VDUEVQ3ZPIRJHAVCNFSM6AAAAABL2NH3HCVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENRSHA4TGNJYGA.
You are receiving this because you were mentioned.


fish: Create default config with hashbangctl alias

This might make it a bit easier to get started configuring fish when joining hashbang.sh.

I don't use fish so I'm of no use checking. @KellerFuchs - do you use it?

I have absolutely no idea about fish.
(I have ideas about fish, and can make pretty decent sushi and sashimi, but that's something else entirely...)
@5paceManSpiff Thanks a lot for the contribution!  I will give it a try tomorrow (a bit too knackered today) and approve it I can confirm it works OK (else, I might ask to be told how to try the different things you set).
Could you also add comments explaining what the /etc/sysconfig/i18n bit and the start_unicode bit do?

The /etc/sysconfig/i18n bit is just loading locale data.
The unicode_start command is used to kick off unicode support on a console, but I don't think it is applicable for us. The beginning of the script (on our systems) even checks if your tty is /dev/console, /dev/vc*, or /dev/tty[0-9]* before running. It'd be a noisy no-op.

woudn't it be more idiomatic to use a function for hashbangctl instead of an alias?
a la
function hashbangctl
  sudo hashbangctl
end

hashbangctl no longer exists on shell servers. Should this PR be closed?


Retrieving 3rd party cookies

Expected behavior
I need to retrieve 3rd party cookies.
In a previous version ( v0.7.2 ) I was able to access 3rd party cookies using:
ph.getCookies(function(cookies) {    console.log(cookies)   });
Actual behavior
The getCookies function is now undefined in the phantom object ( v4.0.2 )
I tried to use:
_page.property("cookies");
This doesn't seem to return any third party cookies and usually just returns an empty array.
Is there something I'm missing with accessing cookies.
I'm wondering if accessing third party cookies is still possible?
Thanks in advance.
Environment

OS: Mac
Node version (node -v):v6.9.2
package version: 4.0.2

I have used page.property('cookies'); and it works. See tests here https://github.com/amir20/phantomjs-node/blob/a0e550b1c61f87bc854697a75b7ee2f2a0c87186/src/test/page.spec.js#L169.

I'll try this again but when I used page.property("cookies") it didn't return 3rd party cookies. Maybe I was doing it wrong. Thanks for your help.

I tested it again and it only gets 1st party cookies through page.property("cookies")
Looks like I need to stick with version 1 which has a getCookie function on the phantom object that returns 1st and 3rd party cookies.
Unless you have any other ideas?  Thanks again.

Do you know what is the right call in vanilla phantomjs? I think it would call page.cookies and according to the docs it should work since version 1.7. There is no difference between v1 and v4 for this. So either you found a bug or there is something going on with your setup.
Couple of things I wonder:

Can you first try to see what phantomjs does? Does it even return third party cookies?
Give me a full example that I can run locally?
Try running with DEBUG=true node test.js so that I can see the output.

Hey, thanks for re-opening.  So I can get third party cookies using the following:
phantom: v0.7.2, phantomjs-prebuilt: v2.1.4.
phantom: v0.7.2 has a getCookies method on the ph.
phantom.create((ph) => {     console.log("ph");  }
ph contain the getCookies method ( which returns 3rd party cookies ). This method is available up to version 1 but not 2.  The reason why I use v0.7.2 is because it doesn't come with phantomjs as dependency and I can install a newer version whereas v1 comes with phantomjs 1.9 and the setup was very buggy for third party cookies.
Here's the example I created using phantom v4.0.2. Returns only first party cookies.
`var phantom = require("phantom");
var _ph, _page;
phantom.create().then(ph => {
_ph = ph;
return _ph.createPage();
}).then(page => {
_page = page;
return _page.open("http://cbc.ca")
}).then(status => {
return _page.property("cookies")
}).then(cookies => {
console.log(cookies);
//_page.close();
//_ph.exit();
}).catch(e => console.log(e));
`
The output from running DEBUG=true node test on that is:
debug: Sending: {"id":1,"target":"phantom","name":"createPage","params":[],"deferred":null} debug: Sending NOOP command. debug: Parsing: {"id":1,"target":"phantom","name":"createPage","params":[],"deferred":null,"response":{"pageId":1}} debug: Sending: {"id":2,"target":"page$1","name":"invokeAsyncMethod","params":["open","http://cbc.ca"],"deferred":null} debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. info: TypeError: undefined is not a constructor (evaluating 'CBC.APP.SC.LinkTracker.trackArea') info:   http://www.cbc.ca/:2175 in global code debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Received NOOP command. debug: Sending NOOP command. debug: Parsing: {"id":2,"target":"page$1","name":"invokeAsyncMethod","params":["open","http://cbc.ca"],"deferred":null,"response":"success"} debug: Sending: {"id":3,"target":"page$1","name":"property","params":["cookies"],"deferred":null} debug: Received NOOP command. debug: Sending NOOP command. debug: Parsing: {"id":3,"target":"page$1","name":"property","params":["cookies"],"deferred":null,"response":[{"domain":".cbc.ca","expires":"Sat, 27 Apr 2019 14:24:31 GMT","expiry":1556375071,"httponly":false,"name":"__gads","path":"/","secure":false,"value":"ID=9b79b039062298fb:T=1493303071:S=ALNI_MYIDeJ3QTbe11w1xkMPdmiqPg72tw"},{"domain":".cbc.ca","httponly":false,"name":"s_sess","path":"/","secure":false,"value":"%20s_cc%3Dtrue%3B%20SC_LINKS%3D%3B%20s_sq%3D%3B"},{"domain":".cbc.ca","expires":"Fri, 27 Apr 2018 14:24:31 GMT","expiry":1524839071,"httponly":false,"name":"s_pers","path":"/","secure":false,"value":"%20s_nr2%3D1493303071425-New%7C1524839071425%3B"},{"domain":".cbc.ca","expires":"Fri, 27 Apr 2018 14:24:31 GMT","expiry":1524839071,"httponly":false,"name":"cX_P","path":"/","secure":false,"value":"j1wdg918blnl1qwo"},{"domain":".cbc.ca","httponly":false,"name":"cX_S","path":"/","secure":false,"value":"j20i3byzpr7j3d2w"},{"domain":"www.cbc.ca","expires":"Thu, 27 Apr 2017 14:54:30 GMT","expiry":1493304870,"httponly":false,"name":"_cb_svref","path":"/","secure":false,"value":"null"},{"domain":"www.cbc.ca","expires":"Sun, 27 May 2018 14:24:30 GMT","expiry":1527431070,"httponly":false,"name":"_chartbeat2","path":"/","secure":false,"value":".1493053410963.1493303070938.1011.DmSTnBB17eOwEAAeCD_X4YfBFgdHg"},{"domain":"www.cbc.ca","expires":"Sun, 27 May 2018 14:24:30 GMT","expiry":1527431070,"httponly":false,"name":"_cb","path":"/","secure":false,"value":"Cs2Okd50EhItCI6j"},{"domain":"www.cbc.ca","expires":"Fri, 27 Apr 2018 14:24:30 GMT","expiry":1524839070,"httponly":false,"name":"CBC_ID","path":"/","secure":false,"value":"0f388c48-9451-45ce-50eb-d5e96d97d897"},{"domain":"www.cbc.ca","expires":"Thu, 04 May 2017 14:24:30 GMT","expiry":1493907870,"httponly":false,"name":"_vff","path":"/","secure":false,"value":"www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.386ff7d437c6b39dd1ff2aff68b1a6fb.true"},{"domain":"www.cbc.ca","expires":"Sat, 27 Apr 2019 14:24:30 GMT","expiry":1556375070,"httponly":false,"name":"_vfa","path":"/","secure":false,"value":"www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.a23de7c4-5a0f-4e3b-b1d8-396f01ae3d8c.1493303070.1493303070.1493303070.1"},{"domain":"www.cbc.ca","expires":"Thu, 27 Apr 2017 14:30:30 GMT","expiry":1493303430,"httponly":false,"name":"_vfz","path":"/","secure":false,"value":"www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.1493303070.1.medium=direct|source=|terms="},{"domain":"www.cbc.ca","expires":"Thu, 27 Apr 2017 14:54:30 GMT","expiry":1493304870,"httponly":false,"name":"_vfb","path":"/","secure":false,"value":"www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b8<IP_ADDRESS>3303070..00000000-0000-4000-8000-065dd08f2d53"},{"domain":".cbc.ca","expires":"Sat, 27 May 2017 14:24:29 GMT","expiry":1495895069,"httponly":false,"name":"cbclocal","path":"/","secure":false,"value":"weather%3Ds0000458%26radio%3Dtoronto%26news%3Dtoronto%26tv%3Dtoronto%26region%3Dtoronto"},{"domain":".cbc.ca","expires":"Tue, 09 Apr 2019 14:24:29 GMT","expiry":1554819869,"httponly":false,"name":"tvCenter","path":"/","secure":false,"value":"toronto"},{"domain":".cbc.ca","expires":"Tue, 09 Apr 2019 14:24:29 GMT","expiry":1554819869,"httponly":false,"name":"radioCenter","path":"/","secure":false,"value":"toronto"},{"domain":".cbc.ca","expires":"Tue, 09 Apr 2019 14:24:29 GMT","expiry":1554819869,"httponly":false,"name":"newsCenter","path":"/","secure":false,"value":"toronto"},{"domain":".cbc.ca","expires":"Tue, 09 Apr 2019 14:24:29 GMT","expiry":1554819869,"httponly":false,"name":"weatherCenter","path":"/","secure":false,"value":"s0000458"},{"domain":"www.cbc.ca","expires":"Sun, 27 May 2018 14:24:28 GMT","expiry":1527431068,"httponly":false,"name":"_cb_ls","path":"/","secure":false,"value":"1"},{"domain":"www.cbc.ca","httponly":false,"name":"akaas_feed","path":"/","secure":false,"value":"2147483647~rv=41~id=30155538af0d751bfc25897e70a659ef"}]} [ { domain: '.cbc.ca',     expires: 'Sat, 27 Apr 2019 14:24:31 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '__gads',     path: '/',     secure: false,     value: 'ID=9b79b039062298fb:T=1493303071:S=ALNI_MYIDeJ3QTbe11w1xkMPdmiqPg72tw' },   { domain: '.cbc.ca',     httponly: false,     name: 's_sess',     path: '/',     secure: false,     value: '%20s_cc%3Dtrue%3B%20SC_LINKS%3D%3B%20s_sq%3D%3B' },   { domain: '.cbc.ca',     expires: 'Fri, 27 Apr 2018 14:24:31 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 's_pers',     path: '/',     secure: false,     value: '%20s_nr2%3D1493303071425-New%7C1524839071425%3B' },   { domain: '.cbc.ca',     expires: 'Fri, 27 Apr 2018 14:24:31 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'cX_P',     path: '/',     secure: false,     value: 'j1wdg918blnl1qwo' },   { domain: '.cbc.ca',     httponly: false,     name: 'cX_S',     path: '/',     secure: false,     value: 'j20i3byzpr7j3d2w' },   { domain: 'www.cbc.ca',     expires: 'Thu, 27 Apr 2017 14:54:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb_svref',     path: '/',     secure: false,     value: 'null' },   { domain: 'www.cbc.ca',     expires: 'Sun, 27 May 2018 14:24:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_chartbeat2',     path: '/',     secure: false,     value: '.1493053410963.1493303070938.1011.DmSTnBB17eOwEAAeCD_X4YfBFgdHg' },   { domain: 'www.cbc.ca',     expires: 'Sun, 27 May 2018 14:24:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb',     path: '/',     secure: false,     value: 'Cs2Okd50EhItCI6j' },   { domain: 'www.cbc.ca',     expires: 'Fri, 27 Apr 2018 14:24:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CBC_ID',     path: '/',     secure: false,     value: '0f388c48-9451-45ce-50eb-d5e96d97d897' },   { domain: 'www.cbc.ca',     expires: 'Thu, 04 May 2017 14:24:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vff',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.386ff7d437c6b39dd1ff2aff68b1a6fb.true' },   { domain: 'www.cbc.ca',     expires: 'Sat, 27 Apr 2019 14:24:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfa',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.a23de7c4-5a0f-4e3b-b1d8-396f01ae3d8c.1493303070.1493303070.1493303070.1' },   { domain: 'www.cbc.ca',     expires: 'Thu, 27 Apr 2017 14:30:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfz',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.1493303070.1.medium=direct|source=|terms=' },   { domain: 'www.cbc.ca',     expires: 'Thu, 27 Apr 2017 14:54:30 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfb',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b8<IP_ADDRESS>3303070..00000000-0000-4000-8000-065dd08f2d53' },   { domain: '.cbc.ca',     expires: 'Sat, 27 May 2017 14:24:29 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'cbclocal',     path: '/',     secure: false,     value: 'weather%3Ds0000458%26radio%3Dtoronto%26news%3Dtoronto%26tv%3Dtoronto%26region%3Dtoronto' },   { domain: '.cbc.ca',     expires: 'Tue, 09 Apr 2019 14:24:29 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'tvCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Tue, 09 Apr 2019 14:24:29 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'radioCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Tue, 09 Apr 2019 14:24:29 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'newsCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Tue, 09 Apr 2019 14:24:29 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'weatherCenter',     path: '/',     secure: false,     value: 's0000458' },   { domain: 'www.cbc.ca',     expires: 'Sun, 27 May 2018 14:24:28 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb_ls',     path: '/',     secure: false,     value: '1' },   { domain: 'www.cbc.ca',     httponly: false,     name: 'akaas_feed',     path: '/',     secure: false,     value: '2147483647~rv=41~id=30155538af0d751bfc25897e70a659ef' } ]
Thanks in advance for you help on this.

A couple of things I researched:

A few people had complained that they wish to include their own phantomjs bin. I didn't know which one was worst, force a specific version or attempt to fix every bug with every version of phantomjs. I opted to force the version because that way I know my tests in travis work correctly. However, I am open to ideas of moving phantomjs-prebuilt to peerDependency. I haven't played with this.
I looked at the code for v1. There looks to be two instances of getCookies here. First of all, wtf. I never knew phantom.cookies was a thing.
Can you verify the above using phantomjs without node?
If my theory is correct, then you should be able to call phantom.cookies via phantomInstance.execute('phantom', 'property', ['cookies']);. That's a little ugly if it works and I can probably just add phantom.property('cookies'). or just phantom.cookies.

So to summarize, there seems to be phantom.cookies and page.cookies in v1. This is news to me. If you try option 4 and that works then we can try to add a PR to fix it.
Please give above a try and let me know.

Hey Thanks for that. I will try that tonight for sure and get back to you.  I really appreciate your help on this.  Also, yes, when I have my own instance of phantom ( say via homebrew ) it works.

Hey, yes that works!! This is the code:
var phantom = require("phantom"); var _ph, _page; phantom.create().then(ph => {   _ph = ph;   return _ph.createPage(); }).then(page => {   _page = page;   return _page.open("http://cbc.ca") }).then(status => {   return _ph.execute("phantom", "property", ["cookies"]) }).then(cookies => {   console.log(cookies);   //_page.close();   //_ph.exit(); }).catch(e => console.log(e));
And the cookies get logged out and you can see the third party cookies:
[ { domain: '.eyereturn.com',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'erBeh',     path: '/',     secure: false,     value: 'AwARdQAVAA==' },   { domain: '.eyereturn.com',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'erTok',     path: '/',     secure: false,     value: 'AwAAAACyehYAjNZSAAEAAA==' },   { domain: '.eyereturn.com',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'er_guid',     path: '/',     secure: false,     value: '7f3fc59e-ecef-4bf2-bfc5-9eeceffbf221' },   { domain: '.doubleclick.net',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: true,     name: 'IDE',     path: '/',     secure: false,     value: 'AHWqTUmzA0U0mfDtDbCYXOToL3bPbDdMCYAuM-9eUdqfeRIkH9Cq8BvuNA' },   { domain: '.doubleclick.net',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'id',     path: '/',     secure: false,     value: '2281946c1c36002d||t=1493342214|et=730|cs=002213fd48bd243527f59f0198' },   { domain: '.cbc.ca',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 's_vi',     path: '/',     secure: false,     value: '[CS]v1|2C814C03051D24E2-6000013220008897[CE]' },   { domain: '.cbc.ca',     expires: 'Sun, 28 Apr 2019 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '__gads',     path: '/',     secure: false,     value: 'ID=5ac4986ef58e5f17:T=1493342214:S=ALNI_MaA6ZiH-qdbFntjdq0c7nVqta6KnA' },   { domain: '.viafoura.co',     expires: 'Sat, 29 Apr 2017 01:06:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'VfSess',     path: '/',     secure: false,     value: 'rp698q2fciitvgtmt05osdvquq' },   { domain: '.viafoura.co',     expires: 'Mon, 26 Apr 2027 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'c',     path: '/',     secure: false,     value: '1' },   { domain: '.viafoura.co',     expires: 'Sat, 28 Apr 2018 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'vfDeviceId',     path: '/',     secure: false,     value: 'e04c66c5-4c57-4f74-820f-ee660ccc3d3b' },   { domain: '.cxense.com',     httponly: false,     name: 'gcks',     path: '/',     secure: false,     value: 'j215eac6lduyd4qo' },   { domain: '.cxense.com',     expires: 'Sat, 28 Apr 2018 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: true,     name: 'gckp',     path: '/',     secure: false,     value: '3rty67cxtxn2528i6p0wbmavl5' },   { domain: '.cbc.ca',     httponly: false,     name: 's_sess',     path: '/',     secure: false,     value: '%20s_cc%3Dtrue%3B%20SC_LINKS%3D%3B%20s_sq%3D%3B' },   { domain: '.cbc.ca',     expires: 'Sat, 28 Apr 2018 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 's_pers',     path: '/',     secure: false,     value: '%20s_nr2%3D1493342214429-New%7C1524878214429%3B' },   { domain: 'www.cbc.ca',     expires: 'Fri, 05 May 2017 01:16:54 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vff',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.e50b93473cff34239cc34510f45b2d23.true' },   { domain: '.cbc.ca',     expires: 'Sat, 28 Apr 2018 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'cX_P',     path: '/',     secure: false,     value: 'j214rpnfzbz6dcjh' },   { domain: '.cbc.ca',     httponly: false,     name: 'cX_S',     path: '/',     secure: false,     value: 'j215eac6lduyd4qo' },   { domain: '.casalemedia.com',     expires: 'Sat, 29 Apr 2017 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CMDD',     path: '/',     secure: false,     value: 'AAJ0lwE*' },   { domain: '.casalemedia.com',     httponly: false,     name: 'CMSC',     path: '/',     secure: false,     value: 'WQKYBQ**' },   { domain: '.casalemedia.com',     expires: 'Sat, 29 Apr 2017 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CMST',     path: '/',     secure: false,     value: 'WQKYBVkCmAUB' },   { domain: '.casalemedia.com',     expires: 'Thu, 27 Jul 2017 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CMPS',     path: '/',     secure: false,     value: '169' },   { domain: '.casalemedia.com',     expires: 'Sat, 28 Apr 2018 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CMID',     path: '/',     secure: false,     value: 'WQKYBcAoJ30AAH7SEtUAAACb' },   { domain: '.casalemedia.com',     expires: 'Fri, 28 Apr 2017 02:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CMTEST',     path: '/',     secure: false,     value: '1' },   { domain: 'www.cbc.ca',     expires: 'Sun, 28 Apr 2019 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfa',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.b663079b-d514-4d30-876d-c4059c35e7ec.1493342213.1493342213.1493342213.1' },   { domain: 'www.cbc.ca',     expires: 'Fri, 28 Apr 2017 01:22:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfz',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b829.1493342213.1.medium=direct|source=|terms=' },   { domain: 'www.cbc.ca',     expires: 'Fri, 28 Apr 2017 01:46:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_vfb',     path: '/',     secure: false,     value: 'www%2Ecbc%2Eca.00000000-0000-4000-8000-082f79d5b8<IP_ADDRESS>3342213..00000000-0000-4000-8000-065dd08f2d53' },   { domain: '.scorecardresearch.com',     expires: 'Thu, 18 Apr 2019 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'UIDR',     path: '/',     secure: false,     value: '1493342213' },   { domain: '.scorecardresearch.com',     expires: 'Thu, 18 Apr 2019 01:16:53 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'UID',     path: '/',     secure: false,     value: '11324a15614023a451492cg1493342213' },   { domain: 'www.cbc.ca',     expires: 'Fri, 28 Apr 2017 01:46:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb_svref',     path: '/',     secure: false,     value: 'null' },   { domain: 'www.cbc.ca',     expires: 'Mon, 28 May 2018 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_chartbeat2',     path: '/',     secure: false,     value: '.1439523032652.1493342212909.0000000000000001.DroXDzBIKBEEDvB19NCcgk9lDrZY1f' },   { domain: 'www.cbc.ca',     expires: 'Mon, 28 May 2018 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb',     path: '/',     secure: false,     value: 'Do5dQI9_v6FLuaRf' },   { domain: 'www.cbc.ca',     expires: 'Sat, 28 Apr 2018 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'CBC_ID',     path: '/',     secure: false,     value: '94821e75-3c15-15dd-facb-4fe25f7eae9a' },   { domain: '.cbc.ca',     expires: 'Sun, 28 May 2017 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'cbclocal',     path: '/',     secure: false,     value: 'weather%3Ds0000458%26radio%3Dtoronto%26news%3Dtoronto%26tv%3Dtoronto%26region%3Dtoronto' },   { domain: '.cbc.ca',     expires: 'Wed, 10 Apr 2019 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'tvCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Wed, 10 Apr 2019 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'radioCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Wed, 10 Apr 2019 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'newsCenter',     path: '/',     secure: false,     value: 'toronto' },   { domain: '.cbc.ca',     expires: 'Wed, 10 Apr 2019 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: 'weatherCenter',     path: '/',     secure: false,     value: 's0000458' },   { domain: 'i.cbc.ca',     httponly: false,     name: 'akaas_feed',     path: '/',     secure: false,     value: '2147483647~rv=62~id=b9a6127beb18cc98ce079bb99d93c492' },   { domain: 'www.cbc.ca',     expires: 'Mon, 28 May 2018 01:16:52 GMT',     expiry:<PHONE_NUMBER>,     httponly: false,     name: '_cb_ls',     path: '/',     secure: false,     value: '1' },   { domain: 'www.cbc.ca',     httponly: false,     name: 'akaas_feed',     path: '/',     secure: false,     value: '2147483647~rv=71~id=1e244f3277faa8d71e9d3a8eef2d9474' } ]
thanks for this! It's nice that I won't have to use an old version.

Nice. I'll keep this open and probably add an official method to make this work.

@nreoch25 I just pushed version 4.0.3 where it has phantom.cookies() and page.cookies(). Look at the tests.

Thanks @amir20 . This is a big help. I appreciate this.


Realtime database emulator with node 18 stalled requests

[REQUIRED] Environment info
firebase-tools: 11.16.1
Platform: macOS/Linux
[REQUIRED] Test case
Below are the steps to repro this issue.
[REQUIRED] Steps to reproduce

node <= 16

Configure your system to use node 16.x
Pull this repo https://github.com/Hacksore/firebase-datatabase-node18
yarn to install dependancies
yarn start to run the test case
you should get an error but it shows at least the request resolves (not really that that's expected to me but that's not the problem this issue is highlighting)

node >= 18

Configure your system to use node 18.x
Pull this repo https://github.com/Hacksore/firebase-datatabase-node18
yarn to install dependancies
yarn start to run the test case
you will see the stalled request which never finishes/timeout

[REQUIRED] Expected behavior
When using nodejs >=18 the emulator should work fine when setting FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"
[REQUIRED] Actual behavior
Stalled requests when using nodejs >= 18

@Hacksore - do you have the emulator running on that port?

@maneesht Yes the emulator is running on that port. Have you tried running the mcve in the issue body?

Logged { error: "can't find snapshot for userdata" }

@maneesht Can you confirm if you had node >=18 sourced when you ran the test?

@Hacksore I'm on v18.11.0

Can you enable logging and provide the necessary details below?
Example:
const db = admin.database();
admin.database.enableLogging(true);
...

@maneesht thanks for the pointers to enable debug mode. Here are the logs that seem to give more insight to the issue.
firebase-debug.log
[debug] [2023-02-21T23:00:31.490Z] ----------------------------------------------------------------------
[debug] [2023-02-21T23:00:31.491Z] Command:       /Users/hacksore/.nvm/versions/node/v18.11.0/bin/node /Users/hacksore/.yarn/bin/firebase emulators:start --import seed
[debug] [2023-02-21T23:00:31.491Z] CLI Version:   11.15.0
[debug] [2023-02-21T23:00:31.491Z] Platform:      darwin
[debug] [2023-02-21T23:00:31.492Z] Node Version:  v18.11.0
[debug] [2023-02-21T23:00:31.492Z] Time:          Tue Feb 21 2023 17:00:31 GMT-0600 (Central Standard Time)
[debug] [2023-02-21T23:00:31.492Z] ----------------------------------------------------------------------
[debug]
[debug] [2023-02-21T23:00:31.524Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"]
[debug] [2023-02-21T23:00:31.524Z] > authorizing via signed-in user (redacted)
[debug] [2023-02-21T23:00:31.572Z] openjdk version "11.0.17" 2022-10-18

[debug] [2023-02-21T23:00:31.572Z] OpenJDK Runtime Environment Homebrew (build 11.0.17+0)
OpenJDK 64-Bit Server VM Homebrew (build 11.0.17+0, mixed mode)

[debug] [2023-02-21T23:00:31.575Z] Parsed Java major version: 11
[info] i  emulators: Starting emulators: database {"metadata":{"emulator":{"name":"hub"},"message":"Starting emulators: database"}}
[debug] [2023-02-21T23:00:32.096Z] [logging] Logging Emulator only supports listening on one address (<IP_ADDRESS>). Not listening on ::1
[debug] [2023-02-21T23:00:32.097Z] [database] Database Emulator only supports listening on one address (<IP_ADDRESS>). Not listening on ::1
[debug] [2023-02-21T23:00:32.097Z] assigned listening specs for emulators {"user":{"hub":[{"address":"<IP_ADDRESS>","family":"IPv4","port":4400},{"address":"::1","family":"IPv6","port":4400}],"ui":[{"address":"<IP_ADDRESS>","family":"IPv4","port":4000},{"address":"::1","family":"IPv6","port":4000}],"logging":[{"address":"<IP_ADDRESS>","family":"IPv4","port":4500}],"database":[{"address":"<IP_ADDRESS>","family":"IPv4","port":9000}]},"metadata":{"message":"assigned listening specs for emulators"}}
[debug] [2023-02-21T23:00:32.099Z] [hub] writing locator at /var/folders/1v/n6w12pg1455gyd172wxd9b2r0000gn/T/hub-test.json
[debug] [2023-02-21T23:00:32.102Z] >>> [apiv2][query] GET https://firebase.googleapis.com/v1beta1/projects/test [none]
[debug] [2023-02-21T23:00:32.406Z] <<< [apiv2][status] GET https://firebase.googleapis.com/v1beta1/projects/test 403
[debug] [2023-02-21T23:00:32.407Z] <<< [apiv2][body] GET https://firebase.googleapis.com/v1beta1/projects/test {"error":{"code":403,"message":"The caller does not have permission","status":"PERMISSION_DENIED"}}
[debug] [2023-02-21T23:00:32.407Z] HTTP Error: 403, The caller does not have permission
[debug] [2023-02-21T23:00:32.407Z] Failed to retrieve default database instance: {"name":"FirebaseError","children":[],"exit":2,"message":"Failed to get Firebase project test. Please make sure the project exists and your account has permission to access it.","original":{"name":"FirebaseError","children":[],"context":{"body":{"error":{"code":403,"message":"The caller does not have permission","status":"PERMISSION_DENIED"}},"response":{"statusCode":403}},"exit":1,"message":"HTTP Error: 403, The caller does not have permission","status":403},"status":500} {"metadata":{"emulator":{"name":"database"},"message":"Failed to retrieve default database instance: {\"name\":\"FirebaseError\",\"children\":[],\"exit\":2,\"message\":\"Failed to get Firebase project test. Please make sure the project exists and your account has permission to access it.\",\"original\":{\"name\":\"FirebaseError\",\"children\":[],\"context\":{\"body\":{\"error\":{\"code\":403,\"message\":\"The caller does not have permission\",\"status\":\"PERMISSION_DENIED\"}},\"response\":{\"statusCode\":403}},\"exit\":1,\"message\":\"HTTP Error: 403, The caller does not have permission\",\"status\":403},\"status\":500}"}}
[debug] [2023-02-21T23:00:32.407Z] database rules config:  [{"instance":"test-default-rtdb","rules":"/Users/hacksore/Code/opensource/firebase-datatabase-node18/database.rules.json"}]
[debug] [2023-02-21T23:00:32.409Z] Ignoring unsupported arg: projectId {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: projectId"}}
[debug] [2023-02-21T23:00:32.409Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: auto_download"}}
[debug] [2023-02-21T23:00:32.409Z] Ignoring unsupported arg: rules {"metadata":{"emulator":{"name":"database"},"message":"Ignoring unsupported arg: rules"}}
[debug] [2023-02-21T23:00:32.409Z] Starting Database Emulator with command {"binary":"java","args":["-Duser.language=en","-jar","/Users/hacksore/.cache/firebase/emulators/firebase-database-emulator-v4.10.0.jar","--host","<IP_ADDRESS>","--port",9000,"--single_project_mode","Warning"],"optionalArgs":["port","host","functions_emulator_port","functions_emulator_host","single_project_mode"],"joinArgs":false} {"metadata":{"emulator":{"name":"database"},"message":"Starting Database Emulator with command {\"binary\":\"java\",\"args\":[\"-Duser.language=en\",\"-jar\",\"/Users/hacksore/.cache/firebase/emulators/firebase-database-emulator-v4.10.0.jar\",\"--host\",\"<IP_ADDRESS>\",\"--port\",9000,\"--single_project_mode\",\"Warning\"],\"optionalArgs\":[\"port\",\"host\",\"functions_emulator_port\",\"functions_emulator_host\",\"single_project_mode\"],\"joinArgs\":false}"}}
[info] i  database: Database Emulator logging to database-debug.log {"metadata":{"emulator":{"name":"database"},"message":"Database Emulator logging to \u001b[1mdatabase-debug.log\u001b[22m"}}
[debug] [2023-02-21T23:00:32.763Z] WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/Users/hacksore/.cache/firebase/emulators/firebase-database-emulator-v4.10.0.jar) to field sun.nio.ch.SelectorImpl.selectedKeys
WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
 {"metadata":{"emulator":{"name":"database"},"message":"WARNING: An illegal reflective access operation has occurred\nWARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/Users/hacksore/.cache/firebase/emulators/firebase-database-emulator-v4.10.0.jar) to field sun.nio.ch.SelectorImpl.selectedKeys\nWARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil\nWARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations\nWARNING: All illegal access operations will be denied in a future release\n"}}
[debug] [2023-02-21T23:00:33.104Z] 17:00:33.103 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.103 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO akka.event.slf4j.Slf4jLogger - Slf4jLogger started\n"}}
[debug] [2023-02-21T23:00:33.184Z] 17:00:33.184 [main] INFO com.firebase.server.forge.App$ - Listening at <IP_ADDRESS>:9000
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.184 [main] INFO com.firebase.server.forge.App$ - Listening at <IP_ADDRESS>:9000\n"}}
[info] i  database: Importing data from /Users/hacksore/Code/opensource/firebase-datatabase-node18/seed/database_export/test.json {"metadata":{"emulator":{"name":"database"},"message":"Importing data from /Users/hacksore/Code/opensource/firebase-datatabase-node18/seed/database_export/test.json"}}
[debug] [2023-02-21T23:00:33.604Z] 17:00:33.604 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - test successfully activated FBKV (SurveyIdle(0)) wait: 76ms, init: 0ms
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.604 [NamespaceSystem-akka.actor.default-dispatcher-5] INFO com.firebase.core.namespace.NamespaceActor - test successfully activated FBKV (SurveyIdle(0)) wait: 76ms, init: 0ms\n"}}
[debug] [2023-02-21T23:00:33.658Z] Ignoring unsupported arg: auto_download {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: auto_download"}}
[debug] [2023-02-21T23:00:33.658Z] Ignoring unsupported arg: port {"metadata":{"emulator":{"name":"ui"},"message":"Ignoring unsupported arg: port"}}
[debug] [2023-02-21T23:00:33.658Z] Starting Emulator UI with command {"binary":"node","args":["/Users/hacksore/.cache/firebase/emulators/ui-v1.11.1/server/server.js"],"optionalArgs":[],"joinArgs":false} {"metadata":{"emulator":{"name":"ui"},"message":"Starting Emulator UI with command {\"binary\":\"node\",\"args\":[\"/Users/hacksore/.cache/firebase/emulators/ui-v1.11.1/server/server.js\"],\"optionalArgs\":[],\"joinArgs\":false}"}}
[info] i  ui: Emulator UI logging to ui-debug.log {"metadata":{"emulator":{"name":"ui"},"message":"Emulator UI logging to \u001b[1mui-debug.log\u001b[22m"}}
[debug] [2023-02-21T23:00:33.724Z] Web / API server started at <IP_ADDRESS>:4000
 {"metadata":{"emulator":{"name":"ui"},"message":"Web / API server started at <IP_ADDRESS>:4000\n"}}
[debug] [2023-02-21T23:00:33.724Z] Web / API server started at ::1:4000
 {"metadata":{"emulator":{"name":"ui"},"message":"Web / API server started at ::1:4000\n"}}
[debug] [2023-02-21T23:00:33.916Z] >>> [apiv2][query] PUT http://<IP_ADDRESS>:9000/.settings/rules.json ns=test-default-rtdb
[debug] [2023-02-21T23:00:33.916Z] >>> [apiv2][body] PUT http://<IP_ADDRESS>:9000/.settings/rules.json "{\n  \"rules\": {\n    \"userdata\": {\n      \".read\": true,\n      \".write\": false\n    }\n  }\n}"
[debug] [2023-02-21T23:00:33.922Z] 17:00:33.922 [FirebaseWorkerPool-1-3] WARN com.firebase.core.persistence.backend.dummy.EmulatorMetadataPersistence - Multiple projectIds are not recommended in single project mode. Requested
namespace test-default-rtdb, but the emulator is configured for test. To
opt-out of single project mode add/set the single_project_mode: false property in
the firebase.json emulators config.
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.922 [FirebaseWorkerPool-1-3] WARN com.firebase.core.persistence.backend.dummy.EmulatorMetadataPersistence - Multiple projectIds are not recommended in single project mode. Requested \nnamespace test-default-rtdb, but the emulator is configured for test. To \nopt-out of single project mode add/set the single_project_mode: false property in \nthe firebase.json emulators config. \n"}}
[debug] [2023-02-21T23:00:33.926Z] 17:00:33.926 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO com.firebase.core.namespace.NamespaceActor - test-default-rtdb successfully activated FBKV (SurveyIdle(0)) wait: 1ms, init: 0ms
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.926 [NamespaceSystem-akka.actor.default-dispatcher-4] INFO com.firebase.core.namespace.NamespaceActor - test-default-rtdb successfully activated FBKV (SurveyIdle(0)) wait: 1ms, init: 0ms\n"}}
[debug] [2023-02-21T23:00:33.942Z] 17:00:33.942 [NamespaceSystem-blocking-namespace-operation-dispatcher-7] INFO com.firebase.core.namespace.StateManager - Namespace test-default-rtdb status Active to Active
 {"metadata":{"emulator":{"name":"database"},"message":"17:00:33.942 [NamespaceSystem-blocking-namespace-operation-dispatcher-7] INFO com.firebase.core.namespace.StateManager - Namespace test-default-rtdb status Active to Active\n"}}
[debug] [2023-02-21T23:00:33.955Z] <<< [apiv2][status] PUT http://<IP_ADDRESS>:9000/.settings/rules.json 200
[debug] [2023-02-21T23:00:33.955Z] <<< [apiv2][body] PUT http://<IP_ADDRESS>:9000/.settings/rules.json {"status":"ok"}
[info]
┌─────────────────────────────────────────────────────────────┐
│ ✔  All emulators ready! It is now safe to connect your app. │
│ i  View Emulator UI at http://<IP_ADDRESS>:4000/               │
└─────────────────────────────────────────────────────────────┘

┌──────────┬────────────────┬────────────────────────────────┐
│ Emulator │ Host:Port      │ View in Emulator UI            │
├──────────┼────────────────┼────────────────────────────────┤
│ Database │ <IP_ADDRESS>:9000 │ http://<IP_ADDRESS>:4000/database │
└──────────┴────────────────┴────────────────────────────────┘
  Emulator Hub running at <IP_ADDRESS>:4400
  Other reserved ports: 4500

Issues? Report them at https://github.com/firebase/firebase-tools/issues and attach the *-debug.log files.

And I see the client repeatedly calling printing this.
Console output:
 node --loader ts-node/esm index.ts
[bug] (node:56371) ExperimentalWarning: Custom ESM Loaders is an experimental feature. This feature could change at any time
[bug] (Use `node --trace-warnings ...` to show where the warning was created)
[emulator] i  emulators: Starting emulators: database
[bug] FIREBASE_DATABASE_EMULATOR_HOST: localhost:9000
[bug] firebase initializeApp...
[bug] initialized firebase server app!
[bug] [2023-02-21T23:00:31.701Z]  @firebase/database: p:0: Browser went online.
[bug] [2023-02-21T23:00:31.701Z]  @firebase/database: p:0: Auth token refreshed
[bug] [2023-02-21T23:00:31.704Z]  @firebase/database: p:0: Making a connection attempt
[bug] [2023-02-21T23:00:31.705Z]  @firebase/database: getToken() completed. Creating connection.
[bug] [2023-02-21T23:00:31.705Z]  @firebase/database: c:0:0: Connection created
[bug] [2023-02-21T23:00:31.707Z]  @firebase/database: c:0:0:0 Websocket connecting to ws://localhost:9000/.ws?v=5&ns=
[bug] [2023-02-21T23:00:31.715Z]  @firebase/database: c:0:0:0 WebSocket error.  Closing connection.
[bug] [2023-02-21T23:00:31.715Z]  @firebase/database: c:0:0:0 Network error: ws://localhost:9000/.ws?v=5&ns=: connect ECONNREFUSED ::1:9000
[bug] [2023-02-21T23:00:31.715Z]  @firebase/database: c:0:0:0 WebSocket is closing itself
[bug] [2023-02-21T23:00:31.715Z]  @firebase/database: c:0:0:0 Websocket connection was disconnected.
[bug] [2023-02-21T23:00:31.715Z]  @firebase/database: c:0:0: Realtime connection failed.
[bug] [2023-02-21T23:00:31.716Z]  @firebase/database: c:0:0: Closing realtime connection.
[bug] [2023-02-21T23:00:31.716Z]  @firebase/database: c:0:0: Shutting down all connections
[bug] [2023-02-21T23:00:31.716Z]  @firebase/database: p:0: data client disconnected
[bug] [2023-02-21T23:00:31.716Z]  @firebase/database: p:0: Trying to reconnect in<PHONE_NUMBER>6858725ms
[bug] [2023-02-21T23:00:31.716Z]  @firebase/database: 0: onDisconnectEvents
[bug] [2023-02-21T23:00:31.858Z]  @firebase/database: p:0: Making a connection attempt
[bug] [2023-02-21T23:00:31.860Z]  @firebase/database: getToken() completed. Creating connection.
[bug] [2023-02-21T23:00:31.860Z]  @firebase/database: c:0:1: Connection created
[bug] [2023-02-21T23:00:31.861Z]  @firebase/database: c:0:1:0 Websocket connecting to ws://localhost:9000/.ws?v=5&ns=
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1:0 WebSocket error.  Closing connection.
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1:0 Network error: ws://localhost:9000/.ws?v=5&ns=: connect ECONNREFUSED ::1:9000
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1:0 WebSocket is closing itself
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1:0 Websocket connection was disconnected.
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1: Realtime connection failed.
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1: Closing realtime connection.
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: c:0:1: Shutting down all connections
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: p:0: data client disconnected
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: p:0: Trying to reconnect in 33.68043411452045ms
[bug] [2023-02-21T23:00:31.862Z]  @firebase/database: 0: onDisconnectEvents
[bug] [2023-02-21T23:00:31.897Z]  @firebase/database: p:0: Making a connection attempt
[bug] [2023-02-21T23:00:31.898Z]  @firebase/database: getToken() completed. Creating connection.
[bug] [2023-02-21T23:00:31.898Z]  @firebase/database: c:0:2: Connection created
[bug] [2023-02-21T23:00:31.899Z]  @firebase/database: c:0:2:0 Websocket connecting to ws://localhost:9000/.ws?v=5&ns=
[bug] [2023-02-21T23:00:31.901Z]  @firebase/database: c:0:2:0 WebSocket error.  Closing connection.
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2:0 Network error: ws://localhost:9000/.ws?v=5&ns=: connect ECONNREFUSED ::1:9000
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2:0 WebSocket is closing itself
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2:0 Websocket connection was disconnected.
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2: Realtime connection failed.
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2: Closing realtime connection.
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: c:0:2: Shutting down all connections
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: p:0: data client disconnected
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: p:0: Trying to reconnect in<PHONE_NUMBER>75497ms
[bug] [2023-02-21T23:00:31.902Z]  @firebase/database: 0: onDisconnectEvents
[emulator] i  database: Database Emulator logging to database-debug.log
[bug] [2023-02-21T23:00:32.661Z]  @firebase/database: p:0: Making a connection attempt
[bug] [2023-02-21T23:00:32.662Z]  @firebase/database: getToken() completed. Creating connection.
[bug] [2023-02-21T23:00:32.662Z]  @firebase/database: c:0:3: Connection created
[bug] [2023-02-21T23:00:32.664Z]  @firebase/database: c:0:3:0 Websocket connecting to ws://localhost:9000/.ws?v=5&ns=
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3:0 WebSocket error.  Closing connection.
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3:0 Network error: ws://localhost:9000/.ws?v=5&ns=: connect ECONNREFUSED ::1:9000
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3:0 WebSocket is closing itself
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3:0 Websocket connection was disconnected.
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3: Realtime connection failed.
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3: Closing realtime connection.
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: c:0:3: Shutting down all connections
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: p:0: data client disconnected
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: p:0: Trying to reconnect in<PHONE_NUMBER>094277ms
[bug] [2023-02-21T23:00:32.665Z]  @firebase/database: 0: onDisconnectEvents
[emulator] i  database: Importing data from /Users/hacksore/Code/opensource/firebase-datatabase-node18/seed/database_export/test.json
[bug] [2023-02-21T23:00:33.490Z]  @firebase/database: p:0: Making a connection attempt
[bug] [2023-02-21T23:00:33.492Z]  @firebase/database: getToken() completed. Creating connection.
[bug] [2023-02-21T23:00:33.492Z]  @firebase/database: c:0:4: Connection created
[bug] [2023-02-21T23:00:33.493Z]  @firebase/database: c:0:4:0 Websocket connecting to ws://localhost:9000/.ws?v=5&ns=
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4:0 WebSocket error.  Closing connection.
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4:0 Network error: ws://localhost:9000/.ws?v=5&ns=: connect ECONNREFUSED ::1:9000
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4:0 WebSocket is closing itself
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4:0 Websocket connection was disconnected.
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4: Realtime connection failed.
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4: Closing realtime connection.
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: c:0:4: Shutting down all connections
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: p:0: data client disconnected
[bug] [2023-02-21T23:00:33.494Z]  @firebase/database: p:0: Trying to reconnect in 1143.0725072118735ms
[bug] [2023-02-21T23:00:33.495Z]  @firebase/database: 0: onDisconnectEvents

@Hacksore long shot and I didn't test this, but can you try adding the host as localhost in your firebase.json and see of that helps?
"database": {
      "port": 9000,
      "host": "<IP_ADDRESS>"
}

This is based on a guess because your emulators are running on <IP_ADDRESS> but the rtdb requests are pointing to localhost.

@lahirumaramba I think you've found the issue, good catch!
If I change the env var to FIREBASE_DATABASE_EMULATOR_HOST="<IP_ADDRESS>:9000" no more stalled requests on node 18 for me.
However, it doesn't work to add host to localhost address in the firebase.json and keep the env var host as localhost:9000.
Has something changed recently that could potentially cause this?

Glad you got it fixed! Using the IP address <IP_ADDRESS> is more reliable than using localhost as localhost might not resolve correctly on IPv6.

@lahirumaramba would it make sense to update the docs to reflect the usage of <IP_ADDRESS> over localhost?
https://firebase.google.com/docs/emulator-suite/connect_rtdb#admin_sdks

Hi @Hacksore, That might not be a bad idea! There is a similar PR to update a codelab here https://github.com/firebase/emulators-codelab/pull/22
@christhompsongoogle @yuchenshi @egilmorez WDYT? Should we update the docs to use <IP_ADDRESS>?

Yes I think so too


"Not Supported" even after updated

Not Supported
BetterDiscord v0.2.82 (your version) is not supported by the latest js (0.2.2).
Please download the latest version from GitHub

This appears upon starting Discord. (Running on Linux (Ubuntu) if this is relevant.)
Re-installing using betterdiscordctl, either from the default stable16 branch or the master branch, does not change this.
Of interest, it appears to temporarily load something (displaying the "BetterDiscord is loading" corner icon and also the above message in a modal), but that's it.

Should try using the update command of betterdiscordctl and stable16 is the branch you want

I should probably have considered that :woman_facepalming:. Thanks.

No problem!


Continuous Integration populated

@anarthal This version should include all the topics you listed in your earlier notes. Not sure I have all the tools (compilers, sanitizers) listed that perhaps should be. And a link to fuzz testing would be good too.
@alandefreitas FYI

@alandefreitas I have simplified the CI section:

moved static analysis to a separate topic (except for Coverity Scan as its embedded in our CI)
removed the CI perf stuff, didn't seem to be helpful
added a link and short explanation to boost-ci, rather than duplicate its content
added summaries of tools used in boost-ci (coverity scan, codecov.io) that were missing from the topic
simplified the Docker use case to the replication issue only

Great. Anything left to review?

@alandefreitas @anarthal @fpelliccioni
CI, sanitizers, static analysis separated. Your comments included.

Looks good

@alandefreitas I have removed the static analysis section for now. Squashed the remainder, so I hope GTG.


reCAPTCHA detected bot actions

I'm using the default proxies setting but it seems like chrome is able to detect the automation behavior on reCAPTCHA, any suggestion? thanks a ton in advance.

I've turn on the VPN on my machine btw. Or maybe me I need to find other proxies? Please advise. Thanks

Hi!
If you have recaptcha error, it means that there are too many solve requests coming from your IP (your proxy). Maybe the "cleanliness" of the proxy also matters, but I can't confirm
Tip: paid proxies are good, but not all of them will work good. Residential proxies are the best, but they're very expensive. Free ones will be hard to find, but real

Hi!
If you have recaptcha error, it means that there are too many solve requests coming from your IP (your proxy). Maybe the "cleanliness" of the proxy also matters, but I can't confirm
Tip: paid proxies are good, but not all of them will work good. Residential proxies are the best, but they're very expensive. Free ones will be hard to find, but real

Hi there, I've been switching different IPs using VPN, but each IP is only able to create 1-2 accounts then gets flagged by reddit, even I have set a 10 mins timeout.... any way that I can scale it?

Reddit has a very strict bot protection system. If 2-3 accounts registered from the same IP, you can have those accounts banned pretty soon, even from your home ip (don't repeat my mistakes 🥲)
So, change IP strictly after each account, otherwise you will get restricted

I see, how do I add proxies and where can modify the code of changing IP after each account? Thanks

You don't need code, everything happens in the proxies.txt file
You can use either a rotating proxy (these are the proxies that will change themselves each time you register) or many static proxies. Put all of them in the proxies.txt file
Static proxies: add the whole list of proxies to the file
Rotating proxy: in this case there will be 1 proxy entry, add it to the file too

So is this the same to add static proxies? And what about rotating proxy though?
Thank you for you quick response and really appreciate your answer!

Yes, your screenshot shows how to add regular proxies. For rotating proxy it's enough to use only one entry, for example user:pass@<IP_ADDRESS>:5258. But note that there are static proxies that require a request to their server to change IP, these proxies will not work

I've been changing VPN IPs while using different proxies, reddit seems only allow you to register new account every 10 min, and after a couple accounts been created, the VPN IP will be blocked....any solution?

Well, there are inconsistencies in what you're saying. You don't need a vpn, you just need proxies
If reddit limits you to 1 account per 10 minutes, then you're registering accounts from the same IP, means your proxies don't change IPs or you're doing something wrong, can't tell

I guess the proxies ain't working then(but the LOG INFO shows the script's been trying to connect through those proxies one after another thought....), it's just me manually rotating IPs from my VPN when it's blocked by reddit. Also, some of those accounts are shadow-banned after making the first vote and comment, any idea why's that?

Yea, bans is a problem. Reddit has a very advanced anti-bot system and these accounts aren't really suitable for commenting
Although you can make upvotes from these accounts, but if you do too many upvotes on one post, reddit will ban all accounts at once, so you have to work around it to make it work

so only upvote and no comment?
All of a sudden I got this error today, I didn't modify any code, please help:

Tbh it's a first time I see this error and I have no clue what it means, can't help
And yes, accounts from this script is mostly suitable for upvote manipulations, not comments

Tbh it's a first time I see this error and I have no clue what it means, can't help. Maybe try to reinstall?
And yes, accounts from this script is mostly suitable for upvote manipulations, not comments

This information is useful. Are the accounts suitable for DM?

To be honest I don't know and would be happy to know as well

To be honest I don't know and would be happy to know as well

Thanks for your response. Is there a recommended proxy provider that you use? Mine is getting expensive. I don't usually do webdriver stuff, so a ton of junk is eating my bandwidth.

Yeah, that's a problem
I used residential proxy but they're really expensive for this thing because of the amount of media on the site. There's no other ways for now if you want a decent accounts, unfortunately

@im-kent did you make any progress on your questions here "This information is useful. Are the accounts suitable for DM? Are user agents spoofed? For the same account, if it is logged in from IPs of different countries every 10 mins or so, is that a problem?"

@im-kent did you make any progress on your questions here "This information is useful. Are the accounts suitable for DM? Are user agents spoofed? For the same account, if it is logged in from IPs of different countries every 10 mins or so, is that a problem?"

I did not. It appears that for the time being, Reddit has updated their login logic slightly such that the account generator may not work out of the box (see #32 ). As such I currently am not creating accounts in an automated fashion. I suspect it is probably an easy fix, but I haven't spent any time in the codebase to look into it.

I did not. It appears that for the time being, Reddit has updated their login logic slightly such that the account generator may not work out of the box (see #32 ). As such I currently am not creating accounts in an automated fashion. I suspect it is probably an easy fix, but I haven't spent any time in the codebase to look into it.

noted. thanks.


Difference HEAD <-> Master?

I get this when I try to sync:

dashman version 0.1.25 (25-g10d3dec) - 2017-4-1 Saturday 15:35:15 CEST
Fetching origin
No local changes to save
Already on 'master'
Your branch is up-to-date with 'origin/master'.
HEAD is now at 10d3dec bugfix - masternodeaddr -> externalip
Up to date.

that's not an error. it's saying it's up-to-date.

Not saying that it's an error. Just confusingto me :-)
I also get these:

Fetching origin
remote: Counting objects: 4, done.
remote: Total 4 (delta 3), reused 3 (delta 3), pack-reused 1
Unpacking objects: 100% (4/4), done.
From https://github.com/moocowmoo/dashman
6aabce1..5b469f6  master     -> origin/master
No local changes to save
Already on 'master'
Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
HEAD is now at 5b469f6 bugfix - fix progress/estimate remaining render
Up to date.


Replace absolute internal links with relative ones

There are a lot of links within the site that use absolute references, for example:
content/foundation/trillions-thanks.html
93:
95:

Such links should be relative.

Why is one preferable over the other? I see no strong argument in favour of relative links unless we plan to move the whole site to a new URL. In fact, in what I just read, it is preferable to have absolute links for search-engine purposes when pointing to the main page of the site, as in your two examples.

In the example given, the scheme is forced to http, whereas the viewer may be using https (or vice versa)
for the purpose of testing the staged site, following links will take one away from the site, so won't show if the target is missing, as well as being harder to test
surely search engines can copy with relative links?

I agree with sebb. I moved most of these to relative during migration to avoid the horrendous problems they would have caused in testing.
I advocate doing it correctly going forward and for central services or the various VPs to mixup these hyperlinks.
find . -type f -name "*.md" -exec grep -li '//apache.org' {} \; -exec grep -ni '//apache.org' {} \;
Here are pages at issue that refer to //apache.org with my opinion.
(1) ./press/guides/officer-speaking-guide.md
25:Regardless of hat your are wearing and the channel for the message, you must adhere to the ASF Code of Conduct at all times.
Yes.
(2) ./foundation/contributing-v5.md
49:
No. Obsolete page.
(3) ./foundation/marks/naming.md
214:[1]: http://apache.org/foundation/marks/pmcs.html#naming
215:[2]: http://apache.org/foundation/marks/
216:[3]: http://apache.org/dev/project-names.html
Yes
(4) ./foundation/press/kit/index.md
122:High resolution graphical assets for the 20th Anniversary of The Apache Software Foundation are available for use in approved applications only. 20th Anniversary graphics must point to http://apache.org/ . To get them, please contact press(at)apache(dot)org detailing the specifics for your request.
No - instructions.
(5) ./foundation/donated.md
20:
25:
Ask Central Services.
(6) ./foundation/thanks.md
30:      Anonymous
This one hardly matters where.
(7) ./foundation/contributing.md
7:  As a US 501(c)(3) not-for-profit charitable organization, the ASF depends on a variety of funding sources to sustain its day-to-day activities. Your support enables the all-volunteer ASF to ensure its 350+ community-driven software projects remain freely available to billions of users around the world, and to incubate the next generation of Open Source innovations.
35:        To make a lasting impact and be formally recognized as a sponsor of the Foundation, the Sponsorship Program page is the official path for substantial, non-directed monetary contributions to the ASF.
43:        Contributions in the form of Targeted sponsorships benefit the ASF in addition to funding our general operations. We invite you to view our guidelines to see if Targeted Sponsorship is right for you.
114:                  with the corresponding project logo.
Yes.
(8) ./foundation/getinvolved.md
61:to Apache project websites.
Yes.
(9) ./foundation/ASF-EA.md
41:* http://apache.org/foundation/how-it-works.html
Yes.
(10) ./theapacheway/index.md
913:Community of Peers: individuals participate at the ASF, not organizations. The ASF’s flat structure dictates that roles are equal irrespective of title, votes hold equal weight, and contributions are made on a volunteer basis (even if paid to work on Apache code). The Apache community is expected to treat each other with respect in adherence to our Code of Conduct. Domain expertise is appreciated; Benevolent Dictators For Life are disallowed. More on individual participation.
923:...as well as restricted, day-to-day operational lists for Project Management Committees. Private decisions on code, policies, or project direction are disallowed; off-list discourse and transactions must be brought on-list. More on communications and the use of mailing lists.
Yes.
(11) ./dev/crypto.md and several others
6:let old_url = new RegExp('https?://[^/]+/dev/'); // https://apache.org/dev/foo.html etc
No
It's easy to do similar searches for www.apache.org, but every file will be in the list.
find . -type f -name "*.md" -exec grep -li '//www.apache.org' {} \; -exec grep -ni '//www.apache.org' {} \;
I won't give detail, care is needed as some of these links are intentional.

I found the ones on www.a.o using a search of the form:
'=.https?://(www.)?apache.org'
This includes href= and src= but excludes non-link references.
There are still some references that must not be changed, for example <base href= should presumably be left alone.

I think these have now all been fixed


Screenshots / Diagrams

Looks like you put a lot of work into this. Add some diagrams or screenshots to quickly explain what problem is being solved. It should help with adoption.

Thanks a lot. I will keep that in mind and add those.


hide aws account id if there is no content

currently, the ui shows none when there is no account id

tested with some test data and it looks good to me:
if we don't have account id, there is no column for it:

if there is account id, we show it:


yabai: 6.0.7 -> 6.0.9

Description of changes
https://github.com/koekeishiya/yabai/blob/master/CHANGELOG.md#609---2024-02-04

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.05 Release Notes (or backporting 23.05 and 23.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@GrahamcOfBorg build yabai

Result of nixpkgs-review pr 286322 run on aarch64-darwin 1

1 package built:

yabai

@GrahamcOfBorg build yabai


[service-bus] Fix autoCompleteMessages help to indicate that it'll both completeMessage() and abandonMessage()

Updating doc comment for autoComplete, indicating that it will abandon() if an error is thrown.
The prior text made it sound like it would call completeMessage() no matter what happened, which was confusing.
Fixes #15519

/azp run js - service-bus - tests


Watch resources without update access?

Custom resources often function as configuration for operators rather than items for the operator to act on. Is it possible with kopf to configure a watch on a resource that the operator does not have access to modify? For example, to watch for configuration changes?
It seems at present this is not possible because kopf always attempts to set the last-handled-configuration annotation.

@jkupferer You can use @kopf.on.event() handlers: https://kopf.readthedocs.io/en/latest/handlers/#event-handlers — these are the "silent spy-handlers" by design, and do not store anything on the objects, just react.

As an advanced move, Kopf can also be embedded into other apps (soon: see #156) — so you can run it in a background thread, while the non-operator-like app runs in the main thread. And maintain a global state from that thread, to be consumed in the main app.
A draft (just for inspiration; not tested):
import asyncio
import threading
import kopf

CONFIG = {}
registry = kopf.GlobalRegistry()
operator = None

@kopf.on.event('example.com', 'v1', 'myconfigs', registry=registry)
def config_changed(name, spec, **_):
    if name == 'my-config-name':
        CONFIG.update(spec or {})

def kopf_thread():
    global operator
    loop = asyncio.get_event_loop()
    operator = kopf.operator(registry=registry)
    try:
        loop.run_until_complete(operator)
    except asyncio.CancelledError:
        pass

def main():
    thread = threading.Thread(target_fn=kopf_thread)
    thread.start()
    # .... do you app ... consume CONFIG ...
    operator.cancel()
    thread.join()

But if you do not need operator-/controller-like behaviour, and you app is not an operator/controller itself, then probably a simple watch-stream from a Kubernetes API client library (kubernetes or pykube-ng) should be sufficient, with no Kopf involved.

@nolar Perfect! I'll try it out. Thank you!


Get Menu & Hours Data from CIT

Steven is meeting with CIT to discuss if this is possible. CIT will be providing an API for certain data.

Using https://now.dining.cornell.edu/api/1.0/dining/eateries.json


Investigate enabling vFile plugin for docker EE

Docker EE doesn't use swarm to manage the node cluster that runs the containers. Since vFile presently supports swarm based clusters, this issue is to address enabling vFile for clusters managed via docker EE.

@govint Could you elaborate the value/reason why vFile plugin should support docker EE as well?

This was discussed earlier as something to investigate to figure out supporting the vFile plugin on platforms that don't necessarily use swarm as the cluster manager. Users on Docker EE would surely use stateful containers and with vSphere hosts they would need to be supported. Especially those that need shared volume support for containers.

investigation should be a mustfix for vFile beta release

+1, this will be great !

this is an mustfix ? or will be implemented in a future ?


Does not run without a config map

README looks like config map is optional, but just using node-problem-detector.yaml as-is does not work and it fails because config map is missing.

What's the error message?

Huh, this was some time ago, but it is simply something along the lines that Kubernetes cannot find the config.

Sorry for the late reply. I'm just back from vacation.
The NPD container has some built-in configs. You may need to check the container build file to see if your expected config is included. If there is a bug with the default setup, I am happy to review your fix. :)

I just used the image in that config file, k8s.gcr.io/node-problem-detector:v0.6.3.

But I think this is Kubernetes issue, not container issue.

Do you mind providing more details, e.g., the steps to reproduce, the expected behavior, error messages observed, etc?

Sure.
I run:
kubectl create -f https://raw.githubusercontent.com/kubernetes/node-problem-detector/master/deployment/node-problem-detector.yaml

And then If I do:
kubectl describe pods node-problem-detector-zl8bf

I get:
Name:               node-problem-detector-zl8bf
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               kind-control-plane/<IP_ADDRESS>
Start Time:         Fri, 31 May 2019 11:47:46 -0700
Labels:             app=node-problem-detector
                    controller-revision-hash=79fcfc4bff
                    pod-template-generation=1
Annotations:        <none>
Status:             Pending
IP:
Controlled By:      DaemonSet/node-problem-detector
Containers:
  node-problem-detector:
    Container ID:
    Image:         k8s.gcr.io/node-problem-detector:v0.6.3
    Image ID:
    Port:          <none>
    Host Port:     <none>
    Command:
      /node-problem-detector
      --logtostderr
      --system-log-monitors=/config/kernel-monitor.json,/config/docker-monitor.json
    State:          Waiting
      Reason:       ContainerCreating
    Ready:          False
    Restart Count:  0
    Limits:
      cpu:     10m
      memory:  80Mi
    Requests:
      cpu:     10m
      memory:  80Mi
    Environment:
      NODE_NAME:   (v1:spec.nodeName)
    Mounts:
      /config from config (ro)
      /dev/kmsg from kmsg (ro)
      /etc/localtime from localtime (ro)
      /var/log from log (ro)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-vhpjc (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             False
  ContainersReady   False
  PodScheduled      True
Volumes:
  log:
    Type:          HostPath (bare host directory volume)
    Path:          /var/log/
    HostPathType:
  kmsg:
    Type:          HostPath (bare host directory volume)
    Path:          /dev/kmsg
    HostPathType:
  localtime:
    Type:          HostPath (bare host directory volume)
    Path:          /etc/localtime
    HostPathType:
  config:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      node-problem-detector-config
    Optional:  false
  default-token-vhpjc:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-vhpjc
    Optional:    false
QoS Class:       Guaranteed
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/disk-pressure:NoSchedule
                 node.kubernetes.io/memory-pressure:NoSchedule
                 node.kubernetes.io/not-ready:NoExecute
                 node.kubernetes.io/pid-pressure:NoSchedule
                 node.kubernetes.io/unreachable:NoExecute
                 node.kubernetes.io/unschedulable:NoSchedule
Events:
  Type     Reason       Age                  From                         Message
  ----     ------       ----                 ----                         -------
  Normal   Scheduled    2m59s                default-scheduler            Successfully assigned default/node-problem-detector-zl8bf to kind-control-plane
  Warning  FailedMount  56s                  kubelet, kind-control-plane  Unable to mount volumes for pod "node-problem-detector-zl8bf_default(94c039df-83d4-11e9-8228-0242ac110002)": timeout expired waiting for volumes to attach or mount for pod "default"/"node-problem-detector-zl8bf". list of unmounted volumes=[config]. list of unattached volumes=[log kmsg localtime config default-token-vhpjc]
  Warning  FailedMount  51s (x9 over 2m59s)  kubelet, kind-control-plane  MountVolume.SetUp failed for volume "config" : configmap "node-problem-detector-config" not found

Not the warning at the end. And then failure. Note that pod is not ready.

I see. You also need to create config map using node-problem-detector/deployment/node-problem-detector-config.yaml. The README is probably misleading. I will update the README.


vharsh's checklist

[x] Having funn :)
[x] Created an issue
[x] cloned it to my laptop
[x] configured git
[ ] Create pull request
[ ] Merge PR
[ ] Collaborate


Use sargparse, add debug flags

Closes #47
Implementation

Move from command line args parsing to using sargparse.
Add debug flag - --instructions  for printing the instructions read from executable binary.

All integration tests and yamtests are passing. Merging this.


Android Automotive - Album art not displaying

When running Android Automotive OS, the album art is not displayed.
The default album images are presented.

Would be fixed by https://github.com/android/uamp/issues/235

Solved in #235


Exception cause is hidden by AbstractLoadBalancerAwareClient.executeWithLoadBalancer

We got exception like this in production:
Caused by: com.netflix.client.ClientException: null
	at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:123) ~[ribbon-loadbalancer-2.0.0.jar!/:2.0.0]
	at com.netflix.client.AbstractLoadBalancerAwareClient.executeWithLoadBalancer(AbstractLoadBalancerAwareClient.java:81) ~[ribbon-loadbalancer-2.0.0.jar!/:2.0.0]
	at org.springframework.cloud.netflix.zuul.filters.route.RibbonCommand.forward(RibbonCommand.java:132) ~[spring-cloud-netflix-core-1.0.3.RELEASE.jar!/:1.0.3.RELEASE]

Client exception doesn't have a cause. That makes the reason of that exception totally unclear.
Original exception erased by this code:
        } catch (Exception e) {
            Throwable t = e.getCause();
            if (t instanceof ClientException) {
                throw (ClientException) t;
            } else {
                throw new ClientException(t);
            }
        }

In case when e doesn't have any cause it is caught and replaced with ClientException.
Unfortunately I don't know how to reproduce the issue.

Sorry. That has been fixed by @mattnelson in d98065c.


[Publisher] Production endpoint field ovelapping

Issue
In Endpoints page,after adding production endpoint or sandbox endpoint,if we select Load balanced option or Failover option and if we click on that endpoint & then if we click on another field label overlaps with the endpoint url.

Fixed in https://github.com/wso2/carbon-apimgt/pull/7473


Introduce PR Testing (on mac)

Introduce PR testing to help validate and review patches.
Currently, this can only be run against macos, since this is the only runner which supports nested virt.  This PR also modifies the testsuite to detect and retry qemu launch when there is a kernel panic. This condition appears to be scheduling-related interference with the timing check.  Unfortunately, no_timing_check and other potential kernel argument workarounds can't be used since argument changes in ignition require a reboot that is not early enough. In practice, the impact time to testing is tiny, even with multiple panics the full test suite completes in under 10 mins.
This PR is based on and reuses the commits from: #60

Why is it so slow? PASS: TestSuite (462.71s). It takes 1min on my machine :/


Unable to turn off Privacy mode too

Hi,
I'm using the following code :
    tapo=Tapo(host, user, password)
    tapo.setPrivacyMode(False)

And I also try the methode given in #33 but it isn't worked for me...
The activated part works as well :
tapo2.setPrivacyMode(True)
Any help ?
Thanks

Dear @zazDuTuitisme,
What kind of model did You access with the library? I can't connect to my Tapo C110 :(
Thanks: Bela

Dear @zazDuTuitisme,
What kind of model did You access with the library? I can't connect to my Tapo C110 :(
Thanks: Bela


Fix use of undefined value in 2x upsampling.

Multiplication by 0 does not save from mixing-in undefined values,
because NaN is toxic. Added special "unlikely" case for the tail
of input in case X-repeat is in action (only 2x upsampling, and
vector size >4).

Woo-hoo PR number 10000000


Speed up Dataset._construct_dataarray

[ ] Tests added
[x] Passes isort . && black . && mypy . && flake8
[x] User visible changes (including notable bug fixes) are documented in whats-new.rst

Significantly speeds up _construct_dataarray by iterating over ._coord_names instead of .coords. This avoids unnecessarily constructing a DatasetCoordinates object and massively speeds up repr construction for datasets with large numbers of variables.
Construct a 2000 variable dataset
import numpy as np
import xarray as xr

a = np.arange(0, 2000)
b = np.core.defchararray.add("long_variable_name", a.astype(str))
coords = dict(time=np.array([0, 1]))
data_vars = dict()
for v in b:
    data_vars[v] = xr.DataArray(
        name=v,
        data=np.array([3, 4]),
        dims=["time"],
        coords=coords
    )
ds0 = xr.Dataset(data_vars)

Before:
%timeit ds0['long_variable_name1999']
%timeit ds0.__repr__()

1.33 ms ± 23 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
2.66 s ± 52.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

After:
%timeit ds0['long_variable_name1999']
%timeit ds0.__repr__()

10.5 µs ± 203 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
84.2 ms ± 1.28 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Merging. This logic could be updated if we convert _coord_names to a list or OrderedSet.

Merging. This logic could be updated if we convert _coord_names to a list or OrderedSet.


How to say 12.5 millions?

Any way to find that 12.5 millions =<PHONE_NUMBER>0?

Please be clear when adding a bug. Try to have a reproducible example.