rendering error in Black Myth

The same code can run in "Elden Ring" and work, but it will crash in "Black Myth".
I am using sample code： examples/demo_hook_dx12.rs
Error:
Render error: Error { code: HRESULT(0x887A0005), message: "The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action." }

Elden Ring

Black Myth Wukong

log:
2024-09-19T12:30:34.434333Z TRACE ThreadId(01) black_myth_map: src\lib.rs:79: DllMain()
2024-09-19T12:30:34.436849Z DEBUG ThreadId(02) hudhook::hooks: C:\hudhook-0.7.1\src\hooks\mod.rs:87: WNDCLASSEXW { cbSize: 80, style: WNDCLASS_STYLES(3), cbClsExtra: 0, cbWndExtra: 0, hInstance: HINSTANCE(5368709120), hIcon: HICON(0), hCursor: HCURSOR(0), hbrBackground: HBRUSH(0), lpszMenuName: PCWSTR(0x0), lpszClassName: PCWSTR(0x7ffe3ef1dcf8), hIconSm: HICON(0) }
2024-09-19T12:30:34.440773Z DEBUG ThreadId(02) hudhook::hooks: C:\hudhook-0.7.1\src\hooks\mod.rs:107: HWND(1380404)
2024-09-19T12:30:34.490453Z TRACE ThreadId(02) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:259: IDXGISwapChain::Present = 0x7ffeeff34700
2024-09-19T12:30:34.526547Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242aa840) invoked
2024-09-19T12:30:34.526828Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 2, 0x182b99b0) invoked
2024-09-19T12:30:34.526992Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242a74a0) invoked
2024-09-19T12:30:34.527156Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28595fc0) invoked
2024-09-19T12:30:34.527416Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28595ac0) invoked
2024-09-19T12:30:34.527578Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28595e00) invoked
2024-09-19T12:30:34.527769Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28593fc0) invoked
2024-09-19T12:30:34.528266Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28593920) invoked
2024-09-19T12:30:34.528708Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28595aa0) invoked
2024-09-19T12:30:34.529062Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0xab3cc8c0)), 1, 0xbb89f828) invoked
2024-09-19T12:30:34.573191Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0xcb7f2220)), 1, 0xbb89e3f0) invoked
2024-09-19T12:30:34.574151Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 1, 0xbb89f408) invoked
2024-09-19T12:30:34.574500Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:122: Call IDXGISwapChain::Present trampoline
2024-09-19T12:30:34.575692Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242a40e0) invoked
2024-09-19T12:30:34.576077Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 2, 0x3c569d90) invoked
2024-09-19T12:30:34.576721Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242a74a0) invoked
2024-09-19T12:30:34.577193Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242ad5e0) invoked
2024-09-19T12:30:34.577528Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242aa840) invoked
2024-09-19T12:30:34.577889Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x242a8c80) invoked
2024-09-19T12:30:34.578237Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28593920) invoked
2024-09-19T12:30:34.578673Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x2859ad80) invoked
2024-09-19T12:30:34.578977Z TRACE ThreadId(03) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x629223e0)), 3, 0x28593fc0) invoked
2024-09-19T12:30:34.579298Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:146: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0xab3cc8c0)), 1, 0xbb89f828) invoked
2024-09-19T12:30:34.579993Z ERROR ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:119: Render error: Error { code: HRESULT(0x887A0005), message: "The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action." }
2024-09-19T12:30:34.580299Z TRACE ThreadId(04) hudhook::hooks::dx12: C:\hudhook-0.7.1\src\hooks\dx12.rs:122: Call IDXGISwapChain::Present trampoline

Thank you.
I am sure that the game uses dx12. I tried adding "GetDeviceRemovedReason " and got the following log:

2024-10-07T02:34:27.970940Z TRACE ThreadId(01) black_myth_map: src\lib.rs:247: DllMain()
2024-10-07T02:34:27.973664Z  INFO ThreadId(02) black_myth_map: src\lib.rs:69: new
2024-10-07T02:34:27.973984Z  INFO ThreadId(02) black_myth_map: src\lib.rs:72: base_address:<PHONE_NUMBER>
2024-10-07T02:34:27.975065Z DEBUG ThreadId(02) hudhook::hooks: vendor\hudhook\src\hooks\mod.rs:87: WNDCLASSEXW { cbSize: 80, style: WNDCLASS_STYLES(3), cbClsExtra: 0, cbWndExtra: 0, hInstance: HINSTANCE(5368709120), hIcon: HICON(0), hCursor: HCURSOR(0), hbrBackground: HBRUSH(0), lpszMenuName: PCWSTR(0x0), lpszClassName: PCWSTR(0x7ff8a10fd4b8), hIconSm: HICON(0) }
2024-10-07T02:34:27.980901Z DEBUG ThreadId(02) hudhook::hooks: vendor\hudhook\src\hooks\mod.rs:107: HWND(329360)
2024-10-07T02:34:28.022564Z TRACE ThreadId(02) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:261: IDXGISwapChain::Present = 0x7ff924544700
2024-10-07T02:34:28.058330Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x187d883c0) invoked
2024-10-07T02:34:28.058559Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 2, 0xc0b5b70) invoked
2024-10-07T02:34:28.058716Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x187d81ee0) invoked
2024-10-07T02:34:28.058872Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x187d8c940) invoked
2024-10-07T02:34:28.059213Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x187d881e0) invoked
2024-10-07T02:34:28.059354Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x187d8fbc0) invoked
2024-10-07T02:34:28.059556Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xd251a140) invoked
2024-10-07T02:34:28.059690Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x272365a0) invoked
2024-10-07T02:34:28.059807Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x132fcc2c0) invoked
2024-10-07T02:34:28.060114Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x12b20d160) invoked
2024-10-07T02:34:28.060798Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x12b20ff40) invoked
2024-10-07T02:34:28.061370Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0xaaa37a10)), 1, 0xba0cf828) invoked
2024-10-07T02:34:28.158831Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:28.483442Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:28.840983Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:29.205632Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:29.582961Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:29.947050Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:30.456981Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:30.821095Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:31.190735Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:31.570420Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:32.095921Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:32.497337Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:32.881917Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:33.428490Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:33.807461Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:34.200394Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:34.585443Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:35.100680Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:35.588660Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:36.101234Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:36.476999Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce1b0) invoked
2024-10-07T02:34:36.517181Z  INFO ThreadId(04) black_myth_map: src\lib.rs:188: 初始化完成
2024-10-07T02:34:36.519921Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6c5fd20)), 1, 0xba0ce3f0) invoked
2024-10-07T02:34:36.524018Z  INFO ThreadId(04) black_myth_map: src\lib.rs:192: render
2024-10-07T02:34:36.525179Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 1, 0xba0cf3d8) invoked
2024-10-07T02:34:36.527200Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:124: Call IDXGISwapChain::Present trampoline
2024-10-07T02:34:36.528288Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x12b20cec0) invoked
2024-10-07T02:34:36.530756Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 2, 0x12b622cb0) invoked
2024-10-07T02:34:36.553171Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x130257d60) invoked
2024-10-07T02:34:36.553598Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0x13025e980) invoked
2024-10-07T02:34:36.553965Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xd25950c0) invoked
2024-10-07T02:34:36.554281Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xd2597dc0) invoked
2024-10-07T02:34:36.554619Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xd2596440) invoked
2024-10-07T02:34:36.554965Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xc6b82f40) invoked
2024-10-07T02:34:36.555344Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xc6b82d20) invoked
2024-10-07T02:34:36.555693Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xc6b85180) invoked
2024-10-07T02:34:36.556010Z TRACE ThreadId(03) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0x6bf6aa0)), 3, 0xc6b83180) invoked
2024-10-07T02:34:36.556349Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:148: ID3D12CommandQueue::ExecuteCommandLists(ID3D12CommandQueue(IUnknown(0xaaa37a10)), 1, 0xba0cf828) invoked
2024-10-07T02:34:36.556643Z  INFO ThreadId(04) black_myth_map: src\lib.rs:192: render
2024-10-07T02:34:36.558096Z ERROR ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:121: Render error: Error { code: HRESULT(0x887A0005), message: "The GPU device instance has been suspended. Use GetDeviceRemovedReason to determine the appropriate action." }, Device Removed Reason: Err(Error { code: HRESULT(0x887A002B), message: "The application is trying to use a resource to which it does not have the required access privileges.\r\nThis is most commonly caused by writing to a shared resource with read-only access." })
2024-10-07T02:34:36.558503Z TRACE ThreadId(04) hudhook::hooks::dx12: vendor\hudhook\src\hooks\dx12.rs:124: Call IDXGISwapChain::Present trampoline

If comment "load_texture", it will work.

Without seeing your code, I don't have a lot to work with, unfortunately. I can only offer random guesses.
It looks like the error happens at the second render pass (if that's what the src/lib.rs:192: render log means) and you mention load_texture so maybe you are loading the same texture multiple times unintentionally?

I'm sorry I provided the wrong information, load_texture is not the key issue. The game crash problem still exists, and I am using basic sample code.
Even when I tried multiple other repositories for hooking DirectX12, including C++, all of them caused the game to crash without exception. Other games work fine though, such as Elden Ring (no more games available for testing).
However, I found some clues:
https://www.unknowncheats.me/forum/unreal-engine-4-a/635608-d3d12-hook-crashes-ue5-03-a.html

That's very interesting. And also very testable - I was not aware that Black Myth used Unreal so could just build a toy game with Unreal and test against that.
I kinda disagree with the solution though. I don't want to go rummaging in the object's vtable.
An alternative solution would be to instead call ID3D12CommandQueue::GetDesc in the ExecuteCommandLists call, and try to infer which is the correct queue to use.

To sync the progress of this issue, I am a beginner in Rust and making a floating mini-map for this game.
Following your advice, I tried some methods:
Changed COMMAND_QUEUE from OnceCell to mutable, updated it in ExecuteCommandLists. (Honestly, I don't know how to filter it)

Although the code is rough, miraculously the problem was solved like that.
Sincerely thank you.

That's awesome! Would you kindly open a pull request with the changes? That way I can see what the changes are more clearly. Global mutability is something to be handled carefully but I think I would like to upstream some version of this solution.

It is worth mentioning that I found a good example, which obtains the command_queue through swap_chain + offset.
https://github.com/praydog/UEVR/blob/1519726ca22815360d9b024c8b9c53b6296ad06b/src/hooks/D3D12Hook.cpp#L449

It is worth mentioning that I found a good example, which obtains the command_queue through swap_chain + offset.
https://github.com/praydog/UEVR/blob/1519726ca22815360d9b024c8b9c53b6296ad06b/src/hooks/D3D12Hook.cpp#L449

That method is actually brilliant. People used to do this by using a single, hardcoded offset, which was very brittle because the offset might change from one version of DirectX 12 to the other, and we have no static guarantee about that. The specific implementation I'm not super confident about, but looping through the vtable and doing some check to ensure we're at a ID3D12CommandQueue pointer is a great idea. Not to mention it would allow us to remove one hook and vastly simplify the hook workflow.
I'll do a couple experiment, open a PR and ping you for review!

Great, I am currently using this method and it is working fine, but my code is not robust enough. It couldn't be better if it could be solved directly in hudhook.

@jaskang in this branch I have made an attempt of implementing that strategy. It seems to work in tests, but I don't have DirectX 12 games on my current machine, I'll test it against Elden Ring as soon as I get the chance. I hope it works but I'm not sure it will.
We're using a IDXGISwapChain3 in hudhook and I'm not sure how this code will behave with e.g. IDXGISwapChain2: will the offset at which the command queue pointer is stored be consistent across versions? Do we have static guarantees about those things? If it works with a handful of Dx12 games then we might be good.

I have added a better heuristic. Now the swapchain is recorded first try, and whenever ID3D12CommandQueue::ExecuteCommandList is invoked, this command queue is checked against the swapchain to see that it belongs to it. If that's the case, the hook is initialized and no further checks are run against the swap chain and the command queue in their hooked methods. We will still pay the cost of locking the mutex, though we might be able to sidestep that by using a static atomic boolean. This is probably the most robust solution against the issue I raised in my previous comment. Checking the pointers is still a potentially imperfect heuristic, but I think it should always work in practice.
I still need to test it against a UE game, on Windows, and on Elden Ring to check for regressions, but @jaskang I'd like to ask you if you could please confirm it works on Black Myth. If that's the case I'll do my checks, open the PR, merge that in and release 0.8, otherwise we can keep iterating ideas.

I have tested the Black Myth 、Elden Ring and Hades II. it works very well.
By the way, may I ask when the many-textures branch can be merged? I have been developing based on this branch and can provide some test samples.

This is awesome, thank you so much!
The textures fix branch was going to get merged as soon as I could run in-depth testing on my own use cases, but you are already successfully working based on it, that gives me more confidence. If I find no issues, I plan to merge both this new branch and that older PR and cut an official release within this week.

@jaskang I just merged #200, then #210 into #209 and rebased #209. I'm now gonna test that against my use cases on Linux. If you want to give the branch another spin and confirm it all works well, we can merge this in and release 0.8.

It works very well. 👍


Unable to restart Kafka Manager using Docker Compose

Hello,
I am using Kafka Manager run with Docker Compose with the following .yml:
kafka-manager:
    image: qnib/plain-kafka-manager
    network_mode: host
    environment:
      ZOOKEEPER_HOSTS: "localhost:2181"
      APPLICATION_SECRET: blabla
    restart: always

It starts and is working fine at 1 run. When i stop and start ig again after few minutes, i got the following error:
>> JMX_ENABLE:true, PROMETHEUS_JMX_ENABLE:false
> execute entrypoint '/opt/qnib/entry/30-kafka-manager.sh'
> execute CMD '/opt/qnib/kafka/manager/bin/start.sh'
This application is already running (Or delete /opt/kafka-manager/RUNNING_PID file).
[II] qnib/init-plain script v0.4.28
> execute entrypoint '/opt/entry/00-logging.sh'
> execute entrypoint '/opt/entry/10-docker-secrets.env'
[II] No /run/secrets directory, skip step
> execute entrypoint '/opt/entry/99-remove-healthcheck-force.sh'
> execute entrypoint '/opt/qnib/entry/19-configure-jmx.sh'
+ sed -i -e s/JMX_PORT/1234/g /opt/prometheus/jmx/default.yml
> execute entrypoint '/opt/qnib/entry/20-jmx-prometheus.env

Upon docker ps i can see the following:
CONTAINER ID        IMAGE                                   COMMAND                  CREATED             STATUS                            PORTS                    NAMES
2d9d2c866066        qnib/plain-kafka-manager                "/usr/local/bin/en..."   32 minutes ago      Restarting (255) 14 seconds ago                            webtools_kafka-manager_1

In order to run it, I have to remove that container and create it again, which is inconvenient in long term.
Any idea how to fix that? I checked ps -A but i do not see any Kafka Manager process running.

I'm seeing the same behavior on my end.  First time started, the container is fine.  If I stop my containers, then docker-compose up again, kafka-manager starts throwing all kinds of exceptions in the log.  Here's an example of the stack trace in the log when it happens:
kafka-manager_1    | [error] k.m.a.c.OffsetCacheActive - [topic=player.added] An error has occurred while getting topic offsets from broker List((BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),0), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),1))
kafka-manager_1    | java.nio.channels.ClosedChannelException: null
kafka-manager_1    |    at kafka.network.BlockingChannel.send(BlockingChannel.scala:110) ~[org.apache.kafka.kafka_2.11-<IP_ADDRESS>.jar:na]
kafka-manager_1    |    at kafka.consumer.SimpleConsumer.liftedTree1$1(SimpleConsumer.scala:98) ~[org.apache.kafka.kafka_2.11-<IP_ADDRESS>.jar:na]
kafka-manager_1    |    at kafka.consumer.SimpleConsumer.kafka$consumer$SimpleConsumer$$sendRequest(SimpleConsumer.scala:83) ~[org.apache.kafka.kafka_2.11-<IP_ADDRESS>.jar:na]
kafka-manager_1    |    at kafka.consumer.SimpleConsumer.getOffsetsBefore(SimpleConsumer.scala:149) ~[org.apache.kafka.kafka_2.11-<IP_ADDRESS>.jar:na]
kafka-manager_1    |    at kafka.manager.actor.cluster.OffsetCache$$anonfun$18$$anonfun$20$$anonfun$21.apply(KafkaStateActor.scala:406) ~[kafka-manager.kafka-manager-<IP_ADDRESS>-sans-externalized.jar:na]
kafka-manager_1    |    at kafka.manager.actor.cluster.OffsetCache$$anonfun$18$$anonfun$20$$anonfun$21.apply(KafkaStateActor.scala:403) ~[kafka-manager.kafka-manager-<IP_ADDRESS>-sans-externalized.jar:na]
kafka-manager_1    |    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[org.scala-lang.scala-library-2.11.8.jar:na]
kafka-manager_1    |    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[org.scala-lang.scala-library-2.11.8.jar:na]
kafka-manager_1    |    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_151]
kafka-manager_1    |    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_151]
kafka-manager_1    | [error] k.m.a.c.OffsetCacheActive - [topic=__consumer_offsets] An error has occurred while getting topic offsets from broker List((BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),45), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),34), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),12), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),8), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),19), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),23), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),4), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),40), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),15), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),11), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),9), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),44), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),33), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),22), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),26), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),37), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),13), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),46), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),24), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),35), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),16), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),5), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),10), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),48), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),21), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),43), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),32), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),49), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),6), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),36), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),1), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),39), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),17), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),25), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),14), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),47), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),31), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),42), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),0), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),20), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),27), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),2), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),38), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),18), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),30), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),7), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),29), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),41), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),3), (BrokerIdentity(1001,<IP_ADDRESS>,9092,-1,false),28))
kafka-manager_1    | java.nio.channels.ClosedChannelException: null```

I am too using Kafka Manager with docker with following configuration:
kafka-manager:     image: sheepkiller/kafka-manager     environment:       ZK_HOSTS: zoo:2181     command: -Dpidfile.path=/dev/null     depends_on:       - kafka       - zoo
I have same error:
This application is already running (Or delete /opt/kafka-manager/RUNNING_PID file).
This problem was fixed with configuration:
command: -Dpidfile.path=/dev/null

This has been fixed in the latest version of https://hub.docker.com/r/qnib/plain-kafka-manager/

For reference for other people running into this issue and wanting to know why this fixes it, it's basic play-framework configuration: https://www.playframework.com/documentation/2.7.x/ProductionConfiguration#Changing-the-path-of-RUNNING_PID

Add command: -Dpidfile.path=/dev/null ao arquivo docker-compose.yml para resolver o problema.

I added the above to "command:" in my docker-compose. It worked but the co-located kafka-manager became unhappy. I removed it again and now both work. thanks @carlos2031 and @rmasgutov for the suggestions.

I am too using Kafka Manager with docker with following configuration:
 kafka-manager: image: sheepkiller/kafka-manager environment: ZK_HOSTS: zoo:2181 depends_on: - kafka - zoo I have same error: This application is already running (Or delete /opt/kafka-manager/RUNNING_PID file).
This problem was fixed with configuration: command: -Dpidfile.path=/dev/null

Thanks! This works for me.

thanks ! this works for me


[Bug]: Data connection issue

Describe the bug
A user shared on twitter this error msg.
https://twitter.com/steepdawn974/status/1779115637870150015
From @Nuhvi: "This error tells me that Bitkit, couldn't decrypt the Slashtags primary key from the OS's keychain. That key should always be easy to calculate on the fly from the Bitcoin master key, but that too is probably encrypted on the keychain."
Reproduce

Go to '...'
Click on '....'
Scroll down to '....'
See error

Screenshots / Recording

Operating system
Android
Bitkit version
n/a
Log output
No response

@catch-21 it's been a long time that I didn't see this issue. can I put it in pause?

I've never seen this or heard anyone else mention this issue. We can close.


fix: import export cycle and GH workflow test

Main improvements in this PR:
This PR is continuing #629 aimed to fix the GH workflow test of the import-export cycle, thus resolving #628.
I hereby confirm that I have:

[ ] Tested my code on my own computer for running the model
[x] Selected develop as a target branch
[ ] Any removed reactions and metabolites have been moved to the corresponding deprecated identifier lists

the reported error in yaml import/export cycle is fixed by correcting typos and reverting to original subsystem value extraction (e118e1d64cc35cbaa2dc329d6bf0322cc6c298b5); while the issue with GH action remains

I'm still working on getting the workflow to fail in a visible way.

could this be merged, how's going with the workflow test?

could this be merged, how's going with the workflow test? @mihai-sysbio

The workflow still appears as passing in the latest workflow run even though it clearly prints out an error. I am having difficulties relaying the exit(1) from Matlab to bash. I've tried a few different things but none seemed to work. In the meantime, this PR is converted as to draft, since merging it would not resolve the intended issue.

In the meantime, this PR is converted as to draft, since merging it would not resolve the intended issue.

the aim of this PR can be reduced to only resolving import/export cycle, which is a bug of develop that is now jammed

The workflow still appears as passing in the latest workflow run even though it clearly prints out an error. I am having difficulties relaying the exit(1) from Matlab to bash. I've tried a few different things but none seemed to work.

yes this workflow problem can be left out and resolve later

The workflow has been updated to as to fail in an obvious way if problems are encountered in commit 29113a1692e270b0c54e22f0d325ace870aec3da. The following commit 927fb07 removed the purposefully-introduced error, which resulted in all workflows passing. Therefore, the core issue is now resolved.

Due to significant changes and slight scope creep, reviews will be re-requested.

if I can re-introduce the bug happened in Yaml before and see what happens?

if I can re-introduce the bug happened in Yaml before and see what happens?

good idea, please play around this different test cases

Another idea, should the disp function calls be replaced with warn?

the bug re-troduced by 97d030bee36dea37d3ff9de8a7925ecd26b40af1 suppose to lead to failure of both yaml-validation and yaml-conversion actions. But the latter still gives a pass, therefore this workflow bug persists.

@haowang-bioinfo the reintroduced but caused a failure higher up in the testing code, which was not caught by the same mechanism. The previous commit 6e5d66c address this.

If there is any other bug you'd want to test with, please go ahead @haowang-bioinfo

Oh how interesting, none of tests capture the bug introduced in 5f39c61. The actions are passing, because the tests are passing. I would be inclined to report this as separate bug - the workflows now seem to reflect the status of the tests, which was the original aim of this PR.

go ahead please

@haowang-bioinfo the purposefully introduced bug has now been caught and may be removed.

with #672, both yaml-conversion and yaml-validation actions can catch the typo in MAM1261m


Although call disableLoadmore method, load more view will still show if item count is more than 3

Because when calling disableLoadmore method, customLoadMoreView will still be set an empty view(empty_progressbar.xml). But if recycle view need show load more view you use the following clauses:
if (mAdapter.getAdapterItemCount() >= showLoadMoreItemNum && mAdapter.getCustomLoadMoreView() != null
&& mAdapter.getCustomLoadMoreView().getVisibility() == View.GONE) {
mAdapter.getCustomLoadMoreView().setVisibility(View.VISIBLE);
}
if (mAdapter.getAdapterItemCount() < showLoadMoreItemNum && mAdapter.getCustomLoadMoreView() != null) {
mAdapter.getCustomLoadMoreView().setVisibility(View.GONE);
}
You can see the if clause can still be true, is that right?

Do you mean if you disableLoadmore and you want to enableloadmore again you find there was a bug in the recyclerview?

yes

The disableLoadmore method really has some bugs in current version.I'll try to fix most of them in the future.

#276 this should be done for the load more issue. @bitjjj


⚠ ClamAV has degraded performance

In 0d66504, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 69 ms

Resolved: ClamAV performance has improved in cc3f224.


WinSCP integration - right click

Hello Eugeny,
I've tried the newly added WinSCP integration and it works great. Only small issue for me is that I'm using the right click as paste (not for context menu). Will it be possible to insert the WinSCP menu also in tab header context menu?

You can configure paste on middle click either

Hi,
Is there any plan on this enhancement? I agree configuring paste on middle click is another option to get things work but if somebody prefers paste on right click then it is a problem. Tab header context menu would be great as @siccous mentioned, or atleast ability to open the context menu on Ctrl+Right Click or similar (when paste is configured on Right Click), or a configurable hotkey for WinSCP might also do the job. Everything else is great.


Auto increment version opensass publication.

types:

[x] v1.0.0
[x] v<IP_ADDRESS>
[x] v.<IP_ADDRESS>
[x] 1.0.0
[x] no finded

Update bug fix in next release


CI: Add Python 3.11 to testing

Add Python 3.11 to testing in CI.
Update PyPI metadata to reflect Python 3.11 support.

:books: Documentation preview :books:: https://poliastro--1590.org.readthedocs.build/en/1590/

Unfortunately numba has broken all Python 3.11 build attempts as they have capped python_requires to <3.11. :cry:
https://github.com/numba/numba/blob/9d034e91f881f8ff1f2a9051a757421328f02625/setup.py#L22-L47
So until there is a new numba release with this fixed there can be no numba installs for anyone. This is an example of why I made PR #1588.

@matthewfeickert It actually makes sense that they capped the version, I don't think numba + llvmlite can run on Python 3.11 yet:
https://github.com/numba/numba/issues/8304
Numba + llvmlite do dark magic on the Python bytecode and they need weeks or months to support new Python versions. So, they actively know this version is broken on Python 3.11, and poliastro would too.
I guess in cases like this it's acceptable for them to put an upper cap on the Python version?

It actually makes sense that they capped the version, I don't think numba + llvmlite can run on Python 3.11 yet:
numba/numba#8304
Numba + llvmlite do dark magic on the Python bytecode and they need weeks or months to support new Python versions. So, they actively know this version is broken on Python 3.11, and poliastro would too.
I guess in cases like this it's acceptable for them to put an upper cap on the Python version?

@henryiii had mentioned this as well, but I don't really understand the logic, unless the plan is to never release Python 3.11 wheels for numba v0.56.3 and to only release Python 3.11 wheels for later releases. Then I get it to some extent, but I'm still not sure why the need for the cap unless it is to just save time instead of letting you hit a build failure.
I appreciate that bytecode manipulation isn't easy though, so I'm not upset that they don't have a Python 3.11 release out — that's hard work in general.

unless the plan is to never release Python 3.11 wheels for numba v0.56.3 and to only release Python 3.11 wheels for later releases

Yeah, I don't think they publish wheels of old numba versions for old Python versions, precisely because they are not compatible. Just checked with https://pypi.org/project/numba/0.54.1/#files

unless it is to just save time instead of letting you hit a build failure.

Most likely. That's why we used to cap by the way: to improve the developer experience for less tech-savvy users https://github.com/poliastro/poliastro/issues/1036#issuecomment-731407255
I do understand the problems of this though (and I declare I have read https://iscinumpy.dev/post/bound-version-constraints/). But at least it worked for us in that it reduced the amount of issues that got opened because of this. Bear in mind that most poliastro users are new to Python and open source simultaneously.

@henryiii had mentioned this as well, but I don't really understand the logic, unless the plan is to never release Python 3.11 wheels for numba v0.56.3 and to only release Python 3.11 wheels for later releases. Then I get it to some extent, but I'm still not sure why the need for the cap unless it is to just save time instead of letting you hit a build failure.

As a Numba developer, I can confirm the first Numba version to support 3.11 will be 0.57.

Unfortunately numba has broken all Python 3.11 build attempts as they have capped python_requires to <3.11. 😢
https://github.com/numba/numba/blob/9d034e91f881f8ff1f2a9051a757421328f02625/setup.py#L22-L47

This statement is not accurate. We no longer pin the max python version in python_requires but instead raise an exception at runtime when setup.py is run. We did this based on a recommendation from @henryiii since we were bitten by this during previous (3.10 and 3.9) releases. So now, you can try to pip install Numba for 3.11 and it will error out, instead of looking for a much older version (several years iirc) that didn't pin via python_requires and try to install.

Thanks for chiming in @esc! That's a smart move. I recall there was a thread on Discourse or the pip issue tracker about this "heavy backtracking" triggered by version caps - putting these runtime checks in setup.py seems like a decent workaround.

I would consider the fact that the error is working as expected to be a success. python_requires was wrong and didn't do the right thing, causing unrelated errors about an old version of llvmlite not compiling (IIRC). Unlike most packages, 0.56.3's source doesn't support 3.11, so you can't ever make a wheel from that source for 3.11. It needs code changes to support 3.11, hence a new version. Numba is very special in this, because of the byte code usage, there is basically a 0% chance that they can support versions they have never seen.

I would consider the fact that the error is working as expected to be a success.

💯 yes @henryiii thank you again ❤

Nice. Only 1 error isn't bad:
=================================== FAILURES ===================================
__________ test_maneuver_constructor_raises_error_if_invalid_delta_v ___________

    def test_maneuver_constructor_raises_error_if_invalid_delta_v():
        dv1 = np.zeros(3) * u.km / u.s
        dv2 = np.ones(2) * u.km / u.s  # Incorrect dv
        with pytest.raises(ValueError) as excinfo:
            with warnings.catch_warnings():
                # Different length numpy arrays generate a deprecation warning.
                warnings.simplefilter(
                    "ignore", category=np.VisibleDeprecationWarning
                )
                Maneuver((0 * u.s, dv1), (2 * u.s, dv2))
>       assert "Delta-V must be three dimensions vectors" in excinfo.exconly()
E       AssertionError: assert 'Delta-V must be three dimensions vectors' in 'ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.'
E        +  where 'ValueError: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.' = <bound method ExceptionInfo.exconly of <ExceptionInfo ValueError('setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.') tblen=4>>()
E        +    where <bound method ExceptionInfo.exconly of <ExceptionInfo ValueError('setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.') tblen=4>> = <ExceptionInfo ValueError('setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2,) + inhomogeneous part.') tblen=4>.exconly

tests/test_maneuver.py:26: AssertionError

Something to follow up on later.

It looks like the issue comes from NumPy + Astropy quantities. Let me identify the the right version of NumPy in which this fails.

Numpy version
Test passes

1.23
Passes

1.24
Fails

The issue is caused by this line:
# src/poliastro/maneuver.py @ line 45
[(_dv * u.one).value for _dv in _dvs] * (_dvs[0] * u.one).unit

I took advantage of the situation and refactored the initialization of the Maneuver class.

Yay! This is finally working.

Thanks everyone for all the hard work in this pull-request and Numba 🚀


🚚 feat: Add 123rd CatchUp Summary

@dheerajdlalwani you haven't linked anyone on the summary👀

@dheerajdlalwani you haven't linked anyone on the summary👀

Yeah, I usually do that after adding the attendees' list.
Do you want me to add them now?
or have you started editing the summary?

Please do that... @dheerajdlalwani add image and other things

@dheerajdlalwani this might sound rude but you could have added the attendees in the time you wrote that note.. it's just matter of copy pasting and running 2 scripts

@dheerajdlalwani this might sound rude but you could have added the attendees in the time you wrote that note.. it's just matter of copy pasting and running 2 scripts

Sir, if I had the attendees list, I would've done it alone.
I had asked for both in the group.
Just like you sent me the meet screenshot, you could've sent me the attendance list and I would've had absolutely no issues updating it.

Just like you sent me the meet screenshot, you could've sent me the attendance list and I would've had absolutely no issues updating it.

I don't have the full list


Make database operations 30x faster by using SQLite

Preface
Rebalancing is a lengthy process and thus ensuring it can be resumed is rather important. Currently, the code implements
a simple database-like textual file. When script is interrupted and then subsequently restarted, the rebalancing process
can be restarted more-or-less from where it was interrupted.
The problem
Current solution is great conceptually. However, the implementation suffers from very poor performance due to multiple
factors:

spawning multiple processes carries a non-insignificant cost
re-reading a good chunk of the database file generates a lot of I/O, even if in-memory
the data structure, due ot its simplicity and lack of indexing does not scale well with large number of files

The result of this is a very poor performance during both rebalance and when script needs to be resumed. In the case of
my dataset with ~1M files resume from 500k point took close to 12 hours(!). The performance problems are magnified with
small files being present
Solutions evaluation
The first optimization I attempted was limiting re-reads for counting. However, this still proven very limiting. The
next idea I tested was using bash associative arrays, implementing an in-memory cache persisted occasionally to the
disk. Unfortunately, with 500k+ files the memory usage started to creep into 500-600-800MB range, with more and more
being ostensibly leaked. This shows clearly that bash array were never designed for such a dataset.
I scraped the idea and came back to the drawing board. After ad-hoc testing, I implemented a prototype based on SQLite
database, that is stored in a dedicated file as well. The time for read-save operations were cut by orders of magnitude,
despite still launching at least 2 processes for every file. As a next step I implemented a delayed database flush, with
60s timeout, further cutting the db operations time.
Potential impact for users
The change carries some impact to systems utilizing this project.

SQLite database is a binary blob, that is ~30-40% larger than a text file

while the database is no longer readable as a text file, the sqlite3 tool offers an easy interface
README.md contains a simulated transaction, so that unfamiliar users can easily interact with the db

The usage of SQLite introduces a new dependency on sqlite3

sqlite3 is already present on systems that are most likely the target of this script
I verified existence of a compatible sqlite3 binary on TrueNAS SCALE, TrueNAS CORE, macOS 13, as well as Ubuntu
Debian doesn't ship with sqlite3 by default, but package is in the default repo

With the delayed-flush of the database to disk, there's a potential of rebalance state being lost

at most 60 seconds of the progress can be lost when interrupted
re-balancing a file more times than requested doesn't carry a risk, thus I see this as non-issue

Previously built databases are no longer usable

this PR includes convert-legacy-db.sh that handles the migration
the script when started in presence of the old database will abort to ensure balancing doesn't start from scratch
unintentionally
documentations has been updated to cover that

Testing methodology

I used my preexisting database file where most of the files will be hit

database starting point is being equal for all scripts
new version gets cp rebalance_db.txt_copy rebalance_db.txt ; ./convert-legacy-db.sh (this takes ~35 seconds)
old version gets cp rebalance_db.txt_copy rebalance_db.txt
in other words, both versions operate on the same logical set of data

benchmark pure database operations (commented-out cp/mv/rm)
the pool uses HDDs with SSDs for metadata and contains ~500k files
command run: time ./zfs-inplace-rebalancing.sh --checksum false --passes 2 /mnt/testdata > rebalance.log

Test results

current .txt-based database: 29h 14min
SQLite database with per-file flush: 1h 32min
SQLite database with delayed flush every ~60 seconds: 56min

In other words, it's almost a 30x speed-up :)
There are a few smaller low-hanging fruits for optimization, but I'm tackling one thing at a time.
WDYT?
...about this PR and the idea itself? Marking as draft as of right now as I didn't have a chance to test on FreeBSD
yet (and there are minor bugs with special characters ;)).

Hey @kiler129 ! :nerd_face:
Thx for the really in-depth analysis and work you put into this :astonished: :heart:
I have been thinking about this for a bit and it really looks like a great improvement to the script. I have two thoughts we may want to discuss:
1. Should we keep both the old/current as well as the new script?
Since this script is a pretty big change to "how things work", as well as what a potential user has to know about that to be able to work with it (reading txt file vs sqlite db, etc.), I am wondering if we should keep the old script available for people with a small usecase, and add this version for bigger usecases. I think maintaining both versions shouldn't be that big of a deal (at least if you can keep an eye on it as well :sweat_smile: ).
2. Should we consider "moving" to a "real" programming language to implement this script?
Looking at how this version works, I am wondering if a shift to a "real" programming language that works on most systems, like f.ex. golang (for performance) or python (for convenience and accessibility) would be the "better" path for future optimization? The single reason I initially used Bash to implement this script is because it was a one-time operation for me, which I will probably never do again. Bash is hard though, especially optimizing, debugging and testing it. Utilizing a programming language, accessing a database, as well as providing the CLI tools to work with it would be much easier.
Note: Following this route does not necessitate "trashing" this PR, it might simply be a third version, or an evolution of this PR.

Hey @kiler129 ! 🤓 Thx for the really in-depth analysis and work you put into this 😲 ❤

Don't we all start with "it will be just a small fix"? ...and that's just the beginning** 😄

1. Should we keep both the old/current as well as the new script?

I was battling with this as well: should we make this a parameter... or maybe support both based on existence of the current "resume" file? What about the default? (should we feature-check or....)
This is exactly why I put this PR as a draft to see what's the best compromise for that. I think if the intention would be to keep the current database a smart way would be to:

Default to SQLite so new users can benefit from the speed-up

Feature-check for sqlite3 and behave git-way if missing, i.e. tell the user that sqlite3 isn't available and suggest that it should be installed. In addition provide an opt-in to force text file with a warning of the speed drawback, esp. problematic with large pools but I wouldn't suggest that in the error message as ideally you don't want people using txt if they can use sqlite3 ;)
The user should be able to decide to opt-in for textual database, even if sqlite3 is available (but maybe it's broken/substandard/etc)
I believe this can be solved with an option --db=[sqlite,txt]. When option is present it will force the script to fail if e.g. sqlite3 isn't available but --db=sqlite was passed.

Handle old databases gracefully

If old database is detected, put a clear/big warning "hey, it's suboptimal but I will continue with the old method". In essence this will behave like passing --db=txt, but will also suggest the db conversion or just running with --db=sqlite/renaming old db to start from scratch
If old db is present and --db=sqlite is specified, continue using sqlite3 but also add a warning "hey, your old DB will be outdated, rename it to avoid confusion`

--

2. Should we consider "moving" to a "real" programming language to implement this script?

The good: easy of maintenance
My software engineer soul screams "yes!".... and I even started prototyping it from scratch. First I started with PHP due to its very vast SPL (as it should be a single file, not a dependency-hell) and good select() and process control support. Then I realized while our servers do have PHP, storage boxes usually don't and started considering other possibilities.
The bad: portability
....and then the realization was sad. Bash is horrible, but portable-ish. Perl would arguably be even a worse choice given the write-once read-never nature. While Python is available on most system, by design its standard library is very slim and pip isn't an option here. Additional complexity is the versions shipped, which in case of Python actually matters quite a bit, as I learned in my last project. In addition, Python is painfully slow with many non-obvious things (e.g. some mass-string operations that take 1-2s on slow PHP take over an HOUR in Python 3, while select() being performance-fragile).
However, I started digging deeper in a hope we can MAYBE at least justify this by not using cp or mv or other CLI tools with exec but actually use native functionality. However, it seems like nobody wants to deal with complexity of VFS et. al. in a general programing language: see the red box in shutil.copy.
The ugly: real world has no alternatives
It seems like there are no other universal candidates sadly. I would love to use anything else: Go, Rust, Swift... you name it. But sadly it seems like Bash is the best compromise here, especially while working with appliances like TrueNAS that prevent users from installing any software. This is also why I maintain this abomination of shell scripts for monitoring, even if doing that in a normal programming language would've been orders of magnitude easier.

Off-topic:
** Issue awaiting; I need to do much more testing but tl;dr the code works great if you can ensure nothing is writing to the filesystem. However, when you cannot be sure things get messy. Even with md5 check it's not safe to run it when processes can potentially write/have files open. At this point there are 3 software engineers/Linux admins poking at how to do it safely ;) If our ideas will work in practice on a test 20TB pool with many apps trying to grab files and we don't destroy any files, the costly checksum can probably be completely avoided + the code could guarantee data safety.

I was battling with this as well: should we make this a parameter... or maybe support both based on existence of the current "resume" file? What about the default? (should we feature-check or....)

I really don't want to over engineer this. The chance of somebody using the initial script and then wanting to migrate to the SQLite script is minuscule. The fact that a migration is already possible with your PR is more than good enough. I would simply propose to have two separate script files in this repo, one with a text file as DB, and one with SQLite. That way a user can decide for themselves which version is right for them.
Also, if you intend to further refine this script it might actually be better to create your own repository, f.ex. as a fork. I really don't want to make this script any more complex than it already is. If it needs to support more usecases, I would rather switch to a language like golang and provide cross platform executables. For the change of using sqlite instead of a text file, I would be fine with having a separate script in this repo, but if you intend to support running this script on changing data (which is currently explicitly stated in the README as not supported, not even data that is actively read ) I would not want to support such things in a simple bash script, because I would want to actually feel comfortable maintaining it and ensuring it works as intended :sweat_smile:

However, I started digging deeper in a hope we can MAYBE at least justify this by not using cp or mv or other CLI tools with exec but actually use native functionality. However, it seems like nobody wants to deal with complexity of VFS et. al. in a general programing language: see the description of shutil.copy and the sad red box on the top of the same page.

Even using a golang program for most of it an executing a bash command from within for things that are not supported natively would be preferred by me. I also have to say that, as I mentioned initially, I don't really have a usecase for this right now and probably not for the foreseeable future, meaning its not likely I will invest a lot of time into this.

This breaks with filenames that have apostrophes, but I much prefer this approach to the text file

This breaks with filenames that have apostrophes, but I much prefer this approach to the text file

So one way to fix it is by doing '${1//'/\'\'}' which replaces all single apostrophes with double single which sqlite will auto convert on parsing.
Also, another bug I noticed is that since the rebalance function is called in its own scope rebalance_cache_db string will be empty if you finish before the interval and its called outside the function loop. One way to avoid it is to use lastpipe according to FAQ https://mywiki.wooledge.org/BashFAQ/024

I also highly recommend using the go lang since I already had to use it since the problem I was having was the long wait times for it to find all the file counts on my system. I implemented using locar to get my file count faster since I have the ZFS system on a mirror array.

Is it really a good idea to use sqlite for this? Isn't sqlite well known to behave in a weird way on zfs currently?


Add missing link.

Also fixed a typo

Thanks, @ZevEisenberg Somehow missed it ... :/

Thanks, @ZevEisenberg Somehow missed it ... :/

@fassko did you mean to merge this?

@fassko did you mean to merge this?

Ought my bad, merging it now. Thanks. All this lockdown is making my brain not functional. :P

Ought my bad, merging it now. Thanks. All this lockdown is making my brain not functional. :P


'Deprecation of implicit default for trailing optional arguments' Causing issues with erasable setters

Bug Description
As a result of the (upcoming) changes in 0.22 and 0.23 with Option<T> arguments requiring a #[pyo3(signature=...)] link to migration guide.
This causes a problem for setters of a pyclass, which can be erased by setting None, since you're not allowed to specify a signature on a setter.
This is caused by #2935. In this case, I do not need a default argument.
However, it will be required in version 0.23.
Steps to Reproduce
use pyo3::prelude::*;

#[pyclass]
struct SimpleClass {
    field: Option<u32>
}

#[pymethods]
impl SimpleClass {
    #[new]
    #[pyo3(signature = (value=None))]
    fn new(field: Option<u32>) -> Self {
        Self { field }
    }

    #[getter]
    fn get_field(&self) -> Option<u32> {
        self.field
    }

    /// This causes issues
    #[setter]
    fn set_field((&mut self, field: Option<u32>) {
        self.field = field;
    }
}

Backtrace
No response
Your operating system and version
Windows/Linux (All effected)
Your Python version (python --version)
Python 3.10.12
Your Rust version (rustc --version)
rustc 1.79.0 (129f3b996 2024-06-10)
Your PyO3 version
0.22+
How did you install python? Did you use a virtualenv?
apt + venv
Additional Info
This currently causes non-removable warnings, however in the future this will break code.
EDIT: Added more information

After some digging, I found a possible solution, which is to check the function type to not be a setter method here.
https://github.com/PyO3/pyo3/blob/8f7450e33d9edcab790d5b2ad303cbb81a86536e/pyo3-macros-backend/src/deprecations.rs#L53-L60
This can probably be done by adding && !matches!(spec.tp, FnType::Setter(_)).
But I am not sure if an error will occur in 0.23 as a result of something somewhere else.


[DOC] Update documentation to reflect PPL support for cross cluster queries

What do you want to do?

[] Request a change to existing documentation
[X] Add new documentation
[ ] Report a technical problem with the documentation
[ ] Other

Tell us about your request. Provide a summary of the request and all versions that are affected.
We need to add information about the newly added ability for PPL to do cross cluster queries
What other resources are available? Provide links to related issues, POCs, steps for testing, etc.

@nitincd: Is this related to a specific version of OpenSearch?

Looks like this is a 2.7 feature:
Description of Feature: We are planning to add Cross Cluster support for PPL/SQL queries. Today, customers are able to use PPL/SQL to query and visualize the data stored in an index in an OpenSearch cluster. However, this is limited to indexes on one cluster. We seek to enhance this capability so that the customers can fetch data from multiple OpenSearch clusters across domain boundaries. We are only looking to extend this capability for OpenSearch indexes and not looking to fetch data from other kinds of databases (waiting on Neo for that).

Dev issue: https://github.com/opensearch-project/sql/issues/789

Here's some initial documentation on the feature: https://github.com/opensearch-project/sql/blob/main/docs/user/ppl/admin/cross_cluster_search.rst
The issue is related to this: https://opensearch.org/docs/latest/security/access-control/cross-cluster-search/

Reassigning to Fanit. We will add this section under PPL, and move PPL topics under Observability.


v0.5 Release Schedule & v0.6 Discussion

v0.5 has had plenty of progress, most of which I am very satisfied with.
As such, I would like to propose releasing v0.5, and shifting our focus to v0.6 where we focus on:

general structure improvements
making the module system more intuitive
documentation and extensibility

Blocking Issues

#178 general cleanup for Nix & introduction of warnings & assertions
#154 update indent-blankline.nvim to v3

v0.6 Goals

Make existing structure more intuitive, this should be a positive change for contributors and existing maintainers alike.

A cleanup for the existing extended stdlib.
A cleanup of the confusing call chains around the module system.
Possible NixOS module
Proper documentation of the available library functions

#133
Customization for the Neovim builder (adding extra lua packages, files and so on to the wrapper)
Cleaning of the languages module, as previously referenced here

Non-goals (but still nice to work on)

#126 - the packaging for sqlls is near impossible, but a workaround may be found
#85 - finalize the status of this issue as permanently fixed, or document breakage/workarounds

Release Schedule
19/11/2023 - start of feature freeze
20/11/2023 - branch out from master
30/11/2023 - deadline from merging 0.5 branch into master
1/12/2023 - start working on v0.6
Maintainer CC
@horriblename @FrothyMarrow

v0.5 is out. We can start focusing on v0.6 from now on.


Broken link in Speech to Text docs

What's the broken link? Can you add more information about this issue?

I think this was fixed.


Export types for TS inference

Screenshot
Getting this TS error in Molt Command:
src/ParameterSpec/validate.ts:6:14 - error TS2742: The inferred type of 'Result' cannot be named without a reference to '../../node_modules/alge/dist/esm/core/types.js'. This is likely not portable. A type annotation is necessary.

6 export const Result = Alge.data(`Result`, {
               ~~~~~~

src/ParameterSpec/validate.ts:6:14 - error TS2742: The inferred type of 'Result' cannot be named without a reference to '../../node_modules/alge/dist/esm/data/types/Controller.js'. This is likely not portable. A type annotation is necessary.

6 export const Result = Alge.data(`Result`, {
               ~~~~~~

src/ParameterSpec/validate.ts:6:14 - error TS2742: The inferred type of 'Result' cannot be named without a reference to '../../node_modules/alge/dist/esm/record/types/StoredRecord.js'. This is likely not portable. A type annotation is necessary.

6 export const Result = Alge.data(`Result`, {
               ~~~~~~

Found 3 errors in the same file, starting at: src/ParameterSpec/validate.ts:6

Description
Try fixing this by exporting types from Alge...
See if having another exported entrypoint of alge/types solves this for the consumer.
Repro Steps/Link

The solution sort of worked, however, consumers still need to do at least this:
import type * as _ from 'alge/types'

Maybe there could be a way to export the types onto the Alge namespace so that the inference works without the still confusing workaround? ... We could take them away at Alge.Types.* ...?

Closed by https://github.com/jasonkuhrt/alge/commit/504f4de81e05159a56a2fbf8683c4bbc172bb227

Yep that fixed it! At least this case.


Create GitHub workflow to automatically put community PRs on CC Search repos in the correct project

Problem Description
Pull requests from the community (anyone other than CC staff) on CC Search related repos need to be moved to the "In Progress (Community)" column in the Active Sprint – CC Search project.
Solution Description
We need to create a GitHub workflow in this repo that runs every hour and checks for PRs on the CC Search related repositories that don't have an associated project (PRs by CC staff are automatically moved by a separate GitHub workflow that's already deployed). We need to move these PRs into the correct project and column.
Additional context

CC Search related repos are:

https://github.com/creativecommons/cccatalog
https://github.com/creativecommons/cccatalog-api
https://github.com/creativecommons/cccatalog-frontend

GitHub Actions documentation
Project automation workflow example on cccatalog-frontend
Discussion about why the project automation workflow above doesn't work for community PRs: https://github.com/creativecommons/cccatalog-api/issues/456

I would like to work on this. Can you please assign this to me?

@subhamX per our new contribution guidelines, we are no longer assigning things to people if they are marked "help wanted", anyone is welcome to send a PR without permission.

I am taking up this issue too

Oh! Sorry for my last comment, I wasn't aware of it.
Anyhow, I searched for actions in the marketplace which satisfies the above requirements but wasn't able to find one. Should I build a new  GitHub Action using JavaScript using GitHub APIs, which first fetch all pull requests that are created an hour ago and then update the Project Dashboard.

But for updating the Project Dashboard, you need to check if the pull request has been made by  member outside the organization.
Is there any way to get it using Github Action?
I couldn't find one.

You don't need to check whether the pull request has been made by someone outside the organization, PRs made by people in the organization will automatically be moved to the correct project. You just need to make sure that the PR does not already have a project associated with it.
@subhamX sure, that would be fine.

Hey @kgodey, Sorry for referencing this issue multiple time, in my initial commits the added workflow wasn't triggering on the actions dashboard that's why I pushing the code multiple times. It was a silly mistake from my side as I had changed the Cron Expression and also the credentials were invalid. Anyhow, I have created the GitHub action with the above functionality. Took a lot of time to test my action especially for non-community members after creating a test organisation. Request you to please review my PR.


Fix PostgreSQL sequence creation error

Sometimes, when application starts again (not firstly) and tries to create non-existing tables, then executing SQL sequences without IF NOT EXISTS flag that causes an exception (see a screenshot below).

Thanks @SoKnight, LGTM :tada: What do you think, @j256?

I compiled ORMLite JDBC jar from sources forked by me and test it.
It's working fine, see a screenshot :)

I don't think isCreateIfNotExistsSupported() is the correct check here. It checks if CREATE TABLE IF NOT EXISTS is supported, which is PostgreSQL 9.1 and later. CREATE SEQUENCE IF NOT EXISTS however is only supported in 9.5+.

I don't think isCreateIfNotExistsSupported() is the correct check here. It checks if CREATE TABLE IF NOT EXISTS is supported, which is PostgreSQL 9.1 and later. CREATE SEQUENCE IF NOT EXISTS however is only supported in 9.5+.

Oh yes, sure, it's very important, lol...


Feature: Added support for choosing the dual pane orientation

Summary
Resolved / Related Issues

Closes #12427

Steps used to test these changes

Check for splitting

Click the Tab Actions button
Click 'Split pane'
Add pane in both ways

Check for arranging

Click the Tab Actions button
Click 'Arrange pane'
Arrange panes in both ways

Check for the saved arrangement of panes

Arrange panes vertically
Close the window
Re-open

@yaira2 because the text ShowTabActions has button and the control type of ToggleSwitch is button thus the text includes the control type name, the AXE test is failing. Could you consider text that doesn't include button?

The "Open in secondary pane" action opens an additional pane even when two panes area already opened. The desired behavior is to replace the content in the other pane (we can display a prompt to confirm that the user wants to do this).
Continue where you left off doesn't restore with the correct arrangement.
The cursor for the gripper doesn't update after changing the arrangement.

If one tab is arranged vertically and the other horizontally, the arrangement menu doesn’t update when switching between tabs.

Can you ever be in a situation where two tabs are open in different arrangements?

Suppressed by preventing opening more than 2 panes.
I cannot repro.
Fixed.
Fixed.

All the issues I reported (including the second one) are resolved.

We might need to remove the command and making the IsChecked binding two way.


add support for the DysonPurifierHumidifyCoolFormaldehyde (TP04)

ERROR (MainThread) [homeassistant.config_entries] Error occurred loading configuration flow for integration dyson_cloud: cannot impor
t name 'DysonPurifierHumidifyCoolFormaldehyde' from 'libdyson' (/usr/local/lib/python3.10/site-packages/libdyson/__init__.py)

Hello,
is it possible that someone can add the 'DysonPurifierHumidifyCoolFormaldehyde' version of the Dyson pure cool tower (TP04)
to the code?
Thanks.

Hi! Formaldehyde devices support has been added on the new forks: https://github.com/libdyson-wg/libdyson-neon and https://github.com/libdyson-wg/ha-dyson


Permission changer

#18 implemented based on code sample from tweet and from code example

This is easily solved by just installing the app with the -g flag to grant all permissions. No need for Test Butler to do this.

Yes -g flag works.
But there are scenarios in which you actually testing permission system. For example:
public class TestAccessToCamera {
     @Test
     public void TestIfPermissionAlreadyGranted(){
     }

     @Test
     public void TestIfPermissionGranted(){
     }

     @Test
     public void TestIfPermissionNotGranted(){
     }
}

Instead of completely reinstall app you may just revoke permissions in @Before methods

These situations are usually better tested with unit tests. If you really wanted to verify the end to end behavior of your app, you'd need to use UiAutomator and actually grant the permissions the way a user normally would.
Also, I believe granting a permission to an app causes the app process to restart, which would break Instrumentation tests anyway.

These situations are usually better tested with unit tests. If you really wanted to verify the end to end behavior of your app, you'd need to use UiAutomator and actually grant the permissions the way a user normally would.

UIAutomator can not revoke permissions.
I have described case in which each of the tests methods should have own state of permissions at the beginning of the test

Also, I believe granting a permission to an app causes the app process to restart, which would break Instrumentation tests anyway.

See the tests. No restarts happened during granting/revoking permission


style: loading eslint-plugin-compat for compat checks

🧰  Changes
With https://github.com/readmeio/markdown/pull/41 and String.matchAll not being available in Node I thought it's probably a good idea to pull in eslint-plugin-compat for running compatibility checks on the code here.
Amusingly, even though matchAll isn't available in IE 11, it's not triggered with this plugin (and yet it pulls data from https://caniuse.com/#feat=mdn-javascript_builtins_string_matchall?), but what is triggered is this:
/Users/jon/code/readmeio/markdown/processor/parse/magic-block-parser.js
  185:23  error  URL is not supported in op_mob 12.1, op_mini all, IE Mobile 10, IE 10, bb 7  compat/compat

I would have thought that Babel would polyfill URL back in dist/main.js, but that doesn't appear to be the case right now and I'm not sure if I have a core misunderstanding of how Babel works or what.
Also... do we support IE 10?

Maybe it’s not shimming it because we’re only targeting the last two versions of every browser?
https://github.com/readmeio/markdown/blob/bf5e3a0e99215387a53116b5fa64dcff8c81f56e/.babelrc#L7

I added that same Babel config to package.json for the plugin to pick it up, but still seems to be a problem. Very weird.


add BinExport of small ELF ARM sample

for https://github.com/mandiant/capa/pull/2340

need to recreate this using the proper BinExport extension


Add documentation for menus, toolbars, and groups

The ## Localize a command topic under Commands.md should be made into its own document since it doesn't apply to commands only anymore.


update cronjob schedule

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.0%) to 79.273%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
807

Relevant Lines:
1018

💛  - Coveralls


AwsXrayRecoroder trying to modify a non-concurrent collection without exclusive access?

Hi there I can't really provide code snippets for the project, but the context is that we are simply trying to call AWSXrayRecorder.Instance.BeginSubsegment("some name"); inside of a web api and it throws the following exception:
Error Message:
 System.InvalidOperationException : Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
Stack Trace:
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
   at Amazon.XRay.Recorder.Core.Internal.Emitters.JsonSegmentMarshaller..ctor()
   at Amazon.XRay.Recorder.Core.AWSXRayRecorder.get_Instance()
   at <redacted>
   at <redacted>
Error Message:
 System.InvalidOperationException : Operations that change non-concurrent collections must have exclusive access. A concurrent update was performed on this collection and corrupted its state. The collection's state is no longer correct.
Stack Trace:
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
   at Amazon.XRay.Recorder.Core.Internal.Emitters.JsonSegmentMarshaller..ctor()
   at Amazon.XRay.Recorder.Core.AWSXRayRecorder.get_Instance()
   at <redacted>
   at <redacted>
   at <redacted>

This is happening from inside a dependency injected class, so it would follow the following pattern (where everything is scoped as far as DI goes)
Controller --> Provider --> ProviderWithXraySubsegment
We do see the API tracing the segments started by making the Http Request just fine, but when we add subsegments, it seems to fail with this kind of an error.
This will impact whether or not we use X-Ray at our business. We have also tried using the TraceMethod functions instead of creating subsegments.

Hi @jaybyrrd ,
Thanks for posting the issue. From the error stack it's hard to understand what is happening.

What is the framework you are using? .NET45 or .NET Core?
For the flow Controller --> Provider --> ProviderWithXraySubsegment can you clarify a bit? A request goes to controller -> then a provider (is this DI ?) -> then ProviderWithXraySubsegment (is this DI?) ? Am I correct? Is there any asynchronous, multithreaded path ?
Can you isolate the reproduction of this error to a some small project and we can work on this.

Hi there,

.NET Core
All classes are dependency injected. Controller -> Scoped Dependency Injected Class -> Scoped Dependency Injected Data Layer. Per scope, the behavior is relatively synchronous, but there is a chance that multiple threads executing the same logic are running concurrently for other requests.
I am trying to work on it now in terms of isolating the issue. It only breaks some of the time though, so it is tough. I will walk you through the overall flow.
This is happening on multiple ASP.NET Core endpoints. The general flow is that we have our controller, which has a dependency injected class (scoped) that has another dependency injected class for our data layer. The data layer uses dapper. We are trying to trace the time around the data layer operations.

Like I said I will try to work to create a sandbox project either this evening or during the day, but I hope those details help.

Two Stacktraces with line numbers that I just managed to pull:
System.NullReferenceException : Object reference not set to an instance of an object.
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.set_Item(TKey key, TValue value)
   at ThirdParty.LitJson.JsonMapper.RegisterExporter[T](ExporterFunc`1 exporter) in \aws-xray-sdk-dotnet\sdk\src\Core\ThirdParty\LitJson\JsonMapper.cs:line 914
   at Amazon.XRay.Recorder.Core.Internal.Emitters.JsonSegmentMarshaller..ctor() in \aws-xray-sdk-dotnet\sdk\src\Core\Internal\Emitters\JsonSegmentMarshaller.cs:line 41
   at Amazon.XRay.Recorder.Core.Internal.Emitters.UdpSegmentEmitter..ctor() in \aws-xray-sdk-dotnet\sdk\src\Core\Internal\Emitters\UdpSegmentEmitter.cs:line 45
   at Amazon.XRay.Recorder.Core.AWSXRayRecorder..ctor() in \aws-xray-sdk-dotnet\sdk\src\Core\AWSXRayRecorder.netcore.cs:line 47
   at Amazon.XRay.Recorder.Core.AWSXRayRecorderBuilder.Build() in \aws-xray-sdk-dotnet\sdk\src\Core\AwsXrayRecorderBuilder.cs:line 262
   at Amazon.XRay.Recorder.Core.AWSXRayRecorder.get_Instance() in \aws-xray-sdk-dotnet\sdk\src\Core\AWSXRayRecorder.netcore.cs:line 156

Which results from a call to:
AWSXRayRecorder.Instance.TraceMethod("somestring", () => _repository.Execute(parameters));

There is another stacktrace I know I have seen I am trying to reproduce

I have run all the tests that caught this exception in our software as well as our integration tests on the deployed API with this version of the software and I can no longer reproduce the initial issue I was posting about.
I do have concerns about whether or not I have introduced a lock that is actually safe since this change was quick and made to one place with only slight consideration to overall usage, but it still passes all unit tests locally. Please let me know if this works or if we need to do something more involved.

Hi @jaybyrrd ,
Thanks for the PR. Allow me some time to understand the effect of adding lock in the hot code path. I will post an update soon. I greatly appreciate your efforts.

Sounds good, the change I made was very much a shot in the dark and while it seems to work, I definitely think a more familiar set of eyes are needed.

I have the same problem here. It looks like to be intermittent.

@yogiraj07 I have updated the PR and I think it satisfies fixing the bug. I am going through final stages of testing here, but wanted to follow up on this.

@matheusmaximo the pull request has been merged and you should be good to go.

Still waiting for a release to check if it works on mine.

I have created a pull request to create a release commit @yogiraj07

@jaybyrrd and @matheusmaximo , I would make a release per schedule soon. Please let me know if this issue is currently blocking you and will prioritize accordingly.

Hello,
This has been fixed in release 2.6.2. Please refer to the Changelog.
Thanks for being patient.
Prashant.

It worked for me. Thank you all.

Just fyi, this issue is still not fixed. The root cause is in LitJSON which it appears that AWSXRayRecorder has a dependency on.  I have filed a PR with that repo and hopefully it will be merged soon - https://github.com/LitJSON/litjson/pull/142.

Just to provide an update here, my pr for the fix in LitJSON (https://github.com/LitJSON/litjson/pull/142) was merged on 11/19/23 - https://github.com/LitJSON/litjson/pull/142#issuecomment-1817955144


update adding IDP section

Edits throughout and updating the "Add and IDP" section to call out where instructions do not need to be GitHub specific.

/lgtm

@lamek can you squash these commits?

@vkareh all set. Thanks.

Thanks! /lgtm


fix validate uint type of struct

change format for printf, fix validate uint field type of struct
issue #64

Coverage remained the same at 89.186% when pulling 442defc4d2abe65d8dee136c196f6c0e28bf0d43 on amjustdoit:patch-1 into ecd480c10487a2f84c890841d9fdcaa2101f2f90 on thedevsaddam:dev.

Coverage remained the same at 89.186% when pulling 442defc4d2abe65d8dee136c196f6c0e28bf0d43 on amjustdoit:patch-1 into ecd480c10487a2f84c890841d9fdcaa2101f2f90 on thedevsaddam:dev.


Python

Create some projects using python.

Can I work on this???

Sure. remember to make changes creating a new folder

Others can contribute here


[#OSF-7977]Forking a project with a long name fails

Purpose
Fix the problem when fork a project with a very long name will fail.

Changes
Now when you create a new project, the length of the title cannot exceed 189 character

Side effects

Ticket
https://openscience.atlassian.net/browse/OSF-7977

What happens if you do a chain of forking projects? If you start with "This project has a very long name and will be fine to start with but if we keep on doing things and adding words it will quickly become ridiculous and cause trouble" and fork that then fork that then fork it that and so on, will it ever fail? Or do we have something somewhere that keeps us for having "Fork of Fork of This project has a very long name and will be fine to start with but if we keep on doing things and adding words it will quickly become ridiculous and cause trouble"?


make api; make; Then make failure

hello:
brocaar
i got a error message when compiling the source.
failure message:
api/application.pb.gw.go:37: cannot use "github.com/brocaar/lora-app-server/vendor/google.golang.org/grpc/codes".InvalidArgument (type "github.com/brocaar/lora-app-server/vendor/google.golang.org/grpc/codes".Code) as type "google.golang.org/grpc/codes".Code in argument to "google.golang.org/grpc/status".Errorf
the protoc-gen-grpc-gateway had generated source code: application.pb.gw.go: the line 36-38
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
is grpc too old？？

you grpc is new. and protoc-gen-grpc-gateway is old.

What should I do? Upgrade or downgrade? thanks
grpc: v3.0.0
the cmd of gateway:
go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

in api/gen.sh, you could see that:
# generate the gRPC code
protoc -I/usr/local/include -I. ${GOPATHLIST} --go_out=Mgoogle/api/annotations.proto=github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api,plugins=grpc:. channelList.proto node.proto application.proto downlinkQueue.proto common.proto user.proto gateway.proto

and this param is point:
--go_out=Mgoogle/api/annotations.proto=github.com/grpc-ecosystem/grpc-gateway/third_party/googleapis/google/api,plugins=grpc:.

specified the "annotations.proto" file.
event you "go get github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway", get package "grpc-gateway" in $GOPATH, the vendor folder under root of project still have another version of grpc-gateway.
so you can use the older grpc to match the old grpc-gateway under vendor folder. or delete the grpc-gateway under folder.


Buy me a coffee section is not responsive new

This is a(n):

[ ] Update to an existing Animated Button
[ ] Any Error
[ ] Proposal to the Repository
[ ] Documentation / README.md changes

Details:

@Spyware007 I have created a new one can you please assign me


Unexpected token: export

Getting an error: SyntaxError: Unexpected token export
Works fine when function invoked locally, but not on lambda.
I'm guessing that babel isn't transpiling the code?
Error on CloudWatch logs:
Syntax error in module 'handler': SyntaxError
(function (exports, require, module, __filename, __dirname) { export const fetchQuotes = (event, context, callback) => {
^^^^^^
SyntaxError: Unexpected token export
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:542:28)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)

serverless.yml
service: blah
plugins:
  - serverless-webpack
custom:
  webpackIncludeModules: true
provider:
  name: aws
  runtime: nodejs6.10
  memorySize: 128
package:
  individually: true

...

webpack.config.js
var slsw          = require('serverless-webpack');
var nodeExternals = require('webpack-node-externals');

module.exports = {
  entry: slsw.lib.entries,
  target: 'node',
  devtool: 'source-map',
  externals: [nodeExternals()],
  module: {
    rules: [{
      test: /\.js$/,
      loader: 'babel-loader',
      include: __dirname,
      exclude: /node_modules/,
    }]
  }
};

package.json
{
  "name": "blah",
  "version": "1.1.0",
  "description": "A starter project for the Serverless Framework with ES7 support",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/AnomalyInnovations/serverless-es7.git"
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-plugin-source-map-support": "^1.0.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-3": "^6.24.1",
    "serverless-webpack": "^3.1.0",
    "webpack": "^3.6.0",
    "webpack-node-externals": "^1.6.0"
  },
  "dependencies": {
    "babel-runtime": "^6.26.0",
    "source-map-support": "^0.4.18"
  }
}

handler.js
export const fetchQuotes = (event, context, callback) => {
  const response = {
    statusCode: 200,
    headers: {
      "Access-Control-Allow-Origin" : "*",
      "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS
    },
    body: JSON.stringify(event)
  };

  const fetchData = async () => {

  }

  callback(null, response);

  // Use this code if you don't use the http event with the LAMBDA-PROXY integration
  // callback(null, { message: 'Go Serverless v1.0! Your function executed successfully!', event });
};

And this is what the console logs when I punch sls deploy:

Serverless: Bundling with Webpack...
 Ignore messages from SLS.
Serverless: Packaging service...

@Yorgg Just a quick check, do you have a .babelrc file in your directory?

Yessir,
It is in the root and contains the following:
{
  "plugins": ["source-map-support", "transform-runtime"],
  "presets": ["es2015", "stage-3"]
}

@Yorgg This looks good. I'd need to try it out to see whats going on. Do you have it in a  repo I can use?


papermerge how to edit config?

Hello @alexbelgium ,
can you tell me how it would be possible to set another parameters in papermerge.conf.py?
Especially, I'm looking for the IMPORT_MAIL_* parameters to collect all attachments from my Inbox.
Best
didiatworkz

Hi didiatworkz, thanks for your interest.
The easiest way to add custom env variables is though the config.yaml situated in /config /addons_config /papermerge.
This won't appear yet, it will be in the next version :) I'm pushing it now. Please let me know how it goes!

Config.yaml
Custom env variables can be added to the config.yaml file referenced in the addon options. >Full env variables can be found here : https://papermerge.readthedocs.io/en/v1.4.2/settings.html. It must be entered in a valid yaml format, that will be verified at launch of the addon.

Btw, is papermerge really better than paperless-ng or nextcloud? I'm not a user myself but was wondering about the fact of maintaining several apps with the same function ;) thanks for your input!

Hello @alexbelgium,
your change not work as aspected..
Did I need any keyword for the yaml file?
config:
  xxxxx: xxx

Your totally right - I test currently both systems (papermerge and paperless-ng) but I would not say that nextcloud falls into this category.
But paperless-ng has much more functionality as papermerge for my first opinion.
When I test IMAP import, maybe I can tell you which of the two is better.
Best
didiatworkz

Full config exposed, so I'll close the issue. Please let me know how it goes!


fix: build/release workflow fails

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

Codecov Report

Merging #214 (c4cbd8a) into main (2974dfe) will increase coverage by 9.55%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #214      +/-   ##
==========================================
+ Coverage   83.33%   92.88%   +9.55%
==========================================
  Files           2        2
  Lines         126      478     +352
  Branches       31       39       +8
==========================================
+ Hits          105      444     +339
- Misses         21       34      +13

Impacted Files
Coverage Δ

example/src/main.ts
95.65% <100.00%> (+7.19%)
:arrow_up:

src/index.ts
91.76% <100.00%> (+9.76%)
:arrow_up:

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 397d3e0...c4cbd8a. Read the comment docs.


Fix Issue #98

Fix for issue #98
Allows users to retrieve group membership for computers.

Looks good, thanks @oze4 !


Always on Top stopped working

Microsoft PowerToys version
v0.62.1
Running as admin

[X] Yes

Area(s) with issue?
Always on Top
Steps to reproduce
Type Activation Shortcut  for selected window
✔ Expected Behavior
Window stays on top
❌ Actual Behavior
Nothing happens
Other Software
No response

Not able to repro this, going to close :)


refactor: ignore vscode history folder in git

Ignore .history/ directory in git.
After using Visual Studio Code to work with this repository, many files remain in the .history directory that git show as "new" but all should be ignored. Based on this, a .gitignore file is updated.
this is a small change

If using the local-history plugin, this issue may be of interest: https://github.com/zabel-xyz/local-history/issues/26
There are instructions to put the history data in the .vscode directory to avoid adding to every .gitignore file.

Yes, you're right, now it looks more like I not set my local vscode environment optimally. :roll_eyes: (fixed in my workspace)
I don't know how many users know about this option in local history extension (unfortunately it's not the default behavior)... so if you think this is not a beneficial change, reject this PR peacefully :wink:
Thanks for the reply and investigation :+1:


Floating button should use accent color

According to Material design:

Use the accent color for your primary action button and components like switches or sliders

Current templates use md-primary, can you add an option to set the class for the buttons?
Thanks

I guess it's doable, care to make a PR for this?
Otherwise as a quick solution you can probably use a custom template you pass to the directive containing the classes you need.

Yep, I can make a PR with the change md-primaryto md-accent, but I think that it should be a better option to add the possibility to set it in the own directive as another attribute.


'range' header not allowed on CORS requests

reported on stackoverflow -- ajax range downloads are forbidden by the server's cors response

this is now fixed


Recommendation for drawing error bands

Bugs and Questions
I am experimenting with the library. I am trying to draw error bands. Here are some examples:

I am planning to do it with VictoryArea + VictoryLine which sounds straightforward.
I have some doubts about how to deal with the cursor. I would like on click to show the value in the line and in the error range. Should I use two VictoryCursorContainer? One for the VictoryArea and another one for the VictoryLine?
Thanks

@Macarse if you use VictoryVoronoiContainer with voronoiDimension="x" set you can get the values of all the data points that match the nearest x value to your event. You can then use these to render a custom cursor label or legend. I hope that helps :)


Typo in High Score Board exercise test file

Issue in updateScore function
const scoreBoard = {
      'Amil Pastorius': 99373,
      'Min-seo Shin': 0,
      'Jesse Johnson': 1337,
    };
const expected = {
      'Amil Pastorius': 99373,
      'Min-seo Shin': 1999,
      'Jesse Johnson': 2674,
    };
updateScore(scoreBoard, 'Min-seo Shin', 1999);
- const actual = updateScore(scoreBoard, 'Jesse Johnson', 1337);
+ const actual = updateScore(scoreBoard, 'Jesse Johnson', 2674);
expect(actual).toEqual(expected);
expect(Object.is(actual, scoreBoard)).toBe(true);

As explained in the PR you submitted, there is no typo in the exercise test file for the High Score Board exercise.
We do appreciate you opening the issue and providing a PR because you thought something was broken.
In this repository, each exercise must also have a proof.ci.js or exemplar.js file in the .meta directory. You can find these by browsing this repository and looking at the exercises folder. During CI, each proof and exemplar solution is actually used and tested against the .spec.js file, ensuring that there is always a valid solution for that exercise.
This means that if you encounter a potential bug, the first thing to do is to check if the proof or exemplar implementation has a faulty implementation. If so, a PR to change a test must also change this implementation.
I hope the information in the PR is sufficient for you to update your solution so it passes the tests.