TAP results should still respect exit status code

The TAP result parser correctly shows the pass/total test results in the tab. However, if there is an error in the process that isn't caught by the testing framework (say, outside of a test or in an after hook or similar), then it's possible for the process to exit with a non-zero status code. In such a scenario, the tab is rendered Green since the TAP results reported successful, even though the process errored.
I think that the exit status code should be respected, even when given TAP output. launcher 20/20 (or whatever) in the tab name is still fine, but it should be colored red if exit status code is non-zero.

I think this is related to #131

This should be resolved in master.


Storage queue receive_messages unexpected behaviour

Package Name: azure-storage-queue
Package Version:  12.1.3
Operating System: mac / linux
Python Version: 3.8.3

Describe the bug
When retrieving messages from a storage queue with:
receive_messages(messages_per_page=<SOME NUMBER>)
I get the entire queue back regardless of SOME NUMBER.
this is in contrast with expected behaviour and this method's docs.
To Reproduce
Steps to reproduce the behavior:

run receive_messages on some queue with kw arg messages_per_page.

Expected behavior
return of messages_per_page messages (if exists).

Additional context
This is not additional context - but I'm also facing a weird issue that whenever I run receive_messages I have to wait for about 30 seconds to run it again to get results (if I run it sooner I get no results back) - anyone knows anything about this?
Thanks!

Hi @kobibarhanin, please refer to https://github.com/Azure/azure-sdk-for-python/issues/14665, let me know if this helps :)

@xiafu-msft
Thanks for the response!
I was able to squeeze out a strategy but I really think this should be better implemented - no reason to not enable a simpler approach to retrieve a fixed amount of elements from a hosted queue.
Thanks again.

Hi @kobibarhanin, yea it seems this is a common misinterpretation by users. We added a sample recently to also better help users understand how this method operates better here: https://github.com/Azure/azure-sdk-for-python/blob/1b2450b0c59ba6c440c680992faef7c777e5dae0/sdk/storage/azure-storage-queue/samples/queue_samples_message.py#L149 and here https://github.com/Azure/azure-sdk-for-python/blob/1b2450b0c59ba6c440c680992faef7c777e5dae0/sdk/storage/azure-storage-queue/samples/queue_samples_message.py#L108
Let me know what you think of those samples :)

Hi @kobibarhanin, just wanted to inform you that I have just created a PR that makes it much simpler to pop one message from the queue. Here's the PR: https://github.com/Azure/azure-sdk-for-python/pull/14855
This will give you the ability to retrieve one message at a time without lots of code overhead to do so :)


Adding hip-clang support in CI

Also refactoring CI to use Stage 1 process

We should send an email to inform the team of the CI changes.


SQL Auditing limitations

Hi,
Under Auditing limitations the page mentions that Premium storage with BlockBlobStorage is supported as the destination for auditing, but makes no mention of the fact that Standard GPv2 storage is also supported.
Additionally, this page https://docs.microsoft.com/en-us/azure/azure-sql/database/audit-write-storage-account-behind-vnet-firewall?view=azuresql mentions that...
For audit to write to a storage account behind a VNet or firewall, the following prerequisites are required:
A general-purpose v2 storage account. If you have a general-purpose v1 or blob storage account, upgrade to a general-purpose v2 storage account. For more information, see Types of storage accounts.
I don't know if this is correct or if Premium storage with BlockBlobStorage is also supported supported here, but if not, it would be good to have an explanation as to why it is not supported, so it doesn't appear to have simply been ignored.
Thanks a lot,
Jason
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f78b9024-9b93-51d0-2c37-de829bd43423
Version Independent ID: d0c40630-1219-eed1-67be-f22365aa7f00
Content: Azure SQL Auditing for Azure SQL Database and Azure Synapse Analytics - Azure SQL Database
Content Source: azure-sql/database/auditing-overview.md
Service: sql-database
Sub-service: security
GitHub Login: @sravanisaluru
Microsoft Alias: srsaluru

@jayinoz99 Thank you for your feedback. We are reviewing this and will get back shortly.

@sravanisaluru could you please share your inputs on the above feedback from customer.

Hi @jayinoz99 , thanks for reaching out! We merged in a change to update the documentation :) I'll close out this Git Issue but please feel free to comment should you need anything further.
Thanks again and hope you have a wonderful rest of your day!
Masha from the SQL Docs team
#please-close


Remove FxSoundLLC.FxSound <IP_ADDRESS> to FxSound.FxSound <IP_ADDRESS>

Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/fxsound2/fxsound-app/raw/v<IP_ADDRESS>/release/fxsound_setup.exe
Status Code: 200
(Automated message - build 897)


Error with out_epsg in stackstac

Hello,
Trying the basic example:
da = cubo.create(
    lat=50,
    lon=10,
    collection="sentinel-2-l2a",
    bands=["B02","B03","B04"],
    start_date="2021-06-01",
    end_date="2021-06-10",
    edge_size=32,
    resolution=10,
)

I have this error:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/bdeneu/miniconda3/envs/glc/lib/python3.9/site-packages/cubo/cubo.py", line 111, in create
    cube = stackstac.stack(
  File "/home/bdeneu/miniconda3/envs/glc/lib/python3.9/site-packages/stackstac/stack.py", line 287, in stack
    asset_table, spec, asset_ids, plain_items = prepare_items(
  File "/home/bdeneu/miniconda3/envs/glc/lib/python3.9/site-packages/stackstac/prepare.py", line 166, in prepare_items
    assert isinstance(out_epsg, int), f"`out_epsg` not found. {out_epsg=}"
AssertionError: `out_epsg` not found. out_epsg='EPSG:32632'

It seems that stackstac out_epsg expect an int and received a string !
My version of python is 3.9.16 and stackstac 0.4.4.
Best regards

This is new!
Thank you for spotting it ;) I'll work on it

Done!
Changes will be available in the next version of cubo! :)


requirements.txt

Hello, where is the requirements.txt mentioned in your Configure environment session?

Thank you for your interest! I have uploaded the requirements.txt.
If there are any other issues, please feel free to ask！

Thanks!


Makefile: check for GO111MODULE before running go mod download

skip skydive-go-fmt
skip skydive-functional-tests-backend-elasticsearch
skip skydive-scale-tests
skip skydive-cdd-overview-tests
skip skydive-unit-tests
skip skydive-k8s-tests
skip skydive-functional-hw-tests

run packaging-tests


Differences with the apache cordova-plugin-wkwebview-engine

Hey there, I'm not seeing a ton of documentation about this plugin but I seems like you guys are moving fast and fixing bugs like the input focus but in iOS 11.3 so I'm eager to use it. But I'm not sure what else it does relative to the apache plugin. Is this written out anywhere?

+1

It looks like cordova-plugin-ionic-webview uses local web server but cordova-plugin-wkwebview-engine does not.

Main differences are the use of webserver to avoid the file:// protocol, and some tweaks to better work with Ionic apps (scrolling, input focus, etc.). We absolutely recommend using this plugin if using Ionic. If not using Ionic, then you'll need to compare the two and see which works better for you. Cheers.


Forward compatibility with upcoming EventLoop v1.0 and v0.5

Rebased now that #90 is in :shipit:

@clue looks good but we have a merge conflict :zipper_mouth_face:

Rebased now that #88 is in :shipit:

😀


Vinaynew

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.0 out of 3 committers have signed the CLA.:x: maheshjfrog:x: vinayagg:x: danielmknYou have signed the CLA already but the status is still pending? Let us recheck it.


RE3 3.0.2 Crashes in Room 101

Version
3.0.2 (10d7467)
Seed
R730-1YMB-Z94300L0LWB00M8KX471RUM04N4AJZZZAGZ
Scenario
RE 1 (Chris)
Player Character
Jill
What happened?
Crashes after exiting initial area leading into room 101. Recreated crash 3 times

Maybe changes have gone in since, if problems still occur, a new issue can be opened.


i18n infinite redirect loop on static build with cookie browser detection enabled

Version
@nuxtjs/i18n: 7.2.0
nuxt: v2.15.8
Nuxt configuration
Please change to [x] if relevant for this issue:

[x ] Applies to a site deployed to a static server (site generated with nuxt generate)
[ ] Applies to a site deployed to a server with a Node backend

@nuxtjs/i18n configuration
  i18n: {
    strategy: "prefix_and_default",
    defaultLocale: "en",
    locales: [
      {
        code: "de",
        iso: "de-DE",
        file: "de.json",
      },
      {
        code: "en",
        iso: "en-US",
        file: "en.json",
      },
    ],
    detectBrowserLanguage: {
      useCookie: true,
      cookieKey: "i18n_redirected",
      redirectOn: "root"
    },

    langDir: "./locales/",
    vueI18nLoader: true,
  }

-->
Reproduction Link
(https://codesandbox.io/s/nuxt-nuxtjs-i18n-base-template-forked-6w90eg)
Steps to reproduce
Use Nuxt static build.
Generate source with nuxt generated
Access the sources via nuxt start
Reload a default lang page (test.com/about)
Every first view of the site works fine or to be exact every call without local cookie from i18n nuxt.
/about or /test would work at first but when the user have a i18n cookie and is refreshing the default page the user get stuck in a infinite redirect from root to root
this bug doesnt exist on the root of the website test.com/ only on other pages like test.com/about

Generate and start sources with nuxt
Change language to anything
Go to about page
try access default lang about page direktly test.com/about not test.com/en/about

(This bug only exist on generated sources)
https://codesandbox.io/s/nuxt-nuxtjs-i18n-base-template-forked-6w90eg
What is Expected?
When no cookie is set, it should redirect to the client browser lang.
callingtest.com/about should redirect to test.com/de/about
When the browser has a i18n cookie:
calling test.com/about with cookie en should not redirect, because en is the default lang of the page.
but calling test.com/about with cookie de should redirect to test.com/de/about
What is actually happening?
i18n uses the cookie en to go to default page but at the default page it trys to go to en. test.com/about ->  test.com/about ->  test.com/about ... infinite loop

I'm not sure what could the module do about it but setting the trailingSlash property to true should fix it.
The issue is that the server itself redirects to a path with a slash while the module insists to have no slash.
Whether the trailing slash is added on the server or not depends on the server and how the files are generated so there is no universal fix for that.

@kazupon is this fixed with beta-10?
When yes feel free to close this issues :)

Closing this as v7 is not being actively worked on (critical hotfixes only), if this still applies to v8 and later please open a new issue!


java.lang.ArrayIndexOutOfBoundsException

Luke cannot open the Lucene index and throws java.lang.ArrayIndexOutOfBoundsException:
java.lang.ArrayIndexOutOfBoundsException: 0
at org.getopt.luke.Luke.initFieldList(Luke.java:1229)
at org.getopt.luke.Luke.access$600(Luke.java:86)
at org.getopt.luke.Luke$3.run(Luke.java:1162)
I use   Elasticsearch 5.4.0, based on Lucene 6.5.0.
While Kibana show all results well. Elasticsearch-head also open the index and can browse all documents and its fields.
It looks like a bug

@tech-begemot which version Luke do you use? And, can you provide the mapping of Elasticsearch?

Hi Tomoko
Thanks for response.
I use 6.5.0 ( 2017-05-09)
I found the issue in search_analyzer
{
"_k_en_as_keyword": {
"match": "*_s_en",
"mapping": {
"type": "text",
"analyzer": "custom_analyzer_keyword",
"search_analyzer": "custom_analyzer_keyword"
}
}
},
Note, "search_analyzer" and "analyzer" use the same
"custom_analyzer_keyword".
Once mapping is loaded search_analyzer is not shown in Kibana _mapping for
any *_s_en fields. And all works fine except Luke which throws exception.
If I remove "search_analyzer": "custom_analyzer_keyword" from dynamic
template Like works fine.
Regards
Vlad
On Fri, Aug 11, 2017 at 12:42 AM, Tomoko Uchida<EMAIL_ADDRESS>wrote:

@tech-begemot https://github.com/tech-begemot which version Luke do you
use? And, can you provide the mapping of Elasticsearch?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/DmitryKey/luke/issues/88#issuecomment-321749458, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AddRbaWTWzcdunITpJ22cgayJnoWQCt4ks5sXAX7gaJpZM4OzDZ6
.

The issue was created a year ago..., sorry I had not enough time for digging this.
It was about Thinlet Luke, this has been replaced JavaFX / Swing Luke. I hope the problem was solved in recent releases.
For cleaning up old issues, I will close this issue. You can reopen it anytime if it's needed.


Added autossh incl.recipe

Adding autossh for persistent ssh reverse tunnel (YVR05)

I think it is best to use this instead: https://learn.microsoft.com/en-us/azure/iot-hub/iot-hub-device-streams-overview


Update LICENSE

Summary
A clear and concise description of what the problem or opportunity is. Link to an issue if relevant.
Changes
Describe the changes this pull request introduces.
Task list

[ ] For workflow changes, I have verified the Actions workflows function as expected.
[ ] For content changes, I have reviewed the style guide.

pkg install

`


Programm crush

Description
Sometimes "Files" is crushing without any reason. For example I could exploring different folders, maybe delete some files.
After  some time program is running and I am going to do smth else - "Files" is crushing.
Device:      ASUS ZenBook Duo 14 UX482EA-HY034R
OS:             Windows 11 Pro (21H2): Microsoft Windows [Version 10.0.22000.469]
Steps To Reproduce
No response
Expected behavior
I think that progrmam must not crush periodicaly
Files Version
<IP_ADDRESS>
Windows Version
Windows 11 Pro (21H2): Version 10.0.22000.469
Relevant Assets/Logs
debug.log
debug_fulltrust.log

Thanks for the report. Closing this as the errors reported in the logs are already present in other issues.


Issue with "Note" - cummulative updates

The link for cumulative updates in "Notes" points to cumulative updates for SFB Server 2015 and not 2019.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 4efe6d13-f662-6864-5362-3076746c56a5
Version Independent ID: 2ed0bbda-9214-cac8-7a3b-c299dfd4fa42
Content: Install Skype for Business Server
Content Source: Skype/SfbServer/deploy/install/install.md
Product: skype-for-business-itpro
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

@hirshah Thank you for submitting feedback and contributing to the docs. We are currently investigating this.

@officedocsbot assign @scanum

@scanum The link is correct, that page will in fact be where cumulative updates are listed once they are released. CU1 for Server 2019 has not yet been released.

@hirshah Thank you for submitting feedback. We understand that this issue has been resolved.
Please feel free to re-open this issue if there is a specific area of the docs that we can improve or make better. Thank you.

@officedocsbot close


2.1 branch release debug, editor crashes

Operating system or device - Godot version:
Ubuntu 17.04 x86_64
Godot 2.1 branch release_debug
Issue description:
I compiled 2.1 branch with release debug option and the editor crashes randomly, or when I press control-F to search a script or when saving a scene.
On launch terminal prints:
ERROR: move_child: Invalid new child position: 2
At: scene/main/node.cpp:269.
ERROR: move_child: Invalid new child position: 2
At: scene/main/node.cpp:269.
It doesn't crash when compiling without target=release_debug
Steps to reproduce:
Attach a script and press control - F inside it, or save a scene.
Link to minimal example project:

Are you using GCC 6 to compile it?

Everything is default ubuntu.
version says
gcc (Ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406
and I use this command: scons platform=x11 target=release_debug -j4
Maybe I'm doing something wrong?

Of course I was. For future reference:
check your version with: gcc --version
if it is 6 something: sudo apt install gcc-5 g++-5
and then compile: scons platform=x11 CC=gcc-5 CXX=g++-5 target=release_debug -j4
closed

Either that or use clang, since we are having some GCC-6 related problems related to getting NULL this pointers...
In short, duplicate of #4623


Fix OpenShiftClient failures

Summary
This PR does 2 things (blimey) in 2 commits (so we could independently revert them):

There has been ongoing issues when we are selecting OpenShiftClient method that we want to invoke. You can reproduce it f.e. with mvn clean verify -Dit.test=OpenShiftApiServerConfigSecretConfigIT -Dopenshift -Dquarkus.openshift.jar-file-name=quarkus-run.jar -f config/ in Quarkus Test Suite project. I run several tests and the solution you suggested in previous PR was a right way to go. I made mistake not to accept it. Now, method is chosen based on param's class assignability.

Works around https://github.com/quarkusio/quarkus/issues/28108 by setting JAR file name explicitly. The issue is both in TFW (f.e. OpenShiftUsingExtensionComputedValuesUsingCustomPropertiesPingPongResourceIT) and TS whenever OpenShiftDeploymentStrategy.UsingOpenShiftExtension is used.

Please check the relevant options

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Dependency update
[ ] Refactoring
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] This change requires a documentation update
[x] This change requires execution against OCP (use run tests phrase in comment)

Checklist:

[x] Example scenarios has been updated / added
[x] Methods and classes used in PR scenarios are meaningful
[x] Commits are well encapsulated and follow the best practices

run tests

run tests

compilation error /home/runner/work/quarkus-test-framework/quarkus-test-framework/examples/kafka-registry/src/main/java/io/quarkus/qe/kafka/config/VertxKProducerConfig.java:[5,29] package io.quarkus.arc.config does not exist looks weird, I'll check it.

https://github.com/quarkus-qe/quarkus-test-framework/pull/574 fyi

compilation issue is going to be resolved by https://github.com/quarkus-qe/quarkus-test-framework/pull/574

thank you

run tests

I can genuinely see no exceptions in logs for failing OC tests, just  WARNING [app] Service didn't start in PT5M minutes. I'll debug it and get back here once I have a solution.

Ah, found it.

run tests

I've added a fallback (smth like "if you can't find proper match, close your eyes and think of old good England") and run troublesome tests - passing now. Let's wait for CI.

OC failures unrelated:
HELM failures in OC are not related - Failed to pull image "nginx:1.16.0": rpc error: code = Unknown desc = pinging container registry <IP_ADDRESS>:5000: Get "http://<IP_ADDRESS>:5000/v2/": dial tcp <IP_ADDRESS>:5000: connect: connection refused
OpenShiftGreetingResourceIT failure goes down to Failed to pull image "docker.io/bitnami/consul:1.13.1": rpc error: code = Unknown desc = pinging container registry <IP_ADDRESS>:5000: Get "http://<IP_ADDRESS>:5000/v2/": dial tcp <IP_ADDRESS>:5000: i/o timeout
OpenShiftBasicInfinispanBookCacheIT, OpenShiftUsingJksInfinispanBookCacheIT go down to Failed to pull image "docker.io/infinispan/server:13.0": rpc error: code = Unknown desc = pinging container registry <IP_ADDRESS>:5000: Get "http://<IP_ADDRESS>:5000/v2/": dial tcp <IP_ADDRESS>:5000: i/o timeout
OpenShiftMySqlDatabaseIT go down to Failed to pull image "docker.io/mysql:8.0.30": rpc error: code = Unknown desc = pinging container registry <IP_ADDRESS>:5000: Get "http://<IP_ADDRESS>:5000/v2/": dial tcp <IP_ADDRESS>:5000: i/o timeout


Adding Swagger for Azure Data Services on Azure Arc

MSFT employees can try out our new experience at OpenAPI Hub  - one location for using our validation tools and finding your workflow.

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of “no breaking changes
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[ ] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from API Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable version with Breaking Change Validation errors
[ ] Updating API(s) in preview over 1 year

Please follow the link to find more details on PR review process.

/azp run automation - sdk

/azp run unifiedPipeline

/azp run automation - sdk

/azp run automation - sdk

/azp run automation - sdk

Declining this PR as I should have start from private repo first as our product isn't launching.
https://github.com/Azure/azure-rest-api-specs-pr/pull/2185


Requirements were unclear

Requirement that either Pro + Premium Capacity or PPU is required for paginated reports was unclear

#label:"aq-pr-triaged"

Looks good - thanks for your work!


Hello from Waku

Just saying hello, but also wondering if there's any possibility for collaboration. https://github.com/dai-shi/waku

Hi @dai-shi! Welcome here! I'm very glad you're interested!
I did not yet prepared any docs/workflows for collaboration, but yes, absolutely! The first thing I would like to ask from anyone interested is to try out the framework and report any issues. I'm working on the initial documentation right now, so people will not need to get into the source code to find out how is this working.
This is by nature an experimental framework and I just made this public as soon as this was at least usable based on the examples I created and all the main functionality I planned was ready, so this is still rough around the edges. There will be issues I'm sure and I'm fixing things on the go already, but surely I can miss a lot. I will also collect and create tickets for all known issues.
I also don't have any tests for now, but if this project gets more attention then it's a must have to implement.
I'm also open to discuss any part of the framework, there are only a few bits and pieces and the overall vision of this framework I would not like to change. The discussion board is also not setup yet.
Again, thanks for being aware of this project and let me know if you have any suggestions!

can I join with you?

I'm currently working on Waku to bring it to a production level.
By the collaboration, I mean, as both of your project and my projects are based on Vite, we would be solving same problems for each. For example, if we could share some Vite plugins to provide some building blocks, it might be more productive. It might not be that easy with different architecture though.

Happy to hear that you are planning to make Waku into a production ready solution @dai-shi. On that note, what do you think about that React with RSC features is still only available as canary/experimental?

if we could share some Vite plugins to provide some building blocks

Sadly I only use just a few for use client/server; transforms and one for build, but all of these are tailored for this exact framework.
My architecture and approach is very different compared to yours in Waku. I'm all-in on server-side rendering and closer to Next.js. If you can think of anything I could share from this project with you, feel free to just borrow or ask for knowledge I gathered during the development of react-server.
Still I would very appreciate any feedback you could give.

https://react.dev/blog/2023/05/03/react-canaries

Unlike the Experimental channel, React Canaries only include features that we reasonably believe to be ready for adoption. We encourage frameworks to consider bundling pinned Canary React releases.

We pin the version but don't bundle it. I think it's rather fair at least for now.

Yeah, I know about the official standpoint, but I think until React with RSC support is not released as the latest non-canary and non-experimental version, anyone else using it can't really consider it production ready as there are still changes happening affecting these features. That's why I call my framework as an experimental framework.
It's also harder to manage a pinned React version in these frameworks than just using React provided by the developer using these frameworks and even could be misleading as you still install a React and that will be not used at all.

Hello there @lazarv !  :)
I also find the project very interesting  - would be glad to help out.
As a first step maybe I could try to give some feedback, open some issues , run the examples, see areas for improvement.
Also maybe I could write some tests as well if that comes in handy.
Again congratz for setting it up and for the nice blog posts ! :)

Hi @CharidimosTzedakis!
First of all, thanks for showing interest in this project! I'm grateful for any help including all you kindly offered.

As a first step maybe I could try to give some feedback, open some issues , run the examples, see areas for improvement.

I'm in progress with building out all of the workflows to help contributors creating issues and pull requests, but I would say to don't hold back and please open issues or start a discussion. You can provide feedback under discussions at https://github.com/lazarv/react-server/discussions/categories/feedback.

Also maybe I could write some tests as well if that comes in handy.

There are some tests in place, but especially if you find an issue, it would be great if you could add a test case to reproduce it and keep it in the test suite for future quality check.

Again congratz for setting it up and for the nice blog posts ! :)

Thanks! I will keep publishing more and hopefully I can still make them better and better with each new blogpost.

Let me close this as OP is answered.


obsolete regulation of ER to Golgi vesicle-mediated transport by GTP hydrolysis (GO:0090113)

Please provide as much information as you can:

GO term ID and Label
regulation of ER to Golgi vesicle-mediated transport by GTP hydrolysis (GO:0090113)

Reason for deprecation

Added here
https://github.com/geneontology/go-ontology/issues/6761
combines a function and process

"Replace by" term (ID and label)

"Consider" term(s) (ID and label)
Suggestions for reannotation

Annotate to "regulation of ER to Golgi vesicle-mediated transport"

Are there annotations to this term?

How many EXP:

10
9 SGD
1 FlyBase

Dear all,
The proposal has been made to obsolete 'GO:0090113 ER to Golgi vesicle-mediated transport by GTP hydrolysis'. The reason for obsoletion is that this represents a combination of a MF and a BP. There are no annotations, no mappings to this term. This term is not present in any subsets.
You can comment on the ticket: https://github.com/geneontology/go-ontology/issues/23686
Thanks, Pascale


Exposing the tether distance for the NearMenu control

(Quality of life)
Exposing the tether distance allows developers to use the menu in the desktop browser as desired.
Previously, the tether distance was tailored to VR/AR, which placed it far too close to the camera in a browser (past the near clipping plane, it seems). By providing customization, it can now be tested with and tweaked from a browser window, without needing to enter XR just to see it as intended.
The value set determines the default distance, and the min/max distance are calculated based on the original ratios.

There is a doc and linting issue.
BTW - i know those numbers were fixed before, but are they arbitrary, or is there some form of specification for that?

There is a doc and linting issue.
BTW - i know those numbers were fixed before, but are they arbitrary, or is there some form of specification for that?

The MRTK-Unity docs say the following, which is where the 0.3-0.6 range likely came from:
"The menu follows you and stays within 30-60cm range from the user for the near interactions."
That said, since everything appears much larger when viewed in the browser compared to XR, even 60 centimeters is too close to the camera, and gets blocked by the camera's near clipping plane.

Moving this to draft while I think about the implications of changing the distance, as it trades XR usability for desktop usability

@rickfromwork any update on this one ?

@rickfromwork any update on this one ?

No, I've been busy with XR pointer work. It'll be a week or two before I'm set to go back into this.

@rickfromwork is this still work in progress ?


[SwaggerSpec change] [Time Series Insights] New /environments/status GET endpoint added

This checklist is used to make sure that common issues in a pull request are addressed. This will expedite the process of getting your pull request merged and avoid extra work on your part to fix issues discovered during the review process.
PR information

[x] The title of the PR is clear and informative.
[x] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For information on cleaning up the commits in your pull request, see this page.
[x] Except for special cases involving multiple contributors, the PR is started from a fork of the main repository, not a branch.
[x] If applicable, the PR references the bug/issue that it fixes.
[x] Swagger files are correctly named (e.g. the api-version in the path should match the api-version in the spec).

Quality of Swagger

[x] I have read the contribution guidelines.
[x] My spec meets the review criteria:

[x] The spec conforms to the Swagger 2.0 specification.
[x] The spec follows the guidelines described in the Swagger checklist document.
[x] Validation tools were run on swagger spec(s) and have all been fixed in this PR.

Close and reopen to trigger CI

@shawns1 Could you have a look why CI doesn't show in the PR?

@fearthecowboy will need to look into the spec repo CI jobs.  I think there was some issues earlier so they might be temporarily turned off.

@yeskarthik could you login to travis-ci using TimeSeriesInsights account?

I don't manage CI for specs; that's @salameer 's team.

@sergey-shandar I just logged into travis-ci and granted access to Time Series Insights org.

@ravbhatnagar and @simongdavies new operations.


RetrievalPrecision hangs in DDP mode.

🐛 Bug
RetrievalPrecision(k=1) hangs in DDP mode. Running on a single node with multiple GPUs.
To Reproduce
Steps to reproduce the behavior:

Run a model which computes RetrievalPrecision as a validation metric in DDP mode
Wait for it to hang on validation

Or

Run code below (successfully fails with --gpus=0 or otherwise)
Observe the below error. However I am experiencing a hang not an error in the real code.

  File "boring_model.py", line 72, in validation_epoch_end
    self.log_dict(self.val_metrics_other.compute(), prog_bar=True)
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/collections.py", line 125, in compute
    return {k: m.compute() for k, m in self.items()}
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/collections.py", line 125, in <dictcomp>
    return {k: m.compute() for k, m in self.items()}
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/metric.py", line 377, in wrapped_func
    with self.sync_context(
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/contextlib.py", line 113, in __enter__
    return next(self.gen)
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/metric.py", line 348, in sync_context
    self.sync(
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/metric.py", line 300, in sync
    self._sync_dist(dist_sync_fn, process_group=process_group)
  File "/usr/local/Caskroom/miniforge/base/envs/boring-model/lib/python3.8/site-packages/torchmetrics/metric.py", line 248, in _sync_dist
    if isinstance(output_dict[attr][0], Tensor):
IndexError: list index out of range

Code sample
The code below (which is an approximation of what I'm doing) will fail with IndexError: list index out of range w/o GPU. However, it will succeed with different values of seed. I guess that sometimes the metric will not get updated? Could this be the issue?
import argparse
import os
import random

import torch
import torch.nn.functional as F
import torchmetrics
from pytorch_lightning import LightningModule, Trainer
from pytorch_lightning.plugins import DDPPlugin
from torch.utils.data import DataLoader, Dataset

class RandomDataset(Dataset):

    def __init__(self, size, length):
        self.len = length
        self.data = torch.randn(length, size)

    def __getitem__(self, index):
        return self.data[index], torch.tensor([index % 2])

    def __len__(self):
        return self.len

class BoringModel(LightningModule):

    def __init__(self, seed: int):
        super().__init__()
        self.rng = random.Random(seed)
        self.layer = torch.nn.Linear(32, 1)

        self.val_metrics = torchmetrics.MetricCollection(
            (
                torchmetrics.RetrievalPrecision(k=1),
                torchmetrics.F1Score()
            )
        )

        self.val_metrics_other = torchmetrics.MetricCollection(
            (
                torchmetrics.RetrievalPrecision(k=1),
                torchmetrics.F1Score()
            ),
            prefix="other_"
        )

    def forward(self, x):
        return torch.sigmoid(self.layer(x))

    def training_step(self, batch, batch_idx):
        data, index = batch
        res = self(data)
        loss = F.binary_cross_entropy(res, index.float())
        return loss

    def configure_optimizers(self):
        return torch.optim.SGD(self.layer.parameters(), lr=0.1)

    def validation_step(self, batch, batch_idx):
        data, index = batch
        res = self(data)
        # not all data goes to the same set of metrics. the actual logic is (obviously) more
        # involved. could this be the issue?
        if self.rng.random() < 0.2:
            self.val_metrics_other.update(res, index, indexes=index)
        else:
            self.val_metrics.update(res, index, indexes=index)

    def validation_epoch_end(self, outputs):
        self.log_dict(self.val_metrics.compute(), prog_bar=True)
        self.log_dict(self.val_metrics_other.compute(), prog_bar=True)
        self.val_metrics.reset()
        self.val_metrics_other.reset()

    def train_dataloader(self):
        return DataLoader(RandomDataset(32, 256), batch_size=2)

    def val_dataloader(self):
        return DataLoader(RandomDataset(32, 256), batch_size=2)

def run(args):
    model = BoringModel(args.seed)
    trainer = Trainer(
        default_root_dir=os.getcwd(),
        max_epochs=2,
        gpus=args.gpus,
        strategy=DDPPlugin(find_unused_parameters=False)
    )
    trainer.fit(model)

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("--gpus", type=int, default=2)
    parser.add_argument("--seed", type=int, default=23239678234)

    run(parser.parse_args())

Expected behavior
Compute the metric and not hang.
Environment

PyTorch Version (e.g., 1.0): pytorch-lightning==1.5.9, torchmetrics==0.7.0
OS (e.g., Linux): Linux
How you installed PyTorch (conda, pip, source): pip
Python version: Python 3.9.4
CUDA/cuDNN version: CUDA Version: 11.4
GPU models and configuration: 8 GPUs
Any other relevant information: EC2 instance

Additional context

This only hangs on the retrieval metrics. When I used classification metrics, things work as expected.
After some digging, it appears to hang on this line during the call to compute(). It's not clear to me why this metric would hang and others not.

Hi @riklopfer,
When trying to run your code I indeed also gets the error. However, I also get the following warning:
/home/nsde/metrics/torchmetrics/utilities/prints.py:36:
UserWarning: The ``compute`` method of metric RetrievalPrecision was called before
the ``update`` method which may lead to errors, as metric states have not yet been updated.

indicating that the retrieval precision metric is probably not behaving well due to it not being updated before you try to compute.

@SkafteNicki any suggestions on how to avoid this?

@riklopfer Initialize the trainer with num_sanity_val_steps=0
trainer = Trainer(
        default_root_dir=os.getcwd(),
        max_epochs=2,
        gpus=args.gpus,
        strategy=DDPPlugin(find_unused_parameters=False),
        num_sanity_val_steps=0
    )

problem is that doing the sanity checking the default is to check 2 batches. It is very likely that both batches end up updating self.val_metrics_other and not one for self.val_metrics_other and one for self.val_metrics, thus the latter end up having its metric state not updated before compute is called (at the end of the sanity checking).
Alternatively, you can also increase to some number that makes it more likely that both metrics are getting updated during the sanity checking.
Closing the issue as this is not really a not bug but just related to a corner case of integration with lightning.

@SkafteNicki you successfully debugged the BoringModel but my problem still exists. See the description -- the metric hangs in DDP mode -- does not raise and exception. I am struggling to reproduce the issue with minimal code.
Any idea why this metric would be hanging? Is there a way I can get more verbose output so I might see where it's hanging? Maybe there is a way that I can avoid having validation metric computation distributed?

Unfortunately, it's confidential.

Okay in general if a metrics hang it nearly always has to do with unequal workload between the different devices. If you directly had
if self.global_rank == 0:
    # do something with metric

then that is a near guarantee that it will hang. As I understand it, your code has an if-else statement and it is very likely that will lead to unequal workload.
 Printing shapes of list/tensors can help identify if one process was assigned more data than some other processes.

Yeah. That's what I've been doing on this branch https://github.com/riklopfer/metrics/tree/retrieval-metrics-hang
The last message I see is from here: https://github.com/riklopfer/metrics/blob/93d639c6a022ca1cc7c6125ef1251ea13ee282ab/torchmetrics/utilities/distributed.py#L111
gather_all_tensors::result.shape=torch.Size([9])

Does it print multiple times? One for each process?
I am confident that it is this specific line where it hangs:
https://github.com/riklopfer/metrics/blob/93d639c6a022ca1cc7c6125ef1251ea13ee282ab/torchmetrics/utilities/distributed.py#L119
One process must be waiting for some other process at this point which they for some reason will never get to

Does it print multiple times? One for each process?

Yes.

One process must be waiting for some other process at this point which they for some reason will never get to

That makes sense. It's just unclear to me why it's happening or how I can resolve it. As I mentioned at the top, this only seems to happen for the Retrieval metrics, so if I do the same thing and only compute e.g. F1Score, everything is fine. This indicates that there is something different in the RetrievalMetric that is causing the hang.

https://github.com/pytorch/pytorch/pull/54159
Could this be the root cause of my issue?

Not sure about that. Does not seem to be the problem to me.
I core difference between RetrievalPrecision and F1Score is in their states. In retrieval metrics the states are lists:
https://github.com/PyTorchLightning/metrics/blob/408cabed8120033dc6a904fa67902572dabe3ce7/torchmetrics/retrieval/base.py#L107-L109
whereas in most classification metrics they are tensors:
https://github.com/PyTorchLightning/metrics/blob/408cabed8120033dc6a904fa67902572dabe3ce7/torchmetrics/classification/stat_scores.py#L190-L191
This can explain the difference. For F1Score, even if one only one process receives some input the metric would still have an state of equal shape on all ranks since we just add to the metric state in this case. For the RetrievalPrecision metric if only one process receives data it will be appended to the metric state of that process, leading to a difference in shape of the states between the different ranks.
However, this does not mean that there is a problem with the metric and the problem is (still) most likely that the Retrieval metric at some point receive data on one process but not another.
I am sorry that I cannot be any more helpful when the issue is hard to reproduce with a minimal example :]

My use case is that I am training a semi-supervised model where I would like to see validation metrics for examples with observed labels and unobserved. The rng.random() < 0.2 in BoringModel is a stand-in for not has_supervision().
I am getting the impression that the way I have implemented this is not really supported. If that's the case, is there a preferred way to implement this? One idea is to create separate datasets at runtime and process them separately during validation, each contributing to a different set of metrics; not sure how to do this though.

@riklopfer I think we have come to the agreement that the RetrievalPrecision metric does not seem to be the main problem here and I am therefore going to close the issue.
For your particular application I would recommend that you split your data into separate datasets, one supervised and one unsupervised, and process them with individual metrics.


Update examples that require the run() method

What does this PR do?
Fixes #15088
Before submitting

[x] Was this discussed/approved via a GitHub issue? (not for typos and docs)
[x] Did you read the contributor guideline, Pull Request section?
[x] Did you make sure your PR does only one thing, instead of bundling different changes together?
[x] Did you make sure to update the documentation with your changes? (if necessary)
[x] Did you write any new necessary tests? (not for typos and docs)
[x] Did you verify new and existing tests pass locally with your changes?
[x] Did you update the CHANGELOG? (not for typos, docs, test updates, or internal minor changes/refactorings)

PR review
Anyone in the community is free to review the PR once the tests have passed.
Before you start reviewing make sure you have read Review guidelines. In short, see the following bullet-list:

[x] Is this pull request ready for review? (if not, please submit in draft mode)
[x] Check that all items from Before submitting are resolved
[x] Make sure the title is self-explanatory and the description concisely explains the PR
[x] Add labels and milestones (and optionally projects) to the PR so it can be classified

Did you have fun?
I made sure I had fun coding 🙃
cc @borda @rohitgr7 @Felonious-Spellfire

@tchaton what would be the alternative in your opinion? The run method needs to be there as per #14760. We could
def run():
    pass

but IMO the pattern should be to run the child components.


Using Polygon2D#modifyPoints while resetting translation breaks gradient paints

Since gradients generated in FastJ's Gradients class are non-repeating, they end up only showing the last color of the gradient -- all others are too far out of view.
To fix this, we need to rethink how we modify the mesh of the block, and not apply or reset translation.

Closed by this commit.


App's URL returns 404

Accessing the app's URL about 25 minutes after deployment completion returns the result below.
I've tried twice - the second time using a 'random' username in case duplication was the issue.

Same when attempting to run the standalone version of the app https://docs.microsoft.com/en-us/azure/azure-sql/database/saas-standaloneapp-get-started-deploy

@mattgillam You can also reference the Azure SaaS Development Kit (ASDK) where we have built on top of this sample solution:  https://www.github.com/azure/azure-saas

@nickpinheiro thank you I will take a look - would be great if the demo app worked as described though, unless I did something wrong (don't think so).


Enhancement: Genesis command to get list questions that need to answered for an Infrastructure

The best way to do this would be to stick to a convention, at the Kit level, for an addon that does this. It is impossible (short of putting a bash parser / AST code walker into Genesis) to know what a new hook is going to do.


docker: Add proper entrypoint

As per docker guidelines 0 a container should always really have a consistent entrypoint, without having to override it or do special tricks.
The behavior should be identical as before, but will no longer trigger errors because docker-gen doesn't understand certain parameters (/bin/sh for example being common). Further more, allows a proper entrypoint for a CI to work easily with the container as well. Allowing for scenario's such as apk add git && docker-gen renew in a docker-gen image for example.
E.g. docker run docker-gen --help works, as does docker run docker-gen /bin/sh or docker run docker-gen ls.

Superseded by #573


Minor patch for v16

Fixes
Selecting new file during edit changes URL #601
Highlights downloaded file inside the downloads folder #606
~Price not repopulated during edit of claim #599~

I give up with #599, I only can't make it work for the edit button, my suggestion as always is to split edit from publish :stuck_out_tongue:

Merged in https://github.com/lbryio/lbry-app/commit/342162cfcc11692a4b51e1fd05f3dfec71507266
Great PR, only thing missing was a CHANGELOG


Extractor does not extract APIM service itself

Just noticed that the current extractor does not include the APIM service itself.
I assume this is a bug, not a feature?
From memory this used to be included.

nope, it's not supported @ChristianJonsson

This is by design.


AmplitudeJS callbacks

Question Checklist

[ x] Updated Amplitude.js to the latest version
[x ] I read the docs
[x ] I searched for existing GitHub issues
-[x ] Dan, I tried your suggested "fix" on stackoverflow. Thank you for trying to help me.

Question Subject

I must be using the callback feature incorrectly. I can't get any callbacks to work properly as mentioned in the documentation.
Question Description

I am trying to create a pause with a set duration of time between song/audio file. So, song 1 plays. Then, there is a pause for 5 seconds. Then song 2 plays
At this point, the user generally doesn't use the play/pause button except to start the audio. Then Amplitude audio just plays through the list.
I used the Blue demo example to be certain that I was using proper Amplitudejs code. The only change I made was to replace the song files with first my .m4a and, then, my mp3 files. (I used .m4a first, but then changed to .mp3 since the original demo example used that audio format. )
I have also tried every other callback that is listed in the docs. Regardless of the callback used, the audio sample always continues to play one song/audio file after another in the list. There is no pause before going to the next audio sequence: song_change.
Again, I'm trying to figure out how to create a defined pause between the audios as they play in a list. Eventually, I'd like the user to be able to choose the amount of duration time, but for now, I'm simply trying to program a duration into the list.
I hope that what I'm trying to accomplish is clear.
TIA
Here is the script code. I changed nothing except the json file url information:
``

Anyone? Please. :-)

Wow! Thanks, it works beautifully. I've been updating a different app and haven't gotten a chance to try  out the delay feature. Perfect. Now, if I can just get something programmed with it that will allow a user to input the delay time that they need. In my app, each person needs a different amount of time at the end of the audio. Thanks Dan. Amplitude is a wonderful piece of programming.
-Rachel

@ValiantCuriosity Glad it worked! So what I'll do is add a public method to allow for a time to be set through Javascript. This way you can take the user's input and make it work! Thanks for the kind words on Amplitude as well and let us know if you need any other features added!

If you grab the newest dev branch, there's a public Amplitude.setDelay( time ) method which is the delay in milliseconds before going to the next song. https://github.com/521dimensions/amplitudejs/tree/dev


missing Lib file in PointRCNN

Thanks for your amazing work! I tried to run your code, but I ran into some trouble. Is the code in PointRCNN complete?

Could you provide more information about what error you got?

from lib.net.point_rcnn import PointRCNN
But it seems that there is no Lib folder in your code.

@rui1996 I guess we should also include the lib folder https://github.com/sshaoshuai/PointRCNN/tree/master/lib and https://github.com/sshaoshuai/Pointnet2.PyTorch/tree/5a4416f51ceaeba242828cabf39133433336850d

from lib.net.depth_Ne import Depth_model
There is depth_Net in the Lib folder, will you update the code later?

Thanks again for your amazing work! I also had tried your previous work and was able to replicate the results. But for this pseudoLidar E2E with PointRCNN I have missing libraries too that I cannot find in original PointRCNN(https://github.com/sshaoshuai/PointRCNN/tree/master/lib) or other pseudoLidar works.
For me the files depth_net.py and kitti_depth_rcnn_dataset.py are missing (from lib.net.depth_net import DepthModel, from lib.datasets.kitti_depth_rcnn_dataset import KittiRCNNDataset) , your modifications/new files from PointRCNN to make E2E code work.
Missing files

depth_net.py
kitti_depth_rcnn_dataset.py

I appreciate your code updates / help. Thank you very much for sharing!!

Hi all, sorry for making this mistake. I will update soon.

Hi @rui1996 , thank you very much!!

Hi all, it is updated. The reason for this error is in the .gitignore file in the root dir (not Pointrcnn dir), it accidentally include 'lib/', making us missing files while upload. Again, sorry for this.


Fix examples by resizing the surface

When running some examples on my Linux system, I encountered an error:
index out of bounds: the len is 0 but the index is 0

This error occurred when attempting to perform array indexing write operations on the buffer generated by surface.buffer_mut().
I successfully resolved these issues by resizing the surface during initialization.

More context is available in https://github.com/rust-windowing/softbuffer/issues/237, too.

Analyzing the code, it seems that the Wayland backend would have crashed if resize() is never called, because size contains None. On X11 however, without SHM support (i.e. falling back to sending all pixels over the wire), a default implementation is created with an empty Vec:
https://github.com/rust-windowing/softbuffer/blob/fa3a918db59c343a9a61afe09c72f0d6f9cda805/src/backends/x11.rs#L290

Hmm, I'm fine with this PR? It does the same thing as the fruit.rs example does in https://github.com/rust-windowing/softbuffer/pull/236, i.e. resizing the surface upon initialization (since that isn't done yet internally on all platforms).

Then we should copy-paste that ugly edge-case, specific comment and all, to every other example?
I completely missed that we inconsistently had a weird edge-case in one but not all examples.

Then we should copy-paste that ugly edge-case, specific comment and all, to every other example?

I think so, yeah

(Or we should fix the underlying issue)

(Or we should fix the underlying issue)

(Guess why I initially "requested changes" 😉)

Hacking that original misplaced .resize() back in is unfortunately not going to fly. We need to instead debug what your Linux sample is doing, was this on Wayland or X11?

X11

Hmm, I'm fine with this PR? It does the same thing as the fruit.rs example does in #236, i.e. resizing the surface upon initialization (since that isn't done yet internally on all platforms).

In fact, I modified it based on the example of fruit.rs.
I also think it's ugly to add such a paragraph to each example. It would be better to have one that can fix the underlying issue.


Added a check whether the ANDROID_SERIAL was set when mutiple devices are present

This change is needed as when more than one device is connected, the script crashes if the selection is not explicitly specified. This change fixes it by adding a possibility to specify the device.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.Ihor Zvieriev seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

@naomipappe Thanks for your PR submission!  Does ANDROID_DEVICE environment variable not work in your environment?

Author naomipappe not on autobuild list. Waiting for curator authorization before starting CI build.

CI gfxreconstruct build queued with queue ID 38325.

CI gfxreconstruct build # 3177 running.

CI gfxreconstruct build # 3177 passed.

CI gfxreconstruct build queued with queue ID 46241.

CI gfxreconstruct build # 3223 running.

CI gfxreconstruct build # 3223 passed.

CI gfxreconstruct build queued with queue ID 60225.

CI gfxreconstruct build # 3372 running.


refactor: remove underscores from non-mdc density mixins

For some components that don't have a corresponding implementation
in MDC Web, we added density mixins. We prefixed this with an
underscore to prevent premature use. Now we remove the underscore
as we're starting rollout in Google.

For now I only want to open up the component-specific mixins.


Lift the max object size for non-R2 stores

Right now, we use ObjectStore::put_multipart() which uses fixed 10MB chunks to write to object stores. Object stores limits part size of 10,000 parts, so this means we have a 100GB object size limit. For some use cases this is too small.
There's two ways we could solve this:

Make the part size configurable. This would work, but it would require manual configuration provided by the user, which is less than ideal.
Make the part size variable, and increasing linearly. This is the algorithm PyArrow used to use, and it would allow much larger part sizes with no special configuration. The only downside is that R2 would not work with this, as it requires exactly equal part sizes.

IMO the best solution would be 2, but with a carve out for R2 (which will used fixed-size uploads). We already want to have carveouts for R2 and Minio for commit mechanism (see #2246).
In order to implement this, we'll need to use the low-level MultiPartStore API. We'll need to upgrade to a similar API anyways in object_store 0.10.0, since the return value for put_multipart has changed. ^1

Possible follow up, when we switch APIs, we'll have more control over retries for uploading a part. Maybe we should retry the Connection reset by peer with increased backoff?


rebalancer and telegram processe crash

I just did a balanced channel open, and the new channel has only one confirm:
In jet monitor rebalancer and telegram process are 'stopped'. The rebalancer log looks like this:
runLoop error: Cannot read properties of null (reading 'fee_base_msat')
Error: async hook stack has become corrupted (actual: 657167, expected: 45)
 1: 0xa536f4 node::AsyncWrap::PopAsyncContext(v8::FunctionCallbackInfo<v8::Value> const&) [node]
 2: 0xd2b230  [node]
 3: 0xd2c28c v8::internal::Builtin_HandleApiCall(int, unsigned long*, v8::internal::Isolate*) [node]
 4: 0x154a28c  [node]

A channel is created, but the fee policy has not yet been propagated.
Will be addressed in the next git push.


Area2D registers collision of CharacterBody2D with disabled collision shape on scene load

Tested versions
Reproduceable in:

Godot Engine v4.3.dev3.mono.official [36e943b6b]
Godot Engine v4.2.1.stable.mono.official [b09f793f5]
Godot Engine v4.1.3.stable.mono.official [f06b6836a]
Godot Engine v4.0.4.stable.mono.official [fc0b241c9]

System information
Godot v4.2.1.stable.mono - Windows 10.0.19045 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1080 (NVIDIA; <IP_ADDRESS>23) - AMD Ryzen 9 5900X 12-Core Processor (24 Threads)
Issue description
A scene is setup with 4 Area2Ds with a size of 512x512 placed around the origin.
In the main scene this scene is instantiated and a CharacterBody2D with it's CollisionShape2D initially disabled is also instantiated.
The CharacterBody2D is set to position (256, 256) and then it's CollisionShape2D is enabled with a SetDeferred() call.
Expected behaviour: only one Area2D's OnBodyEntered() function is triggered.
Actual behaviour: all 4 Area2D's OnBodyEntered() function is triggered, then the other 3 Area2D's OnBodyExited() function is triggered.
Steps to reproduce
Using the MRP:

open the project in the editor
either run main.tscn in the dotnet folder or main.tscn in the gdscript folder
watch the messages in the output window
press spacebar to reload the scene and recreate the issue

Minimal reproduction project (MRP)
CollisionBug.zip
alternative the repo is also available on github

See also:

#14578
#61584

For anyone stumbling upon this issue in the future:
A workaround I found is adding a flag and timer to the Area2D. as long as the flag is false the collision handling functions don't do any processing. On timeout of the timer the flag is set to true.
A second timer on the CharacterBody2D which ideally is longer then the first one enables the CollisionShape2D. This way only the correct Area2D's OnBodyEntered function is triggered.
Despite a workaround existing I would still consider the current behaviour a bug.

I have encountered this before, and here are a few things I know or believe about it:

The whole issue is due to the CharacterBody2D's default GlobalPosition being x: 0, y: 0 when add_child() is called. You would expect setting its GlobalPosition on the very next line would override this, but the PhysicsServer2D has already taken that initial position into account.

Due to this, setting the CharacterBody2D's GlobalPosition right before calling add_child() actually causes the collisions to behave as intended without using any workaround.

If you need to set the GlobalPosition after the add_child() instruction for whatever reason, awaiting exactly 2 physics frames before enabling the CollisionShape2D will also result in the proper collision signals. This seems to give the PhysicsServer2D enough time to start calculating the collisions from the proper GlobalPosition. In fact, a very similar workaround was shared in this comment, all the way back in Godot 2.1.4 over 6 years ago.

I ran into the same issue using get_tree().paused = true before modifying a CharacterBody2D's Position, resulting in its previous position being used for collision calculations after unpausing.

It's bugged in 4.2.2 rc1 as well. Setting global position before adding didn't help, but waiting for 2 process frames did. Also, I don't think the default position is (0, 0), it's the position the node had before it was removed, at least it's 100% this way in my case. I also checked what the area thinks the body's position is in _body_entered signal and it actually prints the correct position, but the signal still fires.

It's bugged in 4.2.2 rc1 as well. Setting global position before adding didn't help, but waiting for 2 process frames did. Also, I don't think the default position is (0, 0), it's the position the node had before it was removed, at least it's 100% this way in my case. I also checked what the area thinks the body's position is in _body_entered signal and it actually prints the correct position, but the signal still fires.

Yes you're right about the position, it was only (0, 0) specifically in this case because it was instantiating a fresh Node. It is indeed taking the Node's previous position into account.


Impossible "OR" search by PGroonga

PGroonga (an extension for PostgreSQL to do fulltext search) supports the OR boolean operator, but it doesn't work on Zulip because all search terms are always canonized to lower case and PGroonga requires upper cased OR.
After I removed the toLowerCase() from Filter.canonicalize_term(), PGroonga-powered Zulip successfully does "OR" search for me. It seems unnecessary not only for PGroonga but other  environment also - I've tried a live patch for the instance on https://chat.zulip.org with following code (you'll be able to try it via Web Console on Firefox, started with Ctrl-Shift-K.) Even if search terms are mixed case, Zulip successfully searches posts and highlights found terms ignoring cases.
var k = Filter; Filter.canonicalize_term = function(a){var b=a.negated,c=a.operator;a=a.operand;b||(b=!1);c=k.canonicalize_operator(c);switch(c){case "has":a=a.replace(/s$/,"");break;case "stream":a=stream_data.get_name(a);break;case "topic":break;case "sender":case "pm-with":a=a.toString().toLowerCase();"me"===a&&(a=people.my_current_email());break;case "search":a=a.toString().replace(/[\u201c\u201d]/g,
'"');break;default:a=a.toString().toLowerCase()}return{negated:b,operator:c,operand:a}};

Hmm... The ISO/IEC 9075* SQL specification is inaccessible even though it is
an open standard. Though, PostgreSQL says it conforms to ANSI-SQL:2008 [1].
All I can find from the documentation[2]:

Key words and unquoted identifiers are case insensitive.

However, the requirement level (may or should or must) is not
explicitly stated here.
What are the use cases to justify for case sensitive syntax? If it is to
minimize ambiguity for the parser to get the boolean operators, I don't think it
is a sufficient reason to have to surface it to the search input, which has to
be more like natural lang.
[1] https://www.postgresql.org/about/
[2] https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS

Thank you for research. However I think that the case sensitivity of PGroonga's OR operator is outside of SQL specification about operators. PGroonga-powered operator @@ accepts case-sensitive value like SELECT * FROM table_name WHERE column_name @@ 'keyword1 OR keyword2'. (It will be generated here.) It is similar to another case-sensitive operator SELECT * FROM table_name WHERE column_name LIKE '%CaseSensitiveTerm%'.
I'm not clear about Zulip's default behavior and how mixed-case search terms affects to fulltext search based on tsearch. So I'm worring about the change unexpectedly break results from tsearch.

I see. Another way to put it, it is a DSL within a DSL.  What I had in mind was
the operator itself being case-insensitive, e.g. SELECT * FROM table_name WHERE column_name @@ 'keyword or KeyWord'.
Since currently Zulip uses PostgreSQL's default fulltext, I think it is
case-insensitive. This is inferred from 1. the fulltext documentation not stating
anything about it[1], 2. the postgres @@ test cases all use lowercase[2]. Though I should have cited the code instead.
((on another note, I wonder if there is a recent performance benchmark for PGroonga (vs ElasticSearch)? e.g. https://github.com/mozilla/arewefastyet))
[1] https://www.postgresql.org/docs/current/static/textsearch-intro.html#TEXTSEARCH-MATCHING
[2] https://github.com/postgres/postgres/blob/9d4ca01314ba0c571139c5560a40ef764ad0feee/src/test/regress/sql/tsearch.sql

Yes, @@ provided by PGroonga is incompatible to tsearch's one. The case sensitivity of PGroonga's DLS is originated from its backend (Groonga).
Thus, there are some approaches to solve this problem:

Make PGroonga's DLS compatible to tsearch's one.
Fit Zulip to PGroonga's way when PGroonga is chosen.
Add DSL translator from tsearch to PGroonga.

I think that the 1st approach is hard, because: in recent versions @@ is deprecated in PGroonga and it now provides its own operator '&?' instead. This indicates that PGroonga is clearly incompatible to tsearch in future versions also. (Thus, BTW, codes for PGroonga in Zulip should be updated with &?.)
Thus now I'm trying to write PR to do 2 or 3 for Zulip. How do you think about that? If it is not fit to Zulip's development policy, I'll working to do 1 - reintroduce @@ as an operator compatible to tsearch.

(note: views are my own, subject to a mistake; if I am allowed to voice a
statement, which I know I do)
I am sure Zulip developers/community (narrow: the ones who use non-ASCII chars)
do welcome the upgrade to the fulltext search to become crosslinguistic by
default with [P]Groonga.  This is without a full information set if there exists
other solutions (which there isn't, for PostgreSQL, AFAIK). If only experiments
on production environments can be conducted much easier...
Additionally, I wonder if LaTeX equations and code snippets (be it DSL or GPL)
can be better indexed as a result. I can test this myself or add test data to
PGroonga test-suite. Though language detection through its context might require
a solution along the line of using neural nets (I know as currently, it is
already out there, e.g. there has been word2vec in Apache Spark for a while, but
not yet as performant as vanilla well-engineered tf-idf vectorization).
Documentations of several web search engines[1][2] do explicitly use uppercase,
likely with the same rationale of why SQL syntax defaults to uppercase.
I think with 2 or 3, you could use a code-selection for the operator to be
either &@ when only one word is searched, or &? for multiple words with a
query lang. I think 2 is the fastest quick-fix for the problem, for now.
[1] https://duck.co/help/results/syntax; ddg only accepts 'OR' https://duckduckgo.com/?q=blue+OR+green
[2] https://support.google.com/websearch/answer/2466433?hl=en


Add voltoplus to latest

Please add my adapter ioBroker.voltoplus to latest.
This pull request was created by https://www.iobroker.dev 880ea27.

RE-CHECK!

Boith warnings can be ignored

Already ignored ;-)

Hi,
here review feedback:

The release script will not work for automatic releases because plugin package for iobroker and release config missing (moszt likely release-script was upgraded 2->3 without checking what changed)
Please also execute adapter tests (test:integration) on testing. right now only package is tested
Please store and stop the timeout when unloading or use adapter.setTimeout and js-controller >=4 ( and ideally also test it yourself in compact mode ;-) )

Thank you for checking and adjusting the mentioned topics

Done

@Jey-Cee I will merge into repo now but you should in any case add a request timeout to axios.
I find it interesting that the testing do not log anything, but most likely this is because he tries to query <IP_ADDRESS> and maybe hangs in a timeout because he waits unlimited ... (assumption), but yes riught now because no timeput means that network errors would also bring the adapter to hang.
Ingo


Websocket client disconnects and never reconnects (IDFGH-13129)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

IDF version.
4.4.7
Espressif SoC revision.
ESP-32 Wrover-E revision v3.0
Operating System used.
Windows
How did you build your project?
VS Code IDE
If you are using Windows, please specify command line type.
None
Development Kit.
ESP-32 Wrover-E
Power Supply used.
External 3.3V
What is the expected behavior?
Websocket client should reconnect
What is the actual behavior?
Websocket client does not reconnect
Steps to reproduce.
static void eventHandler(void* event_handler_arg, esp_event_base_t event_base, int32_t event_id, void* event_data) {
    // Access the instance through the provided argument
    WebsocketClient* instance = static_cast<WebsocketClient*>(event_handler_arg);
    instance->handler(event_handler_arg, event_base, event_id, event_data);
}

void WebsocketClient::init() {
    client = esp_websocket_client_init(&config);
    esp_websocket_register_events(
        client,
        WEBSOCKET_EVENT_ANY,
        reinterpret_cast<esp_event_handler_t>(eventHandler),
        static_cast<void*>(this));
    esp_websocket_client_start(client);
}

void WebsocketClient::handler(void* event_handler_arg, esp_event_base_t event_base, int32_t event_id, void* event_data) {
    esp_websocket_event_data_t* data = (esp_websocket_event_data_t*)event_data;

    switch (event_id) {
        case WEBSOCKET_EVENT_CONNECTED:
            if (connectCB) { connectCB(); }
            return;

        case WEBSOCKET_EVENT_DISCONNECTED:
            if (disconnectCB) { disconnectCB(); }
            return;

        case WEBSOCKET_EVENT_ERROR:
            if (errorCB) { errorCB(); }
            return;

        case WEBSOCKET_EVENT_DATA:
            handleWebSocketData(data);
            return;

        default:
            return;
    }
}

void WebsocketClient::handleWebSocketData(esp_websocket_event_data_t* data) {
    if (data->op_code == 0x08 && data->data_len == 2) {
        Serial.println("[WebsocketClient] - Got Close data");
        return;
    }

    // Check for ping data
    if (data->op_code == 0x09) {
        if(pingCB){ pingCB(); }
        return;
    }

    // Ensure payload_offset is within bounds
    if (data->payload_offset >= PACKET_BUFFER_SIZE) {
        Serial.println("[WebsocketClient] - Invalid payload offset");
        return;
    }

    // Check if incoming data will fit into the buffer
    if (data->payload_offset + data->data_len > PACKET_BUFFER_SIZE) {
        Serial.println("[WebsocketClient] - Buffer overflow");
        return;
    }

    // Copy the data to the packetBuffer
    memcpy(packetBuffer + data->payload_offset, data->data_ptr, data->data_len);

    // Check if all data has been received
    if (data->payload_offset + data->data_len == data->payload_len) {
        // Null-terminate the incoming data
        packetBuffer[data->payload_len] = '\0';
        // Process the complete data or notify the user
        if (frameCB && data->payload_len > 0) {
            frameCB(packetBuffer, data->payload_len);
        }
    }
}

Debug Logs.
[WebsocketClient] - Got Close data
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected
[ServerRouter] - Disconnected

More Information.
I'm using Arduino as a component of IDF with PlatformIO.

Arduino version is 2.0.17
idf version is 4.4.7

websocket config
webSocket.config.uri = config.serverWSURL;
webSocket.config.port = 443;
webSocket.config.transport = WEBSOCKET_TRANSPORT_OVER_SSL;
webSocket.config.path = "/test";
webSocket.config.headers = headers;
webSocket.config.task_stack = 6000;
webSocket.config.keep_alive_enable = true;
webSocket.config.disable_auto_reconnect = false;

I have tried to set a timer when the disconnect happens and reinit the socket after 30 sec
bool WebsocketClient::reInit(){
    esp_err_t err = esp_websocket_client_destroy(client);
    if(err != ESP_OK){
        return false;
    }
    init();
    return true;
}

Does not help.

@hitecSmartHome Thank you for raising this question. I attempted to reproduce the issue, but I was unable to. I executed both the client and server, and observed that the client successfully sent a connect event. When I shut down the server, I noticed that the client attempted to reconnect.
I tried ESP-IDF-v4.4 (which is quite old) and latest ESP-IDF  and both worked fine. Please find below my example maybe it can help you
#include <stdio.h>
#include "esp_wifi.h"
#include "esp_system.h"
#include "nvs_flash.h"
#include "esp_event.h"
#include "protocol_examples_common.h"

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/event_groups.h"

#include "esp_log.h"
#include "esp_websocket_client.h"
#include "esp_event.h"

#define NO_DATA_TIMEOUT_SEC 5

static const char *TAG = "WEBSOCKET";

static TimerHandle_t shutdown_signal_timer;
static SemaphoreHandle_t shutdown_sema;

static void shutdown_signaler(TimerHandle_t xTimer)
{
    ESP_LOGI(TAG, "No data received for %d seconds, signaling shutdown", NO_DATA_TIMEOUT_SEC);
    xSemaphoreGive(shutdown_sema);
}

#if CONFIG_WEBSOCKET_URI_FROM_STDIN
static void get_string(char *line, size_t size)
{
    int count = 0;
    while (count < size) {
        int c = fgetc(stdin);
        if (c == '\n') {
            line[count] = '\0';
            break;
        } else if (c > 0 && c < 127) {
            line[count] = c;
            ++count;
        }
        vTaskDelay(10 / portTICK_PERIOD_MS);
    }
}

#endif /* CONFIG_WEBSOCKET_URI_FROM_STDIN */

static void websocket_event_handler(void *handler_args, esp_event_base_t base, int32_t event_id, void *event_data)
{
    esp_websocket_event_data_t *data = (esp_websocket_event_data_t *)event_data;
    switch (event_id) {
    case WEBSOCKET_EVENT_CONNECTED:
        ESP_LOGI(TAG, "WEBSOCKET_EVENT_CONNECTED");
        break;
    case WEBSOCKET_EVENT_DISCONNECTED:
        ESP_LOGI(TAG, "WEBSOCKET_EVENT_DISCONNECTED");
        break;
    case WEBSOCKET_EVENT_DATA:
        ESP_LOGI(TAG, "WEBSOCKET_EVENT_DATA");
        ESP_LOGI(TAG, "Received opcode=%d", data->op_code);
        if (data->op_code == 0x08 && data->data_len == 2) {
            ESP_LOGW(TAG, "Received closed message with code=%d", 256*data->data_ptr[0] + data->data_ptr[1]);
        } else {
            ESP_LOGW(TAG, "Received=%.*s", data->data_len, (char *)data->data_ptr);
        }
        ESP_LOGW(TAG, "Total payload length=%d, data_len=%d, current payload offset=%d\r\n", data->payload_len, data->data_len, data->payload_offset);

        xTimerReset(shutdown_signal_timer, portMAX_DELAY);
        break;
    case WEBSOCKET_EVENT_ERROR:
        ESP_LOGI(TAG, "WEBSOCKET_EVENT_ERROR");
        break;
    }
}

static void websocket_app_start(void)
{
    esp_websocket_client_config_t websocket_cfg = {};

    shutdown_signal_timer = xTimerCreate("Websocket shutdown timer", NO_DATA_TIMEOUT_SEC * 1000 / portTICK_PERIOD_MS,
                                         pdFALSE, NULL, shutdown_signaler);
    shutdown_sema = xSemaphoreCreateBinary();

#if CONFIG_WEBSOCKET_URI_FROM_STDIN
    char line[128];

    ESP_LOGI(TAG, "Please enter uri of websocket endpoint");
    get_string(line, sizeof(line));

    websocket_cfg.uri = line;
    ESP_LOGI(TAG, "Endpoint uri: %s\n", line);

#else
    websocket_cfg.uri = CONFIG_WEBSOCKET_URI;
    websocket_cfg.task_stack = 6000;
    websocket_cfg.keep_alive_enable = true;
    websocket_cfg.disable_auto_reconnect = false;

#endif /* CONFIG_WEBSOCKET_URI_FROM_STDIN */

    ESP_LOGI(TAG, "Connecting to %s...", websocket_cfg.uri);

    esp_websocket_client_handle_t client = esp_websocket_client_init(&websocket_cfg);
    esp_websocket_register_events(client, WEBSOCKET_EVENT_ANY, websocket_event_handler, (void *)client);

    esp_websocket_client_start(client);
    xTimerStart(shutdown_signal_timer, portMAX_DELAY);
    char data[32];
    int i = 0;
    while (i < 5) {
        if (esp_websocket_client_is_connected(client)) {
            int len = sprintf(data, "hello %04d", i++);
            ESP_LOGI(TAG, "Sending %s", data);
            esp_websocket_client_send_text(client, data, len, portMAX_DELAY);
        }
        vTaskDelay(1000 / portTICK_RATE_MS);
    }

    xSemaphoreTake(shutdown_sema, portMAX_DELAY);
    esp_websocket_client_close(client, portMAX_DELAY);
    ESP_LOGI(TAG, "Websocket Stopped");
    esp_websocket_client_destroy(client);
}

void app_main(void)
{
    ESP_LOGI(TAG, "[APP] Startup..");
    ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size());
    ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version());
    esp_log_level_set("*", ESP_LOG_INFO);
    esp_log_level_set("WEBSOCKET_CLIENT", ESP_LOG_DEBUG);
    esp_log_level_set("TRANSPORT_WS", ESP_LOG_DEBUG);
    esp_log_level_set("TRANS_TCP", ESP_LOG_DEBUG);

    ESP_ERROR_CHECK(nvs_flash_init());
    ESP_ERROR_CHECK(esp_netif_init());
    ESP_ERROR_CHECK(esp_event_loop_create_default());

    /* This helper function configures Wi-Fi or Ethernet, as selected in menuconfig.
     * Read "Establishing Wi-Fi or Ethernet Connection" section in
     * examples/protocols/README.md for more information about this function.
     */
    ESP_ERROR_CHECK(example_connect());

    websocket_app_start();
}

Unfortunately, the debug output isn't very helpful, but I've still got a hunch here. It might be the same issue as in https://github.com/espressif/arduino-esp32/issues/9712, where the hostname couldn't be resolved anymore after automatically switching to IPv6. I experienced a similar problem with connections dropping after about half an hour to two hours, leading to a loop that required a reset. Best regards...

Thank you for your help.
The thing is that I have observed is that the server sends a data frame with a close data in it.
if (data->op_code == 0x08 && data->data_len == 2) {
    Serial.println("[WebsocketClient] - Got Close data");
    return;
}

After my ESP got this message, It does not see any clean close initiation and nothing.
It just stops working after that. No error cb, no close cb.
When I try to close it after this data packet, it does not work also. I have tried to destroy the ws client, tried to just stop it and tried to disconnect from it. Nothing works. The ESP is stuck in this state and can never reconnect. Doesn't even try to in itself.

My case is similar to this https://github.com/espressif/esp-idf/issues/10657
I can't reinit. esp_websocket_client_close and esp_websocket_client_destroy can not be called from the event handler and they also does nothing outside of the handler either.
I also can't reinit the wifi because I'm using wired ethernet.
void WebsocketClient::init() {
    client = esp_websocket_client_init(&config);
    esp_websocket_register_events(
        client,
        WEBSOCKET_EVENT_ANY,
        reinterpret_cast<esp_event_handler_t>(eventHandler),
        static_cast<void*>(this));
    esp_websocket_client_start(client);
}

bool WebsocketClient::reInit(){
    esp_err_t err = esp_websocket_client_destroy(client);
    if(err != ESP_OK){
        return false;
    }
    init();
    return true;
}

I have tried to call reinit after a timer when I got this close frame, no help.
I probably have some weird issue with my server or the proxy which does not close the socket cleanly, but the fact that the ESP stuck in this state is really strange. Even if the server just drops the connection, the ESP should reconnect. I have set the debug level to 5 and I got no other debug output.

I also can't reinit the wifi because I'm using wired ethernet.

But I thought we were talking about the ESP32-WROVER-E? Where do you plug in the Ethernet cable? ;)

Into an rj45 socket ;)

Okay, I wasn't aware that the ESP32WROVER-E could also be used as an Ethernet controller, when using an external physical interface device (PHY). So far, it was mainly a WLAN/Bluetooth module for me. I have now taken a closer look at the technical specifications. I also assumed that the IPv6/DNS problem described in arduino-esp32/issues/9712 is more likely related to the WLAN functionality, as the described misbehavior has only been reported in this context there, ...as far as I know.
However, I could well imagine that the ESP32 also exhibits such behavior when working as an Ethernet controller. Perhaps it partially uses the same program libraries for ethernet and wifi. Now the question is:
Is your ESP32 maybe trying to connect to the router using IPv6 even though you haven't enabled it? This could explain why it's not working properly, since it might get a response over IPv6 from the Router but actually is using IPv4 only. I therefore recommend checking this or activating IPv6 to see if the described behavior persists.

I dont understand how this is related.

Well, if the ESP32 briefly informs your router that it is reachable with its MAC address a1:b2:c3:xy under an IPv6 address, the router will remember this IPv6 address for a while for the corresponding MAC address and will send its response to the IPv6 address. However, the ESP32 receives nothing because it is only reachable via IPv4. That's the theory, at least. :)

Iam on arduino 2.0.17 and idf 4.4.7.
I use arduino as a component

Also my router does not have any IPV6 settings.
It doesn't even list any IPV6 address.
I can enable the ipv6 interface of the ethernet as well as the wifi hovewer.
Will check it out.
ETH.begin(
    ETH8720_PHY_ADDR,
    PIN_PHY_POWER,
    PIN_SMI_MDC,
    PIN_SMI_MDIO,
    ETH_PHY_LAN8720,
    ETH_CLK_MODE
);
ETH.enableIpV6();

This calls
bool ETHClass::enableIpV6()
{
    return tcpip_adapter_create_ip6_linklocal(TCPIP_ADAPTER_IF_ETH) == 0;
}

Iam on arduino 2.0.17 and idf 4.4.7. I use arduino as a component

Sorry, Is there a specific reason for using the older ESP-IDF v4.4? Please note that it will reach its end of life this July. The latest stable version of ESP-IDF is v5.3, and the latest stable ESP WebSocket client can be found here: ESP WebSocket Client v1.2.3.
Anyway, I tried to reproduce the issue using the example with ESP-IDF v4.4, and it seems to work correctly as it attempts to reconnect after receiving a close message from the server. Have you tested this example?
Here is the link for reference: GitHub Issue #14072.

The specific reason is that Espressif don't want to support PIO at all so the guys are lacking behind.
We, who uses PIO and Arduino as a component of IDF can't upgrade to the latest cores. It just simply not supported so we stuck at 2.0.17 and 4.4.7
See https://github.com/platformio/platform-espressif32/issues/1225
This happens only when the server sends a close DATA message and not a clean close. On clean close it reconnects fine.
I could not reproduce this on the server side myself yet. If I restart the server or suspend it it always sends a clean close. It just sometimes drops the ESPs with an OP code of 0x08 in a DATA frame. It was totally accidental when I have seen this frame.
Since then, I can see that the server sends this packet and the websocket traffic completly stops after that but the ESP thinks it's still connected.
void WebsocketClient::handleWebSocketData(esp_websocket_event_data_t* data) {
    if (data->op_code == 0x08 && data->data_len == 2) {
        printf("[WebsocketClient] - Got Close data\n");
        return;
    }
}

And it does not help even if I reinit the websocket client.
void WebsocketClient::init() {
    client = esp_websocket_client_init(&config);
    esp_websocket_register_events(
        client,
        WEBSOCKET_EVENT_ANY,
        reinterpret_cast<esp_event_handler_t>(eventHandler),
        static_cast<void*>(this));
    esp_websocket_client_start(client);
}

bool WebsocketClient::reInit(){
    esp_err_t err = esp_websocket_client_destroy(client);
    if(err != ESP_OK){ return false; }
    init();
    return true;
}

Okay, one of the ESP with ethernet has gone offline after 3 hour and 57 min. It still thinks its connected but no traffic. The two with the wifi is ok so far


issue is configure openssl 1.1.1v for windows

I am trying to build openssl 1.1.1v on windows and I am hitting when running the Configure -

perl.exe Configure  no-asm VC-WIN64A
Configuring OpenSSL version 1.1.1t (0x1010114fL) for VC-WIN64A
Using os-specific seed configuration
Creating configdata.pm
Creating makefile
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @buildfile in string at configdata.pm line 15452.
Possible unintended interpolation of @tmpl in string at configdata.pm line 15452.
Possible unintended interpolation of @tmpl in string at configdata.pm line 15452.
Possible unintended interpolation of @tmpl in string at configdata.pm line 15452.
Bareword found where operator expected at configdata.pm line 15525, near "option, and you will get the information you ask for.  See L</OPTIONS"
(Might be a runaway multi-line // string starting on line 15452)
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "$buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "$buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@buildfile" requires explicit package name at configdata.pm line 15452.
Global symbol "@tmpl" requires explicit package name at configdata.pm line 15452.
Global symbol "@tmpl" requires explicit package name at configdata.pm line 15452.
Global symbol "@tmpl" requires explicit package name at configdata.pm line 15452.
configdata.pm has too many errors.
Compilation failed in require.
BEGIN failed--compilation aborted.

It seems generated configdata.pm has syntax errors. could someone please help on this.

Hmm, I am unable to reproduce this.
I downloaded https://www.openssl.org/source/openssl-1.1.1v.tar.gz into a temporary directory, unpacked it, then ran your configure line
C:\Users\Tom\tmp>tar xfz openssl-1.1.1v.tar.gz

C:\Users\Tom\tmp>cd openssl-1.1.1v

C:\Users\Tom\tmp\openssl-1.1.1v>dir
 Volume in drive C is SYSTEM
 Volume Serial Number is 940A-7559

 Directory of C:\Users\Tom\tmp\openssl-1.1.1v

01/08/2023  14:51    <DIR>          .
01/08/2023  14:51    <DIR>          ..
01/08/2023  14:51                87 ACKNOWLEDGEMENTS
01/08/2023  14:51    <DIR>          apps
01/08/2023  14:51             2,549 appveyor.yml
01/08/2023  14:51               854 AUTHORS
01/08/2023  14:51             4,099 build.info
01/08/2023  14:51           613,733 CHANGES
01/08/2023  14:51            28,664 config
01/08/2023  14:51             2,510 config.com
01/08/2023  14:51    <DIR>          Configurations
01/08/2023  14:51           130,510 Configure
01/08/2023  14:51             3,627 CONTRIBUTING
01/08/2023  14:51    <DIR>          crypto
01/08/2023  14:51    <DIR>          demos
01/08/2023  14:51    <DIR>          doc
01/08/2023  14:51    <DIR>          engines
01/08/2023  14:51    <DIR>          external
01/08/2023  14:51            11,055 e_os.h
01/08/2023  14:51                84 FAQ
01/08/2023  14:51    <DIR>          fuzz
01/08/2023  14:51    <DIR>          include
01/08/2023  14:51            57,824 INSTALL
01/08/2023  14:51             6,121 LICENSE
01/08/2023  14:51    <DIR>          ms
01/08/2023  14:51            46,758 NEWS
01/08/2023  14:51             4,492 NOTES.ANDROID
01/08/2023  14:51             2,093 NOTES.DJGPP
01/08/2023  14:51             4,578 NOTES.PERL
01/08/2023  14:51             5,532 NOTES.UNIX
01/08/2023  14:51             3,861 NOTES.VMS
01/08/2023  14:51             7,488 NOTES.WIN
01/08/2023  14:51    <DIR>          os-dep
01/08/2023  14:51             3,157 README
01/08/2023  14:51            16,069 README.ENGINE
01/08/2023  14:51                61 README.FIPS
01/08/2023  14:51    <DIR>          ssl
01/08/2023  14:51    <DIR>          test
01/08/2023  14:51    <DIR>          tools
01/08/2023  14:51    <DIR>          util
01/08/2023  14:51    <DIR>          VMS
01/08/2023  14:51    <DIR>          wycheproof
              23 File(s)        955,806 bytes
              19 Dir(s)  540,334,137,344 bytes free

C:\Users\Tom\tmp\openssl-1.1.1v>perl Configure no-asm VC-WIN64A
Configuring OpenSSL version 1.1.1v (0x1010116fL) for VC-WIN64A
Using os-specific seed configuration
Creating configdata.pm
Creating makefile

**********************************************************************
***                                                                ***
***   OpenSSL has been successfully configured                     ***
***                                                                ***
***   If you encounter a problem while building, please open an    ***
***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
***   and include the output from the following command:           ***
***                                                                ***
***       perl configdata.pm --dump                                ***
***                                                                ***
***   (If you are new to OpenSSL, you might want to consult the    ***
***   'Troubleshooting' section in the INSTALL file first)         ***
***                                                                ***
**********************************************************************

The Perl errors you are seeing show signs that a stray open quote or other string start sequence is present higher up in the file - maybe a backslash or something has got in from a previous attempt to configure? I suspect the cause of the problem is something typed before the configure line you've shown us (because that does actually work).
Can you try again in a clean directory, running just the line you have given?

What Perl are you using? Currently the recommended Perl for Windows that we use for testing the Windows support is the Strawberry Perl.


lint: use no-prototype-builtins, prefer-const and no-inferrable-types lint rule

In https://github.com/Jozty/Fae/pull/71, we had added lint to Deno config. To pass the CI/CD for sometime, we had added some of the rules to lint-exclude. We need to remove those one by one. In this issue, we will removing no-prototype-builtins, prefer-const and no-inferrable-types lint rule from the lint-exclude option

can I work on this?


[storage][jellyfish] fix building error

Motivation
#429 introduces the new API and somehow we have to enable testing feature of types whenever we depend on it.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Cargo test
Related PRs

yes! There's doc in https://github.com/libra/libra/blob/master/documentation/coding_guidelines.md and I'm here to answer questions as well