go/adbc/driver/snowflake+flightsql: Memory access violation when both are used in Python

What happened?
When using both the snowflake driver and the flightsql driver in the same python program, the process crashes with a segmentation violation. Using one of these drivers at the same time as the postgres driver does not cause a crash, which makes it seem like there might be an issue in the common Go memory management of the snowflake and flightsql drivers.
How can we reproduce the bug?
Minimal Reproduction:
import adbc_driver_flightsql.dbapi
import adbc_driver_snowflake.dbapi

adbc_driver_flightsql.dbapi.connect("grpc+tcp://localhost:8080")
adbc_driver_snowflake.dbapi.connect()

Result:
[signal SIGSEGV: segmentation violation code=0x1 addr=0x14 pc=0x1636e3c9d]

goroutine 1 [running, locked to thread]:
runtime.throw({0x165155d38?, 0x1c0000061a0?})
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/panic.go:1077 +0x5c fp=0x1c000731e88 sp=0x1c000731e58 pc=0x163713c5c
runtime.sigpanic()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/signal_unix.go:845 +0x3e9 fp=0x1c000731ee8 sp=0x1c000731e88 pc=0x163729fe9
runtime.(*waitq).dequeue(...)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/chan.go:781
runtime.closechan(0x1c000182000)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/chan.go:380 +0x17d fp=0x1c000731f40 sp=0x1c000731ee8 pc=0x1636e3c9d
runtime.main()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:256 +0x28f fp=0x1c000731fe0 sp=0x1c000731f40 pc=0x16371664f
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000731fe8 sp=0x1c000731fe0 pc=0x1637468c1

goroutine 2 [force gc (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000076fa8 sp=0x1c000076f88 pc=0x163716ace
runtime.goparkunlock(...)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:404
runtime.forcegchelper()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:322 +0xb3 fp=0x1c000076fe0 sp=0x1c000076fa8 pc=0x163716953
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000076fe8 sp=0x1c000076fe0 pc=0x1637468c1
created by runtime.init.6 in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:310 +0x1a

goroutine 3 [GC sweep wait]:
runtime.gopark(0x1?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000077778 sp=0x1c000077758 pc=0x163716ace
runtime.goparkunlock(...)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:404
runtime.bgsweep(0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgcsweep.go:321 +0xdf fp=0x1c0000777c8 sp=0x1c000077778 pc=0x163702eff
runtime.gcenable.func1()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:200 +0x25 fp=0x1c0000777e0 sp=0x1c0000777c8 pc=0x1636f8025
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0000777e8 sp=0x1c0000777e0 pc=0x1637468c1
created by runtime.gcenable in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:200 +0x66

goroutine 4 [GC scavenge wait]:
runtime.gopark(0x1c00007e000?, 0x1653aa1b8?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000077f70 sp=0x1c000077f50 pc=0x163716ace
runtime.goparkunlock(...)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:404
runtime.(*scavengerState).park(0x16698b740)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgcscavenge.go:425 +0x49 fp=0x1c000077fa0 sp=0x1c000077f70 pc=0x163700749
runtime.bgscavenge(0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgcscavenge.go:658 +0x59 fp=0x1c000077fc8 sp=0x1c000077fa0 pc=0x163700cf9
runtime.gcenable.func2()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:201 +0x25 fp=0x1c000077fe0 sp=0x1c000077fc8 pc=0x1636f7fc5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000077fe8 sp=0x1c000077fe0 pc=0x1637468c1
created by runtime.gcenable in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:201 +0xa5

goroutine 18 [finalizer wait]:
runtime.gopark(0x198?, 0x1657b6dc0?, 0x1?, 0x7c?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000076620 sp=0x1c000076600 pc=0x163716ace
runtime.runfinq()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mfinal.go:193 +0x107 fp=0x1c0000767e0 sp=0x1c000076620 pc=0x1636f7047
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0000767e8 sp=0x1c0000767e0 pc=0x1637468c1
created by runtime.createfing in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mfinal.go:163 +0x3d

goroutine 19 [GC worker (idle)]:
runtime.gopark(0x0?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000072750 sp=0x1c000072730 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c0000727e0 sp=0x1c000072750 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0000727e8 sp=0x1c0000727e0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 20 [GC worker (idle)]:
runtime.gopark(0xaaf807b9a3a23?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000072f50 sp=0x1c000072f30 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c000072fe0 sp=0x1c000072f50 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000072fe8 sp=0x1c000072fe0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 34 [GC worker (idle)]:
runtime.gopark(0xaaf807b9a398a?, 0x3?, 0xde?, 0x37?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000508750 sp=0x1c000508730 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c0005087e0 sp=0x1c000508750 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0005087e8 sp=0x1c0005087e0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 21 [GC worker (idle)]:
runtime.gopark(0xaaf807b9a3a29?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000073750 sp=0x1c000073730 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c0000737e0 sp=0x1c000073750 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0000737e8 sp=0x1c0000737e0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 35 [GC worker (idle)]:
runtime.gopark(0x1669be420?, 0x3?, 0xd0?, 0xb5?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000508f50 sp=0x1c000508f30 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c000508fe0 sp=0x1c000508f50 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000508fe8 sp=0x1c000508fe0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 22 [GC worker (idle)]:
runtime.gopark(0xaaf807b9a36d1?, 0x3?, 0xf3?, 0xff?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000073f50 sp=0x1c000073f30 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c000073fe0 sp=0x1c000073f50 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c000073fe8 sp=0x1c000073fe0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 36 [GC worker (idle)]:
runtime.gopark(0xaaf807b99e23f?, 0x1?, 0x87?, 0xd4?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000509750 sp=0x1c000509730 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c0005097e0 sp=0x1c000509750 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0005097e8 sp=0x1c0005097e0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

goroutine 23 [GC worker (idle)]:
runtime.gopark(0xaaf807baf3078?, 0x0?, 0x0?, 0x0?, 0x0?)
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/proc.go:398 +0xce fp=0x1c000074750 sp=0x1c000074730 pc=0x163716ace
runtime.gcBgMarkWorker()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1295 +0xe5 fp=0x1c0000747e0 sp=0x1c000074750 pc=0x1636f9ba5
runtime.goexit()
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/asm_amd64.s:1650 +0x1 fp=0x1c0000747e8 sp=0x1c0000747e0 pc=0x1637468c1
created by runtime.gcBgMarkStartWorkers in goroutine 1
	/Users/runner/hostedtoolcache/go/1.21.8/x64/src/runtime/mgc.go:1219 +0x1c

Environment/Setup
Reproduces with:
adbc-driver-snowflake = { file = "/path/to/adbc_driver_snowflake-1.0.0-py3-none-macosx_10_15_x86_64.whl" }
adbc-driver-flightsql = { file = "/path/to/adbc_driver_flightsql-1.0.0-py3-none-macosx_10_15_x86_64.whl" }

and:
adbc-driver-snowflake = "^0.11.0"
adbc-driver-flightsql = "^0.11.0"

Does NOT reproduce with:
adbc-driver-snowflake = "^0.10.0"
adbc-driver-flightsql = "^0.10.0"

However, as I've tried pushing against various edge cases I have been able to get some segmentation violations with 0.10.0 too, but haven't yet isolated the specific behavior that causes it in that version.

Wow, that's really odd. My first thought to ask here is whether or not this reproduces on a non-Mac platform or if this is specific to MacOS?

I don't get this (macOS aarch64) when building from main.
>>> import adbc_driver_flightsql.dbapi
>>> import adbc_driver_snowflake.dbapi
>>>
>>> adbc_driver_flightsql.dbapi.connect("grpc+tcp://localhost:8080")
/Users/lidavidm/Code/arrow-adbc/python/adbc_driver_manager/adbc_driver_manager/dbapi.py:307: Warning: Cannot disable autocommit; conn will not be DB-API 2.0 compliant
  warnings.warn(
<adbc_driver_manager.dbapi.Connection object at 0x13cb4cb50>
>>> adbc_driver_snowflake.dbapi.connect()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/lidavidm/Code/arrow-adbc/python/adbc_driver_snowflake/adbc_driver_snowflake/dbapi.py", line 120, in connect
    conn = adbc_driver_manager.AdbcConnection(db, **(conn_kwargs or {}))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "adbc_driver_manager/_lib.pyx", line 681, in adbc_driver_manager._lib.AdbcConnection.__init__
  File "adbc_driver_manager/_lib.pyx", line 237, in adbc_driver_manager._lib.check_error
adbc_driver_manager.OperationalError: IO: 260000: account is empty

It also doesn't reproduce with the 0.11.0 wheels so this appears to be a macOS x64 issue, which is going to be difficult to debug as I only have an aarch64 machine.
Are you able to reproduce it on any other platforms?

ok, looks like it does happen under rosetta

However, debugging under rosetta is not working great as lldb appears to get stuck/execution appears to be extremely slow.

Actually under lldb the process just hangs forever, even if we only import/use a single driver. So that won't help.

@zeroshade is there a problem perhaps with having two copies of the go runtime in one process?

I do also see that there are public symbols in the driver from cgo et al

https://github.com/golang/go/issues/65050

I think we're between a rock and a hard place here.

C/C++ is not suitable for the Flight SQL driver because of libarrow/Protobuf/gRPC.
C/C++ is not suitable for the Snowflake driver given gosnowflake is much better supported.
Rust/C# are not quite there yet. (Also @CurtHagenlocher, would .NET have the same issues as Go above with multiple shared libraries and hence multiple runtimes in one process?)

I think the interim solution would be to build a "combined" driver that has both drivers in one library.
I'm hesitant to hold up the release though since this has been a latent issue for a while.
CC @zeroshade @kou @paleolimbot for opinions on the last part too.

@cocoa-xu this will also affect BigQuery...it seems both C++ and Go have packaging issues here...

FWIW, the issue above also seems to indicate it can only be reproduced on amd64 macOS.

Since this is a latent issue for quite some time, and at least up to this point it appears that our consumers don't yet tend to have multiple drivers in one process (or if they do, it's not on macos and isn't exhibiting the issue) I'm okay with this not being a release blocker. We're going to have to figure something out, but I think it's fine to release without a fix for this. Maybe we just add something to the documentation to point out the problem for now and note that we're working on it?

@paleolimbot depending on how R loads the module and it's dependencies, it might not be an issue with the static libs. If you load a bunch of static lib libraries, depending on how they are built, you might be able to only pull in one copy of the Go runtime. Potentially

I agree with moving forward with the release. Would it make sense to delay the 1.0.0 release until this is resolved, and instead release as 0.12.0?

@joellubi I don't think it's necessary to delay the 1.0.0 release of the couple of drivers we're doing so for. Since the issue is currently effectively limited to just amd64 Macos and in the most common use cases, users are more likely to be switching between drivers rather than using multiple drivers at the same time. With the doc update saying it's a known issue, I'm fine with moving forward as is.

I wonder, are you able to get a backtrace from lldb? Under rosetta it appears the Go runtime fails to initialize entirely (it appears to get stuck holding a lock) so I wasn't able to do so from an M1 machine.

@cocoa-xu this will also affect BigQuery...it seems both C++ and Go have packaging issues here...

It appears to be so...
I have an x86_64 macOS so please let me know if there're anything I can help @lidavidm

@cocoa-xu this will also affect BigQuery...it seems both C++ and Go have packaging issues here...

 I wonder if this is somehow getting shared between the runtimes on this platform?

would .NET have the same issues as Go above with multiple shared libraries and hence multiple runtimes in one process?

No, but see https://github.com/dotnet/runtime/discussions/102048

I guess it's back to Rust, then ;).

Not quite sure if this is related, but it seems that we don't have an official port of gRPC for Rust yet: https://github.com/grpc/grpc/issues/9316
There're some open source gRPC wrappers used in production, but I'm not sure if they can be loaded from different shared libraries without issues like this, or the similar issue with C++.

we don't have an official port of gRPC for Rust yet

Wow, I definitely didn't expect that. It looks like Tonic is fairly widely used, though. Apparently, there's no shortage of reasons for why it's so hard to move away from C as an implementation language.
As a thought experiment, let's say that we wanted to implement a bunch of drivers in some (uniform) non-C language and then consume them via the C API from Python.
For Go, the implication is that all the Go drivers would need to be bundled into a single cgo-based dynamic library in order to ensure no conflicts between them. It also implies that there could be problems trying to load any non-ADBC extension which also happened to be implemented in Go.
For C# with AOT compilation, there wouldn't be direct conflicts between the individual drivers, but there would be an increasingly heavy burden in terms of thread and address space consumption. The larger problem would be that a lot of existing code doesn't work with AOT compilation. This seems to cover a good chunk of what's needed to connect to BigQuery. The resource consumption issue could also be resolved by bundling all the drivers together into a single dynamic library.
For Java and for C# without AOT compilation, it would require the user to have the corresponding runtime installed on their machine. All the drivers implemented in those languages could then be dynamically loaded into that runtime and would share a single set of runtime features like the garbage collector. They could then also share dependencies for an overall smaller footprint -- but of course this has the corresponding drawback that isolation between dependencies is more difficult. There would also need to be a way to dynamically register with a shared ADBC driver manager in-memory, because in this scenario there wouldn't be native entry points available for the drivers.
Feel free to add your favorite language to the list... .

One other nuclear option is to spawn a sacrificial process for each driver that loads the driver and communicates with the main process over some sort of IPC/shared memory, which at least for the data parts should be relatively OK as Arrow's shared memory support shapes up

There would also need to be a way to dynamically register with a shared ADBC driver manager in-memory, because in this scenario there wouldn't be native entry points available for the drivers.

FWIW, C# without AOT compilation could use something like DNNE to create the native entrypoints. DNNE allows building native libraries with proper exports. Behind the scenes, the native library uses the .NET runtime hosting APIs to activate the runtime and call into managed code.

EDIT: if you follow the links from that reply, you get a pretty sobering picture about the viability of loading multiple mid-to-heavy weight runtimes into the same process. I guess it's back to Rust, then ;).

As a sidenote, these problems are not unique to mid-to-heavy weight runtimes. Any time one loads a dynamic library with a different memory allocator, these problems can show up. They only don't show up if everyone agrees on using malloc/free from the same C runtime library. As soon as libraries start being fancy and each brings their own tcmalloc/jemalloc/whatever (and they often are), you now have multiple heaps with their own heuristics for expanding/giving memory back to the OS. (E.g. I don't know how Rust manages memory, but it's very likely each Rust DLL would have its own heap as well).

I've been doing some research into this and came across the following library: gopy. It's meant to generate and compile CGO and CPython extensions from a Go package. What's specifically interesting about it is the unique-handler approach it uses to avoid passing Go pointers directly to C. There's a brief description in the README and the actual handler implementation is in handler.go.
I'm still wrapping my head around what a specific implementation would look like, but I wonder if we could adopt a similar approach to isolate pointers within their respective Go runtimes. The actual memory we do want to share (arrays) should be allocated in C anyway via the CGO Mallocator, and with an approach like this all Go pointers are only accessed within the Go runtime via stub methods that delegate the actions to be done.
It's not super obvious how it does all this just by looking at the source code, but if you look at the code generated by running the "command line example" in the readme it makes the mechanism clearer.

I'll definitely try to take a look at that sometime this week. It's an interesting idea, I'm just not sure whether or not it'll solve our problem here. If I look closely at our existing implementation, we do utilize cgo.Handler to avoid passing Go pointers directly to C. So unless I'm missing something, i'm pretty sure we're already doing this isolation (which may be why we're not seeing issues on other platforms, only on macos?)

(E.g. I don't know how Rust manages memory, but it's very likely each Rust DLL would have its own heap as well).

When you're building a DLL, the allocator in Rust defaults to using malloc on Unix platforms and HeapAlloc on Windows.

FYI: I'd like to use DuckDB and Postgres ADBC drivers in Go. Not sure its connected but on testing I get a SIGSEV also on reading from a query result. So +1 from me if this can be supported.

If you're trying to use the drivers from Go, then it's unlikely to be related to this issue. Can you file a new issue for that SIGSEV?

Just to keep everyone apprised here, I'm gonna try posting in the #cgo and #darkarts channels on the Gopher slack to see if anyone might know of a workaround or other way to avoid this crash. Even though it is still not optimal to end up with multiple copies of the Go runtime in a single process, it would still be good to at least get it to not crash.

@zeroshade was there any feedback from those channels?

Nothing useful unfortunately, just one reply that reiterated the fact that it's technically undefined behavior etc.


[WIP] Basic automated uninstallation test

Closing since it hasn't had movement in a long time, branch still exists if we want to come back. There is https://dcosjira.atlassian.net/browse/DCOS-250 to track building an uninstall that actually works for DC/OS.  Part of that includes actually testing it.


Issue/29854

Details

Show proper request amount in confirmation page after adding a Receipt
Fixed Issues
$ https://github.com/Expensify/App/issues/29854
PROPOSAL: https://github.com/Expensify/App/issues/29854#issuecomment-1768348179
Tests

Go to any chat.
Click   + icon and select Request money > Manual.
Enter amount and proceed to confirmation page.
Click 3-dot menu > Add receipt.
Select a receipt.

[x] Verify if the button have a proper request sentence with correct amount.

Offline tests
QA Steps

Go to any chat.
Click   + icon and select Request money > Manual.
Enter amount and proceed to confirmation page.
Click 3-dot menu > Add receipt.
Select a receipt.

[x] Verify if the button have a proper request sentence with correct amount.

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native
https://github.com/Expensify/App/assets/13826499/ac11b2ab-73d4-4232-a691-8dd32b92efc2

Android: mWeb Chrome

Uploading Video_2023-10-25_192228-android-chrome_20231025194039.mp4…

iOS: Native

https://github.com/Expensify/App/assets/13826499/5f681a2c-0900-4a8b-80fd-30d182665bb6

iOS: mWeb Safari

https://github.com/Expensify/App/assets/13826499/0422bedb-dcc9-44d8-8a7e-efa6c678a563

MacOS: Chrome / Safari
https://github.com/Expensify/App/assets/13826499/f5fab1e6-467b-41e1-a1d3-449a3135a006

MacOS: Desktop
https://github.com/Expensify/App/assets/13826499/38ea34f2-10b6-47cc-aa1a-06f77564656d

I have read the CLA Document and I hereby sign the CLA

@cooldev900 Please sign all commits,
for reference 👉 https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits
https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits


Add MAP_ALIGNED_SUPER on FreeBSD

introducing MAP_ALIGNED macro and MAP_ALIGNED_SUPER.

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @m-ou-se (or someone else) soon.
If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.
Please see the contribution instructions for more information.

@bors r+

:pushpin: Commit<PHONE_NUMBER>a6a4f1787a3f1c4ebb7406cad52f28 has been approved by JohnTitor

:hourglass: Testing commit<PHONE_NUMBER>a6a4f1787a3f1c4ebb7406cad52f28 with merge 7cc1cf300a234507a4856c2c60053de0f3ab858f...

:sunny: Test successful - checks-actions, checks-cirrus-freebsd-11, checks-cirrus-freebsd-12, checks-cirrus-freebsd-13
Approved by: JohnTitor
Pushing 7cc1cf300a234507a4856c2c60053de0f3ab858f to master...


Update gaze-in-directx.md

Bulleted list formatting.

Docs Build status updates of commit 7ede003:
:warning: Validation status: warnings

File
Status
Preview URL
Details

mixed-reality-docs/gaze-in-directx.md
:warning:Warning
View
Details

mixed-reality-docs/gaze-in-directx.md

Line 171: [Warning] Cannot find bookmark '#fallback-solutions-when-eye-tracking-is-not-available' in 'eye-tracking.md'
Line 182: [Warning] Cannot find bookmark '#fallback-solutions-when-eye-tracking-is-not-available' in 'eye-tracking.md'

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


安装ComfyUI-BrushNet后前部节点都没了

这次更新这个插件后, comfyui的全部节点都不能用了.删掉这个插件就正常了.也没有看到报错信息.10几天前这个插件还是正常的,昨天更新后就出现了这个情况. custom_nodes下删掉重新安装也没有用

comfyui(安装前).log
comfyui(安装后).log

same problem

So, did I understand correctly that when you install ComfyUI-BrushNet, ComfyUI loses all installed nodes? Without any errors? This is weird. I am not sure how this is possible, but we can try this: you can revert back to any previous version of BrushNet and see is it work. Here you can see all commit history. At the right side there is a hex number of commit. To go back in time you open a cmd in custom_nodes/ComfyUI-BrushNet folder and execute, for example, git checkout 3715546. This will move ComfyUI-BrushNet to version before image batch implementation.
Please, post you results.

So, did I understand correctly that when you install ComfyUI-BrushNet, ComfyUI loses all installed nodes? Without any errors? This is weird. I am not sure how this is possible, but we can try this: you can revert back to any previous version of BrushNet and see is it work. Here you can see all commit history. At the right side there is a hex number of commit. To go back in time you open a cmd in custom_nodes/ComfyUI-BrushNet folder and execute, for example, git checkout 3715546. This will move ComfyUI-BrushNet to version before image batch implementation.
Please, post you results.

i find reason,
my extral_model_paths.yaml :   inpant: /path/to/inpaint/
with an extra / symbol at the path end
and the function get_files_with_extension stuck at the while loop,
when i change to inpant: /path/to/inpaint, everthing goes well
so, i think it's bug~

Thank you very much! I just did a quick fix.

谢谢!现在重新安装正常了.


Bugfix/14 start date bug

@dmitri-carpov :+1: conditional to addressing open checkboxes/tasks:

https://github.com/ypg-data/eigenflow/pull/20#commitcomment-15905464
https://github.com/ypg-data/eigenflow/pull/20#commitcomment-15892269 (see https://github.com/ypg-data/eigenflow/pull/20#commitcomment-15901068 for resolution)

Commits before squashing to track PR discussions:
https://github.com/dmitri-carpov/eigenflow/commit/3d2122a92b2e3eb613e38a0257327541db9c4320
https://github.com/dmitri-carpov/eigenflow/commit/c286a1b40305d4c546e463378239d5c86732f459
https://github.com/dmitri-carpov/eigenflow/commit/67da44ef6b720e10dcde524879733ed142a316bb
https://github.com/dmitri-carpov/eigenflow/commit/6f4f7280708344cb97ce21e6be9ae3081f284f12


Crash in ServerHTTP / webRTCHTTPServer

Which version are you using?
v1.2.1
Which operating system are you using?

[ ] Linux amd64 standard
[X] Linux amd64 Docker
[ ] Linux arm64 standard
[ ] Linux arm64 Docker
[ ] Linux arm7 standard
[ ] Linux arm7 Docker
[ ] Linux arm6 standard
[ ] Linux arm6 Docker
[ ] Windows amd64 standard
[ ] Windows amd64 Docker (WSL backend)
[ ] macOS amd64 standard
[ ] macOS amd64 Docker
[ ] Other (please describe)

Describe the issue
We run a system with 20+ webrtc streams, pulling video from RTSP cameras.  Streams are added through the HTTP API.
Describe how to replicate the issue
Create lots of WebRTC sessions, open and close them.
Did you attach the server logs?
YES
Did you attach a network dump?
NO
rtsp-crash.log

Hello, this is a duplicate of #2609, fixed with #2613, fixed since v1.3.0.


Not selecting default database

No reason to do SELECT 0 on each connection. Not sure if it should go to master or v1.0.

Any valid reason? I mean the SELECT command is sent to the server only when the database connection parameter is set explicitly by the user when configuring the client. Furthermore, there could be a valid reason to force SELECT 0 when the client is configured to use persistent connections.

Extra round trip for every connection sounds like a valid reason. We've seen developers setting 'database' => 0 as the default configuration key without knowing the consequences.
Can you show me the code when my change breaks? If it does, it probably worth adding the test for it.

I don't mean to sound rude to anyone, but if some developers fail to understand how certain configurations affect the behavior of the client the problem in my opinion is on user's end. In their defense, our actual issue is that this kind of nuances when configuring the client should be addressed in a more extensive set of docs but Predis is lacking documentation.
Anyway let's suppose that the client is configured to use persistent connections with a set of parameters like tcp://<IP_ADDRESS>?database=5&persistent=1. The client sends SELECT 5 as soon as it connects to Redis and the underlying socket resource is left open by PHP to be reused for the next request: by keeping the socket resource around and in effect connected to Redis means that Redis is also keeping that connection associated to database 5. If the configuration of the application is then changed to use a new set of parameters like tcp://<IP_ADDRESS>?database=0&persistent=1 (and no restart of PHP-FPM or alike is involved) some of the subsequent requests would still land on database 5 instead of 0 until the underlying socket is closed either by PHP or Redis, as there would be no explicit SELECT 0 sent by the client.
Testing such a condition that involves persistent connection is hard and I honestly don't know how to implement a test for it using PHPUnit, especially in a deterministic way.


sample robotics tasks?

Thanks for the impressive work.
I was wondering if the code for the sample robotics tasks shown in the YT video has been open-sourced in the repository.
Those tasks would be exciting to test for us, as we have a similar fleet of robots in our lab.

I will add a few more questions on the tasks as I find some points relevant with our research:

in the CLIP vs GPT-4 querying task, you mention how GPT-4 performs better but would add a constraint in the form of the Internet connection which kinda defies the scope of an embodied AI agent, unlike CLIP. The question is what would be the cost of running such an agent with GPT-4 on all the time, which is an even bigger impediment than Internet. In this sense, 1) have you tried other LLMs for the comparison besides GPT-4? Maybe smaller and cheaper GPT variants, or local open LLMs? 2) how often has the performance of CLIP been far worse than GPT-4? In the video, there are two examples, only one of which sees GPT-4 prevail. Is there a larger benchmark of the two?
in the traversibility puzzle which LLM have you adopted to solve the task? GPT-4, again? The video is in 1x speed, but is it showing the LLM decoding and planning as well as the Jackal robot mission execution, or just the mission execution after the planning has happened? If the former is the case, it's quite fast.

@DiTo97 thanks for your interest and questions.
We haven't released the robot-specific code, mainly because of all of the ros packages and other infrastructure we built that significantly increase the dependency list and codebase complexity.
That said, we're in principle happy to share as much of the robot navigation and traversability experiment code as possible (it'd be best to reach out to @sachaMorin via email to facilitate this)!
CLIP vs GPT-4
You are right -- the tradeoff really is that the CLIP-based system that is computationally efficient (very fast) but has limited abilities (e.g., cannot handle complex queries that don't directly address the object of interest), while the GPT-4 based system is much more capable, but assumes internet connectivity (and the inference times are between 10-30 seconds). It boils down to the kinds of tasks that you would like to do. A good first step could be to try out the CLIP-based system; and if that doesn't address your use-case, switch over to the GPT-4 based system.
The average cost per planning query for the GPT-4 based system is US $0.2 - 0.3 (back-of-the-envelope calculation based on the scene graph we built of the REAL lab).
We tried other language models (a number of open-source LLMs including Vicuna, Llama-2; and GPT-3.5 variants), but found them all lacking (in part due to a lot of nuance in our instructions as part of the system prompt). Claude-2 from Anthropic worked well (and has a much larger context length), but we did not have API access and therefore stuck to GPT-4.
We were constantly surprised by how performant our CLIP-based system is, so chances are that you will find it helpful for a number of demos already.
Traversability puzzle
We used GPT-4 in this too -- the exact prompt may be found in the appendix A.5. The video is only showing the mission execution after the planner has run.

Hi @krrish94,
Thank you for the prompt and super detailed response, which is not be taken for granted considering the repository is very new.
Surely, I will e-mail @sachaMorin. At our lab, we have a number of drones, delivery robots, quadrupedal robots (Spot), cobots, and rovers, and have been focusing on our VL navigation implementation building upon VL maps, with the add-on of multi-agente collaboration achieved through another LLM that acts as coordinator. I would gladly give your own take at the problem a try using 3D concept graphs.
In my own experience, I agree with most of your points regarding the other available LLMs. Thus far, only mosaic-7B by Mosaic ML has showed promising decoding results among the open models after a full week of benchmarking on our context and mission prompts.

Closing for now; feel free to reopen if anything


chrome failed to start: Opening in existing browser session

I am attempting to close out of several windows at once using the following:
func Stop() {
        // This WORKS, it loops through all the contexts inside catDrivers and closes them out
	for i := 0; i < len(catDrivers); i++ {
		chromedp.Cancel(catDrivers[i])
	}

        // This does NOT work, no crash, error is nil, and the window remains open
	chromedp.Cancel(purchaseDriver)
}

I have an array of contexts that I'm looping through and calling Cancel() on each one of them. This work perfectly and all the windows close out. However, I have a single window thats different from the rest and is logged into a profile. I'm not sure if that's relevent, but worth noting. The problem is that when I try to cancel this window (purchaseDriver), it does not close. If I log the errror it returns, its nil
I'm having trouble understanding why the ones in the array are closing but the one that's signed in isn't. They are being created the exact same way other than purchaseDriver using a profile. Any ideas?

It's most likely that purchaseDriver is not the context used to create the browser object. See
https://github.com/chromedp/chromedp/blob/d52f142d01c7ab3391991d23d957e5f9b774ee94/chromedp.go#L88-L97
Please reduce your application to provide a minimal reproducer so that we can understand the issue better.

var purchaseDriver context.Context
var catDrivers []context.Context

func CreateBrowsers() {
	//. Create category browsers
	catOpts := []chromedp.ExecAllocatorOption{
		chromedp.DisableGPU,
	}

	for i := 0; i < 3; i++ {
		ctx, _ := chromedp.NewExecAllocator(context.Background(), catOpts...)
		ctx, _ = chromedp.NewContext(ctx)
		catDrivers = append(catDrivers, ctx)  // <--- This is where I set the context variable array for catDrivers
	}

	//. Create browser with user profile
	appData, _ := os.UserCacheDir()

	opts := []chromedp.ExecAllocatorOption{
		chromedp.DisableGPU,
		chromedp.UserDataDir(appData + "/Google/Chrome/User Data"),
		chromedp.Flag("profile-directory", "Profile 2"),
	}

	ctx, _ := chromedp.NewExecAllocator(context.Background(), opts...)
	ctx, _ = chromedp.NewContext(ctx)

	purchaseDriver = ctx  // <--- This is where I set the context variable for the browser that isnt closing
	chromeDriver.Navigate(purchaseDriver, "data;")
}

This is how I am creating these browsers. It seems to me like I'm creating both of them identically. Do you see anything I might be doing wrong?

I can not see whether purchaseDriver is the one passed to chromedp.Run. But I can not find anything wrong so far.
Another thing to check is the beforeunload event. I'm not sure whether it will prevent Browser.close.

package main

import (
	"context"
	"os"
	"time"

	"github.com/chromedp/chromedp"
)

var purchaseDriver context.Context
var catDrivers []context.Context

func main() {
	CreateBrowsers()

	time.Sleep(5 * time.Second)

	CloseBrowsers()
}

func CloseBrowsers() {
	chromedp.Cancel(purchaseDriver)

	for i := 0; i < len(catDrivers); i++ {
		chromedp.Cancel(catDrivers[i])
	}
}

func CreateBrowsers() {
	//. Create category browsers
	catOpts := []chromedp.ExecAllocatorOption{
		chromedp.DisableGPU,
	}

	for i := 0; i < 3; i++ {
		ctx, _ := chromedp.NewExecAllocator(context.Background(), catOpts...)
		ctx, _ = chromedp.NewContext(ctx)
		catDrivers = append(catDrivers, ctx)
		chromedp.Run(catDrivers[i], chromedp.Navigate("data;"))
	}

	//. Create purchase browser
	appData, _ := os.UserCacheDir()

	opts := []chromedp.ExecAllocatorOption{
		chromedp.DisableGPU,
		chromedp.UserDataDir(appData + "/Google/Chrome/User Data"),
		chromedp.Flag("profile-directory", "Profile 2"),
	}

	ctx, _ := chromedp.NewExecAllocator(context.Background(), opts...)
	ctx, _ = chromedp.NewContext(ctx)

	purchaseDriver = ctx

	chromedp.Run(purchaseDriver, chromedp.Navigate("data;"))
}

Sorry this took a while, but this is a reproducable example. Might need to tweak it a little, but this should demonstrate the problem. Only thing youd need to do is create a dummy profile for testing. In this example I have it set to use "Profile 2", but you'll just need to change that to whichever your profile is. Please let me know if you have any problems

I just tried to run it without the profile signed in and it closed out. So it appears like using a profile is what prevents it from closing out.

Thanks for the reproducer!
Here is the reduced demo:
package main

import (
	"context"
	"log"

	"github.com/chromedp/chromedp"
)

func main() {
	opts := append(chromedp.DefaultExecAllocatorOptions[:],
		chromedp.Flag("headless", false),
		chromedp.UserDataDir("/tmp/chromedpdata"),
	)

	ctx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
	defer cancel()
	ctx, cancel = chromedp.NewContext(ctx)
	defer cancel()

	if err := chromedp.Run(ctx,
		chromedp.Navigate("data;"),
	); err != nil {
		log.Print(err)
	}

	if err := chromedp.Cancel(ctx); err != nil {
		log.Fatal(err)
	}
}

Steps to reproduce the issue:
$ google-chrome --user-data-dir=/tmp/chromedpdata --no-first-run
$ go run main.go
2022/09/05 11:23:32 chrome failed to start:
Opening in existing browser session.

The error message, chrome failed to start: Opening in existing browser session. explains what's wrong. If you want to connect to a running browser, please use chromedp.NewRemoteAllocator.
I'm not sure whether this is your case. If it's not, please provide a detailed step-by-step guide that I can follow. Thanks!

I do not want to connect to a running browser. I was under the impression that launching the browser the way I did would create a new browser and attach it to the purchaseDriver context. Is there a reason this doesn't seem to be the case? Why is it trying to start in an existing browser session?

Why is it trying to start in an existing browser session?

When a new browser instance is started with the same --user-data-dir as the one already running, it will start in the existing browser context. This is how Chrome is designed. You can observe this behavior by starting the browser from the command line directly (without chromedp at all):
google-chrome --user-data-dir=/tmp/chromedpdata --no-first-run

(Run this command in different terminal, and check the output).

So sorry for the late response to this. I ended up getting Covid and was recovering. All better now
This issue has been resolved. The problem that I was running into was that I use Chrome as my daily browser. I had 2 profiles, 1 that was intended for chromedp only, and another that was my personal profile. The problem is that Chrome seems to act like BOTH profiles are open, despite only actively using 1 of them. Even if you kill all Chrome processes or fresh boot, launch Chrome and never switch profiles, chromedp was still trying to attach itself to the open browser session.
My workaround for this was to move the profile I wanted to use for chromedp from my appdata folder in Windows and create a dedicated directory in the root directory of my go program for the chrome data / profile. Now I can use chrome normally without chromedp trying to attach to an exisiting session.
Very odd situation, but if you need me explain in more detail, I can. Thank you for your help, your answers helped me come to this conclusion.

I'm sorry to hear that! Take care of yourself.
You are right that you should use another user data directory. Thank you for the feedback!

level=error msg="chrome failed to start:\n\xd5\xfd춬F\xd3Оg\xd3[\xc6\xf7\xb9\xa4\xd7\xf7\xebA\xb6\xce\xd6\xd0\xe9_\x86\xa2\xa1\xa3\r\n"


proxy service didn't started

BUG REPORT

Please describe the issue you observed:
proxy didn't start.
java client can't send message.
shaded.io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: /<IP_ADDRESS>:8081
But dashboard run correctly. can search and send message

What did you do (The steps to reproduce)?

user start broker command
nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &

What is expected to see?

java client send and receive message

What did you see instead?
port 8081 didn't open
lsof -i  | grep 8081

Please tell us about your environment:
version rocketmq-all-5.0.0-bin-release
Other information (e.g. detailed explanation, logs, related issues, suggestions on how to fix, etc):

@jamescheng16
#5511
this bug has fixed and release the next version. You can build from the development branch's source code

@jamescheng16 #5511 this bug has fixed and release the next version. You can build from the development branch's source code

This issue may not has a connection with #5511 because this bug just occurs in develop branch and has not been released in 5.0.0.
@jamescheng16 Please provide logs like ~/logs/rmq-proxy/default.log for more information.

there is no ~/logs/rmq-proxy/ at path ~/logs

@jamescheng16 #5511 this bug has fixed and release the next version. You can build from the development branch's source code

It's not true because metrics aren't included in 5.0.0.

there is no ~/logs/rmq-proxy/ at path ~/logs


Calling async.run from base class constructor might not be a good design.

I know we discussed this briefly, but I'm wondering if it wouldn't be better for supervised actors to have some specific run method, similar to how finalisers are declared. If you think this is something useful to discuss, lets do so in this issue, otherwise lets close it and move on.

@ioquatix we're coming up on a year on this -- how do you currently feel about this? Should this go into the supervision revamp coming up?

Reopen if not solved in #511 or solved already.

Sorry, I didn't see your comments on this, there is so much noise that I wasn't reading all the email.
I believe this is still an issue. What is the work around?

Above:
supervisor = RubyDNS::RuleBasedServer.supervise(options, &block)
supervisor.actors.first.run

I don't mind that solution but I don't think it's ideal.
1/ It's cumbersome to write a lot and its a common enough pattern, such that having a specific way to have an actor "main" function might be a worthwhile abstraction.
2/ It's a bit of a pain for more complex things like supervisor groups and pools.
My gut feeling is telling me that we need a syntax like
class MyActor
    async_main :run
    def run
        ...
    end
end


TOC UID and OPF UID are set in different ways

Got this error today:
WARNING: EB_978-3-15-960333-9.epub/OEBPS/toc.ncx: meta@dtb:uid content
'urn:isbn:9783159603339 ' should conform to unique-identifier in content.opf:
'urn:isbn:9783159603339'

Note the whitespace at the end of meta@dtb:uid and the missing whitespace at the end of OPF UID.
This is ncx.xml:
<meta name="dtb:uid" content="urn:isbn:9783159603339 "/>

and this is content.opf:
<dc:identifier id="bookid" opf:scheme="ISBN">urn:isbn:9783159603339 </dc:identifier>

This is because the OPF UID is retreived with an additional trim() and the ncx UID isn't. Seems to be introduced by @tledoux in fcbb96d70e43225dc3eee12210ceb3b8e414bf8f when fixing issue #200
Thomas, did you add the trim() method on purpose and just forgot it to add in NCX handling?
I don't want to add or remove one or the other without your feedback ;-)

I had a fresh look. It doesn't seem the spec actually requires the NCX metadata to match the OPF's. The ID equality check was already removed (or not working) in the 4.0 branch.
In any case, I re-implemented the ID equality check, now also detecting trailing and leading whitespace, and report them as USAGE-level messages. Push pending.


Add Firebase NotificationDisplayer to Cookbook

Writing a component which will add a default rendering option for people when a notification message is received in the foreground. Design decisions were focused on matching Firebase's behavior when it renders them in the background.

This PR includes a merge of main that was pretty noisy. Feel free to hold off on reviewing this until I've cleaned up commit history.


Cmake fails to checkout dependency

Hi @suzizecat!
While trying to build the project, I came across the following error:
[ 11%] Performing download step (git clone) for 'uri-populate'
[ 11%] Creating directories for 'uri-populate'
[ 22%] Performing download step (git clone) for 'uri-populate'
Cloning into 'uri-src'...
fatal: invalid reference: 23690f8
CMake Error at uri-subbuild/uri-populate-prefix/tmp/uri-populate-gitclone.cmake:49 (message):
  Failed to checkout tag: '23690f8'

gmake[2]: *** [CMakeFiles/uri-populate.dir/build.make:102: uri-populate-prefix/src/uri-populate-stamp/uri-populate-download] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/uri-populate.dir/all] Error 2
gmake: *** [Makefile:91: all] Error 2

I am not an expert at Cmake, but with a bit of googling it might have to do something with this issue: https://gitlab.kitware.com/cmake/cmake/-/issues/23379
Temporarily changing the checkout tag to master seems to fix the issue

Hi @RickLuiken !
You are indeed right (and I am wondering how the CD process seemed to have worked...)
I would rather not use master as a qualifier (as this would change the reference if the author of URI pushes a commit...) but the solution is to set GIT_SHALLOW OFF.
I will update master once I get a bit more time to actively work on this.


DocsArchive-<IP_ADDRESS>Auto archive content

Please don't merge this PR until target archive repo PR https://github.com/OPS-E2E-PPE/docs-archive-test-target_2f5b27b6-29a2-4aa8-8fc3-e2b7774efe0c/pull/1 is merged into live branch.
Auto archive content to https://github.com/VSC-Service-Account/docs-archive-test-target_2f5b27b6-29a2-4aa8-8fc3-e2b7774efe0c.git

Docs Build status updates of commit 9bccb06:
:x: Validation status: errors
Please follow instructions here which may help to resolve issue.

File
Status
Preview URL
Details

:x:Error

Details

[Error-BackendEngineExceptionError] An exception occurred during the build process. Please check the raw log and retry building your content again. If the issue persists, please open a ticket in https://SiteHelp and include the URL of publishing report as well as below information: One or more errors occurred..

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching in the Docs contributor and Admin GuideSee the frequently asked questionsPost your question in the Docs support channel


Fix broken links in doc

Purpose
Fix broken links in doc

Can you please rebase on the master branch?
Thank you
Timon

Can u rebase and merge with the button in this PR ? I don't have my computer today =/


Update logo

I think it's a good idea to have a different visual identity to the official Feather project.
Here is a potential logo:

It is a combination of the GitHub octicons repository icon (to represent the "community" part of this project) and the feather icon (to stay true to our parent project).

Figma

I'll leave this up to you.

Let’s go with the second option as both icons are from our icon-set.
I’m thinking about leaving this open so if anyone else has a suggestion they can submit it 😄

I was working on an Icon, I thought this maybe fit nice as a Logo. It's in the style like the feather logo.
I was thinking maybe we can change the name as wel, I like the name featherity because idea behind it: Feather + community.
But I experienced that pronouncing the name is quite hard. I most of the times pronounce it  as "feather+ ty" or "feather+ai+ty.
Overall it's just an idea I want to share 😁.

Hmm @ericfennis, I like the ring of Clover 😁
And the icon is quite nice!

thanks, first I will add it as an icon!


Curses rendering broken / overflowing

Been using pulsemixer consistently, and everything has been fine. I opened it this morning and this is what I see:

I'm looking for a jumping off point in debugging / fixing this. Any ideas?

Changing BAR_ON to "." fixes the issue. I guess my terminal is not rendering a monopace square? Using termite.

The font I'm using is PragmataPro (which was working fine until recently). Tried changing it to Droid Sans Mono with the same results. Tried gnome-terminal with the same results too.

Seeing how changing BAR_ON from large square (2B1B, Unicode 5.1) fixes the issue there are 2 things I can think of:

len('⬛') returns something other than 1, but with Python 3 this should never be the case.
Something somewhere in your system has been updated/changed. This would also explain why pulsemixer was working fine a few days ago and why this bug is so tricky to reproduce.

In any case, this symbol has proved to be very troublesome. On some terminals/fonts it doesn't display correctly, on others it is simply missing or causing issues similar to this one.
Replacing it would be the way to go. ▮ (25AE) should look close enough and be more reliable as it was introduced in one of the first versions of Unicode. But I need you to test it for me before pushing.

I am encountering the exact same issue using xfce4-terminal. The issue does not appear in xterm or urxvt. I also have not yet found a font where this issue does not appears, but the xfce terminal just  uses the character from a different font, if the current font does not have it, so it is very difficult to figure out which font is the culprit.
For now, I will just export a PULSEMIXER_BAR_STYLE with a different symbol for BAR_ON.

Confirmed Python 3 and len == 1. I agree something could've been updated, but for the life of me I can't understand what would cause this change. Perhaps latest GTK/Gnome changes?
Here are the results of changing the BAR_ON character, using master.

Doesn't look like the problem is in the pulsemixer itself, but likely in some updated dependencies. So for now I'm simply changing default BAR_ON from 2B1B to 25AE.


Add a function to find out if an instance has been freed

Please add a global function that lets us check if an instance has already been freed.
I know, it's possible to avoid this situation by meticulously enforcing the order in which objects are removed from scene and object references are freed, but sometimes it would take tremendous effort to refactor the code to free the instance correctly / only once.
Currently, if an object was part of a display tree and its parent / grandparent has been freed, the object would be freed along with the parent, and a variable pointing to it would become invalid.
Attempting to call any function on this instance results in:
Attempt to call function 'FUNCTION_NAME' in base 'previously freed instance' on a null instance.
Since the Godot runtime is able to detect this and break with an error, I assume there's a way to check if an instance pointed at by a variable has been freed or not.
It would be a very very helpful addition and could save many hours of debugging. Something like:
bool is_instance_valid( variable )
Thankee sai.

Just wanna make sure you know Godot's 'weak references', because by design you should use them if object can be freed:
While you know the object is stll alive:
 var wr = weakref(object);
Then you can check like this:
if (!wr.get_ref()):
     #object is erased
else:
    #object is fine so you can do something with it:
    wr.get_ref().doSomeOperation();

While I agree it's not the most straightforward mechanism and I would like to see something like 'automatic null pointer resetting (or whatever), I'm recommending to use weakref in this case -> it's still not so much hassle, and it's always working.

It would be nice to add some information about WeakRef in the official documentation, apart from the API reference I can't find any explanations on when and how to use WeakRefs.

@akien-mga Thanks. I ended up patching my problem in a different way.
But it would still be nice to have a simpler mechanism to check available in a pinch. When there are multiple ways an object can be freed, you're bound to run into problems.
Thanks for weakref tip - I did not know what that was for.

I am currently using this.
It is probably slower than the weakref solution but more straightforward.
str(object)=="[Deleted Object]"
Can anyone see downsides?
I would really appreciate something like bool is_instance_valid( variable )

Just to make sure, is freed information available in release builds?

I am currently using this.
It is probably slower than the weakref solution but more straightforward.

str(object)=="[Deleted Object]"

This will not work in release builds, only while running in the debugger because it seriously affects performance to check if an object is valid every time you use it.
Currently there is no way to check if the instance is valid, but the best way is to use weakref. That said, it should be possible to add a function to check if the instance is valid..

weakref() isn't really a solution. You would either have to always know which instances you might want to delete (which is impossible as the project grows and changes) or code every reference to an instance with weakref() which begs the question why isn't weakref used by default by the instance() method.
We really need is_valid() method. Seems like a really basic functionality and I'm really surprised its not there.

Why don't we store the ObjectID as well in Variant::ObjData? This way, when comparing it to null we also check if the instance can be found in ObjectDB.

@akien-mga Created a doc issue for this, this one can be closed.

Can we re-open as an enhancement? This is a useful feature to have, and the following code:

var wr = weakref(object);
if (!wr.get_ref()):
     #object is erased
else:
    #object is fine so you can do something with it:
    wr.get_ref().doSomeOperation();

is much more difficult to use than something like is_freed(node). It's so much worse, that I would think people would avoid doing so as much as possible, and it makes code much more difficult to read. It is not immediately clear what is going on, while is_freed would  be a self documenting API call.

Even better and easier, add is_freed var to Object, set to false in free().

How are you supposed to check a variable in an object that doesn't exists?

This will need some changes, as the instance -> id reverse map is currently
only availabe on debug builds.. will probably not hurt to make it available
in release I guess..
On Thu, Mar 29, 2018, 10:28 teedoubleuu<EMAIL_ADDRESS>wrote:

How are you supposed to check a variable in an object that doesn't exists?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/godotengine/godot/issues/4306#issuecomment-377311153,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AF-Z20eYNLE1SDwt6S3Hn-tNjYA6n6l7ks5tjRm6gaJpZM4IF-io
.

The is_instance_valid() method was just added now! ff1e7cf


azure Application gateway Http settings Use for App Service not chosen again

In my application gateway-> Http settings,  I choose the Use for App service option ->Save, exit and enter again, then the option will not be chosen.
The option has been chosen:

Exit and enter again, the option not been chosen:

Also, I catch the request with choose the option/not choose via F12, after comparing, I find the request body seems to be the same.
Not sure if I do it right, if necessary, please correct me. Thanks in advance.

@Joyw1 We will now proceed to close this thread. If there are further questions regarding this matter, please respond here and @YutongTie-MSFT and we will gladly continue the discussion.


access s3 content from Python

The S3 content is accessible with the browser pane on the left.
But the S3 content is not visible from the Python code inside the Notebook.
If I have a notebook.ipynb along with a data.txtfile in the same folder,
the following code in the notebook will fail :
open('data.txt').read()

I understand the S3 content can't be exposed as a filesystem to the Python kernel.
But we should have a way to access the S3 content from Python.

I managed to access the S3 content from my notebook with the s3fs module :
s3 = s3fs.S3FileSystem(
        key = os.environ['JUPYTERLAB_S3_ACCESS_KEY_ID'],
        secret = os.environ['JUPYTERLAB_S3_SECRET_ACCESS_KEY'],
        anon = False,
        client_kwargs = {'endpoint_url':os.environ['JUPYTERLAB_S3_ENDPOINT']},
)
s3.ls('my-bucket')

It's working but is there a simplier way to get this s3fs access ?
I don't want my users to deal with the S3 credentials if they want to access the S3 content from their notebook.

@PhE I also facing this problem. Have you solved this problem? If yes, could you please share the solution? Thanks!  :)

@TerenceLiu98 I solved it with a different approach : I use rclone to mount the S3 bucket. I start a background process with the rclone command. In my case this is a kubernetes pod with 2 containers (one for rclone, the other for jupyter).
It is more stable than s3fs and the users can browse it as usual.

Found the described workaround.

rclone does not required the privileged option. A simple rclone mount is enough. We also use rclone sync as a cheap local file cache.
A good point, compared to juicefs, is that the file/folder hierarchy is conserved in the S3 bucket. I mean what you see in the bucket are the real files and folders names and not some cryptic unusable chunks.

rclone does not require the privileged option. A simple rclone mount is enough. We also use rclone sync as a cheap local file cache. A good point, compared to juicefs, is that the file/folder hierarchy is conserved in the S3 bucket. I mean what you see in the bucket are the real files and folders names and not some cryptic unusable chunks.

I found a CSI driver - (k8s-csi-s3) using S3 as the StorageClass and using geesefs (which may have better performance than the rclone) and I think it is good for the usage scenario where combining jupyterlab and S3. I have tried both of the k8s-csi-s3 and juicefs-csidriver, and both of them are working well; however, the juicefs need an extra database for the metadata storage.


service accounts secrets from istio 1.6

We were using istio 1.5.10 and we could see that for any service account in a namespace istio used to create "istio." secret . This was pretty awesome as we used to use this certs internally in our non injected pods which doesnt really do MTLS to do mtls with pods containing sidecars.
We never had to create our own secrets as this was always done by istio from the root ca's we create in istio-system namespace.
But starting with istio 1.6 we notice that it never creates service account secrets .
This page talks about some options
https://istio.io/v1.6/docs/ops/configuration/mesh/secret-creation/
but doesnt create secrets.
Is there anyway to bring back the old behaviour of secret generation in istio 1.6 ?
Also i see that a configmap with name istio-ca-root-cert is created.

This is no longer supported.
https://istio.io/latest/docs/ops/integrations/prometheus/#tls-settings does show an example of sharing these secrets with pods without running the full interception.

Thank you


tsdb-usage: out of control amount of tcp sockets

i think the issue is simply that we need to set a readDeadline on the connection.  Because we never try and write to the connection it will never be noticed that it is no longer connected.


PIC18F4550

Support for this PIC please ?

It seems like I have short memory ;-).  Apparently I made this projects just 3-4 years ago but I've all but forgotten about it.
I don't have this particular PIC available, but I can add it anyways and you can try it and see if I got the parameters right.  I guess that I also should add some documentation as well, it seems to be lacking.
I might have some docs/info written at hackaday.io for this project.
Anyways, I'll grab a nodemcu from my shelf tomorrow and see what I can do about this.

Support for 18f56k42 ?thanks!


Url Decoding

if I have a member with some strange characters like slash '/' or plus '+' the saiku rest endpoint  "children" does not work and return an empty list of children. it seems that the endpoint do not decode the url.
Help :-)!

which endpoint are you talking about exactly?
that one: saiku/rest/saiku/{username}/discover/{connection}/{catalog}/{schema}/{cube}/member/{member}/children ?
we dont use that one in the UI. but you should be able to use it ... you just have, as you mentioned, do an url encoding
can you reproduce it using foodmart or give me an example of an URL that doesn't work?

Yes the endpoint is correct!
you can raise the problem (not an error but an empty response) If you insert a slash in a member name and try to retrieve his children ....

that would be trying something that is not supposed to work
i need to know what error you see.

the exact URL you are trying to call
the logfile tomcat/logs/catalina.out (put it on pastebin.com)

otherwise i can't help you. from where i am standing this code is correct and worked fine before

I'm just facing a similar issue so maybe this helps. I have a measure named "bytesaverage_in sum (bytes/s)". When dragging it into the GUI, this request is generated:
http://host:8080/saiku/rest/saiku/admin/query/16ED2DB3-7261-498C-BC71-56324BC38877/axis/COLUMNS/dimension/Measures/member/[Measures].[bytesaverage_in sum (bytes/s)]
This gives a 404, presumably as the / is not encoded:
HTTP Status 404 - Not Foundtype Status reportmessage Not Founddescription The requested resource (Not Found) is not available.Apache Tomcat/6.0.24

yeah you are right, the slash needs to be encoded, thanks for filing this

i just tried to fix that but having / in the URL is a nogo
maybe i'll change the REST API, but until then you cannot use / in the unique identifiers of dimensions, levels, hierarchies, members.... but you can use it in the caption
<Measure name="bytes" caption="byte/s" .... /> works just fine
so this is a "won't fix" for me.

Hi Paul
Thanks for looking into it. The "caption" workaround is certainly good enough for me, I didn't event think of that.

glad to hear that! :-)
i'll close this for now, unless someone feels like this is not a good e nough solution


GPU particles expensive when ACTIVE = false

Tested versions

Tested in 4.3 beta 1

System information
Godot v4.3.beta1 - Windows 10.0.22631 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; <IP_ADDRESS>99) - Intel(R) Core(TM) i7-9700K CPU @ 3.60GHz (8 Threads)
Issue description
When a particle is set to inactive in the particle shader, it isn't rendered visible on screen, but it still has an impact on the rendering performance. Particle systems with high poly meshes and with all particles being inactive still increase the 'Render Depth Prepass' and 'Render Opaque Pass' a lot. On such a particle system, adding discard; to the start op the fragment shader improves performance, suggesting that the fragment shader is running. Another indication is that changing the amount of polygons in the mesh has an impact on performance, for example lowering the 'rings' count on the TorusMesh increases the performance.
To me it seems like inactive particles shouldn't have a rendering cost (or at least really low), as they aren't being rendered.
(Issue is related to #19507 and #92599)
Steps to reproduce

Add GPUParticles3D
Set the amount to something fairly low, like 100.
Add a custom particles shader with in start(): "ACTIVE = false;"
Set the mesh to a low poly mesh, like the cube.
Note the really high fps and low primitives count.
Set the mesh to a really high poly mesh, like a torus with 1000 ring segments.
Note how the fps is a lot lower and the primitives count is a lot higher, even though all particles are disabled in the shader.

Minimal reproduction project (MRP)
Very simple scene with fps counter and vsync disabled. The ACTIVE = false; is commented out by default.
Warning the scene has 12 million primitives. Open in 4.3 beta 1.
Gpu_particles.zip

Since this value can only be known by running the shader, and all the data needed has to be fetched, I don't think this is a bug
With any reasonable use of ACTIVE it has to be checked and will depend on some input data, no normal particle shader would just always have ACTIVE = false so I'd say in normal use this isn't an issue

I used the ACTIVE built-in to cull certain particles for a grass system like the one devmar on youtube made. Maybe this isn't the right use case for particles, and I should change to multimeshes instead. Anyway, while I was testing this I noticed the performance was fairly low (because I though I was 'culling' the particles). If its not possible to stop entire particles from being rendered like this, we shouldn't spend more time on this. (But I think the docs need to say what making an particle inactive actually does.)

Then that use case is far more relevant, but your real world example shows why it takes performance:

You'd need to figure out if they should be active or not, which requires data to be fed to the particles

So I'd say that you should instead use other means to accomplish that if you need a lot of culling
Now the specifics with the rendering stuff might be a bug but I'm not sure that the statistics you're seeing are from after the active check is done, but might be when preparing the particle data to feed to them
So that would need investigation, but it might just be that the processing you see is the steps prior to active is checked and dropped
What is the performance difference between having the active or not? Is it just marginal or is it significant? Because if it's significant I suspect it's the earlier stages (I can't test your MRP at the moment but some statistics from your testing would be helpful

Some performance numbers (during runtime) scene is MRP. Hipoly is torus with 1024 rings.
This test is about the numbers relative to each-other, the individual numbers don't mean a lot.

GPUParticles node not visible: ~4000fps ~0.25ms
GPUParticles node visible, not emitting: ~4000fps ~0.25ms
cube, not culling: ~1500fps, ~0.66ms
cube, culling: ~4000fps, ~0.25ms
Hipoly, not culling: ~188fps, ~5.32ms
Hipoly, culling: ~330fps, ~3.03ms
Hipoly unshaded, not culling: ~270fps, ~3.70ms
Hipoly unshaded, culling: ~330fps, ~3.03ms
Hipoly, fragment discard, not culling: ~354fps, ~2.82ms
Hipoly, fragment discard, culling: ~400fps, ~2.50ms

Observations

Culled low poly particles have no measurable cost compared to disabling the node (for 100 particles).
There is no performance difference between culled unshaded and culled pixel shaded.
Adding discard at the start of the fragment shader increases performance even with culling.
Just using discard in the fragment shader offers better performance than just culling.
Using discard in the fragment shader and using culling offers the best performance.

I think point 4 is really interesting, why does adding discard to just the fragment shader result in better performance than disabling the particles?

Because discard is an internal feature in shaders which has special behavior I think, just setting ACTIVE is not a native feature


feat: Wrapper  module code implementation

Verification of contract data (neo/eth)

Interface call of neo/eth smart contract

Monitoring of eth contract events

Grpc api for app user

Break down the task to #19，#20，#21


refactor(rust): swap vault attach-key for identity create --key-id

Fixes #6148
Current behavior
To create Identity with a specific key one has to use ockam vault command.

Proposed changes
The same functionality is moved under ockam identity create --key-id

Checks

[x] All commits in this Pull Request are signed and Verified by Github.
[x] All commits in this Pull Request follow the Ockam commit message convention.
[x] There are no Merge commits in this Pull Request. Ockam repo maintains a linear commit history. We merge Pull Requests by rebasing them onto the develop branch. Rebasing to the latest develop branch and force pushing to your Pull Request branch is okay.
[x] I have read and accept the Ockam Community Code of Conduct.
[x] I have read and accepted the Ockam Contributor License Agreement by adding my Git/Github details in a row at the end of the CONTRIBUTORS.csv file in a separate pull request to the build-trust/ockam repository. The easiest way to do this is to edit the CONTRIBUTORS.csv file in the github web UI and create a separate Pull Request, this will mark the commit as verified.

@nazmulidris  @mrinalwadhwa
Though this refactor does not add any new feature, it changes the experience of the using ockam.
Should we consider just deprecating the old ockam vault attach-key command ?

There are essentially three ways to handle this

Just delete the attach-key functionality (current status)
Remove identity create functionality from  attach-key.rs, and just print a message directing the user to use the alternative.
Keep the functionality in attach-key.rs and add a warning stating that this command is deprecated and user should consider using the new alternative.

Need to see if I need to add any code docs for shell --help doc & changes to bash completions.

Should we consider just deprecating the old ockam vault attach-key command ?

Fortunately, we don't have any test or documentation using this command, so we can go ahead and remove it.


Fixing a grammatical issue for clarity

There is a tiny grammatical issue in the navigation markdown section. It was unclear what the intended meaning was, but I think I worked it out.
:beers:

Good work

Howdy—thanks for the pull request, @jensechu!
Before we can merge your changes, we need you to review our Contributor License Agreement (CLA). We think of CLAs as an open source software license between you and the project, letting us and other users know that we have permission to use the code you contribute.
At the bottom of the pull request, you'll see the note about a failed test. Just click the Details link, review the CLA, and sign off at the bottom.
Questions? Just holler—I'm here to help :).
<3

Thanks @mdo! I was on vacation but I updated this.

Woohoo, thanks!


Error: http2 frame too large when setting up TSS address stuck

Run zetae2e setup-bitcoin cmd/zetae2e/config/local.yml
And Show logs ⚙ setting up TSS address
It's been more than half an hour, and it's not completed

I print the logs, and it shows

FIx it
Change <IP_ADDRESS> to localhost

Closed by https://github.com/zeta-chain/node/pull/2582


LK small numbers turned to zeros

In LK callbacks, anything after 6 decimal places is not being included when writing the variable from ssc_exec().
https://github.com/NREL/SAM/pull/454

I believe this issue also affects very large numbers as well. We seem to be losing for 9 digits (hundred million) in front of the decimal point. And the printed number is not matching up with what is being used for calculations

Could you please post a sample LK script?

x = 1.0834e-19;
outln(x);

x = 1.0834e-7;
outln(x);

x = 1.0834e-6;
outln(x);

You can mess around with the numbers on that. Comment out the lines on two and unselect the checkmark on 'Override cost structure' to only focus on 1. I can try to come up with better use cases tomorrow.
LK_number_testing.zip
The number that is printed seems to vary based on what the last two digits are with no clear pattern. Not entirely sure what is going on it may be a different issue. I tried the different number formats on the UI object and it didn't work outside of
LK_number_testing.zip

Issue with the lkscript "set" function fixed in SAM_458 branch of SAM - pull request #763
Issue with small numbers in "outln" lkscript is fixed in SAM_458 branch of lk - pull request https://github.com/NREL/lk/pull/25
Issue with values from numeric control passed through ssc_exec in SAM_458 branch of wex - pull request https://github.com/NREL/wex/pull/125

This is a time intensive task that will be reolved manually by changing all calculated variables to Real with fixed decimals per discussion at https://github.com/NREL/SAM/pull/763#issuecomment-969394134


Preview bar with images

Does Media3 has an option to get video frames and show them while user rewinds video like in Youtube?

@VolodymyrYeletskyi,
The question has multiple layers to consider:

Use of trick play tracks that contain only sparse i-frames to support fast back and forward seeking
UI support that displays these trick play tracks as thumbnails above the scrubber.

There was a recent question to support being able to extract thumbnails from a video on-device which can be an alternative to the i-frame trick play for a media that doesn't have it(obviously this won't work for live streams as the whole piece of media should be loaded locally). Currently, there are no plans to provide this feature.
Regarding trick play support, https://github.com/google/ExoPlayer/issues/5254 is tracking support for DASH. We would like to extend this support for other formats in the future.
As for UI support, I think it is a niche use case, and at the moment, there are no plans to prioritise its implementation. However, high-quality pull requests for this feature are welcome. I'm going to keep this issue open, marked as a low priority enhancement.

This feature is very useful and is now default in all players and apps. MPEG-DASH trick play adaptation set if available, then the Player UI should have this functionality.

https://github.com/google/ExoPlayer/issues/3752 is a catch-all feature tracker for trick-play related logic. If you look at the list in https://github.com/google/ExoPlayer/issues/3752#issuecomment-1147346684, it also includes the UI elements for it. I think we can duplicate this issue against the other one given they are all part of the larger effort to support trick play in the player.

@tonihei in exoplayer2 the feature tracker was finished and there was a PR merged for work done by fraunhoferfokus as below:
https://github.com/google/ExoPlayer/pull/10793
Is this available in Media3 as well, since Media3 continues after Exoplayer versions ?

@prashantchothani The media3 and exoplayer2 code bases have a single source-of-truth, so changes in exoplayer2 are mirrored in media3. In this specific case, https://github.com/google/ExoPlayer/pull/10793 is merged in media3 in https://github.com/androidx/media/commit/c6569a36fbce6fc3ece55c9a904508bd4a4c45da and that was then cherrypicked into the 1.0.0-rc01 release in https://github.com/androidx/media/commit/d49bd456b695c5d289b2e05dfcf6d03cb5fe20fe.

@icbaker Thanks a lot for letting me know this. Does that mean that if the manifest has the Image Adaptation Sets Track, the Thumbails would appear onScrubbing when we use media3 ? Thanks once again in advance.

So far we also parse the image track information from the manifest and nothing more. The remaining improvements are tracked by https://github.com/google/ExoPlayer/issues/3752#issuecomment-1147346684 as pointed out above.


Adding option to disable strict SSL verification

I'm not a "javascript guy", but submitting a change to allow ignoring strict SSL checking (because corporate proxies woo).

nice, LGTM

published as 1.3.0


production deployment

Implementation

[X] serverless templates for AWS services
[X] serverless templates for ecs services
[x] add AWS creds to CI
[x] create ECR punlic registries and add values to build.sh scripts

[x] api
[x] ui
[x] worker
[x] viewer

[x] deploy stack
[x] fill values in env/prod
[x] setup bastion host
[x] hardcode config.cljs values for prod
[x] deploy services by hand
[x] test CI deployment of all services
[x] test deployed services
[x] authorize google app for prod use

Done


[AutoPR alertsmanagement/resource-manager] AlertsManagement RP GA version

Created to sync https://github.com/Azure/azure-rest-api-specs/pull/3894

(message created by the CI based on PR content)


Design for Register model

Assets :- beautiful-readme-logo.png , background-login.png
Drive of assets: https://drive.google.com/drive/folders/1MK6JSjbN_HjX9ioDfhjgNch5bwHOEQJx?usp=sharing

May I work on this issue ?

Yeah ! you can start working over this !

Please assign it to me


One question and one suggestion

Do I need the search engine ID if I plan to use Google search? I created a google cloud account, got the API key, but it is returning nothing:
Tool GoogleSearch returned: [{'title': '', 'body': '', 'link': ''}, {'title': '', 'body': '', 'link': ''}, {'title': '', 'body': '', 'link': ''}]
What am I doing wrong?
Suggestion: make the action bar at the top (run, pause, etc) stick at the top when scrolling down.

Yes, You have to provide a custom serach engine ID if you want search functionality now. you can acquire it from here
We are planning to integrate serper based searching too, where you will need only one API key to access google.

Closing this as this is solved.


Scrolling by macOS touchpad is laggy

The view responds slowly when I scroll. It takes a few more seconds to complete its scrolling after I leave my finger off the touchpad.

I do not experience anything like that, does it happen with other (small) pdfs as well? Also after restarting the OS and just opening a pdf?

Yes, it happens with small (2-page) pdfs. Restarting IDE and OS doesn't help. Even the thumbnail sidebar is also slow.

@Him188 Is it just slow or laggy? Please try scrolling document preview in bundled Markdown plugin. Is it slow too?
Please try increasing the value of ide.browser.jcef.osr.wheelRotation.factor registry key (Search Everythere > Registry...).

It's slow and laggy.
https://user-images.githubusercontent.com/12100985/168280893-ed4edc03-f432-4069-8863-b47ae678aa82.mp4
There is no problem scrolling preview in bundled Markdown plugin.
I tried increasing the registry from 10 to 20, it is not slow but is still laggy.

Can confirm the problem (2016 MBP).

Can confirm the problem (MacBook Pro M1 Max, macOS 12.5.1)

Can also confirm (MacBook Pro M1 Pro macOS 12.5.1)

Having the same issue (MacBook Pro M1 Pro, macOS 12.5)

Same issue here (MacBook Pro M1 Pro, macOS 12.3)

I have the same issue (MacBook Pro M1, macOS 12.6)

I have the same issue (MacBook Pro M1 Pro, macOS 12.6)

I have the same issue (MacBook Pro M1 Max, macOS 13.0

I have the same issue (MacBook Pro M1 Pro, macOS 13.0.1)

I have the same issue (Mac Mini 2020, macOS 12.5.1)

Same Issue here (Macbook pro 16'' 2019, macOS 12.6)

I have the same issue (MacBook Air M1 2020, macOS 13.1)

I also have this issue (MacBook Pro M1 Pro, macOS 13.1, IntelliJ 2022.3.1 (Ultimate))

I also have this issue (2021 MacBook Pro M1 Max, 32GB, macOS 13.0, CLion 2022.3).

I also have this issue (2020 MacBook Air M1, 8GB, macOS 13.2.1, IntelliJ 2022.3.2).

I got the same issue (2020 MacBook Pro Intel, macOS 13.2.1, PyCharm 2022.2 Professional Edition).
Is this issue solved now?

I also have this issue (2021 MacBook Pro M1 Max, 64GB, macOS 13.3, PyCharm 2023.1 Professional Edition).

I also have this issue. MBP 2019, i9, 32GB, MacOS 13.2.1, 5500M 4gb, WebStorm and Clion.

I found a workaround:

Double shift, type "Registry" and open
Enable "ide.browser.jcef.contextMenu.devTools.enabled"
Now the viewer is not laggy

But you have to keep the devTools window open.
@FirstTimeInForever Any thoughts? I tried investigating this problem but I failed to find the cause.

when is this change released?

ah great, thnx a lot, now its working like a charm !

With ad34116, scrolling is not laggy anymore. Fantastic!
@aeropagz I built a plugin from the master branch. You can drag this into your IDE to install. You can also build your own, it's quite simple: ./gradlew buildPlugin, and find it at plugin/build/distributions
intellij-pdf-viewer-0.14.3.zip

Nice, it works!

That's great to hear, thanks for checking! We will publish a new release to the marketplace soon.


Eloquent model tests (#68) & Post-Tag model relationship/database cleanup

I've pulled in the Eloquent-PHPUnit package to satisfy #68 and applied database & model tests to each of functional tests. @austintoddj let me know if you would like me make any changes... I also cleaned up the post tag relationship/join table.
Instead of having a normal, primary & auto-incremented id column on a many-to-many, join table, you should:

Remove the id column completely.
Mark the to joining id columns as the PK's.
Add FK's

Eloquent will automatically assume that the table name is a singular combo of the two model's and  in alphabetical order... So post_tag is the default table name.
I also cleaned up, refactored & added docblocks to the other tests in the PostTest class as well.

Thanks for putting this together @erikgall. Quick question: looks like some of the tests aren't passing, any way we can remedy that? I'll pull this in as soon as we get green across the board. Lastly, does anything here potentially break current users' setups, or do the two new migrations maintain the integrity of the database?

Awesome. The problem I ran into last night when I pushed this was that I developed that package to require PHP 7 and once I saw the tests fails for the first time, I switched over to the package and tried to remove all of the PHP 7 only code.
It will not break any users setup. If you take a look at the create_post_tag_table migration you can see that I took the time to migrate any existing data that might have be in the old table.
I should have the tests passing here shortly.

@austintoddj All tests are passing and good to go.


How to make java archive file (jar)

Hi,
I'm trying to compile sqlite-jdbc. I manage to run make linux64 which creates files all over the place but I can't find the jar archive. Or maybe I'm missing a step?
Thanks.

Ok it's done, I close...


Child block gets added to wrong parent

Add two root level blocks
In the first root level block, add a new child block
In that new child block, try adding a child block. It will add it to the last block instead.

Hi,
Just started using Neo. Great plugin btw. I am seeing this too. Any timescale for a fix? Thanks!

@shornuk Wow, what a coincidence. I literally JUST fixed this about 12 seconds ago. Expect it in the next release (will be released over the weekend).

Awesome! Thanks for that!


chore: use vault for windows certificates

related to https://github.com/camunda/camunda-modeler/issues/4243

Based on https://www.electron.build/code-signing#windows, I pushed https://github.com/camunda/camunda-modeler/pull/4257/commits/22a12d0a9c1b6477e5b3bbdd6e87ff0ad7e828e7

Postponed, removed from M76 milestone.


Normal page not selectable in menu

Using the following portion of a menu and a page called about.md, this page will never be selected in the menu (IsMenuCurrent/HasMenuCurrent always return false). It looks like IsMenuCurrent always returns false for pages (if p.IsPage()) and I'm not sure why. It looks like it might be a leftover from some transition from Node to Page, but I don't have much context for this codebase.
  [[menu.main]]
    name = "About"
    weight = 2
    url = "/about/"

Thanks for getting in touch, but it feels like this is a question  that would be better suited to the Hugo Discussion Forum.  We prefer to use GitHub issues only for bugs and enhancements. Feel free to update this issue with a link to the re-posted question (so that other people can find it) or add some more details if you feel this is a genuine bug. You may also find the answers you search for in Hugo Documentation.

I do feel like this is an actual bug. Here's what I did to run into this:

Create a new hugo project
Download a theme (in my case after-dark)
Create an "About Me" page
Add a manual link to the about page on the menu (using the instructions from the docs)

What I expected to happen:
When I visited the "About Me" page, I expected that link in the menu to be selected (as the theme copies some of the rendering code from the "Menus" page of the docs almost directly).
What actually happened:
That link wasn't selected.
Here's a sample config:
languageCode = "en-us"
title = "My New Hugo Site"
baseURL = "http://example.org/"
SectionPagesMenu = "main"

[menu]
  [[menu.main]]
    name = "About"
    url = "/about/"

Here's a sample content/about.md
+++
title = "About Me"
draft = true
date = "2017-02-11T02:28:14-08:00"

+++

after-dark can be cloned from https://github.com/comfusion/after-dark/
Hugo was run using hugo serve -D -t after-dark
I'd be happy to answer any additional questions.

Please post this at the forum. I'm pretty sure you got it wrong somewhere in there, but I don't do questions/troubleshooting on GitHub.

I've spent about 2 hours on this and it looks like it is still an issue. I did file a forum post, but as @belak mentions above, this seems like a bug in the source:
https://github.com/gohugoio/hugo/blob/master/hugolib/page.go
I'm seeing what he sees:
if p.IsPage() {
		return false
}

Is that intentional? Or did we both get it wrong? ;)


Inst.make_manifest() consistency

Making fits_target_str in EXPRES.io an optional Regex argument so that is has the same inputs (i.e. just one required string) as the other Inst.make_manifest() functions

Codecov Report

Merging #15 (db808e0) into main (5f50e45) will not change coverage.
The diff coverage is 0.00%.

@@          Coverage Diff          @@
##            main     #15   +/-   ##
=====================================
  Coverage   0.00%   0.00%
=====================================
  Files         21      21
  Lines       1084    1083    -1
=====================================
+ Misses      1084    1083    -1

Impacted Files
Coverage Δ

src/expres/io.jl
0.00% <0.00%> (ø)

src/files.jl
0.00% <0.00%> (ø)

Continue to review full report at Codecov.

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

Looks good to me at first glance.  I haven't checked if this will cause issues for any existing scripts.
@alexander-wise do you foresee any downstream negative effects?

Looks good to me at first glance. I haven't checked if this will cause issues for any existing scripts.
@alexander-wise do you foresee any downstream negative effects?

I don't see any uses of EXPRES.make_manifest in any of the RvSpectML scripts, so we should be good.
I'll make sure my personal scripts take advantage of the new simplicity. Thanks for tagging me.


vm: Check SendCtlMessage() return to avoid a segmentation fault

In case the call to SendCtlMessage() was returning an error, the
response object was nil, but it was used anyway.
This patch makes sure we are not using the response handler in
case we got an error.

Coverage decreased (-0.1%) to 74.696% when pulling 036fc97914475bab7eee1552c64978d2557fc8c5 on sboeuf/fix_segfault into cf19e7935daaff8db546111c7a48cfdc2c1f09f6 on master.

lgtm

@dlespiau Am I supposed to fix those issues ??? I don't think it is related to my PR. Have you already got such issues with gometalinter (megacheck) ?

gometalinter has added a checker and we fail on that new checks.

@dlespiau Ok thanks for the confirmation. What do you want to do about that ? Removing this checker ?

Coverage decreased (-0.1%) to 74.696% when pulling e24e09be71b0344c7def8a2bebece86e01a015b6 on sboeuf/fix_segfault into cf19e7935daaff8db546111c7a48cfdc2c1f09f6 on master.

@dlespiau I have disabled megacheck. It's all green. Let me know if you think we should fix megacheck issues instead, but personally I think this PR should not be affected by this issue. We can still re-enable + fix megacheck in a follow up PR.
Merge it if that's fine for you ;)

yes, we should fix the few issues (dead code) found by megacheck, that can be a different PR though.


rawread can't handle single sided disks without being told

I dumped a Commodore 1541 disk and also saved the flux:
./fluxengine read  commodore1541 --copy-flux-to archon.flux -o archon.d64

Then later I wanted to convert the flux to scp format for experimentation, but it crashes.
Starting program: /home/jepler/src/fluxengine/fluxengine-debug rawread -s archon.flux -d archon.scp
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
SCP: writing 96 tpi double sided file containing 160 tracks
  0.0: 200 ms in 64741 bytes
  0.1:
Program received signal SIGSEGV, Segmentation fault.
0x000055555558850a in Bytes::size (this=0x10) at lib/bytes.h:25
25	    unsigned size() const        { return _high - _low; }
(gdb) where
#0  0x000055555558850a in Bytes::size (this=0x10) at lib/bytes.h:25
#1  0x0000555555588536 in Fluxmap::bytes (this=0x0) at lib/fluxmap.h:41
#2  0x0000555555612940 in readFluxmap (fluxsource=..., cylinder=0, head=1) at lib/reader.cc:31
#3  0x0000555555614b50 in rawReadDiskCommand (fluxsource=..., fluxsink=...) at lib/reader.cc:227
#4  0x000055555558dbcc in mainRawRead (argc=5, argv=0x7fffffffe110) at src/fe-rawread.cc:72
#5  0x0000555555576f4f in main (argc=6, argv=0x7fffffffe108) at src/fluxengine.cc:134

I suspect that this occurs because the image doesn't contain any flux data for head 1.
Note: it's not likely to be relevant, but I'm doing the original dump using Adafruit's prototype floppy interface board & software. The actual command shown above was with revision dbfc0f9.
The process will run to completion but only if I specify -h 0 to use just one head.

Yup, that's clearly a bug. I'll take a look.