"PROTOCOL_ERROR 0x1" when using hyper.HTTP20Adapter with python-requests

I have simple Twisted resource looking like this
import sys

from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor
from twisted.python import log

from twisted.internet import endpoints

class Index(Resource):
    isLeaf = True

    def render_GET(self, request):
        return b"hello world (in HTTP2)"

if __name__ == "__main__":
    log.startLogging(sys.stdout)
    site = server.Site(Index())
    endpoint_spec = "ssl:port=8080:privateKey=key.pem:extraCertChain=cert.pem"
    server = endpoints.serverFromString(reactor, endpoint_spec)
    server.listen(site)
    reactor.run()⏎

and two hyper clients. One looks like this and works fine:
from hyper import HTTPConnection

conn = HTTPConnection('localhost:8080', secure=True)
conn.request('GET', '/')
resp = conn.get_response()
print(resp.read())

Another one does same thing but in a different way and fails
import requests
from hyper.contrib import HTTP20Adapter

s = requests.Session()
s.mount('https://localhost:8080', HTTP20Adapter())
r = s.get("https://localhost:8080")
print(r.status_code)

Traceback is:
Traceback (most recent call last):
  File "client2.py", line 6, in <module>
    r = s.get("https://localhost:8080")
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/requests/sessions.py", line 487, in get
    return self.request('GET', url, **kwargs)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/contrib.py", line 80, in send
    resp = conn.get_response()
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/common/connection.py", line 129, in get_response
    return self._conn.get_response(*args, **kwargs)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/http20/connection.py", line 293, in get_response
    return HTTP20Response(stream.getheaders(), stream)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/http20/stream.py", line 223, in getheaders
    self._recv_cb(stream_id=self.stream_id)
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/http20/connection.py", line 744, in _recv_cb
    self._single_read()
  File "/home/pawel/.virtualenvs/http2/lib/python3.4/site-packages/hyper/http20/connection.py", line 701, in _single_read
    raise ConnectionError(error_string)
hyper.http20.exceptions.ConnectionError: Encountered error PROTOCOL_ERROR 0x1: Protocol error detected

why does it happen? Is my usage of adapter correct? Are both clients completely equivalent? If yes, why one works and other fails?
I'm using Python 3.4 on Ubuntu 14.04, OpenSSL 1.0.1.

With your adapter, can you try changing the s.get line from r = s.get("https://localhost:8080") to r = s.get("https://localhost:8080/")?

With your adapter, can you try changing the s.get line from r = s.get("https://localhost:8080") to r = s.get("https://localhost:8080/")?

same behavior.
I actually see that example from docs also fails with some error:
# client2.py
import requests
from hyper.contrib import HTTP20Adapter

s = requests.Session()

url = 'https://http2bin.org'
s.mount(url, HTTP20Adapter())
r = s.get("https://http2bin.org/get")
print(r.status_code)

and then I do something along the lines of :
> python --version
Python 2.7.6

> pip list
attrs (16.0.0)
backports.shutil-get-terminal-size (1.0.0)
cffi (1.7.0)
cryptography (1.4)
decorator (4.0.10)
enum34 (1.1.6)
h2 (2.4.0)
hpack (2.2.0)
hyper (0.6.2)
hyperframe (3.2.0)
idna (2.1)
ipaddress (1.0.16)
ipython (5.0.0)
ipython-genutils (0.1.0)
pathlib2 (2.1.0)
pexpect (4.2.0)
pickleshare (0.7.3)
pip (8.1.2)
prompt-toolkit (1.0.3)
ptyprocess (0.5.1)
pyasn1 (0.1.9)
pyasn1-modules (0.0.8)
pycparser (2.14)
Pygments (2.1.3)
pyOpenSSL (16.0.0)
requests (2.10.0)
service-identity (16.0.0)
setuptools (25.1.0)
simplegeneric (0.8.1)
six (1.10.0)
traitlets (4.2.2)
wcwidth (0.1.7)
wheel (0.29.0)

> python client2.py
Traceback (most recent call last):
  File "client2.py", line 2, in <module>
    from hyper.contrib import HTTP20Adapter
  File "/home/pawel/.virtualenvs/hyp/local/lib/python2.7/site-packages/hyper/__init__.py", line 11, in <module>
    from .common.connection import HTTPConnection
  File "/home/pawel/.virtualenvs/hyp/local/lib/python2.7/site-packages/hyper/common/connection.py", line 10, in <module>
    from ..http20.connection import HTTP20Connection
  File "/home/pawel/.virtualenvs/hyp/local/lib/python2.7/site-packages/hyper/http20/connection.py", line 35, in <module>
    TRANSIENT_SSL_ERRORS = (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE)
AttributeError: 'module' object has no attribute 'SSL_ERROR_WANT_READ'

Yeah, that error occurs in the released version when using old Python versions. The master branch shouldn't have that issue.
So the protocol error is odd. Does the server generate any logs or output?

same error with python3
<ipython-input-43-d09b7c0922c6> in <module>()
      3 s = requests.Session()
      4 s.mount('https://http2bin.org', HTTP20Adapter())
----> 5 r = s.get('https://http2bin.org/get')
      6 print(r.status_code)

/home/liza/.local/lib/python3.5/site-packages/requests/sessions.py in get(self, url, **kwargs)
    486
    487         kwargs.setdefault('allow_redirects', True)
--> 488         return self.request('GET', url, **kwargs)
    489
    490     def options(self, url, **kwargs):

/home/liza/.local/lib/python3.5/site-packages/requests/sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    473         }
    474         send_kwargs.update(settings)
--> 475         resp = self.send(prep, **send_kwargs)
    476
    477         return resp

/home/liza/.local/lib/python3.5/site-packages/requests/sessions.py in send(self, request, **kwargs)
    594
    595         # Send the request
--> 596         r = adapter.send(request, **kwargs)
    597
    598         # Total elapsed time of the request (approximately)

/usr/local/lib/python3.5/dist-packages/hyper/contrib.py in send(self, request, stream, cert, **kwargs)
     78             request.headers
     79         )
---> 80         resp = conn.get_response()
     81
     82         r = self.build_response(request, resp)

/usr/local/lib/python3.5/dist-packages/hyper/common/connection.py in get_response(self, *args, **kwargs)
    127         """
    128         try:
--> 129             return self._conn.get_response(*args, **kwargs)
    130         except HTTPUpgrade as e:
    131             # We upgraded via the HTTP Upgrade mechanism. We can just

/usr/local/lib/python3.5/dist-packages/hyper/http20/connection.py in get_response(self, stream_id)
    291         """
    292         stream = self._get_stream(stream_id)
--> 293         return HTTP20Response(stream.getheaders(), stream)
    294
    295     def get_pushes(self, stream_id=None, capture_all=False):

/usr/local/lib/python3.5/dist-packages/hyper/http20/stream.py in getheaders(self)
    221         # Keep reading until all headers are received.
    222         while self.response_headers is None:
--> 223             self._recv_cb(stream_id=self.stream_id)
    224
    225         # Find the Content-Length header if present.

/usr/local/lib/python3.5/dist-packages/hyper/http20/connection.py in _recv_cb(self, stream_id)
    742
    743             # TODO: Re-evaluate this.
--> 744             self._single_read()
    745             count = 9
    746             retry_wait = 0.05  # can improve responsiveness to delay the retry

/usr/local/lib/python3.5/dist-packages/hyper/http20/connection.py in _single_read(self)
    699                         )
    700
--> 701                     raise ConnectionError(error_string)
    702             else:
    703                 log.info("Received unhandled event %s", event)

ConnectionError: Encountered error PROTOCOL_ERROR 0x1: Protocol error detected

Can you please print out the result of pip freeze on that system?

Having the same issue when the doc example code as pawelmhm above. Here is a 'pip freeze' output dump. Using python 3.4.3 in ubuntu 14.04.
Brlapi==0.6.1
CherryPy==8.1.0
Magic-file-extensions==0.2
Mako==0.9.1
MarkupSafe==0.18
PyAudio==0.2.9
apturl===0.5.2ubuntu4
chardet==2.2.1
checkbox-ng==0.3
checkbox-support==0.2
colorama==0.2.5
command-not-found==0.3
decorator==4.0.9
defer==1.0.6
devscripts===2.14.1ubuntu0.1
dict==0.0.5
feedparser==5.1.3
friends==0.1
get==0.0.7
h2==2.4.1
hpack==2.3.0
html5lib==0.999
httplib2==0.8
hyper==0.6.2
hyperframe==3.2.0
language-selector==0.1
louis==2.5.3
lxml==3.3.3
numpy==1.11.1
oauthlib==0.6.1
onboard==1.0.1
oneconf==<IP_ADDRESS>.4.1
piston-mini-client==0.7.5
plainbox==0.5.3
pocketsphinx==0.1.3
post==0.0.5
public==0.0.0
pyOpenSSL==16.1.0
pycrypto==2.6.1
pycurl==7.19.3
pygobject==3.12.0
pyparsing==2.0.1
pyqtgraph==0.9.10
python-apt===<IP_ADDRESS>ubuntu2
python-debian===0.1.21-nmu2ubuntu2
pyxdg==0.25
query-string==0.0.5
request==0.0.5
requests==2.10.0
scipy==0.13.3
self==0.0.5
six==1.5.2
software-center-aptd-plugins==0.0.0
ubuntu-drivers-common==0.0.0
ufw===0.34-rc-0ubuntu2
unattended-upgrades==0.1
unity-scope-audacious==0.1
unity-scope-calculator==0.1
unity-scope-chromiumbookmarks==0.1
unity-scope-clementine==0.1
unity-scope-colourlovers==0.1
unity-scope-devhelp==0.1
unity-scope-firefoxbookmarks==0.1
unity-scope-gdrive==0.7
unity-scope-gmusicbrowser==0.1
unity-scope-gourmet==0.1
unity-scope-guayadeque==0.1
unity-scope-manpages==0.1
unity-scope-musique==0.1
unity-scope-openclipart==0.1
unity-scope-texdoc==0.1
unity-scope-tomboy==0.1
unity-scope-virtualbox==0.1
unity-scope-yelp==0.1
unity-scope-zotero==0.1
urllib3==1.7.1
usb-creator==0.2.23
wheel==0.24.0
xdiagnose===3.6.3build2
xkit==0.0.0

Additionally, consistently get the following error when trying another example from the doc:
Python 3.4.3 (default, Sep 14 2016, 12:36:27)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.

from hyper import HTTPConnection
c = HTTPConnection('http2bin.org')
first = c.request('GET', '/get', headers={'key': 'value'})
second = c.request('POST', '/post', body=b'hello')
third = c.request('GET', '/ip')
second_response = c.get_response(second)
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.4/dist-packages/hyper/common/connection.py", line 129, in get_response
return self._conn.get_response(*args, **kwargs)
TypeError: get_response() takes 1 positional argument but 2 were given
first_response = c.get_response(first)
Traceback (most recent call last):
File "", line 1, in
File "/usr/local/lib/python3.4/dist-packages/hyper/common/connection.py", line 129, in get_response
return self._conn.get_response(*args, **kwargs)
TypeError: get_response() takes 1 positional argument but 2 were given

=====================================================
However, if I use the HTTP20Connection class, then all works as advertised. It would appear that the HTTPConnection class is not connecting utilizing HTTP/2. The  same happens in other examples in the doc. I assumed that the HTTPConnection would automatically recognize a HTTP/2 site(Upgade).  Is this a documentation issue, or a bug?
Thanks
Greg

I assumed that the HTTPConnection would automatically recognize a HTTP/2 site(Upgade). Is this a documentation issue, or a bug?

It should. And indeed, on a quick test shows that it does. The error you're talking about in the most recent comment seems to be fundamentally a result of the fact that we are not reading the response until asked the first time, which means that we don't yet know that we're doing HTTP/2 instead of HTTP/1.1. That example works with port 443, but does not work with port 80.
It seems fundamentally to be unrelated to the protocol error discussed elsewhere in this issue, so I'm going to open a new issue for this problem (which involves in the first instance changing the documentation).


Prototype Update - Personal Request - Ministry Users

Title of ticket: Prototype Update - Personal Request - Ministry Users
Description
Update design of pages for personal request so it is easy to accommodate Ministries viewing Personal Requests
Dependencies
Are there any dependencies?
DOD

[x] Move email box into Contact Information Section
[x] Move First Name, Middle Name, Last Name into Request Details for Personal Request

Ministry View: https://jacklyn808742.invisionapp.com/console/share/3W2O64AP5C/813687578


detailed PIN layout

Hi, i was wondering if you could provide the pin layout you used between the rp2040 and the ov2640 camera module.

yes pls I'm looking for the same maybe we can send our findings here and help each other or something.

This is what I have till now:-
SCL ----------------------------------- GPIO5 (1k pull up)
SDA-----------------------------------GPIO4 (1k pull up)
RESETB--------------------------------GPIO2
XCLK----------------------------------GPIO3
VSYNC--------------------------------GPIO16
D0-----------------------------------------GPIO6
D1--------------------------------------GPIO7
D2---------------------------------------GPIO8
D3---------------------------------------GPIO9
D4-----------------------------------------GPIO10
D5----------------------------------------GPIO11
D6----------------------------------------GPIO12
D7-------------------------------------GPIO13
PWDN---------------------not sure i dont think thsi library uses it
This does not work I'm pretty sure I'm making a stupid mistake or smth pls if anyone makes any progress

dont you have a PCLK connection? this is my connections where in my board XCLK is internally generated.

Pico
OV2640
Notes

3.3
VCC

SCL
GP5
set pull up resistor

SDA
GP4
set pull up resistor

VSYNC
GP16

HREF
GP15

PCLK
GP14

D0
GP6

RESET
GP2

GND
GND

Is this working? and did you change the PCLK and HREF in the pio file as well?

Hello, guys, I'm just getting started with Raspberry PI, so what kind of pin maps are available?

Hello, guys, I'm just getting started with Raspberry PI, so what kind of pin maps are available?

changed my board and added a pull up resistor to the vsync and it worked


bard is now gemini

has to actualize

The CLI hasn't worked for me in a few days, returning failed to ask question: status code is not 200: 400. I suspect that the  hostname change may be at least part of the reason?


Nuxt SSR  deployment on docker with pm2 has error.

Versions

nuxt: v2.14.12
node: v14.15.3

I did  run nuxt build command then,
when i run pm2-runtime start ecosystem.yml on docker, i get this error:

Error: No build files found in
/var/www/ui/ecosystem.config.yaml/.nuxt/dist/server.
Use either nuxt build or builder.build() or start nuxt in development mode.

how i can solve that?

@Atinux
ecosystem.yaml
apps:
      - name: App
        exec_mode: cluster
        instances: max
        script: ./node_modules/nuxt/bin/nuxt.js
        args: start

@Atinux
ecosystem.yaml
apps:
      - name: App
        exec_mode: cluster
        instances: max
        script: ./node_modules/nuxt/bin/nuxt.js
        args: start

@Atinux Everything is ok. but when i run pm2-runtime start ecosystem.yml , i get that error.

@Atinux Everything is ok. but when i run pm2-runtime start ecosystem.yml , i get that error.

@Atinux  Is there nuxt starts command?
everything is correct. if run nuxt start, it will work, but withpm2 start ecosystem.yaml` rerurn error.

@Atinux  Is there nuxt starts command?
everything is correct. if run nuxt start, it will work, but withpm2 start ecosystem.yaml` rerurn error.

@Atinux It did not help. seam error.

@Atinux It did not help. seam error.

@farshidrezaei You seem to be using ecosystem.yaml and ecosystem.yml interchangeably. Would you confirm that you are using the correct filename consistently throughout all your commands/configuration?

yes. everything is correct.
finally i fix my problem with another way without pm2.
i run directly nuxt start. and set some other docker configs.
thanks a lot.

@farshidrezaei You seem to be using ecosystem.yaml and ecosystem.yml interchangeably. Would you confirm that you are using the correct filename consistently throughout all your commands/configuration?

yes. everything is correct.
finally i fix my problem with another way without pm2.
i run directly nuxt start. and set some other docker configs.
thanks a lot.

I am experiencing the same problem.
node: v14.16.0
nuxt: 2.15.3
pm2: 4.5.5
Works fine:
pm2 start ecosystem.config.js
Doesn't work:
pm2-runtime start ecosystem.config.js
Error output:
✖ Nuxt Fatal Error
Error: No build files found in /var/www/ui/ecosystem.config.js/.nuxt/dist/server.
Use either `nuxt build` or `builder.build()` or start nuxt in development mode.

As you can see from above the path is incorrect:
Incorrect path:
/var/www/ui/ecosystem.config.js/.nuxt/dist/server
Intended path:
/var/www/ui/.nuxt/dist/server
My /var/www/ui/ecosystem.config.js file:
module.exports = {
  apps: [
    {
      name: 'ui',
      cwd: '/var/www/ui/',
      exec_mode: 'cluster',
      instances: 'max', // Or a number of instances
      script: './node_modules/nuxt/bin/nuxt.js',
      args: 'start',
      env: {
        NODE_ENV: "development",
      },
      env_production: {
        NODE_ENV: "production",
      }
    }
  ]
}

Multiple people are having this issue including myself:
https://github.com/Unitech/pm2/issues/4576
https://github.com/nuxt/nuxt.js/issues/8704
https://github_com.jam.dev/nuxt/nuxt.js/issues/8723

Any updates? Im getting the same error trying to run a Nuxt app on Docker container with pm2-runtime.

@dmorais8
Don't use pm2 in docker. just run nuxt start and set   restart: always  in your container.

I'm sorry, I figured out what happened in my case.
For a docker build from node:lts-alphine it was a silent error that finished build successfully, but without .nuxt/dist/server and .nuxt/dist/clien files.
With a node:lts build failed with error 137, which is OutOfMemory in most cases. I increased default Docker settings with memory and cores and now everything is ok.
My bad. The only weird thing is that with node:lts-alphine docker build didn't show any error.

I have the same issue. I modified the @nuxt/config/dist/config.js code can run success.

rootDir = path__default['default'].resolve(rootDir);
to
rootDir = process.cwd();
is OK~

try pm2 list first
"scripts": {
    "postinstall": "patch-package",
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "./node_modules/pm2/bin/pm2 save --force && ./node_modules/pm2/bin/pm2 list && ./node_modules/pm2/bin/pm2-runtime start ecosystem.config.js ",
    "server" : "nuxt start",
    "generate": "nuxt generate",
    "lint": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue .",
    "lint:fix": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue . --fix"
  },

https://www.python2.net/questions-1253548.htm

I need to run nuxt app inside docker container and it should start using pm2-runtime. Any updates on this issue?

start.json
"args": "start -c /.../nuxt.config.js"
nuxt.config.js
rootDir: process.cwd()
buildDir: process.cwd() + '/.nuxt/'

is no resolved,if use ecosystem.config.js，pm2-runtime start ecosystem.config.js is ok,but if use shell,pm2-runtime start './node_modules/nuxt/bin/nuxt.js' --name aaaa  -i 1 -- start -c /Users/huangshuisheng/Desktop/hss/galaxy-s10/nuxt-blog-client/nuxt.config.js, is no work

没有解决，如果使用ecosystem.config.js，pm2-runtime start ecosystem.config.js可以，但是如果使用shell，pm2-runtime start './node_modules/nuxt/bin/nuxt.js' --name aaaa -i 1 -- start -c /Users/huangshuisheng/Desktop/hss/galaxy-s10/nuxt-blog-client/nuxt.config.js，是不行的

see: https://github.com/Unitech/pm2/issues/4576

Although I don't know why, before executing pm2-runtime, run pm2 list or pm2 update first, and pm2-runtime will work normally without error:'xxxxxx/.nuxt/dist/server.', which is amazing

try first
pm2 list

@TheSycamore
"scripts": {
    "postinstall": "patch-package",
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "./node_modules/pm2/bin/pm2 save --force && ./node_modules/pm2/bin/pm2 list && ./node_modules/pm2/bin/pm2-runtime start ecosystem.config.js ",
    "server" : "nuxt start",
    "generate": "nuxt generate",
    "lint": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue .",
    "lint:fix": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue . --fix"
  },

https://www.python2.net/questions-1253548.htm
It`s works for me

Although I don't know why, before executing pm2-runtime, run pm2 list or pm2 update first, and pm2-runtime will work normally without error:'xxxxxx/.nuxt/dist/server.', which is amazing

Could anyone provide the full ecosystem file + script that you are using to start the app using pm2? I am facing the same issue. I only see a few hacks without explaining the full solution.

谁能提供您使用 pm2 启动应用程序所使用的完整生态系统文件 + 脚本？我面临同样的问题。我只看到了一些 hack 而没有解释完整的解决方案。

my wechat:shuisheng9905，I may be able to help you remotely，or，Provide your github repo，i can pullrequest

@galaxy-s10, I've realized that doesn't make any sense to use pm2 inside a docker container and we switched to the default "npm run dev" way. Doing a pm2 update && pm2-runtime xxxx worked fine.

@galaxy-s10，我意识到在 docker 容器中使用 pm2 没有任何意义，我们切换到默认的“npm run dev”方式。执行 pm2 update && pm2-runtime xxxx 工作正常。
一些与 docker vs pm2 相关的链接以及为什么不应该同时使用它们：https:  //stackoverflow.com/questions/51191378/what-is-the-point-of-using-pm2-and-docker-together https：  //maximorlov.com/pm2-to-docker-automatic-restarts/  https://maximorlov.com/from-pm2-to-docker-cluster-mode/

OK Thank you, but I think even if you don't use pm2 in the docker, you should also use npm run build&&npm run start, because the memory occupied by npm run dev is much larger than the npm run start executed after the build

try first
pm2 list

@TheSycamore
"scripts": {
    "postinstall": "patch-package",
    "dev": "nuxt",
    "build": "nuxt build",
    "start": "./node_modules/pm2/bin/pm2 save --force && ./node_modules/pm2/bin/pm2 list && ./node_modules/pm2/bin/pm2-runtime start ecosystem.config.js ",
    "server" : "nuxt start",
    "generate": "nuxt generate",
    "lint": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue .",
    "lint:fix": "eslint --format ./node_modules/eslint-friendly-formatter --ext .js,.vue . --fix"
  },

https://www.python2.net/questions-1253548.htm
It`s works for me

Although I don't know why, before executing pm2-runtime, run pm2 list or pm2 update first, and pm2-runtime will work normally without error:'xxxxxx/.nuxt/dist/server.', which is amazing

It`s works for me

It`s works for me


Cut a new release of streaming-utils

I just transferred streaming-utils to haskell-streaming (here), but it doesn't have issues enabled. I also don't have admin access to enable issues, so apologies for the odd round-about way of opening an issue here instead.
Anyway, streaming-utils on Hackage isn't buildable with the latest versions of dependencies, notably streaming-0.2. In haskell-streaming/streaming-utils I've fixed that. We just need to get maintainership on Hackage and upload. @andrewthad, would you mind getting that access?

A new release of streaming-utils would be very helpful.

I got that access a few weeks ago and posted it about it at https://github.com/haskell-streaming/streaming-utils/issues/2. If no one uploads streaming-utils by tomorrow morning I can do so.

@chessai I've since cut a release of a stand-alone streaming-attoparsec (the code of which is ripped straight from this repo), and plan to do streaming-aeson in the near future (which this lib also provides).

@fosskers thanks for that. would it be considered advantageous to make streaming-utils more modular, ie having streaming-attoparsec, streaming-aeson, etc. for backward compatibility, streaming-utils could just re-export those things.

can't build this with just cabal right now. getting a bunch of c linker errors...will investigate later

This should be closed, I already did this.
However we should do the thing @fosskers talks about. I'll open a new issue.


#222: fixed

bug in #222

@rultor merge

@rultor merge

@yegor256 OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@yegor256 Done! FYI, the full log is here (took me 6min)

@yegor256/z this pull request is too small, just 8 lines changed (less than 10), there will be no formal code review, see §53 and §28; in the future, try to make sure your pull requests are not too small; @yegor256/z please review this and merge or reject

Job gh:cqfn/eo#237 is not assigned, can't get performer


Add Getting started section to README

README Update
Please add getting started section to the README so folks know how to start with this project

Added Getting Started section in README file


fix: re-port Init/Algebra/Order

The ad-hoc port was added in #18, but the #aligns were all missing and two defs were incorrectly promoted to an instance.

[x] depends on: #4006

This is needed to faithfully forward-port leanprover-community/mathlib#18848

This PR/issue depends on:

leanprover-community/mathlib4#4006
By Dependent Issues (🤖). Happy coding!

This PR/issue depends on:

leanprover-community/mathlib4#4006
By Dependent Issues (🤖). Happy coding!

bors merge


[BUG, GoodCollective] Transaction info and styles out of date

The colors and styles for transaction types need to be updated

cc: https://github.com/GoodDollar/GoodCollective/issues/230

closing in favor of #230


According to the laravel documentation Eager Load relationships doesn't work with cursors. Suggested using lazy

changed cursor method to lazy to run eager load relationships

One of the checks failed, could you take a look?

php version error

it seems it is about php version. the composer package doesn't support 7.4.  When I check the log PHP Fatal error:  During class fetch: Uncaught ParseError: syntax error, unexpected '|', expecting variable (T_VARIABLE) in /home/runner/work/Explorer/Explorer/vendor/spatie/macroable/src/Macroable.php:14

What do you mean? The package does support 7.4 as far as I know.

Can you run workflow again please. I just added comment to the code to be sure the error reason is lazy method or not.

Sure!

I think you can also run the actions in your own repo, that might speed things up for you.


Add the .vscode folder to the .gitignore file

Add the .vscode folder to the .gitignore file in order to ignore the VS Code specific configurations.

Updated this pull request to also include a new Ansible role to delete a single junction (delete_junction).


Samples readme updated to include features description

Build status - All builds passed
https://github.com/OfficeDev/Microsoft-Teams-Samples/actions/runs/4590222204


OCPBUGS-42422: Fix order rendering HCP objects

Fix order rendering HCP objects, modified to be always first the Namespace, and the last ones the HC and NP. Covered with unit tests.
Which issue(s) this PR fixes:
Fixes #OCPBUGS-42422

/jira refresh

/lgtm

/retest

/retest

/retest

Rebase with new konflux images

/lgtm

/lgtm

/retest

/retest

/backport release-4.17

/cherrypick release-4.17

/cherry-pick release-4.17


sure this is fully open source?

cant find the files for the buttons on the top.. is this fully open source? or is it just the guides

This is just the bare bone documentation files. The website we use to host automatically applies the theme.


Can't view stream on first launch

Hi,
On a RPI2 with latest Raspbian Jessie, when i start the rtspserver the first time, vlc doesn't play anything, no error message.

pi@raspicam:~ $ sudo /home/pi/h264_v4l2_rtspserver/h264_v4l2_rtspserver -P 8554 -Q 10 -r -s -W 1920 -H 1080 -F 25
2016-02-24 14:57:29,910 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:243
Create V4L2 Source.../dev/video0
2016-02-24 14:57:30,265 [NOTICE] - src/V4l2Capture.cpp:86
driver:raspicam 1000001
2016-02-24 14:57:30,265 [NOTICE] - src/V4l2Capture.cpp:94
/dev/video0 support read/write
2016-02-24 14:57:30,493 [NOTICE] - src/V4l2Capture.cpp:153
/dev/video0:H264 size:1920x1080 bufferSize:262144
2016-02-24 14:57:30,502 [NOTICE] - src/V4l2Capture.cpp:172
fps:1/25
2016-02-24 14:57:30,503 [NOTICE] - src/V4l2Capture.cpp:173
nbBuffer:4
2016-02-24 14:57:30,504 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:263
Start V4L2 Capture.../dev/video0
2016-02-24 14:57:30,505 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:85
Play this stream using the URL "rtsp://<IP_ADDRESS>:8554/unicast"
RTCPInstance::RTCPInstance error: totSessionBW parameter should not be zero!

The last line appear when VLC connect.
I stop the program with CTRL + C, launch it again and now :

pi@raspicam:~ $ sudo /home/pi/h264_v4l2_rtspserver/h264_v4l2_rtspserver -P 8554 -Q 10 -r -s -W 1920 -H 1080 -F 25
2016-02-24 15:03:10,829 [ERROR ] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:232
Failed to create RTSP server: bind() error (port number: 8554): Address already in use

So i wait a moment and i can start it again, now VLC start to play the stream immediately

I see a little difference between the first and second start :+1:

2016-02-24 15:24:40,398 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:85
Play this stream using the URL "rtsp://<IP_ADDRESS>:8554/unicast"
RTCPInstance::RTCPInstance error: totSessionBW parameter should not be zero!

Second :

2016-02-24 15:27:55,042 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:85
Play this stream using the URL "rtsp://<IP_ADDRESS>:8554/unicast"
** 2016-02-24 15:27:55,253 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:84
profile-level-id=640028;sprop-parameter-sets=J2QAKKwrQDwBE/LAPEiagA==,KO4CXLA=**
RTCPInstance::RTCPInstance error: totSessionBW parameter should not be zero!

Hi,
In order to be played an H264 stream needs SPS, PPS information.
Depending on the V4L2 device driver, it is needed to wait for it.
In order to investigate what frame are got from V4L2 device, you can use the -v argument.
Regards,
Michel.

I don't have this at first launch :

2016-02-24 23:26:43,305 [INFO  ] - /home/pi/h264_v4l2_rtspserver/v4l2wrapper/inc/logger.h:44
level:INFO
2016-02-24 23:26:43,314 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:243
Create V4L2 Source.../dev/video0
2016-02-24 23:26:43,634 [NOTICE] - src/V4l2Capture.cpp:86
driver:raspicam 1000001
2016-02-24 23:26:43,635 [NOTICE] - src/V4l2Capture.cpp:94
/dev/video0 support read/write
2016-02-24 23:26:43,900 [NOTICE] - src/V4l2Capture.cpp:153
/dev/video0:H264 size:1920x1080 bufferSize:262144
2016-02-24 23:26:43,901 [NOTICE] - src/V4l2Capture.cpp:172
fps:1/25
2016-02-24 23:26:43,901 [NOTICE] - src/V4l2Capture.cpp:173
nbBuffer:4
2016-02-24 23:26:43,901 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:263
Start V4L2 Capture.../dev/video0
2016-02-24 23:26:43,902 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:85
Play this stream using the URL "rtsp://<IP_ADDRESS>:8554/unicast"
2016-02-24 23:26:44,407 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456352804 fps:1 bandwidth:110kbps
2016-02-24 23:26:45,032 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456352805 fps:17 bandwidth:7068kbps
2016-02-24 23:26:46,032 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456352806 fps:25 bandwidth:12011kbps
2016-02-24 23:26:46,636 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:59
IDR size:94858
2016-02-24 23:26:47,031 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456352807 fps:25 bandwidth:12249kbps
2016-02-24 23:26:48,030 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456352808 fps:25 bandwidth:11943kbps

Second ok :

2016-02-24 23:30:26,440 [INFO  ] - /home/pi/h264_v4l2_rtspserver/v4l2wrapper/inc/logger.h:44
level:INFO
2016-02-24 23:30:26,443 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:243
Create V4L2 Source.../dev/video0
2016-02-24 23:30:26,640 [NOTICE] - src/V4l2Capture.cpp:86
driver:raspicam 1000001
2016-02-24 23:30:26,640 [NOTICE] - src/V4l2Capture.cpp:94
/dev/video0 support read/write
2016-02-24 23:30:26,912 [NOTICE] - src/V4l2Capture.cpp:153
/dev/video0:H264 size:1920x1080 bufferSize:262144
2016-02-24 23:30:26,914 [NOTICE] - src/V4l2Capture.cpp:172
fps:1/25
2016-02-24 23:30:26,915 [NOTICE] - src/V4l2Capture.cpp:173
nbBuffer:4
2016-02-24 23:30:26,917 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:263
Start V4L2 Capture.../dev/video0
2016-02-24 23:30:26,918 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/main.cpp:85
Play this stream using the URL "rtsp://<IP_ADDRESS>:8554/unicast"
2016-02-24 23:30:27,113 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456353027 fps:1 bandwidth:0kbps
2016-02-24 23:30:27,114 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:57
SPS size:16
2016-02-24 23:30:27,114 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:58
PPS size:5
2016-02-24 23:30:27,115 [NOTICE] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:84
profile-level-id=640028;sprop-parameter-sets=J2QAKKwrQDwBE/LAPEiagA==,KO4CXLA=
2016-02-24 23:30:27,235 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:59
IDR size:9593
2016-02-24 23:30:28,003 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456353028 fps:20 bandwidth:7031kbps
2016-02-24 23:30:29,002 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456353029 fps:25 bandwidth:12013kbps
2016-02-24 23:30:29,647 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/H264_V4l2DeviceSource.cpp:59
IDR size:92404
2016-02-24 23:30:30,002 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456353030 fps:25 bandwidth:12082kbps
2016-02-24 23:30:31,003 [INFO  ] - /home/pi/h264_v4l2_rtspserver/src/V4l2DeviceSource.cpp:29
intv_sec:1456353031 fps:25 bandwidth:11832kbps

Hi,
From the log, the first time the V4L2 driver seems to not send the SPS and PPS frame that are needed to play the stream.
This depend on the driver you are using.
With the official raspicam driver bcm2835_v4l2, it send these 2 frames at the beginning and repeat it at a period controlled by h264_i_frame_period parameter, you can check the value with:
 v4l2-ctl -C h264_i_frame_period

Regards,
Michel.

Thank you Michel, the driver was the problem !

Ok, so... how to fix this problem with the driver? I'm in the same situation :) .

Setting h264_i_frame_period

@mpromonet I'm in the same situation, is there a reason why I never get the SPS or PPS on the first try but I have to start for another one? Is there a timeout after which the server doesn't try to read it anymore? On first start even after a minute it doesn't find it, on second, almost immediately

Hi,
Did you tried to change the h264_i_frame_period ?
It is possible that the parsing to get SPS/PPS fails, did you look a the verbose log to see what's occurs ?
Regards,
Michel.

Unfortunately the webcam (Microsoft HD 3000) doesn't have that control, however I've solved for now using ffmpeg+ffserver on an rPI and ffmpeg on the other one


feat!: now services are AnyCodable to conform to DID specifications

misc added a helper did parameter to PeerDID model so now you can get DIDCore.DID directly from it.
BREAKING CHANGE: The API changed so services now is a AnyCodable

I've tested this for did-exchange and it worked as expected.

@conanoc merged releasing new version

@conanoc  Glad to know it worked, its fully released now. Feel free to contribute always :)


Use shared dependencies license plugin

What does this PR do?
Use the shared dependency license plugin replacing the one embedded in buildSrc

I have same doubt as Nikita, otherwise LTGM!

@ambushwork

I have same doubt as Nikita, otherwise LTGM!
All our tests have been renamed since, so we're good to go :)


Add ComponentGraph class

Closes #1277 (design doc here)

I agree with Dylan about submitting an issue to track the caching for this class, since the current cache might run into memory issues.

@bchen1116 good point, already filed! (idk if my prev comment mentioned this) #466

There currently is no implementation for adding additional nodes or adding two graphs together, as mentioned in the original issue, is there? Not sure if I missed something, but might be nice to file an issue to track adding those two!

Great point @bchen1116! I did remove these capabilities as I iterated through this PR. With the decision for the ComponentGraph class to be completely internal/private (users shouldn't ever need to muck with it), any use cases for adding nodes or merging graphs disappeared. That being said, it may be worth it to file another issue to track adding that in the future, should use cases arise. (This PR is already so large, that work would probably be left to a separate issue)


[bn] Launch Bengali localization

This PR is created to merge  dev-1.24-bn.1 into main branch
by fixing : #44993
Tracking issue: #31677

/language bn

/hold
Localization launch needs approval from website admins

@itsPronay  Most of the files are outdated. My team and I are starting fresh. We're working on updating those files and localizing others . Feel free to reach out to  me  if you notice anything to Change/Update/Localize or if you find any Mistakes .  I'll take the necessary steps to fix them. .

@itsPronay as a courtesy, we avoid reviewing work marked as draft; there are exceptions and I do sometimes offer early feedback.
You are welcome to file new issues to record work that needs doing ahead of launching Bengali, including any recommendation to rework something already localized.

/test

There is a Header Rule Error because the glossary term_id sidecar-container is missing.

@sajibAdhi doesn't you have fix that already ?

@dipesh-rawat Is there a way to view all errors at once? I believe there may still be more errors there.

Is there a way to view all errors at once? I believe there may still be more errors there.

Typically, the build preview deploy logs (here) should display all errors encountered. Right now, it's only showing the missing upcoming-releases shortcode file error. It's important to note that with each new commit added to the PR branch, the build preview reruns, which might uncover additional failures. Predicting these errors in advance can be challenging, but the logs should capture them all.

This PR aims to launch the Bengali localization of the Kubernetes website by merging the dev-1.24-bn.1 branch into the main branch.
We have completed all the necessary content and made the required adjustments to launch the Kubernetes website in Bangla.

https://github.com/kubernetes/website/issues/44993

We also have a perfect deploy preview  :

https://deploy-preview-45009--kubernetes-io-main-staging.netlify.app/bn/

dev-1.24-bn.1 has been fully reviewed by :
/cc @asem-hamid
/cc @mitul3737
/cc @sajibAdhi
We kindly request review and approval from

sig-docs-localization-reviewers

/cc @a-mccarthy
/cc @seokho-son

sig-docs-leads

/cc  @divya-mohan0209
/cc @natalisucks
/cc @reylejano
/cc @sftim
Thank you for your cooperation and support!

I've reviewed all content outside content/bn such as hugo.toml, i18n, static, OWNERS_ALIASES, and README.md, and everything looks good to me. +Netlify preview works nicely.
I believe content/bn meets the minimal requirements, and individual contents inside content/bn have already been reviewed by Bn reviewers:
- asem-hamid
- Imtiaz1234
- mitul3737
- rajibmitra
Therefore, the content inside this PR, LGTM!

However, I am concerned about the commit history. The 903 commits in the upstream dev-1.24-bn.1 are not following the SIG-Docs commit squashing policy. dev-1.24-bn.1 contains too many redundant or irrelevant commits.
My suggestion is to open another PR with one squashed commit for this first release of the Bengali localization.

For instance, see #44980

Regarding my suggestion for commit squashing, I hope to follow a decision from SIG-Docs leads, and emeritus leads. I'd like to call @kubernetes/sig-docs-leads here to finalize the first live of Bengali localization. :)

I also reviewed files outside content/bn: OWNERS_ALIASES, README.md, hugo.toml, _redirects. I have one minor suggestion

Thank you for addressing my comment
/lgtm
/assign @reylejano @natalisucks @divya-mohan0209 @seokho-son @a-mccarthy

Thank you for all your hard work on this!
/approve

@seokho-son : Regarding squashing of commits, please could you advise on the precedent followed previously for other localisation go-lives that you have been involved in?

Hi @divya-mohan0209,
I offered some advice but was not directly involved with the release of previous languages, except for Korean.
I just reviewed how we've managed similar cases in the past.

https://github.com/kubernetes/website/pull/12998 (67 commits for 270 files)
https://github.com/kubernetes/website/pull/18569 (3 commits)

(I assume the following languages were based on a previous localization guide)

https://github.com/kubernetes/website/pull/16404 (35 commits)
https://github.com/kubernetes/website/pull/13543 (34 commits)
https://github.com/kubernetes/website/pull/13822 (12 commits)
https://github.com/kubernetes/website/pull/18419 (5 commits)
https://github.com/kubernetes/website/pull/10471 (1 commit)

However, my concern is not the number of commits but rather the presence of too many redundant or irrelevant commits in dev-1.24-bn.1, possibly included by the GitHub review suggestion UI as well.
It seems that many localization teams, including the Korean team, have been making efforts to manage commits effectively.

https://github.com/kubernetes/website/pull/18226 (1 commit)
https://github.com/kubernetes/website/pull/29998

I'm okay with it if there have been previous precedents of it working successfully. Again, this is an improvement in how we localise docs that will need general consensus and must be documented. Given the time constraints around the PR, I suggest the following.

I'd like the other co-chairs, leads, and emeritus leads to chime in on this improvement as the bare minimum. I'm tagging @reylejano @natalisucks @sftim @a-mccarthy @dipesh-rawat here since they have previously been involved/tagged here for reviews.
By EOD, we will proceed with the recommended approach if a minimum quorum of  50% of the folks tagged in point number 1 assent to this improvement without any technical/procedural concerns.
If it succeeds without glitches, we will showcase this at our next localisation meeting and PR it as a recommendation in our docs.

Although we'd like to see commits done well (it makes the repo easier to manage), if they haven't been then we mostly need to accept that.
I am happy to see Bengali launch if the only qualm about launching it is the commit history on that branch and not follow our norms (not rules, norms) around squashing.

As an aside, watch out for commits that touch other parts of the tree and are then reverted within the same PR. That kind of commit makes merges and rebases a pain for everyone else.
(I'm not seeing that here)

I'm also happy to see the Bengali localization launch and for us to document our desired approach for teams around commits more broadly before stricter reinforcement.
Thanks to our various leads for their reviews here! ❤

Ok! I think we've reached a consensus. Let me release the hold and let's look forward to the new language for k8s.io!
/lgtm
/hold cancel

Thank you so much for your review, approval, and effort, which allowed us to launch it so quickly.
@seokho-son , @reylejano , @divya-mohan0209 , @sftim , @natalisucks

I also want to thank @seokho-son  and @sftim  for all the help and guidance from the beginning until now during the localization progress.


Favicon only on the homepage

Favicon doesn't appear on any page other than the home page

We will be working and fixing this in the next update.

Reported on : https://github.com/ahmedkaludi/Accelerated-Mobile-Pages/issues/43
will be fixed in V0.8.6


Apply auto-fixable changes to shell scripts with shellcheck in reformat tool

Why are the changes needed?

introduce shellcheck in dev/reformat tool, to lint and apply auto-fixable suggestions to shell scripts
exclude SC2086 rule in bin/kyuubi-logo to avoid breakings in display
apply changes to existed shell scripts with shellcheck in dev/reformat

How was this patch tested?

[ ] Add some test cases that check the changes thoroughly including negative and positive cases if possible

[ ] Add screenshots for manual tests if appropriate

[x] Run test locally before make a pull request

Codecov Report

Merging #4500 (d81d6ab) into master (f420238) will decrease coverage by 0.04%.
The diff coverage is n/a.

@@             Coverage Diff              @@
##             master    #4500      +/-   ##
============================================
- Coverage     53.34%   53.30%   -0.04%
  Complexity       13       13
============================================
  Files           571      571
  Lines         31285    31285
  Branches       4219     4219
============================================
- Hits          16689    16677      -12
- Misses        13014    13028      +14
+ Partials       1582     1580       -2

see 6 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


Router

Added routes with 'Home' component as index route
Changed Blake's buttons from 'sections' to 'Links' to add routing.

Remember to npm i after pulling to install mike's data viz library. It's starting to look like an app!

closes #19

This looks good 🚢 🇮🇹

Looks good Casey!


[WIP] Support Chrome's $XDG_CONFIG_DIR habit

This PR will attempt to close #321

Hi.
Sorry for the delay.
There are multiple formatting issues in the code, should I point to them? I developed a code style that I like, but I have no its explicit description. (Beside that, converting from (const char *) to (char *) looks dangerous).
But, what's more important, I see there is pepperflash_user_path_list list defined, but nowhere used. Was that intentional?
Also a big question is changed plugin detection policy. Previous policy was to use first detected. Now it's the most recent one? What about adobe-flashplugin package in Ubuntu? It gets updated, so potentially could have a newer version that other plugin instances in the filesystem. But that package still have no manifest.json.

Time passed; some of the issues solved themselves. For example, adobe-flashplugin package in Ubuntu now have manifest.json.
There is now another implementation of similar idea in da0120a018d634f8825f15988f3b8fcec11ce6c6. It simply selects the newest version it can find.


Replace html-css-js-minify with minify_jll, eliminate Python3 dependency

I recently ported over Taco de Wolff's Minify  to Julia as a JLL package and felt it would be an excellent addition to Franklin.
Advantages

Dependency packaged directly as a JLL
Additional support for json, svg, and xml minification
Eliminate Python3 as an external dependency (I commented out the internal functions if they are ever needed again for some future dependency, though I can remove them outright if desired)

Disadvantages

Would need to bump Franklin to julia versions 1.6+. I could re-add the python3 minifer and ensure it is only used for julia v1.5 and below.
Minor performance regression (2x based on some side-by-side comparisons with the included templates, though it might scale better with larger sites)

Considerations

I did not touch any GitHub actions for this pr as I'm unsure if we would still prefer installing python3 for whichever reason
If there are other packages that we would like to integrate into Franklin I'd be more than happy to work on uploading them as JLLs to avoid more external dependencies in the future

Hello @M-PERSIC , thanks a lot for this, it's awesome and the PR is nice and clean. I will not merge this into Franklin however as the current status is kind of like an LTS release. The next version of Franklin is in preparation at Xranklin.jl and about 95% ready (mostly docs stuff at this point).
The next version drops these external dependencies which caused issues and ultimately were not that useful.
minify_jll sounds great but it's the kind of stuff which I'd like users to opt-in via their utils file rather than have it baked in the code.
Comments / next steps:

there isn't yet an explicit spot in the next version of Franklin to specify post-build logic; this is where a user who would want to benefit from minify_jll would add a few lines to indicate they want to do so. If you have thoughts on where this could be placed (e.g. in utils.jl or in a separate file, or as an argument to build(...)) and, more generally, if you're interested in porting this as a plugin to this next version, please kindly open an issue at Xranklin.jl for further discussion
in your code, you call success(`$(minify_jll.minify()) -o $(filepath) $(filepath)`), I'm not very familiar with jll files but can't these be called directly within Julia? does it have to be shelled out? not an issue, just curiosity here.

Thanks again for your proposal!

@tlienart Thank you for your feedback!

I think minification should be a fundamental component of Xranklin's build process as its advantages are too numerous. Some quick brainstorming, minify_jll could be included as a package extension and a minify option is added to the file watching process via full_pass().  I'll open an issue in Xranklin hopefully soon once I have some more concrete ideas.
It depends on what is included in the JLL package if it must be shelled out or not. If a C/Fortran-ABI compatible shared library is included, it can be invoked via Libdl or ccall. If an executable is included, then it must be run as an external program, though because it is fully packaged into Julia with the appropriate wrappers it is treated as a first-class Julia package. A good summary of JLL packages is in Pkg + BinaryBuilder -- The Next Generation


[dart2js] Error on RenderingContext.getUniformLocation() for nonexistent uniform

Whenever I call
RenderingContext2 gl; //or RenderingContext gl;
ShaderProgram shader;
// ...
UniformLocation location = gl.getUniformLocation(shader, "someUniformName")

for uniform, which is not present within shader program, I encounter an error Unexpected null value encountered in Dart web platform libraries.
I have noticed that library declares return type of  getUniformLocation() as non nullable, which seems inconsistent with Web API.
GL shader compiler tends to omit unused uniforms, so programmer cannot always guarantee their presence. Therefore I propose to make getUniformLocation() return UniformLocation?.
OS: Manjaro Linux
Dart SDK version: 2.18.4 (stable) (Tue Nov 1 15:15:07 2022 +0000) on "linux_x64"
Tested browsers: Firefox, Brave, Chromium
Example:

Works on DartPad.
Fails on my notebook.
Lines causing errors are commented.
example.zip

cc @srujzs

Thanks for filing! The web library bindings are pretty stale so they're being based off of this IDL definition:
WebGLUniformLocation getUniformLocation(WebGLProgram program, DOMString name);
which, as you've noted, is no longer accurate. For full disclosure, this is likely going to be a lower priority to fix for us as:

We're working on new interop tools and newer web libraries based on that interop.
This is a breaking change, but I doubt the API has much use.
There's a workarounds doc that you can use here: https://github.com/dart-lang/sdk/blob/main/sdk/lib/html/doc/WORKAROUNDS.md

You're welcome and thanks again for filing! I'm actually going to keep this open, since it's still a bug, even if we might not get to it.


Remove the unnecessary link

Remove/hide the doubt circle link in the footer of the production landing pages

Closing as this issue has been resolved.


Segfault when loading comment_0_0.csv with a header but without specifying header=true

On current master, I did the following and got a segfault.
kuzu> create node table Comment (ID INT64,creationDate TIMESTAMP,locationIP STRING,browserUsed STRING,content STRING,length INT64, PRIMARY KEY(ID))

Then I have this comment_0_0_csv file for LDBC snb 0.1. I'm copy pasting the first few lines:
id|creationDate|locationIP|browserUsed|content|length
618475290625|2011-08-17T14:26:59.961+0000|<IP_ADDRESS>|Chrome|yes|3
618475290626|2011-08-17T11:10:21.570+0000|<IP_ADDRESS>|Chrome|thanks|6
1030792151045|2012-07-20T05:22:51.283+0000|<IP_ADDRESS>|Chrome|LOL|3

Then I ran this copy statement, which should have included the header=true but did not.
kuzu> copy Comment from "../data/ldbc/0.1/csv/ldbc-format/comment_0_0.csv" (DELIM="|");
Error: Invalid number: length.
kuzu> zsh: segmentation fault  ./build/release/tools/shell/kuzu_shell ../data/ldbc/0.1/binary/kuzu

This bug is related to issue #1404. When an exception occurs, not all copy tasks are removed from the queue. When the other worker threads try to grab a task from the queue, it will cause a seg fault.


Manage theme controls should always have one active option

Issue:
In the Manage theme modal the segemented controls can be toggled to not have any option in the active state (Disabled, Reference Only, Enabled). This control should always have one option in the active state.
This controls is also present in the Export Variables and Styles modal under Change Sets. The functionality should remain the same here as well.
Reproduction:

Definition of done:
The toggle of Manage Themes and Change Sets should always have one option in active state.

Fixing this along with others as part of https://github.com/tokens-studio/figma-plugin/pull/2570

Added to Featurebase Roadmap-	💚 Theme management enhancements - QOL


Semantic similarity match score between query and passage, summary and title

When matching by semantic similarity at passage, summary and title level, a similarity score should be calculated.
This score will be used to rank the relevance of the match to the user’s query.

This isn't possible with Opensearch as it does not normalise relevance scores. It's something that we could investigate post-alpha if still considered a priority for users.

see also https://github.com/elastic/elasticsearch/issues/23850


Uri.base is file://// in /

Consider this program:
main(args) {
  print(Uri.base.toFilePath());
  print(new Uri.file("/").toFilePath());
}

When I run it from / it prints:
//
/

I expected it to print:
/
/

That looks wrong.

I'd say it looks wrong//incorrect ;-)

Fixed.


Fix appveyor tests under windows

Need to log on to appveyor and try to figure out why tests fail. It is a bit strange that most tests run under appveyor even with command touch that should not exist under windows, and I cannot recall what I did to make it available.

Tests now pass on AppVeyor


Per-node DataTree chunking

Is your feature request related to a problem?
In the radio astronomy domain specific xarray-ms, we construct a DataTree representing partitions of a legacy data format where each partition contains regular data cubes. As currently implemented, the custom backend supports a partition_chunks kwarg in the BackendEntrypoint.open_datatree method so that it is possible to specify different chunking schemas per partition:

https://xarray-ms.readthedocs.io/en/latest/tutorial.html#per-partition-chunking

The chunking specification above is specific to a radio astronomy legacy format, but it may be more generally useful to be able to specify per-DataTree node  chunking.
Describe the solution you'd like
Currently, BackendEntrypoint.open_datatree passes it's chunks kwarg to each Dataset constructor in the DataTree. This is quite coarse-grained as it applies the same chunking schema to all Datasets in the DataTree.
I propose that  the chunks kwarg in   BackendEntrypoint.open_datatree support a chunking dictionary per path (i.e. DataTree Node). For example:
import xarray

xdt = xarray.open_datatree(..., chunks={
  "/path/to/node1": {"time": 20, "frequency": 16},
  "/path/to/a/node2": {"time": 10, "frequency": 4},
}

Then, when constructing Datasets in the DataTree, the chunking schema appropriate to the node can be applied.
An entry in the above dictionary does not necessarily need to only apply to a single node. It could also apply the chunking schema to each subtree below the node. But it may be better to make this more explicit
xd = xarray.open_datatree(..., chunks={
  # Apply to node1 and any node below
  "/path/to/node1/...": {"time": 20, "frequency": 16}
}

Describe alternatives you've considered
We've implemented a custom partition_chunks kwarg argument in the BackendEntrypoint.open_datatree method for our legacy data format.
Additional context
No response

Yes, in principle I'd like to submit a PR. Apologies for not replying, I need to devote more time to thinking about the change:
In particular, the open_datatree  (and open_group_as_dict) defers to the backend''s open_datatree  implementation
https://github.com/pydata/xarray/blob/863184dfaa9c89b3f272da3042e5e9beaac200f3/xarray/backends/api.py#L859-L864
https://github.com/pydata/xarray/blob/863184dfaa9c89b3f272da3042e5e9beaac200f3/xarray/backends/api.py#L896-L901
which seems to imply that it's the backend's responsbility to interpret the chunks dictionary and pass it through to the backend's or xarray's method open_dataset . There doesn't immediately see a good way to do this by intercepting chunks before the API calls  and dispatching the appropriate chunking strategy/schema to each dataset.
Perhaps the full chunking schema/strategy could be passed to the open_dataset method, along with the tree node path? But that seems ugly.
Neither of the above seem appealing  -- I'll try find some more time to think about this.

I'm not sure if I didn't miss anything, but I don't think open_datatree does support dask / chunking at all, right now: nowhere in the code of the backends do we act on the chunks, and either way open_dataset calls _dataset_from_backend_dataset after the call to backend.open_dataset to do that, so I think open_datatree should do something similar.
The resulting _datatree_from_backend_datatree would then also be the natural place for handling the per-group chunk arguments.


Reduction of Contributions in github

Please can you reduce the amount of contributions made to while submitting questions from leetcode.
I guess there are approx 3 or 4  Contribution per Question which is a bit large.
You should add a feature so as to choose do we need to push the readme file or not, in order to reduce the contributions.
If anyday I solve 4*5 leetocdde questions it just fills that day with contributions which thens makes other contrubition very dull

Second that


korrel8r complains about openshift route on minikube / kind

$ korrel8r web
korrel8r 11:24:04 "msg"="error creating store" "error"="no matches for kind "Route" in version "route.openshift.io/v1"" "domain"="alert"
korrel8r 11:24:04 "msg"="error creating store" "error"="no matches for kind "Route" in version "route.openshift.io/v1"" "domain"="logs"
korrel8r 11:24:04 "msg"="error creating store" "error"="no matches for kind "Route" in version "route.openshift.io/v1"" "domain"="metric"
korrel8r 11:24:04 "level"=0 "msg"="working directory" "dir"="/tmp/korrel8r78161289"
no matches for kind "Route" in version "route.openshift.io/v1"

Thanks, I'm reworking how korrel8r discovers its default resources and I want to root out the open shift dependencies like this. Will close this when done.


Make sure port could be set in yml (Windows)

Fix #1435

Coverage decreased (-0.004%) to 24.591% when pulling 70d930b756434aa93e6f6840c199bcb71304c9f7 on wu-sheng-patch-1 into 44fc3e0742549d1916094b9292e59c05618d1084 on master.


Follow up on  sd mmc init faild #439

Hi,
I've been eagerly following the status of the SPI issue for SD card here: https://github.com/esp-rs/esp-idf-svc/issues/439
I see that it has been merged, but there has bee no release for the crate. Using it from the master branch instead of the crate repo causes an error because esp-idf-hal doesn't have an "experimental" feature flag (yet). My guess is that this will all be released soon, so, I just thought of kindly asking if there's any date for that yet.
Great work with the crates though, programming for embedded has never been this easy.
Thanks.

You just need to:

use the [patch.crates-io] cargo functionality
patch BOTH esp-idf-svc and esp-idf-hal with their git repository, even if you don't depend on edp-idf-hal
... and then report if the new sd support works for you. I would be particularly interested in the sd-spi code path (ad opposed to sd-mmc) as I did not test it carefully.

Although, if I try to return just the filesystem, (i assume) the spi device drivers are being dropped, and I cannot call std::io::File commands anymore. I cannot return SdSpiHostDriver along with MountedFatFs easily, because it is already passed when you call mount().

No they are not dropped, and this ^^^ is a bug. Read on.

The example implies I just need to keep MountedFatfs::mount() struct in memory to keep the filesystem mounted.

Yes, exactly.

Return Ok(SdCard { fs: _mounted_fatfs }) from sd_spi.rs and call File::create() in main or some other place once more with SdCard still in memory, and I get this error:

This is a bug. Fortunately, I think I just fixed it. Can you try the bugfix? You only need to do cargo update in the root of your binary crate, rebuild and then re-flash and re-run.
In general you are free to move and place the driver, the mounted fatfs etc. however you want, and the code should not crash at all. There is no such requirement that you need to "manually" keep the SpiDeviceDriver around, because you actually do:

If you pass it by moving it into FatFs (as you actually do by just following the example) then FatFs "owns" it, and recursively, MountedFatFs owns FatFs and thus the driver too if you pass FatFs by moving it
You can also use refcounting or raw Rust references, and it should also work, and Rust should warn you if you somehow have wrong lifetimes

Fix here: https://github.com/esp-rs/esp-idf-hal/commit/b186a3be4c68c634089260d472d59c9b70c2b061

pub struct SdCard<'d> {
    #[allow(dead_code)]
    spi_device_driver: SpiDeviceDriver<'d, SpiDriver<'d>>,
    fs: Fat,
}

This ^^^ in the "original" PR was wrong and very dangerous, hence I removed the support for this pattern, in that the fs (Fat) variable actually depends on the lifetime of spi_device_driver - yet - this was not captured at all in the driver code. So if you drop spi_device_driver before fs, the program might crash, which is UB and not OK in Rust.

I've created a blank project using the template, and modified the Cargo.toml for:
[package]
name = "esps3-sd-spi"
version = "0.1.0"
authors = ["Fabrício Bracht"]
edition = "2021"
resolver = "2"
rust-version = "1.77"

[[bin]]
name = "esps3-sd-spi"
harness = false       # do not use the built in cargo test harness -> resolve rust-analyzer errors

[profile.release]
opt-level = "s"

[profile.dev]
debug = true    # Symbols are nice and they don't increase the size on Flash
opt-level = "z"

[features]
default = ["std", "embassy", "esp-idf-svc/native"]

pio = ["esp-idf-svc/pio"]
std = ["alloc", "esp-idf-svc/binstart", "esp-idf-svc/std"]
alloc = ["esp-idf-svc/alloc"]
nightly = ["esp-idf-svc/nightly"]
experimental = ["esp-idf-svc/experimental"]
embassy = [
    "esp-idf-svc/embassy-sync",
    "esp-idf-svc/critical-section",
    "esp-idf-svc/embassy-time-driver",
]

[dependencies]
log = { version = "0.4", default-features = false }
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git", features = [
    "experimental",
    "alloc",
] }

[patch.crates-io]
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git" }
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal.git" }

[build-dependencies]
embuild = "0.32.0"

But I'm getting an error building it:
...
   Compiling embassy-futures v0.1.1
   Compiling embedded-svc v0.28.0
error[E0308]: mismatched types
   --> /home/esp/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/b186a3b/src/sd.rs:223:38
    |
223 |         let mut card: sdmmc_card_t = alloc::boxed::Box::new(Default::default());
    |                       ------------   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `sdmmc_card_t`, found `Box<_>`
    |                       |
    |                       expected due to this
    |
    = note: expected struct `esp_idf_sys::sdmmc_card_t`
               found struct `Box<_>`
help: consider unboxing the value
    |
223 |         let mut card: sdmmc_card_t = *alloc::boxed::Box::new(Default::default());
    |                                      +

error[E0614]: type `esp_idf_sys::sdmmc_card_t` cannot be dereferenced
   --> /home/esp/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/b186a3b/src/sd.rs:225:60
    |
225 |         esp!(unsafe { sdmmc_card_init(&configuration, &mut *card) })?;
    |                                                            ^^^^^

error[E0308]: mismatched types
   --> /home/esp/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/b186a3b/src/sd.rs:227:32
    |
227 |         Ok(Self { _host: host, card })
    |                                ^^^^ expected `Box<sdmmc_card_t>`, found `sdmmc_card_t`
    |
    = note: expected struct `Box<esp_idf_sys::sdmmc_card_t>`
               found struct `esp_idf_sys::sdmmc_card_t`
    = note: for more on the distinction between the stack and the heap, read https://doc.rust-lang.org/book/ch15-01-box.html, https://doc.rust-lang.org/rust-by-example/std/box.html, and https://doc.rust-lang.org/std/boxed/index.html
help: store this in the heap by calling `Box::new`
    |
227 |         Ok(Self { _host: host, Box::new(card) })
    |                                +++++++++    +

error[E0308]: mismatched types
   --> /home/esp/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/b186a3b/src/sd.rs:301:32
    |
301 |         Ok(Self { _host: host, card })
    |                                ^^^^ expected `Box<sdmmc_card_t>`, found `sdmmc_card_t`
    |
    = note: expected struct `Box<esp_idf_sys::sdmmc_card_t>`
               found struct `esp_idf_sys::sdmmc_card_t`
    = note: for more on the distinction between the stack and the heap, read https://doc.rust-lang.org/book/ch15-01-box.html, https://doc.rust-lang.org/rust-by-example/std/box.html, and https://doc.rust-lang.org/std/boxed/index.html
help: store this in the heap by calling `Box::new`
    |
301 |         Ok(Self { _host: host, Box::new(card) })
    |                                +++++++++    +

Some errors have detailed explanations: E0308, E0614.
For more information about an error, try `rustc --explain E0308`.
error: could not compile `esp-idf-hal` (lib) due to 4 previous errors

Am I missing something still?

I've created a blank project using the template, and modified the Cargo.toml for:

Ah yes, sorry - my bad. I thought my changes build fine, but forgot that the CI of esp-idf-hal is not yet enabled for experimental features. Now fixed. Do a cargo update in the crate root of the blank project.

[dependencies]
log = { version = "0.4", default-features = false }
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git", features = [
"experimental",
"alloc",
] }

Why are you doing this? If you use the [patch.crates-io] feature, you are not supposed to touch the [dependencies] section at all. It goes with regular "crates.io" dependencies like esp-idf-svc = { version = "..", features = [...] }. That's the whole point of it.

[patch.crates-io]
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git" }
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal.git" }

This is all you need, as I explained.

You are correct. Those are remains of multiple tries to fix the issue. They got left behind.

You said:
If you use the [patch.crates-io] feature, you are not supposed to touch the [dependencies] section at all. It goes with regular "crates.io" dependencies like esp-idf-svc = { version = "..", features = [...] }. That's the whole point of it.

Not sure I understand what you meant by "not supposed to touch". Can you explain please?

You said:
If you use the [patch.crates-io] feature, you are not supposed to touch the [dependencies] section at all. It goes with regular "crates.io" dependencies like esp-idf-svc = { version = "..", features = [...] }. That's the whole point of it.

Not sure I understand what you meant by "not supposed to touch". Can you explain please?

By not "touching" I meant not blindly changing regular crates.io dependencies with GIT ones. Use cargo dependencies as per my example from above: esp-idf-svc = { version = "..", features = [...] }.
The [patch.crates-io] section will automatically turn them / "patch" them / "replace" them with the GIT ones. Which is why it exists as a feature and why it is named like that - so that you don't manually change your crates.io dependencies to GIT ones, because manual changing of crates.io deps to GIT deps does not always work.
And even in your case it does not really work, because inside esp-idf-svc there is a dependency to the crates.io version of esp-idf-hal. You can't change this manually to a GIT dependency yourself, as the Cargo.toml of esp-idf-svc is not part of your source code. But a [patch.crates-io] section that "patches" esp-idf-hal WILL patch it also for the Cargo.toml of esp-idf-svc, which is the whole point. I think it might be useful if you read the [patch.crates-io] section in the Cargo documentation, and also if you read a bit on cargo tree so that you understand how dependencies actually work.

Will do. Thank you.

Just to leave it documented. This should work right off the bat, correct?
[dependencies]
log = { version = "0.4", default-features = false }
esp-idf-svc = { version = "0.49", default-features = false }

[patch.crates-io]
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git" }
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal.git" }

Just to leave it documented. This should work right off the bat, correct?
[package]
name = "esps3-sd-spi"
version = "0.1.0"
authors = ["Fabrício Bracht"]
edition = "2021"
resolver = "2"
rust-version = "1.77"

[[bin]]
name = "esps3-sd-spi"
harness = false       # do not use the built in cargo test harness -> resolve rust-analyzer errors

[profile.release]
opt-level = "s"

[profile.dev]
debug = true    # Symbols are nice and they don't increase the size on Flash
opt-level = "z"

[features]
default = ["std", "embassy", "esp-idf-svc/native"]

pio = ["esp-idf-svc/pio"]
std = ["alloc", "esp-idf-svc/binstart", "esp-idf-svc/std"]
alloc = ["esp-idf-svc/alloc"]
nightly = ["esp-idf-svc/nightly"]
experimental = ["esp-idf-svc/experimental"]
embassy = [
    "esp-idf-svc/embassy-sync",
    "esp-idf-svc/critical-section",
    "esp-idf-svc/embassy-time-driver",
]

[dependencies]
log = { version = "0.4", default-features = false }
esp-idf-svc = { version = "0.49", default-features = false }

[patch.crates-io]
esp-idf-svc = { git = "https://github.com/esp-rs/esp-idf-svc.git" }
esp-idf-hal = { git = "https://github.com/esp-rs/esp-idf-hal.git" }

[build-dependencies]
embuild = "0.32.0"

Yes it should.

Hmm, obviously, I'm still missing something. A cargo build resulted in:
   Compiling esp-idf-hal v0.44.1 (https://github.com/esp-rs/esp-idf-hal.git#72f6448c)
   Compiling esp-idf-svc v0.49.1 (https://github.com/esp-rs/esp-idf-svc.git#bf47d2bc)
error[E0432]: unresolved import `esp_idf_svc::hal::sd`
 --> src/main.rs:7:9
  |
7 |         sd::{SdCardConfiguration, SdCardDriver},
  |         ^^ could not find `sd` in `hal`

error[E0433]: failed to resolve: use of undeclared type `SdSpiHostDriver`
  --> src/main.rs:33:9
   |
33 |         SdSpiHostDriver::new(
   |         ^^^^^^^^^^^^^^^ use of undeclared type `SdSpiHostDriver`

error[E0433]: failed to resolve: use of undeclared type `MountedFatfs`
  --> src/main.rs:45:26
   |
45 |     let _mounted_fatfs = MountedFatfs::mount(Fatfs::new_sdcard(0, sd_card_driver)?, "/sdcard", 4)?;
   |                          ^^^^^^^^^^^^ use of undeclared type `MountedFatfs`

error[E0433]: failed to resolve: use of undeclared type `Fatfs`
  --> src/main.rs:45:46
   |
45 |     let _mounted_fatfs = MountedFatfs::mount(Fatfs::new_sdcard(0, sd_card_driver)?, "/sdcard", 4)?;
   |                                              ^^^^^ use of undeclared type `Fatfs`

Some errors have detailed explanations: E0432, E0433.
For more information about an error, try `rustc --explain E0432`.
error: could not compile `esps3-sd-spi` (bin "esps3-sd-spi") due to 4 previous errors

Put the experimental feature in the defaults...

Ah, thank you very much.

Yes. I'll let you know.
Right now I'm still struggling to make it work. But I'm sure it has more to do with me not setting things up properly and not the code.
Now I'm struggling with:
I (388) sleep: Configure to isolate all GPIO pins in sleep state
I (395) sleep: Enable automatic switching of GPIO sleep configuration
I (402) main_task: Started on CPU0
I (406) main_task: Calling app_main()
I (412) gpio: GPIO[10]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (441) gpio: GPIO[10]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (442) gpio: GPIO[13]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (449) gpio: GPIO[11]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
I (458) gpio: GPIO[12]| InputEn: 0| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:0
Error: ESP_ERR_TIMEOUT (error code 263)
I (471) main_task: Returned from app_main()

From the example, I changed the pins to:
    let spi_driver = SpiDriver::new(
        peripherals.spi2,
        pins.gpio12,       // SCLK
        pins.gpio13,       // MISO
        Some(pins.gpio11), // MOSI
        &DriverConfig::default().dma(Dma::Auto(4096)),
    )?;

    let sd_card_driver = SdCardDriver::new_spi(
        SdSpiHostDriver::new(
            spi_driver,
            Some(pins.gpio10),
            AnyIOPin::none(),
            AnyIOPin::none(),
            AnyIOPin::none(),
            None,
        )?,
        &SdCardConfiguration::new(),
    )?;
    info!("Mounting File");
    // Keep it around or else it will be dropped and unmounted
    let _mounted_fatfs = MountedFatfs::mount(Fatfs::new_sdcard(0, sd_card_driver)?, "/sdcard", 4)?;

To work with my esp32-s3.
I tried on 2 different sd-card devices (one is a Waveshare (https://www.waveshare.com/micro-sd-storage-board.htm) and the other is an Amazon bought one.
I read in some obscure posts that the problem might be with my sd card, so I'll have to wait for the new ones to arrive. I am using this sd card formatter (https://www.sdcard.org/downloads/formatter/).
This may take a while, and since there was another person who confirmed that it works (here: https://github.com/esp-rs/esp-idf-svc/issues/467#issuecomment-2268271039), I think you can close it (if you feel that is the case, of course).
Thank you

It is very likely you might just not be connecting it properly.
Are you sure you are connecting mosi of the board to miso of the card and miso of the board to mosi of the card?

Ah, that might have been it. I swapped them, and now I get a different problem:
I (1019) main_task: Started on CPU0
I (1023) main_task: Calling app_main()
I (1029) gpio: GPIO[10]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1038) sdspi_transaction: cmd=52, R1 response: command not supported
I (1086) sdspi_transaction: cmd=5, R1 response: command not supported
Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x40376675
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd0108,len:0x1710
load:0x403b6000,len:0x8c8
load:0x403ba000,len:0x2eb4
SHA-256 comparison failed:
Calculated: 1549cc352de9d9bcb10175fcd43380ff2e0209e9a6b10dd38e454bc060f04976
Expected: ab492d70a98095a7841c7bfbf1d6d0b6161e082227abfb2028c51ce7cbe6144a
Attempting to boot anyway...
entry 0x403b61c0
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x403bccf4
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd0108,len:0x1710
load:0x403b6000,len:0x8c8
load:0x403ba000,len:0x2eb4
SHA-256 comparison failed:
Calculated: 1549cc352de9d9bcb10175fcd43380ff2e0209e9a6b10dd38e454bc060f04976
Expected: ab492d70a98095a7841c7bfbf1d6d0b6161e082227abfb2028c51ce7cbe6144a
Attempting to boot anyway...
entry 0x403b61c0

I finally got it to work. I had to change some things around and I made sure to double check everything along the way, so I'm pretty confident there were no "mess-ups" this time.
The working setup:

ESP32 Devkit V1
Waveshare mini sd card reader
16Gb Kingston MicroSD HC

Using the other 64GB Sandisk SDXC gave me a
"Error: Os { code: 19, kind: Uncategorized, message: "No such device" }"
With the ESP32-S3-WROOM-1-N16R8, I get the panic message. No matter which card, pins, or sd reader I use.
I'm probably missing something there, but I just wanted to leave it documented.
So, in summary. I can confirm it works for the esp32.

Ah, that might have been it. I swapped them, and now I get a different problem:
I (1019) main_task: Started on CPU0
I (1023) main_task: Calling app_main()
I (1029) gpio: GPIO[10]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1038) sdspi_transaction: cmd=52, R1 response: command not supported
I (1086) sdspi_transaction: cmd=5, R1 response: command not supported
Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x40376675
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd0108,len:0x1710
load:0x403b6000,len:0x8c8
load:0x403ba000,len:0x2eb4
SHA-256 comparison failed:
Calculated: 1549cc352de9d9bcb10175fcd43380ff2e0209e9a6b10dd38e454bc060f04976
Expected: ab492d70a98095a7841c7bfbf1d6d0b6161e082227abfb2028c51ce7cbe6144a
Attempting to boot anyway...
entry 0x403b61c0
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x15 (USB_UART_CHIP_RESET),boot:0xa (SPI_FAST_FLASH_BOOT)
Saved PC:0x403bccf4
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd0108,len:0x1710
load:0x403b6000,len:0x8c8
load:0x403ba000,len:0x2eb4
SHA-256 comparison failed:
Calculated: 1549cc352de9d9bcb10175fcd43380ff2e0209e9a6b10dd38e454bc060f04976
Expected: ab492d70a98095a7841c7bfbf1d6d0b6161e082227abfb2028c51ce7cbe6144a
Attempting to boot anyway...
entry 0x403b61c0

If you run this with espflash monitor --elf <your-elf-file> we'll get a decoded stacktrace on the esp32s3 so we'll see where exactly it is crashing. Though the previous errors before the crash:
I (1038) sdspi_transaction: cmd=52, R1 response: command not supported
I (1086) sdspi_transaction: cmd=5, R1 response: command not supported

... might mean things are already messed up. Do you get these two on the esp32 with SPI as well?
BTW: You ONLY try to do SD-SPI? Right?

Hello,

BTW: You ONLY try to do SD-SPI? Right?

Yes. Only SD-SPI so far.
I ran with the espflash monitor command, and got this:
I (1043) gpio: GPIO[10]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (1052) sdspi_transaction: cmd=52, R1 response: command not supported
I (1100) sdspi_transaction: cmd=5, R1 response: command not supported
Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x00000000  PS      : 0x00060f30  A0      : 0x82042409  A1      : 0x3fc9a760
0x00000000 - KEXC_pc
    at ??:??
0x00060f30 - UserFrameTotalSize
    at ??:??
0x82042409 - _rtc_reserved_end
    at ??:??
0x3fc9a760 - _heap_low_start
    at ??:??
A2      : 0x3fc9c98c  A3      : 0x3fc9ca1c  A4      : 0x0000012b  A5      : 0x3fc9a768
0x3fc9c98c - _heap_low_start
    at ??:??
0x3fc9ca1c - _heap_low_start
    at ??:??
0x0000012b - UserFrameTotalSize
    at ??:??
0x3fc9a768 - _heap_low_start
    at ??:??
A6      : 0x3fc9a794  A7      : 0x00000008  A8      : 0x82043110  A9      : 0x3fc9a740
0x3fc9a794 - _heap_low_start
    at ??:??
0x00000008 - UEXC_sar
    at ??:??
0x82043110 - _rtc_reserved_end
    at ??:??
0x3fc9a740 - _heap_low_start
    at ??:??
A10     : 0x00000001  A11     : 0x3fc9a794  A12     : 0x00000028  A13     : 0x3fc9b5a0
0x00000001 - UEXC_pc
    at ??:??
0x3fc9a794 - _heap_low_start
    at ??:??
0x00000028 - UEXC_lbeg
    at ??:??
0x3fc9b5a0 - _heap_low_start
    at ??:??
A14     : 0x5b590001  A15     : 0x00000009  SAR     : 0x00000000  EXCCAUSE: 0x00000014
0x5b590001 - _rtc_data_end
    at ??:??
0x00000009 - KEXC_areg
    at ??:??
0x00000000 - KEXC_pc
    at ??:??
0x00000014 - UEXC_a3
    at ??:??
EXCVADDR: 0x00000000  LBEG    : 0x40056f5c  LEND    : 0x40056f72  LCOUNT  : 0x00000000
0x00000000 - KEXC_pc
    at ??:??
0x40056f5c - rom_rx_gain_force
    at ??:??
0x40056f72 - rom_rx_gain_force
    at ??:??
0x00000000 - KEXC_pc
    at ??:??

Backtrace: 0xfffffffd:0x3fc9a760 0x42042406:0x3fc9a7d0 0x42041890:0x3fc9a800 0x42005d58:0x3fc9a830 0x42005072:0x3fc9a960 0x4205e023:0x3fc9ae50 0x42005868:0x3fc9ae70 0x4201863c:0x3fc9ae90 0x42018664:0x3fc9aec0 0x42018079:0x3fc9aef0 0x42005858:0x3fc9af20 0x4200583b:0x3fc9af50 0x42008917:0x3fc9af70 0x42060407:0x3fc9af90
0xfffffffd - _rtc_reserved_end
    at ??:??
0x3fc9a760 - _heap_low_start
    at ??:??
0x42042406 - sdmmc_init_sd_scr
    at /home/esp/esps3_sd_spi/.embuild/espressif/esp-idf/master/components/sdmmc/sdmmc_sd.c:71
0x3fc9a7d0 - _heap_low_start
    at ??:??
0x42041890 - sdmmc_card_init
    at /home/esp/esps3_sd_spi/.embuild/espressif/esp-idf/master/components/sdmmc/sdmmc_init.c:122
0x3fc9a800 - _heap_low_start
    at ??:??
0x42005d58 - esp_idf_hal::sd::sdcard::SdCardDriver<esp_idf_hal::sd::spi::SdSpiHostDriver<T>>::new_spi
    at /home/esp/.cargo/git/checkouts/esp-idf-hal-923d08f725716f5e/72f6448/src/sd.rs:230
0x3fc9a830 - _heap_low_start
    at ??:??
0x42005072 - esps3_sd_spi::main
    at /home/esp/esps3_sd_spi/src/main.rs:64
0x3fc9a960 - _heap_low_start
    at ??:??
0x4205e023 - core::ops::function::FnOnce::call_once
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/core/src/ops/function.rs:250
0x3fc9ae50 - _heap_low_start
    at ??:??
0x42005868 - std::rt::lang_start::{{closure}}
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/std/src/rt.rs:159
0x3fc9ae70 - _heap_low_start
    at ??:??
0x4201863c - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/core/src/ops/function.rs:284
0x3fc9ae90 - _heap_low_start
    at ??:??
0x42018664 - std::panic::catch_unwind
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/std/src/panic.rs:149
0x3fc9aec0 - _heap_low_start
    at ??:??
0x42018079 - std::panic::catch_unwind
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/std/src/panic.rs:149
0x3fc9aef0 - _heap_low_start
    at ??:??
0x42005858 - std::rt::lang_start
    at /home/esp/.rustup/toolchains/esp/lib/rustlib/src/rust/library/std/src/rt.rs:158
0x3fc9af20 - _heap_low_start
    at ??:??
0x4200583b - main
    at ??:??
0x3fc9af50 - _heap_low_start
    at ??:??
0x42008917 - app_main
    at /home/esp/.cargo/registry/src/index.crates.io-6f17d22bba15001f/esp-idf-sys-0.35.0/src/start.rs:46
0x3fc9af70 - _heap_low_start
    at ??:??
0x42060407 - main_task
    at /home/esp/esps3_sd_spi/.embuild/espressif/esp-idf/master/components/freertos/app_startup.c:208
0x3fc9af90 - _heap_low_start
    at ??:??

ELF file SHA256: 000000000

Why are you using ESP IDF master? You should not be doing that as it is explicitly marked as UNSTABLE.
Please use a released ESP IDF (v5.1, v5.2 or v5.3 or just whatever the template generates by default!).
If you could do that and then grab the stacktrace again and paste here.

My fellow programmer. Why are you so snappy and quick to blame on your responses?
 Because it is a choice there in the template. If I should not use it, then, don't put the choice there. Also, I don't think that's the problem here.
I've been trying to keep it cool, but I didn't like the "pointing of fingers" on the "crates patch".
I think you should really rethink what you are doing here. If you don't like people pointing out problems with the code, don't take out your frustrations on them and try to focus solely on the problem at hand.
If you don't think the user is not doing enough of a job, do as I so, solve it yourself.
You need to stop assuming that this is my main concern. Mistakes and left over code from previous modifications and learning experiments will go through. I have plenty of experience to recognize that when a help request comes my way. Patience and cordiality are key to having quality and proper feedback.
If you don't want people to choose unstable, don't put it there.
I think I'm done with you.
Again, you guys are doing a terrific job and I wish you all the luck in the world.
I wouldn't worry too much about my errors. As you pointed out time and again, I probably messed up again, so your code is likely solid.
I'm closing the issue.
Thank you again for the patience.

 Because it is a choice there in the template. If I should not use it, then, don't put the choice there.

I never said this is the root cause - or else why am I asking that you grab another stack trace with a stable/released ESP IDF?
However, putting one unstable thing (esp-idf-hal-master with the experimental flag) on top of another unstable thing (ESP IDF master) means even more variables to an already complex equation. Hence why my request to simplify your setup.

Because it is a choice there in the template. If I should not use it, then, don't put the choice there.

There is a reason why it is marked with "UNSTABLE" (all upper-case if I remember correctly) and - in the "advanced" settings - this is to signal folks who are new to the echo-system that "there are dragons", so they should not go there unless they know really well what they are doing (and try not to get offense with this in particular again - everybody was a rookie at some point, including me and I still am - in a lot of things.)

Also, I don't think that's the problem here. I've been trying to keep it cool, but I didn't like the "pointing of fingers" on the "crates patch". I think you should really rethink what you are doing here. If you don't like people pointing out problems with the code, don't take out your frustrations on them and try to focus solely on the problem at hand.

What finger-pointing? Either you are doing it correctly, or you are doing it wrongly. Shall I just stay silent when it is just wrong and is - again - another variable in the equation we are trying to solve? Also, you explicitly asked for a detailed explanation w.r.t. how [patch.crates-io] works. In retrospective, I should have probably just pasted a link to the Cargo Book...
=====
With that said:
If I sound harsh sometimes - I do apologize!

I don't mean to, but it is indeed a bit my character in that in the lack of regular verbal communication I have found I do sound a bit aggressive indeed! Hence the apology.

But also - and unfortunately - it is a bit of being between a rock and a hard place in my situation in that if I'm massaging my messages too much (and not using e.g. bold and italic and a bit more direct language), folks often seem not to pay attention to the detail, and then I have to repeat and repeat :(

Thank you. And I apologize if I caused any inconvenience for you. But it is my personal preference to simply step away from these misunderstanding and small possible conflicts. Cutting it by the root is the best option, before I get emotionally involved. It's a me thing.
I just want to emphasize that this is not about you. Like I said, you are doing a great job. Much better than what I could have done, honestly. So kudos on it.


feat(ar_tag_based_localizer): add ekf_pose subscriber

Description
Add code to subscribe to ekf_pose, and the Pose produced by AR tag-based localizer is compared to Ekf's latest Pose.
The Pose produced by AR tag-based self-location estimation will be published only when the following conditions are met.

The time difference should be within 5 seconds.
The position difference must be within 10m

This difference threshold can be changed with a parameter.
Tests performed
The following have been tested

The AR tag-based localizer works correctly with logging_simulator.
In the ar_tag_based_localizer sample AWSIM data, a False Positive for ID 32 appears at the end of the run, but it is properly ignored even if it is registered in an odd location on the map.
The default Autoware without pose_source:=artag also works correctly (logging_simulator).

Effects on system behavior
AR tag-based localizer nodes used to publish pose with all detected tags, but now only those within a specified range are published.
Other nodes remain unchanged.
Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.

After all checkboxes are checked, anyone who has write access can merge the PR.

Hi! Thanks for creating PR.
I registered marker32 (the marker that is falsely detected in the sample rosbag) on the map and tested this PR.
Then I received a message as shown in the figure below. , so I think this PR is working as intended.

@Motsu-san
Added comment on how to determine the value.
https://github.com/autowarefoundation/autoware.universe/pull/4946/commits/8f1264a5f035a04f4feae96fd887427b8670b4fc


Cache@2 does not cache if the job is succeededWithIssues

I've been testing out the Entering this information will route you directly to the right team and expedite traction.
Question, Bug, or Feature?
Type: bug (or feature?)
Enter Task Name: Cache@2
list here (V# not needed):
https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks
Environment

Server - Azure Pipelines

Agent - Hosted or Private:
Private Agent, CentOS with agent v 2.173.0

Issue Description
When trying to cache a job step with the Cache@2 task, the cache is not saved if the pipeline's status succedeedWithIssues.
Is this intended? Would it be possible to add a flag to choose what to do whenever the job is succedeedWithIssues or failed?
Task logs
2020-09-11T11:45:18.4324958Z ##[debug]Evaluating: AlwaysNode()
2020-09-11T11:45:18.4325541Z ##[debug]Evaluating AlwaysNode:
2020-09-11T11:45:18.4327740Z ##[debug]=> True
2020-09-11T11:45:18.4328536Z ##[debug]Result: True
2020-09-11T11:45:18.4329251Z ##[section]Starting: Cache pip
2020-09-11T11:45:18.4335671Z ==============================================================================
2020-09-11T11:45:18.4336313Z Task         : Cache
2020-09-11T11:45:18.4336530Z Description  : Cache files between runs
2020-09-11T11:45:18.4336747Z Version      : 2.0.1
2020-09-11T11:45:18.4337138Z Author       : Microsoft Corporation
2020-09-11T11:45:18.4337442Z Help         : https://aka.ms/pipeline-caching-docs
2020-09-11T11:45:18.4337781Z ==============================================================================
2020-09-11T11:45:18.8200490Z ##[debug]Skipping because the job status was not 'Succeeded'.
2020-09-11T11:45:18.8242203Z ##[section]Finishing: Cache poetry pip

Hi!
I'm having the same problem. We use Cypress.io for our E2E test and becaus the npm package takes 10 - 15min to install i wanted to cache all packages.
When there is one of the E2E tests failing during the test run, the npm packages are not cached, which is kind of a problem if there is a failing test during your first run.
Should a open a new issue?

Please do


auto import error

Version: 1.38.1
Commit: b37e54c98e1a74ba89e03073e5a3761284e3ffb0
Date: 2019-09-11T13:31:32.854Z
Electron: 4.2.10
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Darwin x64 18.6.0
Steps to Reproduce:

open your react project
yarn add lodash
create a js file
type import isEmp then select the auto complete
you will get this import {isEmpty} from 'lodash/isEmpty'

this is wrong
It should be import isEmpty from 'lodash/isEmpty'
Does this issue occur when all extensions are disabled?: Yes

Are you sure you don't have any extensions enabled? Our built-in js/ts intellisense does not provide suggestions after you type import isEmp

Nope
Craig

From: Matt Bierner<EMAIL_ADDRESS>Sent: Saturday, September 14, 2019 11:28 PM
To: microsoft/vscode
Cc: craigcosmo; Author
Subject: Re: [microsoft/vscode] auto import error (#80886)
Are you sure you don't have any extensions enabled? Our built-in js/ts intellisense does not provide suggestions after you type import isEmp
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/microsoft/vscode/issues/80886?email_source=notifications&email_token=AAEDQIOZ3BBLOEPDBSGN4SDQJUGK5A5CNFSM4IWSRHV2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6W7CZI#issuecomment-531493221, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAEDQIO6XSDFYETD2KARUMLQJUGK5ANCNFSM4IWSRHVQ.

I don't understand the actions you are taking to trigger this issue. Please share a screen recording or screenshots along with the key presses

Closing this as our builtin extensions do not provide the intellisense in the way described. This must be coming from an extension


Handle UserDict in all utils

Currently, all the reclusive utility functions defined in the utils module handle nested lists and dictionaries of a base type (usually tensors) but not UserDict, which is not considered an instance of dict.
This cause problems with the BatchEncoding type in Transformers (which is a UserDict so is not considered a subclass of dict) as pointed out by #178. This PR addresses that issue.
Fixes #178

@sgugger @LysandreJik Instead of adding UserDict to the isinstance class tuple, you can use collections.abc.Mapping to cover both the dict and the UserDict types (e.g. PyTorch DataLoader uses such check in its default collate_fn to stack dict-like objects).

Oh thanks for the tip! I will clean the code to use that when I have a bit of time (unless you want to suggest a PR!)

I'm busy currently, so probably won't find time to fix this myself.

I did find time to fix this, so I've opened a PR.


Update npm packages

general housekeeping.

Pull requests:

https://github.com/Senzing/entity-search-web-app/pull/23


Enable detection of Lucee server as Railo

@Jimcumming just noticed your pull request! anyway, we've just added Lucee support for this plugin, and made some other minor tweaks. thanks!


CRITICAL Vulnerabilities  CVE-2022-41903 found in docker image

More details here: https://security.snyk.io/vuln/SNYK-DEBIAN10-GIT-3232719

Looking at https://security-tracker.debian.org/tracker/CVE-2022-41903, this was fixed in git version 1:2.30.2-1+deb11u1, which is exactly what this image contains :sweat_smile:
$ docker run --rm --pull=always buildpack-deps:bullseye dpkg -l git
bullseye: Pulling from library/buildpack-deps
Digest: sha256:40b14eb195795a586ac132c9b506253bc3e4ee7f48a63b685e5bf37e80b774cf
Status: Image is up to date for buildpack-deps:bullseye
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version            Architecture Description
+++-==============-==================-============-===================================================
ii  git            1:2.30.2-1+deb11u1 amd64        fast, scalable, distributed revision control system

https://github.com/docker-library/faq#why-does-my-security-scanner-show-that-an-image-has-cves might also be interesting/useful :+1:


Remove some assumptions about the type of the attachment controller

Fixes some issues which prevent using a custom AttachmentManager:

Add getViewers to AttachmentManager so other manager implementations can provide viewers too
Make sure the manager is a controller (hasController) before casting

The cartattachment stuff is a bit confusing and some of it doesn't fully work with a proper api, but I guess thats just the way it is. I'll add it in to fix those issues when working outside tc's attachment manager.


XmlDocument.SelectSingleNode sets GetLastErrorText() even if the return value is used and no runtime error occurs

Describe the bug
I use XmlDocument.SelectSingleNode to select a XmlNode. I use the optional return value to check if the XmlNode was found.
If the node dosen't exists, no runtime error will be raised, but GetLastErrorText contains neverthless the Error Message.
To Reproduce
 check := XmlDoc.SelectSingleNode('//test', XmlTableNode);
Expected behavior
There is no runtime error, if the node is not found.
GetLastErrorText is empty.
I  expected, that if no runtime error will be raised, that also GetLastErrorText has no value.
5. Versions:

AL Language: 5.0.335750
Business Central: Version: DE Business Central 16.5 (Plattform 16.0.15884.15941 + Application 16.5.15953.0)

This is how most if not all error handling works in the server- the error is raised which sets the last error message, but then showing the error to the user is suppressed if the return value is used (the error is "trapped").
See also documentation: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/developer/methods-auto/system/system-getlasterrortext-method
If you call the Codeunit.RUN method to run a codeunit and an error occurs in the codeunit, then the error is displayed. However, if you also use the return value of the Codeunit.RUN method, then the error is not displayed. In this case, you can use the GETLASTERRORTEXT method to determine whether an error has occurred and to see the text of the last error message that was generated.

@jensmpmsft
Is there any way to check if the GetLastErrorText is from a trapped error or a real error?

BC 24.2, SaaS, AL Language extension v13.1.1065068
I am using the same function SelectSingleNode like this:
Exists := XmlNode.SelectSingleNode(NodeName, XmlNode2);
I am getting a MESSAGE shown in Web Client if then node could not be found. This is not documented, not expected and not desired. When the code is executed in a loop, we need to click away multiple messages. We are processing an xml file and it is expected, that some of the xml nodes may be missing.
Please remove the message or create an overloaded method with an additional parameter like "ShowMessage: Boolean".
When the code is executed in a background session, then it works as expected, the message is ignored, the "Exists" variable is filled correctly. But we need also to execute the code in a user session with UI.