Body from 'upgrade' request is not read

ASGI defines the extension websocket.http.response.  This extension allows an application to send an arbitrary http response
as a connection rejection.
the websockets module, however, states: (in legacy.http.py)
    :func:`read_request` doesn't attempt to read the response body because
    WebSocket handshake responses don't have one. If the response contains a
    body, it may be read from ``stream`` after this coroutine returns.

the legacy.client.read_http_response() method again states that a body may be read from after the headers, but
the pertinent code https://github.com/aaugustin/websockets/blob/ba1ed7a65cc876ff4e0fcd4dd4711402836475e2/src/websockets/legacy/client.py#L322-L328 does not do that.   The result is that the raised exception does not contain any body which may have been provided with the response.
This issue comes from this PR:  https://github.com/encode/uvicorn/pull/1907.  uvicorn is using websockets in its unit tests and we can't verify that the received body is indeed the body which was sent.
If there is interest, I could attempt to provide a PR to rectify this issue.

states that a body may be read from after the headers...
... but the pertinent code does not do that.

What I really mean here is "go read it yourself directly from the transport if you want it". There's no public API.
For the purposes of writing a unit test, did you consider using an HTTP client (urllib2, httpx, etc.) instead websockets?
(Long term, we should look into switching uvicorn from the "legacy", asyncio-only implementation to the Sans-I/O implementation. The latter can read HTTP response bodies. See also #975.)

Well, if you want to implement it and write tests, I'll take it. I haven't done it myself because I'm trying to limit my investment on the historical implementation and to focus on the new one.

Good to know.  I'm not promising I will, just asking for permission upfront, I've sometimes done PRs that weren't welcome.
Cheers!

It would require:

reproducing this logic from the Sans-I/O implementation in the legacy implementation;
adding tests to reach 100% branch coverage (standard for this library);
updating the docs.

The test suite for the legacy implementation is poorly designed. At this point, I have forgotten about its design, which means that no one on Earth masters it anymore :-( That will be the main hurdle.

I'm counting about a dozen branches. That's what it takes to read a response body — thank you HTTP. This means about a dozen tests :-(

I don't see the code you link to actually reading chunked encoding either... but for the purposes of websocket denial response bodies, I think it is safe to support only a subset of possible response types... Let's see how much free time I have :)

For clarity: don't add support for chunked encoding. If you write the code, I get to maintain it. But I'm not in the business of maintaining a HTTP library. The support of HTTP shouldn't go beyond the bare minimum required to open a WebSocket connection.

Related: 795

Considering the lack of activity, I'm closing this as a duplicate of #795.


When you uncomment the environ nvcc etc...

Cmake has its own syntax for this, time to nvcc support only
The error message nvcc fatal : Unknown option '-Wl,-rpath,/home/ryan/.pyenv/versions/3.10.13/lib' suggests that the NVCC compiler, which is part of the NVIDIA CUDA Toolkit, doesn't recognize the -Wl,-rpath,... option. This option is generally used with GCC to set the runtime library search path. When using NVCC, options intended for the host compiler should be passed using -Xcompiler.
To fix your CMakeLists.txt for NVCC, you'll need to separate the options intended for NVCC and those for the host compiler. Here’s how you can modify the CMake setup:
cmake_minimum_required(VERSION 3.18 FATAL_ERROR)

project(tensor_test)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

# Build googletest from the submodule
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/googletest)

# Add the target executable
add_executable(${PROJECT_NAME} tests/test.cpp)

# Link the executable against the googletest
target_link_libraries(${PROJECT_NAME} gtest gtest_main)

# Add compiler flags
target_compile_options(${PROJECT_NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:-Wall -Wextra -Wpedantic>)

# Add NVCC-specific options
target_compile_options(${PROJECT_NAME} PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:-Xcompiler -Wall,-Wextra,-Wpedantic>)

# Copy headers to build directory
configure_file(src/tensor.hpp tensor.hpp COPYONLY)

This CMakeLists.txt script uses generator expressions to add compiler options conditionally depending on the language being used. The -Xcompiler flag is used to forward options to the host compiler when NVCC is invoked.
Make sure you have the enable_language(CUDA) directive if you are compiling CUDA code with NVCC.
Since the original error seems to indicate an attempt to set the rpath, which is not directly addressed in the modified CMakeLists.txt, if you need to pass such options to the linker, you might need to set them separately with set_target_properties or within target_link_options using the proper -Xlinker option for NVCC.
Also, if you are working with CUDA code, remember to have the .cu or .cuh file extensions for NVCC to recognize them as CUDA files.
Remember to adjust your CMake configuration according to your project's specific requirements and the CUDA version you are using.

Oh this is a good lesson... Okay so GPT was right, but I thought I also had to set CXX to nvcc this makes nvcc use nvcc as the host/Xcompiler, so this was just never a good idea:
if which("nvcc") is not None:
    environ["CXX"] = "nvcc"

By the way, which is not exists it gives the path:
>>> which('nvcc')
'/usr/local/cuda-12.2/bin/nvcc'


php-language-features: Add html indent rule

This PR fixes #62077.
Testing the change

Create new file.
Change file type to PHP.
Type in some nested matching html tags without manually indenting the line:

a. Without the change.

b. With the change.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.:x: Abdillah sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

I think this issue is different than I thought it was, since it starts working as soon as the html extension is activated. @aeschli so the onLanguage:html activationEvent is only triggered when a .html file is opened, even though the html language configuration applies to parts of a php file? Do you think we should add onLanguage:php to the html extension?

Do two extensions allowed to share each other code (like sharing one server)? If we can make sure both HTML and PHP extension server recognize embedded PHP, Javascript, and CSS, that would be ideal IMO.
But I don't think that HTML extension parse PHP language. It should switch to PHP when recognize the syntax, or just give warning.
I am new here might not get the context right

Turns out the PHP already support Javascript and CSS. I am not aware of this just by looking at the code. Is there any HTML ext. activation in PHP language mode somewhere?

PHP defines HTML as an embedded language here: https://github.com/microsoft/vscode/blob/master/extensions/php/package.json#L44. The bug is that VSCode doesn't activate 'html' when it needs it's indent rules. As HTML defines the indent rules in code, activation is necessary.
It's a VSCode issue. I suggest to create a new issue and assign it to  @alexdima.
The PR is not good, PHP must not define any html settings, it will cause conflicts. PHP could define a new language php-html, use that for embedding and define rules for that. But I wouldn't do that as it leads to duplication.

Oh, I get it. Thanks @aeschli. Filed https://github.com/microsoft/vscode/issues/98621


feat: use snappy for larger gossip payloads

Motivation
Benchmarks show snappy-wasm is faster at compressing and uncompressing than snappyjs.
Description

Use snappy-wasm for compressing / uncompressing gossip payloads
Add more snappy vs snappyjs vs snappy-wasm benchmarks

TODO

[x] deploy this branch on our test fleet - deployed on feat3

  network / gossip / snappy
    compress
      ✔ 100 bytes - compress - snappyjs                                     332533.5 ops/s    3.007216 us/op        -        542 runs   2.14 s
      ✔ 100 bytes - compress - snappy                                       375030.5 ops/s    2.666450 us/op        -        919 runs   2.95 s
      ✔ 100 bytes - compress - snappy-wasm                                  523607.1 ops/s    1.909829 us/op        -        588 runs   1.63 s
      ✔ 200 bytes - compress - snappyjs                                     279881.7 ops/s    3.572938 us/op        -        430 runs   2.04 s
      ✔ 200 bytes - compress - snappy                                       407128.3 ops/s    2.456228 us/op        -        598 runs   1.98 s
      ✔ 200 bytes - compress - snappy-wasm                                  391033.0 ops/s    2.557329 us/op        -        758 runs   2.44 s
      ✔ 300 bytes - compress - snappyjs                                     243278.0 ops/s    4.110523 us/op        -        300 runs   1.73 s
      ✔ 300 bytes - compress - snappy                                       348057.9 ops/s    2.873085 us/op        -       1500 runs   4.81 s
      ✔ 300 bytes - compress - snappy-wasm                                  381564.2 ops/s    2.620791 us/op        -        700 runs   2.33 s
      ✔ 400 bytes - compress - snappyjs                                     231310.9 ops/s    4.323185 us/op        -        286 runs   1.74 s
      ✔ 400 bytes - compress - snappy                                       366353.0 ops/s    2.729608 us/op        -       1698 runs   5.15 s
      ✔ 400 bytes - compress - snappy-wasm                                  374980.0 ops/s    2.666809 us/op        -        269 runs   1.22 s
      ✔ 500 bytes - compress - snappyjs                                     223722.5 ops/s    4.469824 us/op        -        438 runs   2.46 s
      ✔ 500 bytes - compress - snappy                                       371647.0 ops/s    2.690725 us/op        -       1991 runs   5.86 s
      ✔ 500 bytes - compress - snappy-wasm                                  580315.0 ops/s    1.723202 us/op        -        176 runs  0.805 s
      ✔ 1000 bytes - compress - snappyjs                                    152955.0 ops/s    6.537871 us/op        -        112 runs   1.24 s
      ✔ 1000 bytes - compress - snappy                                      421995.1 ops/s    2.369696 us/op        -        654 runs   2.05 s
      ✔ 1000 bytes - compress - snappy-wasm                                 450000.9 ops/s    2.222218 us/op        -        594 runs   1.82 s
      ✔ 10000 bytes - compress - snappyjs                                   21501.68 ops/s    46.50799 us/op        -         19 runs   1.41 s
      ✔ 10000 bytes - compress - snappy                                     100203.5 ops/s    9.979696 us/op        -        178 runs   2.28 s
      ✔ 10000 bytes - compress - snappy-wasm                                90867.07 ops/s    11.00509 us/op        -         41 runs  0.958 s
      ✔ 100000 bytes - compress - snappyjs                                  2940.615 ops/s    340.0649 us/op        -         12 runs   4.78 s
      ✔ 100000 bytes - compress - snappy                                    15356.05 ops/s    65.12089 us/op        -         65 runs   4.76 s
      ✔ 100000 bytes - compress - snappy-wasm                               19104.18 ops/s    52.34457 us/op        -         13 runs   1.21 s
    uncompress
      ✔ 100 bytes - uncompress - snappyjs                                   668343.8 ops/s    1.496236 us/op        -        273 runs  0.909 s
      ✔ 100 bytes - uncompress - snappy                                     540612.1 ops/s    1.849755 us/op        -        221 runs  0.910 s
      ✔ 100 bytes - uncompress - snappy-wasm                                695716.1 ops/s    1.437368 us/op        -        423 runs   1.11 s
      ✔ 200 bytes - uncompress - snappyjs                                   471636.0 ops/s    2.120279 us/op        -        192 runs  0.908 s
      ✔ 200 bytes - uncompress - snappy                                     536543.7 ops/s    1.863781 us/op        -        218 runs  0.908 s
      ✔ 200 bytes - uncompress - snappy-wasm                                502141.9 ops/s    1.991469 us/op        -        255 runs   1.01 s
      ✔ 300 bytes - uncompress - snappyjs                                   430171.2 ops/s    2.324656 us/op        -        394 runs   1.42 s
      ✔ 300 bytes - uncompress - snappy                                     533718.2 ops/s    1.873648 us/op        -        163 runs  0.807 s
      ✔ 300 bytes - uncompress - snappy-wasm                                485882.4 ops/s    2.058111 us/op        -        298 runs   1.11 s
      ✔ 400 bytes - uncompress - snappyjs                                   395573.5 ops/s    2.527975 us/op        -        323 runs   1.32 s
      ✔ 400 bytes - uncompress - snappy                                     526871.8 ops/s    1.897995 us/op        -        162 runs  0.808 s
      ✔ 400 bytes - uncompress - snappy-wasm                                455132.4 ops/s    2.197163 us/op        -        325 runs   1.22 s
      ✔ 500 bytes - uncompress - snappyjs                                   363519.2 ops/s    2.750886 us/op        -        332 runs   1.41 s
      ✔ 500 bytes - uncompress - snappy                                     522257.6 ops/s    1.914764 us/op        -        213 runs  0.909 s
      ✔ 500 bytes - uncompress - snappy-wasm                                447883.2 ops/s    2.232725 us/op        -        274 runs   1.11 s
      ✔ 1000 bytes - uncompress - snappyjs                                  277005.5 ops/s    3.610036 us/op        -        170 runs   1.12 s
      ✔ 1000 bytes - uncompress - snappy                                    497307.3 ops/s    2.010829 us/op        -        203 runs  0.909 s
      ✔ 1000 bytes - uncompress - snappy-wasm                               408649.8 ops/s    2.447083 us/op        -        416 runs   1.52 s
      ✔ 10000 bytes - uncompress - snappyjs                                 39867.18 ops/s    25.08329 us/op        -         24 runs   1.11 s
      ✔ 10000 bytes - uncompress - snappy                                   222206.8 ops/s    4.500313 us/op        -        184 runs   1.33 s
      ✔ 10000 bytes - uncompress - snappy-wasm                              168571.0 ops/s    5.932220 us/op        -         52 runs  0.813 s
      ✔ 100000 bytes - uncompress - snappyjs                                4088.729 ops/s    244.5748 us/op        -         12 runs   3.68 s
      ✔ 100000 bytes - uncompress - snappy                                  19388.33 ops/s    51.57743 us/op        -        164 runs   8.98 s
      ✔ 100000 bytes - uncompress - snappy-wasm                             22986.39 ops/s    43.50401 us/op        -         13 runs   1.09 s

Metrics for "till recieved" beacon block which should correlate to reduction in snappy decompression.  Seeing slightly better speed on mainnet but similar results on the large validating nodes
lg1k servers
stable

unstable

feat3

mainnet servers
stable
Server unstable. Invalid metrics
unstable

feat3

the optimization is in us per message so it's not easy to find an improvement on "received block time" metric. As long as we don't see memory issues I think it's good to go

looks like the metrics may not be panning out for this branch.  It doesnt seem like there is a notable performance gain and the memory consumption is way up.  Also seems a bit less stable with RSS bouncing around a lot on longer timeframes.
unstable-mainnet (4 days)

feat3-mainnet (4 days)

unstable-lg1k (24hr)

feat3-lg1k (24hr)

Just noting based on standup today that we will need to deploy via Docker for testing this one.

A new contender has emerged (two years ago) snappy-wasm
Refreshed this branch and the benchmark results, check the description

Uploading a few juicy looking data points


Add -c / --clear option to clear your .Trash folder

Thanks for your contribution, but I thought it is better to create a new command rather than adding a -c option.
The mechanism of some other modules or programs might rely on the behavior or rm, so safe-rm should obey the options of the vanilla rm to prevent further problems.

I see, Thanks for your explanation.


Fix restart conversation

Pull Request Test Coverage Report for Build 1987

3 of 4 (75.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.02%) to 50.397%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

packages/app/client/src/ui/editor/emulator/emulator.tsx
3
4
75.0%

Totals

Change from base Build 1974:
0.02%

Covered Lines:
4514

Relevant Lines:
8357

💛  - Coveralls


Error occurs when executing sample code

Logs
Launching Vulkan Application:
- Layers overridden by "Validation" configuration.
- Application: png.exe
- Executable: C:\Vulx\target\debug\examples\png.exe
- Working Directory: C:\Vulx
- Log file: C:\Vulx\png.txt
UNASSIGNED-CreateInstance-status-message(INFO / SPEC): msgNum: -2016116905 - Validation Information: [ UNASSIGNED-CreateInstance-status-message ] Object 0: handle = 0x1f984371680, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x87d47f57 | vkCreateInstance():  Khronos Validation Layer Active:

    Settings File: Found at C:\Users\LatteSyobon\AppData\Local\LunarG\vkconfig\override\vk_layer_settings.txt specified by VkConfig application override.

    Current Enables: None.

    Current Disables: None.

    Objects: 1

        [0] 0x1f984371680, type: 1, name: NULL

VUID-vkCreateDevice-ppEnabledExtensionNames-01387(ERROR / SPEC): msgNum: 307460652 - Validation Error: [ VUID-vkCreateDevice-ppEnabledExtensionNames-01387 ] Object 0: handle = 0x1f984371680, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x12537a2c | vkCreateDevice(): pCreateInfo->ppEnabledExtensionNames[0] Missing extension required by the device extension VK_KHR_swapchain: VK_KHR_surface. The Vulkan spec states: All required device extensions for each extension in the VkDeviceCreateInfo::ppEnabledExtensionNames list must also be present in that list (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkCreateDevice-ppEnabledExtensionNames-01387)

    Objects: 1

        [0] 0x1f984371680, type: 1, name: NULL

UNASSIGNED-ObjectTracker-ObjectLeak(ERROR / SPEC): msgNum: 699204130 - Validation Error: [ UNASSIGNED-ObjectTracker-ObjectLeak ] Object 0: handle = 0x1f984371680, type = VK_OBJECT_TYPE_INSTANCE; | MessageID = 0x29ad0222 | vkDestroyInstance():  OBJ ERROR : VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT object VkDevice 0x1f9873dbee0[] has not been destroyed.

    Objects: 1

        [0] 0x1f984371680, type: 1, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xead9370000000008, type = VK_OBJECT_TYPE_BUFFER; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkBuffer 0xead9370000000008[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xead9370000000008, type: 9, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xfab64d0000000002, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkDeviceMemory 0xfab64d0000000002[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xfab64d0000000002, type: 8, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xee647e0000000009, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkDeviceMemory 0xee647e0000000009[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xee647e0000000009, type: 8, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0x980f360000000011, type = VK_OBJECT_TYPE_DEVICE_MEMORY; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkDeviceMemory 0x980f360000000011[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0x980f360000000011, type: 8, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xfa21a40000000003, type = VK_OBJECT_TYPE_IMAGE_VIEW; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkImageView 0xfa21a40000000003[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xfa21a40000000003, type: 14, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xcb3ee80000000007, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkShaderModule 0xcb3ee80000000007[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xcb3ee80000000007, type: 15, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xf443490000000006, type = VK_OBJECT_TYPE_SHADER_MODULE; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkShaderModule 0xf443490000000006[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xf443490000000006, type: 15, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xcad092000000000d, type = VK_OBJECT_TYPE_PIPELINE_LAYOUT; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkPipelineLayout 0xcad092000000000d[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xcad092000000000d, type: 17, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xcfef35000000000a, type = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkDescriptorSetLayout 0xcfef35000000000a[] has not been destroyed. The Vulkan spec states: All child objects created on device must have been destroyed prior to destroying device (https://vulkan.lunarg.com/doc/view/1.3.268.0/windows/1.3-extensions/vkspec.html#VUID-vkDestroyDevice-device-05137)

    Objects: 1

        [0] 0xcfef35000000000a, type: 20, name: NULL

VUID-vkDestroyDevice-device-05137(ERROR / SPEC): msgNum:<PHONE_NUMBER> - Validation Error: [ VUID-vkDestroyDevice-device-05137 ] Object 0: handle = 0xe88693000000000c, type = VK_OBJECT_TYPE_DESCRIPTOR_SET; | MessageID = 0x4872eaa0 | vkDestroyInstance():  OBJ ERROR : For VkDevice 0x1f9873dbee0[], VkDescriptorSet 0xe88693000000000c[] has not been destroyed.


Fix nonce issue when submitting multiple processes

Pull Request
Checklist

[x] Have you read Digital Catapult's Code of Conduct?
[x] I have performed a self-review of my own code.
[x] I have commented my code, particularly in hard-to-understand areas.
[ ] I have made corresponding changes to the documentation.
[x] My changes generate no new warnings.
[x] I have added tests that prove my fix is effective or that my feature works.
[x] New and existing unit tests pass locally with my changes.

PR Type
Please delete options that are irrelevant.

[x] Bug Fix
[ ] Chore
[ ] Feature
[ ] Documentation Update
[ ] Code style update (formatting, local variables)
[ ] Breaking Change (fix or feature that would cause existing functionality to change)

Linked tickets
https://digicatapult.atlassian.net/browse/SQNC-49
High level description
Fixes issue where trying to load multiple process flows leads to nonce errors
Detailed description
When trying to load multiple flows from matchmaker we've been encountering errors like
RPC-CORE: submitAndWatchExtrinsic(extrinsic: Extrinsic): ExtrinsicStatus:: 1014: Priority is too low: (0 vs 0): The transaction has too low priority to replace another transaction already in the pool.

This is caused by incorrect nonce handling and was introduced by polkadot 12 as per https://github.com/digicatapult/sqnc-matchmaker-api/pull/409. This fixes the issue in the same way.
I've additionally moved our test suite to testcontainers so I could write a test for this issue.
Lastly I've noticed that polkadot was not cleaning up connections properly so I've introduced resource cleanup using an async dispose pattern. I suspect this may be what we are hitting in https://digicatapult.atlassian.net/browse/SQNC-24
Describe alternatives you've considered
None
Operational impact
None
Additional context
None

They were passing because the process was always exiting naturally before we exhausted the maximum number of node connections


Quick question about why use a byte array to populate the usertable collection.

Hello guys.
I had a question about the data that is generated for the database.
Why does YCSB use a Hashmap whose key value is a ByteIterator to fill in the data from the usertable collection in the DB? Why not use a String for example or another type of random value?
Is there any specific reason @busbey ?

Here's the javadoc from the ByteIterator class, which gives a rationale:

YCSB-specific buffer class.  ByteIterators are designed to support
efficient field generation, and to allow backend drivers that can stream
fields (instead of materializing them in RAM) to do so.

YCSB originially used String objects to represent field values.  This led to
two performance issues.

First, it leads to unnecessary conversions between UTF-16 and UTF-8, both
during field generation, and when passing data to byte-based backend
drivers.

Second, Java strings are represented internally using UTF-16, and are
built by appending to a growable array type (StringBuilder or
StringBuffer), then calling a toString() method.  This leads to a 4x memory
overhead as field values are being built, which prevented YCSB from
driving large object stores.

Mind you, this is from 10+ years ago.


Revert "Refactor TestInetCommon"

Reverts project-chip/connectedhomeip#4112
Breaks unit test check

@szatmz Which unit tests are failing and on which platform?  At first glance things pass for me on Mac and we presumably ran Linux tests in CI....

@szatmz Which unit tests are failing and on which platform? At first glance things pass for me on Mac and we presumably ran Linux tests in CI....

E.g. https://github.com/project-chip/connectedhomeip/pull/4112/checks?check_run_id=1518425362

E.g. https://github.com/project-chip/connectedhomeip/pull/4112/checks?check_run_id=1518425362

Huh.  I wonder how that passed CI initially.  Looks like TestInetCommonOptions.h was not included in TestInetLayerMulticast.cpp.


Netspeed monitor

📝 Provide a description of the new feature
What is the expected behavior of the proposed feature?  What is the scenario this would be used?
--- When a user is connected to WiFi, cellular or ethernet, it is useful to see what speeds they are receiving on their machines live, without having to constantly google what their speeds are (which in itself requires you to have an internet connection in the first place to do it). This feature is already in Apple devices and has been useful as well to help diagnose whether or not the drop or loss in internet speed is happening on the user side or the internet provider side.
If you'd like to see this feature implemented, add a 👍 reaction to this post.

Would be useful to have WiFi channels information there somewhere, so I could investigate inference with other devices.

The Task Manager does not provide enough information for you?

Not so that the information appears on the taskbar

this is built into MacOS / iOS?  can you share where?

This sounds like https://macandegg.com/2018/06/how-to-show-network-speed-in-macos-menu-bar/ (which was an addon)

It'd be great to have the network speed on the taskbar. I've seen it being done with third-party programs, but if it's included in powertoys, it'd be of great help.

@crutkas , as pointed out @jsoref it is an extension, not inbuilt. I was under the impression that it was inbuilt because my friend who has a Macbook Pro (bought 2 years ago) said it was inbuilt into it........

This feature is included in #3583 and I think you can close this issue.

actually dup this against https://github.com/microsoft/PowerToys/issues/828


[Discussion] Announcing zipdeploy integration with Run From Package

Please use this thread to discuss https://github.com/Azure/app-service-announcements/issues/110

Is this available in all regions and OS? I tried this in west us on Linux (set the app setting then did a zip deploy) and saw the typical zip deploy output:
Cleaning up temp folders from previous zip deployments and extracting pushed zip file /tmp/zipdeploy/27jna6c3.zip (2.67 MB) to /tmp/zipdeploy/extracted
Kudu sync from: '/tmp/zipdeploy/extracted' to: '/home/site/wwwroot'

@fiveisprime In case others are reading this, the issue was that site needed to be restarted, due to a known issue (should be fixed within next week or so).

How would one enable/disable a function using the zip approach since the mount is read-only?  Is the expectation that the app would have to point to a different zip that has the respective function.json with the desired function state?

@JRiggenbach in v2, disablement is done via App Settings, which are external to the zip. e.g. in a v2 app, try disabling a function, and you'll see an App Setting appear, e.g. AzureWebJobs.TimerTriggerCSharp1.Disabled=true.

@davidebbo Thanks for the reply.  So this is type of deployment is more geared towards the v2 runtime. Unfortunately I'm not in a position to use the v2 at the moment while it is in preview. I do like this option, and might proceed with it anyway with the assumption that I'll move to v2 once it's in GA.  Would there be any reason not to use this type of deployment with v1?

@JRiggenbach I can't think of a reason not to use it for v1, other than potentially the one you brought up with disablement. The underlying technology is agnostic of v1 vs v2 vs random Web App.

Is Linux support for this feature on the roadmap?

@davidebbo is this functionality coming to Linux and if so is there an ETA?

@phawxby it is being discussed for Linux, but there is no timeline yet. @rramachand21 may be able to add more to this.

I just ran into issues with publishing a webjob. Our build is setup to create a zip file with our webjob and our release is set to upload it to the app service. I created a new release and used the defaults of the "Azure App Service Deploy (v4)"-task which, I guess, uses Run from package as default. After that I was unable to stop or delete the webjob (probably since the wwwroot has become readonly). After switching back to zip deploy everything was working again.

@davidebbo Can we have some guidance about whether Run From Package is a feature supported for WebJobs (instead of Functions)? What about webjob(s) "sharing" the wwwroot with another project/deployment (SPA in our case)?
I found nothing in the webjob documentation/github/stackoverflow about webjobs running from package.

@ggirard07 I'm no longer with the company, but I recall that @ahmelsayed had made some changes specifically to make WebJobs play better with Run From Package. I think there are two models for this:

Make the webjobs part of the package. They're read-only and can only be updated with a package update.
Use the alternate site/jobs location that allows WebJobs to be dynamically added while using a package (since wwwroot becomes read-only).

I'll let him and/or @suwatch / @ankitkumarr comment further.

David is right regarding the two options. Good memory David :)
Let me know if you have any other questions

Regarding option 2, how do you achieve it from an Azure DevOps release pipeline?
I currently use the AzureRmWebAppDeployment task, where I can select the deployment method to be Run From Package. But I don't see a way to define where to deploy the package on the server (site/jobs).
Also webjobs in site/jobs seems to be ordered by type (Continuous, triggered). While deploying a WebDeploy package to wwwroot with AzureRmWebAppDeployment, this is handled automatically by Web Deploy. How does this work when deploying with Run From Package? Do I need to reimplement that logic to retrieve the webjob type from the package content and deploy it to the proper location?

Sorry I actually re-read your original question and I think I misunderstood it initially. If you want to deploy webjobs with your application in the same zip package, you can put them in the zip file so they end up under site/wwwroot/app_data/jobs/continuous/{job-name} for continuous jobs and site/wwwroot/app_data/jobs/triggered/{job-name} for triggered jobs. Check the webjob page on the kudu wiki (https://github.com/projectkudu/kudu/wiki/WebJobs)
The wiki also explains the alternative location of site/jobs/continuous/{job-name} and site/jobs/triggered/{job-name} the purpose of these alternative locations is to allow you to use run from package for deploying your web app, but to still be able to add webjobs using the UX or after the fact. Since site/wwwroot/ becomes readonly, the uploaded webjob is saved under site/jobs. Also site/jobs has the same folder structure as app_data/jobs

@ahmelsayed Thanks for the precision, but it still does not answer about how I can deal with this now (placing the zip content to either site/jobs/continuous/{job-name} or site/jobs/triggered/{job-name}) while I am in an Azure DevOps pipeline.
The task AzureRmWebAppDeployment which is used to deploy a webapp, webjob or function does not support it.

I'm not sure how to achieve that using AzureRmWebAppDeployment someone from devops might know better.
from Kudu's prospective, you can do that using webjobs APIs (https://github.com/projectkudu/kudu/wiki/WebJobs-API)

This should just work if you set up your VS project to deploy your WebJobs with your app. When you do that, the built WebJobs become part of the app's artifacts, so they will naturally get bundled up in the package along with everything else. AzureRmWebAppDeployment doesn't need to know anything about WebJobs for this to work.

@davidebbo I totally forgot that webjobs could be packed directly within the API project. We did not do it at first because webjobs to deploy where selected based on the targeted environment, but this is no longer a requirement.
Another use case I have is how to use run from package when using multiple virtual applications on the same web app?


preliz

Look at PreliZ and write something about it.

super cool tool. need to investigate using the rvs method to get random samples from the distributions and create a widget that can be used in MDX


typing the whole keymap rather than the input

I am using Hyprland on Arch, and on any application, whether wayland-native or xwayland, wtype is typing out its whole keymap rather rather than my input.
For example, wtype "abcdefg" prints: 123456
wtype "abc" prints 12
wtype "aaaaaabbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccdddddddddddddd" prints ^[^[^[^[^[^[111111111111111111111111222222222222222222233333333333333
wtype -s 2000 "abcdefghijklmnopqrstuvwxyz" prints ^[1234567890-	qwertyuiop[
wtype -s 2000 "test" waits, then types 12, and doing the same then switching to an xwayland application in the 2 seconds types out 12 there as well, so it is not wayland/xwayland specific.
I have tried the wtype package, wtype-git package, and building from source.

An update fixed it, thanks whoever did that!


could not start ipfix server

Hello,
[exaddos.daemon]
user = 'nobody'
[exaddos.http]
host = '<IP_ADDRESS>'
#host = '<IP_ADDRESS>'
port = 8080
[exaddos.ipfix]
host = '<IP_ADDRESS>'
port = 29300
[exaddos.location]
#database = 'data/exaddos/db/exaddos.sqlite3'
html = 'data/exaddos/html'
[exaddos.profile]
destination = 'stdout'
enable = false
[exaddos.router]
router = '<IP_ADDRESS>'
snmp_version = 3
snmp_user = 'exaddos'
snmp_auth_method = 'SHA'
snmp_auth_key = 'pass7faYDFagREF6DasdG'
snmp_privacy_method = 'AES-128'
snmp_privacy_key = 'privTasvRT3gfg4GFsGHV'
snmp_frequency = 10
snmp_index_port = 520
snmp_index_vlan = 573
threshold_bandwidth = 524288000
threshold_unicast = 120000
threshold_notunicast = 1500
pip install pysnmp
Requirement already satisfied (use --upgrade to upgrade): pysnmp in /usr/local/lib/python2.7/dist-packages
Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.2 in /usr/lib/python2.7/dist-packages (from pysnmp)
Requirement already satisfied (use --upgrade to upgrade): pycrypto>=2.4.1 in /usr/local/lib/python2.7/dist-packages (from pysnmp)
Cleaning up...
pip install pysnmp_mibs
Requirement already satisfied (use --upgrade to upgrade): pysnmp-mibs in /usr/local/lib/python2.7/dist-packages
Requirement already satisfied (use --upgrade to upgrade): pysnmp>=4.2.3 in /usr/local/lib/python2.7/dist-packages (from pysnmp-mibs)
Requirement already satisfied (use --upgrade to upgrade): pyasn1>=0.1.2 in /usr/lib/python2.7/dist-packages (from pysnmp>=4.2.3->pysnmp-mibs)
Requirement already satisfied (use --upgrade to upgrade): pycrypto>=2.4.1 in /usr/local  /lib/python2.7/dist-packages (from pysnmp>=4.2.3->pysnmp-mibs)
Cleaning up...
./exaddos -c /etc/exaddos/exaddos.conf.snmpv3
http server on <IP_ADDRESS>:8080
starting ipfix consummer
starting ipfix consummer
starting ipfix consummer
starting ipfix server
starting http server
could not start ipfix server

Please consider using https://github.com/pavel-odintsov/fastnetmon I have no time for exaddos development and fastnetmon is much better.


Implemented deletetag command for model

Please note that the header comment for the class DeleteTagCommand.java is incorrect. It should be "Deletes selected tags from every record in the address book".


ckpt file produced by colab only weighs 1.99 GB

is it normal? it used to be 3.97 GB

yes its notmal, , its pruned meaning it runs in half precision but it does not have effect on quality


JSonata compatibility problems after version 2.0.5

For some reason JSonata version 2.0.5 (and presumably above) breaks the transformation process with the message _Property 'jsonata_function' does not exist in the object:' . This requires the setup to strictly the last non-conflicting version: 2.0.4., and eventually further inspection when a newer version of the library is actually needed.

This will eventually require further inspection (if an upgrade to 2.0.5 is needed)


Bugfix new api

resolves #673
BUGFIXES:

[x] github url is not accessible in package detail meta
[ ] logs should sync to s3 when submitting bugs
[x] images should load
[x] german language should be selectable

image not loading was due to image_added_at: timestamp was null in most packages.

added contribution page/discussion: https://github.com/orgs/teaxyz/discussions/618

logs issue was an api permission issue.


Not able to compile on Windows

For the following block of code:
store, err := certstore.Open()
	if err != nil {
		return nil, err
	}
	defer store.Close()

I get the following error:
➜  certstore-test env GOOS=windows GOARCH=amd64  go build
# github.com/github/smimesign/certstore
../../../go/pkg/mod/github.com/github/smimesign@v0.2.0/certstore/certstore.go:17:9: undefined: openStore

Go version: go1.22.1
Platforms: macOS(arm64), windows (amd64)
The code compiles fine for macOS, it fails for Windows when trying from macOS or Windows.

I have the same problem, Did you solve it?

@rthacker87 No, I haven't solved it ☹

I was puzzled by this as well.  I discovered that the problem is that anything that includes C code directly like this package does needs a C compiler configured ready to go.  This is often the case on a Mac, but unfortunately is not the case on windows.
I installed mingw with choco:  choco install mingw and made sure that the C:\ProgramData\mingw64\mingw64\bin path was added and then it worked.
I did run into a problem with certstore\certstore_windows.go:641:29: cannot convert cmsg (variable of type *_Ctype_char) to type _Ctype_HANDLE so I just commented it out...
//defer C.LocalFree(C.HLOCAL(cmsg))


Implement Clang-style error messages

Hi,
Can Clang type error messages be included in peg.js?
For instance,
//parser to read positive numbers (posNum.pegjs)
start = number
number = [0-9]*
//end
output:
123a // Line 1, column 4: Expected "[0-9]" but 'a' found
can we get error message like this?
a12345 // Line 1, column 1: Expected "[0-9]" but 'a' found
^

In is easy to implement:
String.prototype.dup = function(count) {
  return new Array(count).join(this);
}
/// @p Generated PEG parser
/// @options JSON object with additional options
/// @data string for parsing
function parse(p, options, data) {
  console.time('Parse time');
  try {
    console.log(JSON.stringify(p.parse(data, options), null, 2));
  } catch (e) {
    if (e instanceof p.SyntaxError) {
      console.log('Error in input file:');
      var line = data.split(/\r\n|\r|\n/)[e.line-1];
      e.column = line.substr(0, e.column);
      console.log(line);
      console.log('-'.dup(e.column) + '^');
      console.log('Line '+e.line+', column '+e.column+': '+e.message);
      console.log(e.stack);
    } else {
      // console.log(e.stack);
      console.log(e);
    }
  } finally {
    console.timeEnd('Parse time');
  }
}

Patch to implement this into bin/pegjs would be welcome. I image the implementation would display the message and output excerpt by default and it would add options to disable colors and the excerpt (for easier processing of the output by tools).
For reference, here is a description of Clang’s diagnostics.

Setting this as post-1.0.0 but if somebody comes up with a patch implementing this, I’d integrate it earlier.

I would happily do this if I had the org permissions.  Current maintainer has ignored patches for years.
Lots of people including myself are heavily reliant on, and parsing, the old error notation.  If this happens, it should be an addition, not a replacement.


[Snyk] Upgrade com.unboundid:unboundid-ldapsdk from 3.1.1 to 3.2.1

This PR was automatically created by Snyk using the credentials of a real user.Snyk has created this PR to upgrade com.unboundid:unboundid-ldapsdk from 3.1.1 to 3.2.1.
:information_source: Keep your dependencies up-to-date. This makes it easier to fix existing vulnerabilities and to more quickly identify and fix newly disclosed vulnerabilities when they affect your project.

The recommended version is 2 versions ahead of your current version.
The recommended version was released 7 years ago, on 2017-02-13.

Note: You are seeing this because you or someone else with access to this repository has authorized Snyk to open upgrade PRs.
For more information:
🧐 View latest project report
🛠 Adjust upgrade PR settings
🔕 Ignore this dependency or unsubscribe from future upgrade PRs

 Modified Files Coverage Summary

No coverage results for the modified files

 Overall Coverage Summary

            :green_circle: Instructions Coverage (31.77%)

            :red_circle: Branch Coverage (13.04%)


PreloadJs not working.

When using preloadjs to load assets, no event is ever fired. Also when given a manifest to load, it seems to only ever load the first item in the manifest while never fetching the others.

I've just updated the module to<EMAIL_ADDRESS>Let me know if that worked

nope, still no luck. I created a new project just to test out the new version. Here's my app.component.ts. When I look at the network tab it still only shows that it grabbed the first item in the manifest.
import { Component, AfterViewInit } from '@angular/core';
import * as createjs from 'createjs-module';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit{

  ngAfterViewInit(){
    const loader = new createjs.LoadQueue(false);
    loader.on('complete',()=>console.log('complete'));
    loader.on('fileload',()=>console.log('file loaded'));
    const manifest = [
      {src:'https://s-media-cache-ak0.pinimg.com/originals/58/94/06/5894069ef5a80d3861daf25e45c4eb71.png',id:'spaceship1'},
      {src:'http://img4.wikia.nocookie.net/__cb20121116190751/halo/images/8/87/Broadsword.png',id:'spcae2'},
    ];
    loader.loadManifest(manifest);

    const stage = new createjs.Stage('myCanvas');
    const ball = new createjs.Shape();
    stage.addChild(ball);
    ball.graphics.beginFill('red').drawCircle(0,0,50);
    ball.x = (stage.canvas as any).width/2;
    ball.y = (stage.canvas as any).height/2;

    createjs.Ticker.addEventListener('tick',stage);
  }

}

And my package.json
{
  "name": "preload",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^4.0.0",
    "@angular/common": "^4.0.0",
    "@angular/compiler": "^4.0.0",
    "@angular/core": "^4.0.0",
    "@angular/forms": "^4.0.0",
    "@angular/http": "^4.0.0",
    "@angular/platform-browser": "^4.0.0",
    "@angular/platform-browser-dynamic": "^4.0.0",
    "@angular/router": "^4.0.0",
    "core-js": "^2.4.1",
    "createjs-module": "^0.8.2-24",
    "rxjs": "^5.1.0",
    "zone.js": "^0.8.4"
  },
  "devDependencies": {
    "@angular/cli": "1.2.1",
    "@angular/compiler-cli": "^4.0.0",
    "@angular/language-service": "^4.0.0",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.0.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.0.4",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }
}

I've just updated the module to<EMAIL_ADDRESS>The problem was with the types file i made. Let me know if this works so I can close the issue

I just updated to 0.8.2-27 and unfortunately the behavior hasn't changed for me. It is still only loading the first entry in the manifest and the events I'm listening for aren't being broadcast.

Try setting the LoadQueue to true as shown below
const loader = new createjs.LoadQueue(true);

Still no luck unfortunately. When I put true instead of false I get a CORS error when trying to load the image, and it still only tries to get the first one.

Hey, I had issues with CORS when trying to manipulate image positions (dragging on pressmove event) - and I am kinda sure that I did everything to ensure that the CORS rules are set properly and allow everything for the domain in use. It may be that the problem you're having has nothing to do with PreloadJS, but with something deeper in CreateJS that is involved with CORS rules.

The only other thing I can think of that could be causing the issue is your running on a localhost. Try uploading it to a server and see if that work. This issue is beyond my expertise. I suggest you open the issue with the developers. I'm just an amateur developer.

Yeah, I'm not sure why it isn't working. Luckily it's not that big of a deal in my case. I was able to make my own very stripped down version of what PreloadJS does, but just for my specific use case. I've had a very positive experience with the rest of your module though, so thanks for putting it together.

Hey guys! I've faced the same issue and I've found what's causing it. In PreloadS, there's a method
 p._isCanceled = function () {
	if (window.createjs == null || this.canceled) {
		return true;
	}
	return false;
};

which checks if there's a window.createjs variable declared. In my case it's undefined and the _isCanceled function always returns true, which stops loading queue every time any file is loaded. So it's definitely an issue with the original PreloadJS code. My quick fix for it was to declare the window.createjs variable like this:
import * as createjs from 'createjs-module';
(<any>window).createjs = createjs;

Thank you very much dpodsiadlo, I'm going to close issue now.


Vertical stepper long title or subtitle causes overflow

Steps to Reproduce

Create a stepper using the Stepper component
Ensure that at least one of the Step has a long title or subtitle, or both

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with "flutter run". You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // "hot reload" (press "r" in the console where you ran "flutter run",
        // or simply save your changes to "hot reload" in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
        // This makes the visual density adapt to the platform that you run
        // the app on. For desktop platforms, the controls will be smaller and
        // closer together (more dense) than on mobile platforms.
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  // This widget is the home page of your application. It is stateful, meaning
  // that it has a State object (defined below) that contains fields that affect
  // how it looks.

  // This class is the configuration for the state. It holds the values (in this
  // case the title) provided by the parent (in this case the App widget) and
  // used by the build method of the State. Fields in a Widget subclass are
  // always marked "final".

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // This call to setState tells the Flutter framework that something has
      // changed in this State, which causes it to rerun the build method below
      // so that the display can reflect the updated values. If we changed
      // _counter without calling setState(), then the build method would not be
      // called again, and so nothing would appear to happen.
      _counter++;
    });
  }

  int currentStep = 0;

  @override
  Widget build(BuildContext context) {
    // This method is rerun every time setState is called, for instance as done
    // by the _incrementCounter method above.
    //
    // The Flutter framework has been optimized to make rerunning build methods
    // fast, so that you can just rebuild anything that needs updating rather
    // than having to individually change instances of widgets.
    return Scaffold(
      appBar: AppBar(
        // Here we take the value from the MyHomePage object that was created by
        // the App.build method, and use it to set our appbar title.
        title: Text(widget.title),
      ),
      body: Center(
          // Center is a layout widget. It takes a single child and positions it
          // in the middle of the parent.
          child: Stepper(
        type: StepperType.vertical,
        currentStep: currentStep,
        steps: <Step>[
          Step(
              content: Text(
                  'Extremely long content Extremely long contentExtremely long contentExtremely long contentExtremely long content'),
              title: Text(
                  'Extremely long title Extremely long title Extremely long title Extremely long title Extremely long title Extremely long title'),
              subtitle: Text(
                  "Extremely long subtitle Extremely long subtitle Extremely long subtitle Extremely long subtitle Extremely long subtitle"),
              isActive: currentStep == 0),
          Step(
              content: Text('conent'),
              title: Text('Regular title'),
              isActive: currentStep == 1),
          Step(
              content: Text('conent'),
              title: Text('title'),
              isActive: currentStep == 2),
          Step(
              content: Text('conent'),
              title: Text('title'),
              isActive: currentStep == 3),
          Step(
              content: Text('conent'),
              title: Text('title'),
              isActive: currentStep == 4),
          // Step(
          //     content: Text('conent'),
          //     title: Text('title'),
          //     isActive: currentStep == 5),
          // Step(
          //     content: Text('conent'),
          //     title: Text('title'),
          //     isActive: currentStep == 6),
        ],
      )),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

Expected results:
For it to not overflow
Actual results:
It overflowed

Logs

Related to 40601

Issue is replicable on latest dev channel. There's a similar open issue which talks about horizontal stepper being overflowed, but not sure if this is a duplicate of that, since the scrolling method is different.

The issue about the horizontal stepper is slightly different, as the Steps themselves are overflowing on the horizontal axis within the Stepper, rather than just the title

Fixed and merged in https://github.com/flutter/flutter/commit/14dcbb2d84b1298d2019cad98911a06f30ae4f2e

@iJimmyWei
The horizontal stepper still has this problem.

The horizontal stepper still has this problem


will this addon sync watched status to mal ?

As a title thanks

I'm looking at how best to do this at the moment. Stremio doesn't have a native way of tracking what someone's currently watching, only through Trakt and some hacky way of reading the subtitle file for what's currently being watched.

Implemented in v2.0.0 :+1:


Added issue-assigner app to _apps folder

Checklist

[x] If you're adding a listing for your app, be sure your app is in the /_apps/ folder before opening this Pull Request.
[x] All comments in frontmatter need to be removed.
[x] Performs a useful action through the GitHub API that solves an existing problem for developers: {explain the action here}
[x] Is original: for example, it does something not already done by an existing Probot app
[x] Is using the probot version (v12 or latest)
[ ] Has tests
[x] Has documentation
[x] Is open source
[x] Has a license
[x] Has a code of conduct
[x] Has someone willing to at least minimally maintain them for the near future: Varun Kolanu

Thank you for your submission and building this helpful app using Probot!


Port request: tty

Port: catppuccin/tty
Example: https://git.sr.ht/~stonks3141/nixos-config/tree/main/item/modules/system.nix#L49
We'll have to bring in catppuccin/palette to get the hex codes.

couldn't we just make derivation with the contents of dist/ after build.sh?

That shouldn't be necessary, the build script just copies the files from src/
to dist/. I think a more robust approach than running sed on the shellscript
files to get console.colors would be to just fetch palette-porcelain.json
from catppuccin/palette to get hex codes and manually sync the colors with
catppuccin/tty.

I am interested in implementing this. Regarding bringing the palette in, would it be a good idea to expose the palette and the palette repo's files as packages or something similar as a flake output?
My reasoning is that would help with manual theming. Exposing the palette would help for when colors need to be used directly. Exposing the palette repo's files would help in specific cases when having a CSS, SCSS, etc. palette would be handy.


feat!: ICS v5 (IBC v8)

closes #1041
also pulls in https://github.com/strangelove-ventures/interchaintest/pull/1093 changes as it fixed some ICS v5 running <v4 stuff :D

Relayer logs: https://pastebin.com/MAmviVKc. Not sure if this is a relayer config, relayer issue, or something with ICS.

ICS works as expected interchaintest side. however local-ic start interchaintest does not due to a unbonding time issue.

This above has been tested in spawn with a v5 consumer & provider and works w/ ghcr.io/strangelove-ventures/heighliner/ics:v5.0.0-provider-rc1 & v5.0.0-rc0 consumer too.


First Action cannot be undone

Issue assigned to @barinali
Describe the bug
The first action after opening or creating a project cannot be undone.
To Reproduce
Steps to reproduce the behavior:

Open or create a new project
Do something (e.g. add a new element to the element list)
Try Cmd+Z

Expected behavior
The first action should be undo-able, as well.

Hey @tilmx,
Sorry that I couldn't come back with a solution yet because of lacking time. But I have an intention to fix this since I somehow caused that. Is it possible to assign this issue to me?

Hey @barinali
yes, of course! I’ll assign it to you. Let us know if you need anything!
And thanks for contributing!

I have opened a pull request for this, #556.
While working with the history, I noticed that we can apply 'undo' command to go back from "Pages" view to "PageDetail" view and vice versa. 🤔 I do not think that should be possible. So I would suggest removing store.commit() from ViewStore.setActiveAppView. Also, if we do that, this will require us to manage separate histories for each AlvaView. Because while being on "Pages", we shouldn't be able to undo/redo actions for "PageDetail" view (like undo-ing adding a component) and so on.
Therefore, I guess file history management/actions (undo, redo) need some work.

Hey @barinali
Sounds good, thank you very much! Your note makes totally sense, we are currently in the process of bringing the page view into the page detail view (#554) – to avoid problems as you noticed and to speed up page switching.

Closed with #556

Closed via landing #556, thanks @barinali!

While working with the history, I noticed that we can apply 'undo' command to go back from "Pages" view to "PageDetail" view and vice versa. 🤔

Impressive you catched the quirkiness of the undo/redo system on the first try! We went back and forth about the undo/redo feature internally. @tilmx decided on a flow where every undo/redo is executable regardless of current view but the app shows the relevant view when performing the operation.

@tilmx @marionebl you are welcome! I am happy to help as long as I can.
I can't wait to see #554 in! 👍


Eureka Service Discovery Documentation mentions Consul

Hi,
while reading the documentation I've noticed that the Service Registration for the Eureka Service Discovery page mentions Consul:
"Consul service registrar is configured with the following parameters:".
I thought about directly opening a pull request with the change. The missing parameters list left me wondering if maybe a more complex change is required.
If that's not the case I can gladly contribute myself.

Hi!
Good catch! Go ahead with the PR if you want.
The list of parameters should be displayed, there is nothing to do, I will take a look at that.
:-)

Closed by #639


[TEST] Increase TimeOut to check failing e2e tests in Openshift CI

/retest

/retest

e2e tests passed in CI


fix exercise 2.29 (e)

fix exercise 2.29 (e)

fix exercise 2.29 (e)

fix exercise 2.29 (e)

nice ! :+1:


UX: Colors for (CRUD) buttons

All the buttons in the list view are using btn-primary or btn-default classes.
I think the colors can help the UX semantics here, the same way it's done on create/edit form for submit/cancel buttons.
E.g.:

create button - btn-success
delete button - btn-danger
edit button - here I'm not sure, either leave it be or make it btn-warning

It could also be configurable in config/backpack/crud.php with for example 'use_colored_buttons' => true/false variable.
I know this could be achieved by overriding the default views with my own, I'm just offering my help (PR included) in case you decide this is something worth being in the CRUD package by default.

Hi @pavoltanuska ,
I understand what you're saying, I've tried it myself for a project because it sounded like a good idea to me too. And I had exactly the same color importance in mind, so I guess we think alike :-)
During that project I've discovered that it's not a great idea to make the line buttons so colorful, because it places focus on the buttons, rather than the information. So it's establishing a visual hierarchy where we, as developers, specify: these are the most important features in the UI, in this order - delete, edit and create. And that might not be true for every admin, every time they access the table view. And it might be different from CRUD to CRUD. Sometimes the admin might come in to search. Other times to reorder. And in those times, the colors will just tell them "look at me" when they actually want to be looking somewhere else. It's visual hierarchy taken too far and it might become bothersome. That's why, at the time, I decided to keep the colors on the create/edit/reorder screens and NOT keep the colors in the table view. Since on those screens the save action definitely is the most important one, no doubt about it.
Now I think this visual hierarchy issue might be because the colors are so damn powerful. But then again, having them so powerful does help in a lot of other places. And introducing new colors that are less obvious is bad practice - there are already enough colors as it is. Sorry for taking you through my entire thought process, but it just wanted to show you I've considered it again.
I'm not hell-bent on this - if there is enough support behind this we'll do it, but for now I'd stick to my previous decision to leave them as btn-default, sorry.
Anyone else - opinions?

I do tend to add colours, but agreed that too many colours can be distracting.
Using Github as an example, the section here only has 1 coloured button to show the primary function, everything else is pretty subtle

Same for amazons checkout, only the primary function is styled differently

And twitter, all the less important call to actions are subtle, then the main one is styled/coloured

So yeah, some colour will be good, but I think only for the primary action, anything else should be pretty subtle

@tabacitu no reason to be sorry, your explanation actually makes sense. Abusing the colors could indeed lead to admin interface looking like a bad trip to the circus.
@OwenMelbz wow, you put quite some effort into the research, big props! Having said that, I think only the Gmail example is really applicable here, as the other examples are too specific. Not that it makes your point any less valid!

Github issue - if you've already opened that page, commenting is the most probable action
Amazon - e-commerce site should always try to funnel you to the "Buy ASAP" option, thus highlighting any other option would be contraproductive, businesswise.
Twitter - you're on the "timeline"/"main page" so the important content is right before your eyes. Other sensible action is to "tweet", so they're highlighting that. On the other hand, you have no
Messages or Notifications. If that was the case, that sections would actually be highlighted (with (I think?) a red notification badge) and you would be funneled to interact there.

And then there's Gmail - you're 100% correct here, "Composing" the message is the priority and the secondary action buttons (Delete, Archive) should take no precedence among themselves, as they are on the same functionality level. (What caught my eye is that you have only text in the buttons, no icons. I find icons easier to navigate the site visually, the text only buttons look annoyingly same to me :) )
I'll rest my case about the secondary CRUD buttons here.
I'm still not sure about the main "+ Add" button. On one hand, it's styled with btn-primary and not btn-default, therefore it's kind of prominent. On the other one, making it btn-success could add some more meaning to it.
But that's probably just nitpicking and I can live with that :)
Anyway, thank you both for your input, I appreciate it!

:-) Great to hear that. Wonderful work, @OwenMelbz .


⚠ Bofrost.de has degraded performance

In 055be60, Bofrost.de (https://www.bofrost.de) experienced degraded performance:

HTTP code: 200
Response time: 872 ms

Resolved: Bofrost.de performance has improved in 5979ff5 after 15 minutes.


About Training Testing Gap

Hi, I noticed that, during the training process, a memory bank is constructed by randomly selecting three frames from the input video consisting of eight frames. Notably, the ground truth (GT) values, instead of the model's predicted values, are stored in the memory bank. Could you elucidate the reasons behind the incongruity between the training and testing logic？

We do use the model's predicted value in the memory bank. See https://github.com/hkchengrex/XMem/blob/4589acce67dfd952b28f779f9e55a39ce8ebb9d6/model/trainer.py#L111-L113


[RFC] chore: Component performance tests

Measuring rendering performance
We would like to have some kind of performance tests (1) to answer questions like "How will using stardust components influence my app's performance" and (2) to avoid any performance regressions.
As a proof-of-concept, this PR introduces performance tests which measure render times for all doc site examples:
$ yarn test:perf --headless
...

========================== Performance tests results ===========================
components/Accordion 3 test(s), avg = 35.1 ms, max = 57.9 ms, min = 20.9 ms
components/Avatar 9 test(s), avg = 35.388777777777776 ms, max = 105.4 ms, min = 13.999 ms
components/Button 16 test(s), avg = 24.050125 ms, max = 56.9 ms, min = 16.2 ms
components/Chat 2 test(s), avg = 18.25 ms, max = 20.2 ms, min = 16.3 ms
components/Divider 11 test(s), avg = 17.345454545454544 ms, max = 30.6 ms, min = 13.2 ms
components/Grid 8 test(s), avg = 35.574875 ms, max = 47 ms, min = 19.3 ms
components/Header 8 test(s), avg = 15.949875 ms, max = 22.599 ms, min = 12.9 ms
components/Icon 6 test(s), avg = 24.48333333333333 ms, max = 36.2 ms, min = 18.101 ms
components/Image 4 test(s), avg = 14.949749999999998 ms, max = 23.7 ms, min = 10.9 ms
components/Input 5 test(s), avg = 24.48 ms, max = 30.5 ms, min = 18 ms
components/ItemLayout 10 test(s), 3 ERROR(S)!!!, avg = 11.209999999999999 ms, max = 18.7 ms, min = 14.599 ms
components/Label 9 test(s), avg = 18.155444444444445 ms, max = 21.3 ms, min = 14.299 ms
components/Layout 6 test(s), 1 ERROR(S)!!!, avg = 13.766666666666666 ms, max = 19.9 ms, min = 13.5 ms
components/List 20 test(s), 6 ERROR(S)!!!, avg = 19.544999999999995 ms, max = 34.7 ms, min = 21.3 ms
components/Menu 16 test(s), avg = 25.356375 ms, max = 32 ms, min = 22.001 ms
components/Radio 1 test(s), avg = 25.501 ms, max = 25.501 ms, min = 25.501 ms
components/Segment 2 test(s), avg = 11.45 ms, max = 11.8 ms, min = 11.1 ms
components/Text 11 test(s), avg = 13.145363636363635 ms, max = 17.2 ms, min = 11.4 ms
================================================================================

[14:51:54] Finished 'lighthouse' after 17 min
[14:51:54] Finished 'perf' after 17 min

Current results
| tests | avg [ms] | max [ms] | min [ms]
-- | -- | -- | -- | --
components/Accordion | 3 | 35.1 | 57.9 | 20.9
components/Avatar | 9 | 35.4 | 105.4 | 14.0
components/Button | 16 | 24.1 | 56.9 | 16.2
components/Chat | 2 | 18.3 | 20.2 | 16.3
components/Divider | 11 | 17.3 | 30.6 | 13.2
components/Grid | 8 | 35.6 | 47.0 | 19.3
components/Header | 8 | 15.9 | 22.6 | 12.9
components/Icon | 6 | 24.5 | 36.2 | 18.1
components/Image | 4 | 14.9 | 23.7 | 10.9
components/Input | 5 | 24.5 | 30.5 | 18.0
components/ItemLayout | 10 | 11.2 | 18.7 | 14.6
components/Label | 9 | 18.2 | 21.3 | 14.3
components/Layout | 6 | 13.8 | 19.9 | 13.5
components/List | 20 | 19.5 | 34.7 | 21.3
components/Menu | 16 | 25.4 | 32.0 | 22.0
components/Radio | 1 | 25.5 | 25.5 | 25.5
components/Segment | 2 | 11.5 | 11.8 | 11.1
components/Text | 11 | 13.1 | 17.2 | 11.4
What to measure
React uses User Timing API to track component performance. Chrome Devtools displays these metrics in Performance:

This PR adds stardust.perf.measureMount into ExternalExampleLayout. This measures time from componentWillMount() to componentDidMount().
How to measure
Lighthouse is an automated tool to run tests against a web page.
It can be used from command line. It runs inside chrome, and, among other things, measures it's performance. The final report includes our custom stardust.perf.measureMount which we can evaluate to measure performance of our components.
Discussion
What to test
The current implementation tests individual examples which mostly contain single instance of a component. Rendering times are ~20ms. It would be difficult to measure regressions on these - having an increase of 4ms is 20% in relative numbers which is huge, but in absolute numbers, just 4ms difference is almost no difference.
We can also create example page layouts which would contain hundreds of components, create/generate performance pages with 100 instances of a single component...
To minimise jitter, we can run the same tests several times, or use a baseline example (with html only) to normalise results.
CI workflow
Currently the test only prints results to console. To be valuable it must be run as part of the CI. Lighthouse supports Travis, it reportedly works in CircleCI.
We can run it in Circle CI.
We can build or own solution running in Azure. This would give us full control of the pipeline and should give us lowest jitter. But obviously a lot of work - it is not only about running the tests, it's also about storing the results, comparing them from build to build, drawing fancy graphs...
On the other hand - this would be just one work item away from our own screenshot tests.
We can also use 3rd party cloud solution.
When to run tests in CI
With every commit? Before merge to master? Nightly on master only?
Running the tests for all examples takes more than 15 minutes on a powerful Mac. Running it with every commit could quickly become overwhelming.
Development version of React
The test uses docsite which runs with development version of react. We should expect better performance results with release version, but different runs with development version should still be comparable.
Resources

https://github.com/paulirish/pwmetrics
https://github.com/A-gambit/CSS-IN-JS-Benchmarks

Lighthouse is a cool tool to use! However, as far as I remember, they set default throttling options for tests (like fast 3g). Curious, should we test more speed options?


Rails/TimeZone cop complaints about Time.now.in_time_zone

I have such line in my code:
Time.now.in_time_zone(@time_zone)

And rubocop complaints:
app/controllers/api/timelines_controller.rb:51:10: C: Rails/TimeZone: Do not use Time.now without zone. Use Time.zone.now instead.
    Time.now.in_time_zone(@time_zone)
         ^^^

Is it a bug in rubocop? Or may be I make something wrong?

I'm not sure if that is a bug or not, but it is easy to avoid. Try:
Time.current.in_time_zone(@time_zone)

@mikegee Yes, of course, I know about #current, but I want to figure out in this concrete situation.

I can't get Time.now.in_time_zone(@time_zone) to give the wrong answer with some manual testing.
I don't recommend changing it though. Most of the cops in Rubocop are trying to get folks to follow a guideline, not to just avoid buggy code. Allowing this one usage of Time.now goes against the principle of it.

Looks like this can be closed.


hplip: update version to 3.19.6, enable udev rule file

Motivation for this change

Regular update 3.19.1 -> 3.19.6 .
Segfaults hound hpcups since 3.18.7. Add a patch to cure those.
Uploading firmware to certain printers requires a udev rule file that was previously deleted in the WithPlugin version of the package. The pull request reinstates that rule file and improves the script that patches paths in the file.
Expand package metadata with download URL.

Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests): no tests available
[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nix-review --run "nix-review wip": no depending packages
[x] Tested execution of all binary files (usually in ./result/bin/): see note below
[x] Determined the impact on package closure size (by running nix path-info -S before and after): new version adds 770KiB to package size
[x] Ensured that relevant documentation is up to date: none
[x] Fits CONTRIBUTING.md.

Most binaries are just python script wrappers. Most scripts fail due to missing GUI support or other reasons. This, however, is not due to this pull request.
The pull request was tested with HP LaserJet 1000, connected via USB. Uploading firmware works, triggered by udev. Printing works, with hpcups in the filter chain. Tests have been performed with hplipWithPlugin_3_16_11, hplipWithPlugin_3_18_5, and with hplipWithPlugin.
CC maintainer @ttuegel, and @jgeerds for 3.18.5
@ttuegel: You removed the udev rule file from the WithPlugin version with commit 8ffd6af27e6dfae0a3b4d77db03409f62c5b8d98 ("don't use udev rules to change device owner").  Is this (still) an issue?  If it is, I can try to patch away the offending lines in the rule file.

Oops, tiny update to my branch: I already forgot about https://github.com/NixOS/nixpkgs/issues/58949, which is likely to be fixed by the hpcups patch.


Looking for D drive??

Describe the bug
2024-07-30 09:00:33.837 -04:00 [INF] Loading new Settings Page and caching it for future use
2024-07-30 09:00:33.879 -04:00 [ERR] Object reference not set to an instance of an object.
Full Error:
System.NullReferenceException: Object reference not set to an instance of an object.
at Xenia_Manager.Pages.Settings.SelectTheme() in D:\This PC\Documents\Github\xenia-manager\Xenia Manager\Pages\Settings.xaml.cs:line 37
2024-07-30 09:00:37.723 -04:00 [ERR] Object reference not set to an instance of an object.
Full Error:
System.NullReferenceException: Object reference not set to an instance of an object.
at Xenia_Manager.Pages.Settings.LoadInstalledXeniaVersions() in D:\This PC\Documents\Github\xenia-manager\Xenia Manager\Pages\Settings.xaml.cs:line 72
To Reproduce
Steps to reproduce the behavior:

Start Program

Expected behavior
Expected program to run with no errors
Screenshots
N/A
Additional context
N/A
Log File
Log-20240730.txt

I need more information. What did you exactly do? From the log files it looks like you just downloaded the program and opened it.

Closing this issue due to lack of response.


K8SSAND-615 ⁃ Add support for adding a datacenter to an existing cluster

Background
The steps for adding a DC to an existing cluster differ from those for setting up a new, multi-DC cluster. It involves updating replication strategies of keyspaces and streaming data from an existing DC to the new DC. See the following for more background on the steps involved for adding a DC to an existing cluster:

https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/operations/opsAddDCToCluster.html
https://thelastpickle.com/blog/2019/02/26/data-center-switch.html

Purpose
The purpose of this ticket is to provide support for adding a DC to an existing cluster where the DC will live in a different k8s cluster.
We will also support adding a DC within an existing k8s cluster, but #95 needs to be done first. Adding a DC within an existing k8s cluster will therefore be addressed in a separate ticket.
Details
Assume DC  refers to a CassandraDatacenter unless noted otherwise.

Need to distinguish between adding a DC to a cluster that is initializing vs one that is fully initialized

If a DC is added to the K8ssandraCluster before all DCs are initialized then the process is the same as setting up a new, multi-DC cluster
If a DC is added to the K8ssandraCluster after all DCs are initialized then we follow the process for adding a DC to an existing cluster
We can determine if the cluster is initialized by

Add a CassandraInitialized status condition to K8ssandraCluster
Set CassandraInitialized to true after all DCs have their Initialized condition set to true`

All user-created keyspaces as well as system_traces, system_distributed, and system_auth should be configured to use NetworkTopologyStrategy before adding a new DC

Should we add a validation check for user-created keyspaces in an effort to prevent misconfigured clusters?

Deploy the new DC

Configure additional seeds as we normally do so that the new DC has seeds from other, existing DCs

Wait for the DC to reach the Ready state
Update replication strategy for all user-created keyspaces as well as system_traced, system_distributed, and system_auth to include replicas for the new DC

Need to provide a way for user to specify replicas for each keyspace and each DC

Run rebuild on each node in new DC

Provide a way for user to specify src DC for streaming
Rebuild can run on more than one node at a time. This will be left as an optimization.

Questions
Should we add a validation check for user-created keyspaces in an effort to prevent misconfigured clusters?
I don't think there is a sound reason to use SimpleStrategy in a multi-DC cluster. k8ssandra-operator doesn't have a way to completely prevent it; therefore, I do not think a validation check should be added as part of the normal reconciliation process. I do however think that when adding a new DC the operator should check and only proceed if all user keyspaces are using NTS.
How can the user specify replicas for each keyspace and each DC?
This is tricky because k8ssandra-operator isn't managing the replication strategies of keyspaces, but it does need to update the replication as part of the workflow for adding a new DC. It is also complicated by the fact that in Cassandra 4 you cannot specify DCs that do not exist. You can do this in Cassandra 3. This would simplify things because the user could simply update the replication prior to adding the new DC to the K8ssandraCluster.
I am not in favor of specifying the info in the K8ssandraCluster spec because it involves details that k8ssandra-operator doesn't really manage. I think this could create some confusion.
Another option is for the user to specify the replication via a custom type, e.g., CassandraReplicationStrategy or ConfigMap. Here is an example of how a ConfigMap might look:
apiVersion: v1
kind: ConfigMap
data:
  replication: |-
    - keyspace: ks_1
      dataceteners:
        "dc1": 3
        "dc2": 3
        "dc3": 3
    - keyspace: ks_2
      dataceteners:
        "dc1": 3
        "dc2": 3
        "dc3": 3

The operator could use this ConfigMap if it exists. If it doesn't exist, then the operator could apply a default like replication_factor = min(dc_size, 3).
How will this impact existing orchestration workflows?
We only reconcile Stargate (and Reaper as well with #216) after reconciling all CassandraDatacenters. For example, if we have 3 DCs - dc1, dc2, and dc3 - K8ssandraClusterReconciler will reconcile Stargate if each of the DCs is a ready state. Now let's say we add dc4 and in dc2 we want to add or remove Stargate. Currently the Stargate changes won't be made in dc2 until dc4 is ready. This is suboptimal at best and needs to be changed.
┆Issue is synchronized with this Jira Task by Unito
┆epic: Addition of new DataCenters
┆fixVersions: k8ssandra-operator-v1.0.0-beta.1
┆friendlyId: K8SSAND-615
┆priority: Medium

management-api PR to add endpoint for rebuild operations https://github.com/k8ssandra/management-api-for-apache-cassandra/pull/161

I have a concern about specifying replication for all keyspaces in the ConfigMap approach. Suppose the user inadvertently specifies the wrong number of replicas for another, existing DC. The operator then proceeds to change the replica count for that DC. That would be bad. We could avoid this situation by having the operator ignore the other DCs, but then it seems pointless and confusing to have the user specify them.
Given all this I think a better and simpler approach would be to specify the desired replication for the new DC via an annotation on the K8ssandraCluster object. It could look something like this:
apiVersion: k8ssandra.io/v1alpha1
kind: K8ssandraCluster
metadata:
  annotations:
    k8ssandra.io/dc-replication: '{"dc2": {"ks1": 3, "ks2": 3}}'

The value is a map serialized as JSON. This would allow multiple DCs to be specified which would address scenarios where multiple DCs are added to the K8ssandraCluster in one update.
The behavior I am proposing is as follows:

The operator only uses this annotation when a new DC is added to an existing cluster. It is otherwise ignored.
If specified the operator applies replication changes only for the specified keyspaces
The operator applies replication changes only if the DC is not already part of the cluster

Cluster membership in this context will be determined by looking at the K8ssandraCluster status. If the DC is reported in the status, then no replication updates should be applied.

If the annotation is not specified or if the new DC is not in the annotation value, then the operator should compute the replication for all user-defined keyspaces as follows, replication_factor = min(size(new_dc), 3)

I like the idea of using the annotation.
I'm a little more nervous about having default behaviors for keyspaces that aren't explicitly specified in the annotation.
One could assume (and that would be legit) that nothing happens to keyspaces that aren't in the annotation, although they'll be modified to replicate on the new DC.
Maybe we could start with more safety over convenience, and expect all existing keyspaces replication factors to be set in the annotation (0 meaning unreplicated) and fail the reconcile if there are still non system keyspaces which aren't there.
We can revisit that and define default behaviors based on user feedback.
wdyt?

This will help eliminate surprises. Sounds good to me.

So hopefully I remember everything we discussed, but here's my take - I want to see more automation rather than less. Not all K8ssandra users are supposed to be experts and also managing a JSON in annotation is painful and slow.
What I'd rather see is a set of options (even in a custom type), such as:

automate

k8ssandra-operator sets all the replication_factors based on our logic

user-defined: |-

user has to set all the user keyspaces

overrides: |-

Take the input from automate or default if the keyspace isn't in this override list

default: n

unless overridden, the default value set here is used

With the truth table looking something like this in a table (x = error, * = accept):

automatic
user-defined
override
default

automatic
-
x
*
x

user-defined
x
-
x
x

override
*
x
-
*

default
x
x
*
-

Thus more than 2 set is never accepted.

So catching up on this, I had a few thoughts I wanted to get down...
A really good goal for us to trek towards as a project is to automate as much as possible and make C* itself easier to manage in the process -- it's naive to think we can remove all of the knowledge necessary to operate it, but we can take steps like what @burmanm proposes there to make it easier -- I love the idea of the automate setting, where you can in theory set it and forget it.
That I think though is not where we're at right now in our initial phase, so what I'd propose we do is take the page from what is coined there as user-defined and say that's where we start.  We'll expand later to include other optional approaches (I'll create an additional ticket to track that idea so we don't lose it), but we need to start with an approach we can manage timeline wise.
On the topic of annotation vs structured resource though, I'm quite torn.  One one hand I can see values (like self-documentation and potential validation) of a structured resource -- but I also dislike the increased proliferation of configuration as more and more resources are created.  As a user in this case I feel like I'd like to set that configuration directly in the K8ssandraCluster resource -- in fact I'd like to set as much there as possible really.  The annotation approach on the other hand gives that locality of configuration but lacks in the other ways and is probably a bit more error prone in nature -- although I'm not too terribly averse to the JSON string myself, but maybe that's just because I'm used to it in the web application world (hey, at least it's not yaml - am I right? 😉 ).
My main concern here would be are we creating anything that we can't come back from -- knowing that our end-goal is likely to be something closer to what is described with the automate workflow.  It would seem to me that the annotation based approach could be phased out later and transitioned over to a structured resource if necessary -- it would mean some additional logic within the controller, but not any additional burden on the user, and that I think we can live with.
I'd move in favor of the more simple approach we currently have and get that over the finish line.  Once that is getting some usage we can think a bit more about how we can enhance it, and instead of focusing on the input mechanism (structured vs annotation) instead dedicate time to solving the automation case -- which I think has a lot more benefit to users in the long run.


[FLINK-13116] [table-planner-blink] Fix Catalog statistics is not bridged to blink planner

What is the purpose of the change
Supports catalog statistics in blink planner
Brief change log

Supports catalog statistics in blink planner

Verifying this change
This change added tests and can be verified as follows:

Added CatalogStatsTest that validates the catalog statistics is used in optimizer

Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): (yes / no)
The public API, i.e., is any changed class annotated with @Public(Evolving): (yes / no)
The serializers: (yes / no / don't know)
The runtime per-record code paths (performance sensitive): (yes / no / don't know)
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: (yes / no / don't know)
The S3 file system connector: (yes / no / don't know)

Documentation

Does this pull request introduce a new feature? (yes / no)
If yes, how is the feature documented? (not applicable / docs / JavaDocs / not documented)

hold on a second, the JIRA has a fixVersion for 1.9; are we still merging features?

hi @zentol , this PR is in the 1.9 plan. I hope this PR could merge into 1.9, and that could make the hive function more complete.  i will rebase master and resolve the conflicts.

hi @zentol , this issue looks like a feature but is actually a bugfix. It fixes the problem that the catalog statistics don't pass to the optimizer side correctly. Maybe we should have a better name to reflect the real purpose of this PR.

I will modify this when merging. Thanks for the contribution @godfreyhe .


Support for solve before constraints

Hi @mballance
As we know System Verilog has solve before constraint property, to specify the order of constraint solving. We tried to found some alternatives, but haven't found the solution. So, can we have support for the same in pyvsc or some other way to do it?
Thanks & Regards,
Yash

Hi @pvipsyash,
Can you share an example of your use-case for solve-before? I'm assuming it's to control distribution across constraint-related variables. A testcase would also be very helpful to be able to validate any implementation.
This feature, unfortunately, is a fairly major one and will likely take some time. In the meantime, you might try using dist constraints if you just need to fix-up the distribution on some variables.
Best Regards,
Matthew

Hi @mballance ,
Solve before is the constraint property. solve before is used inside the constraint block to specify the order of constraint solving. If the variables are dependent, due to the bidirectional nature of constraints value of one variable will influence the value of another variable.
Means if a = b + 5 and a,b are random variables, then constraint on B must solve first. So, for this we can write, b solve before a.
Thanks & Regards,
Shraddha Devaiya.

Hi @ShraddhaDevaiya,
Yes, I'm familiar with the construct and the description you quote:
https://verificationguide.com/systemverilog/systemverilog-solve-before-constraints/
My request was for a testcase or use-case example that we could use for validating the implementation, and possibly for finding a short-term alternative solution since solve-before is a somewhat-involved construct to implement. Do you have such a testcase?

Thanks,
Matthew

Hi @mballance ,
Sorry for misinterpreting it. I am working as per your inputs for solve before using weighted distribution and trying to produce the behavior. Will provide the use-case for this.
Thanks & Regards,
Shraddha Devaiya.

Hi @mballance, I was trying this code for solve before constraint using weighted distribution. Following is the code for it :
import vsc

@vsc.randobj
class my_s(object):
    def __init__(self):
        super().__init__()
        self.a = vsc.rand_bit_t(8)
        self.b = vsc.rand_bit_t(8)

    @vsc.constraint
    def ab_con(self):
        vsc.dist(self.a, [
            vsc.weight(1, 5),
            vsc.weight(2,2),
            vsc.weight(3,2)])

        with vsc.implies(self.a == 1):
            self.b == 1

item = my_s()

for i in range(10):
    item.randomize()
    print("A = ",item.a,", B = ",item.b)

And for this, output is like following :
A =  3 , B =  0
A =  1 , B =  1
A =  1 , B =  1
A =  1 , B =  1
A =  1 , B =  1
A =  3 , B =  7
A =  3 , B =  90
A =  1 , B =  1
A =  1 , B =  1
A =  1 , B =  1

Here, we get more occurrences of value a=1 , but it will not give any other values except specify in weighted distribution constraint. But temporary we can use this.
Thanks & Regards,
Shraddha Devaiya.

Hi @mballance
When can we expect support for solve before? without it, every time we need to find some workaround for dependency.
Thanks & Regards,
Yash Patel

Hi @pvipsyash,
Apologies for the delay in this, Yash. Supporting solve-before turned out to be a much larger project that I had originally thought. I'll try to get you an update this weekend when I have a bit more time to work on the project.
Best Regards,
Matthew

Hi @pvipsyash,
I was able to spend some time on this over the weekend, and believe I'm pretty close to having an implementation ready to release. I have a bit of cleanup still to do, but should be able to get something out this week.
Best Regards,
Matthew

Hi @mballance
Thanks for the updates. It will be a great help!
Regards,
Yash Patel

Hi Yash,
I've merged support for solve-ordering into PyVSC mainline. Here is an example of using the features:
https://github.com/fvutils/pyvsc/blob/487620ad2ccca6c2327731f20c2665a823971656/ve/unit/test_constraint_solve_order.py#L80-L92
I'll leave this issue open until you're able to confirm that it works for you.

Best Regards,
Matthew

Hi @mballance
Thanks for adding this support. As we need to apply this constraint on list-type as well. I've tried some examples but it is not working.
`
import vsc
from enum import IntEnum, auto
class my_e(IntEnum):
ZERO = 0
ONE = auto()
TWO = auto()
@vsc.randobj
class my_c:
def init(self):
self.s = 7
self.a = vsc.randsz_list_t(vsc.rand_uint8_t())
self.b = vsc.rand_list_t(vsc.enum_t(my_e),5)
@vsc.constraint
def my_const(self):
    vsc.solve_order(self.b, self.a)
    self.a.size == self.s

obj = my_c()
for i in range(5):
obj.randomize()
print(obj.a, obj.b)
`
Can you look into it?
Thanks & Regards,
Yash

Hi @mballance
Thanks for adding this support. As we need to apply this constraint on list-type as well. I've tried a few examples but it is not giving proper output.

Can you look into this?
Regards,
Yash

Hi @pvipsyash,
Thanks for the testcase. Really helped in reproducing the core issue, which involved the unconstrained elements of the arrays not being properly randomized. The 0.2.5 release resolves this issue.
I'm closing this issue for now. Please open a new issue if you experience other trouble using the solve-order constraint.
Best Regards,
Matthew


Unable to read value in searchType: dvField while using symbol like euro (€)

When trying to read a value from a dvField that contains a symbol like euro, it is unable to read it.
For example "Bike:: 25€" returns an error "No valid Y value found in notes",
while "Bike:: 25 Euro" works just fine.

It is caused by the unicode character not included in the search pattern.
Will fix it.
Thanks for the report.

Unicode characters like these now can be used in dvField in release v1.10.9.
Will close this issue.


Support binary response bodies from AWS service

Fixes https://github.com/rusoto/rusoto/issues/445 .
I've added integration tests including a sample binary file.
Since we're reading the entire contents into a vector, downloading large files will cause memory bloat.  I'm not yet sure how we can get that reduced, but it'll likely be done in https://github.com/rusoto/rusoto/issues/481 .
@doomsplayer @bavardage can you see if this branch works for you?

Seems not work on me. The gzipped file's header is like
Headers { x-amz-id-2: jDyYi5dVop4HAVRE/1kORMJ5mnSJtZ5KPmyzqbv42dWvq7ZGh2wUFaBhPZfydmouL+kbCiT7JHI=
, x-amz-request-id: F861A630AFEF60D7
, Date: Thu, 09 Feb 2017 10:46:41 GMT
, x-amz-replication-status: REPLICA
, Last-Modified: Thu, 01 Sep 2016 00:46:48 GMT
, ETag: "528cfecffd5ace25280fca7f292bf5ff"
, Content-Encoding: gzip
, x-amz-version-id: rSJelep4aoAifrD2XJsmMTzDwpibt06R
, Accept-Ranges: bytes
, Content-Type: text/plain
, Content-Length: 1069972
, Server: AmazonS3
, }

So it's actually a test/plain.