Run non-exercise tests in CI

This PR adds rake test to the travis config to run non-exercise tests in CI as discussed in #519.
Resolves #519.

I think we need to first add some magic to not create test coverage files in Travis.

Is this something you can do @tommyschaefer ?

From the Travis log:
$ rake test
Run options: --seed 21175

# Running:

...................

Fabulous run in 0.009044s, 2100.8717 runs/s, 2432.5883 assertions/s.

19 runs, 22 assertions, 0 failures, 0 errors, 0 skips

The command "rake test" exited with 0.

Clearly the answer was yes. :heart:

This is a separate issue that I noticed while looking through the Travis log:

Use assert_nil if expecting nil from /tmp/all-your-base.FzoC9cwNdy/all_your_base_test.rb:280:in `test_second_base_is_negative'. This will fail in MT6

Are these still the old tests? Is this an issue in the new ones?

Are these still the old tests? Is this an issue in the new ones?

Yes, this is a warning from the old tests. The new tests generated in #510 don't have this issue.
The old tests use assert_equal nil, ... rather than assert_nil ... which causes the warnings, but the new tests never expect nil since it's actually an error case. Now we expect to raise an argument error.

FWIW: This is a situation where I would have recommended NOT squashing the commits, as adding the rake command to the travis config and altering the test_helper.rb are two separate actions.
It doesn't matter too much here, but it's perhaps a little lesson that squashing is not ALWAYS the thing to do.

Ah! Good point! Thank you for the feedback!

You can still separate them out, if you wanted to in this PR. But yes, no worries.


WIN32 is not necessarily defined _WIN32 should be

Typo or intentional?
_WIN32 is described in https://msdn.microsoft.com/en-us/library/b0084kay(v=vs.140).aspx for all editions WIN32 is not defined for any. Thus the reason to not change this, would be to somehow take into account windows c++ compilers that does not define this flag by default. However, on my combination of cmake flags WIN32 were not defined at compile-time.
(On Windows 8.1 with Visual studio v140, v120 and the Intel C++ Compiler 17.0 - Using ExternalProject_Add almost the same way Slicer do, but without the VTK dependency)

I realized WIN32 not being defined was due to my CMake flags not being parsed properly.


Question : Friend & Low power node with nRF52840

Good morning,
I tried to setup a low power node and a friend with two nRF52840 and it doesn't seem to work. Any indication would be helpful.
For this, I used the onoff-app as base project, and changed the Kconfig as follow :
To Reproduce
For the low power node :
CONFIG_BT_MESH_LOW_POWER=y
CONFIG_BT_MESH_DEBUG_LOW_POWER=y
# Other values as default

For the friend :
CONFIG_BT_MESH_FRIEND=y
CONFIG_BT_MESH_FRIEND_ENABLED=y
CONFIG_BT_MESH_FRIEND_QUEUE_SIZE=16
CONFIG_BT_MESH_DEBUG_FRIEND=y
# Other values as default

Logs and console output
Then I provisionned the low power node first, then the friend, with the nRF mesh app. The logs are as follow :
For the low power node :
provisioning complete for net_idx 0x0000 addr 0x0002
[00:00:58.521,240] <inf> bt_mesh_main: Primary Element: 0x0002
[00:00:58.521,240] <dbg> bt_mesh_main.bt_mesh_provision: net_idx 0x0000 flags 0x00 iv_index 0x0000
[00:00:58.527,862] <dbg> bt_mesh_lpn.bt_mesh_lpn_init:
[00:00:58.527,862] <dbg> bt_mesh_lpn.bt_mesh_lpn_init: Waiting 15000 ms for messages
[00:00:58.527,862] <dbg> bt_mesh_lpn.lpn_set_state: disabled -> timer
[00:01:04.729,492] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:04.818,237] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:05.223,205] <wrn> bt_mesh_transport: No matching TX context for ack
[00:01:05.223,205] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:05.313,507] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:06.888,763] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:08.463,256] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:08.466,308] <dbg> bt_mesh_lpn.bt_mesh_lpn_msg_received: Restarting establishment timer
[00:01:23.466,369] <dbg> bt_mesh_lpn.lpn_timeout: state: timer
[00:01:23.466,369] <dbg> bt_mesh_lpn.lpn_timeout: Starting to look for Friend nodes
[00:01:23.466,400] <dbg> bt_mesh_lpn.lpn_set_state: timer -> enabled
[00:01:23.466,613] <dbg> bt_mesh_lpn.send_friend_req:
[00:01:23.467,346] <dbg> bt_mesh_lpn.lpn_set_state: enabled -> req wait
[00:01:23.567,413] <dbg> bt_mesh_lpn.lpn_timeout: state: req wait
[00:01:23.567,901] <dbg> bt_mesh_lpn.lpn_set_state: req wait -> wait offer
[00:01:24.657,989] <dbg> bt_mesh_lpn.lpn_timeout: state: wait offer
[00:01:24.657,989] <wrn> bt_mesh_lpn: No acceptable Friend Offers received
[00:01:24.658,233] <dbg> bt_mesh_lpn.lpn_set_state: wait offer -> enabled
[00:01:32.658,294] <dbg> bt_mesh_lpn.lpn_timeout: state: enabled

Then the 8 last lines would repeat as he tries to find a friend. So far, it seems to work.
For the friend :
provisioning complete for net_idx 0x0000 addr 0x0006
[00:00:14.376,708] <inf> bt_mesh_main: Primary Element: 0x0006
[00:00:14.376,708] <dbg> bt_mesh_main.bt_mesh_provision: net_idx 0x0000 flags 0x00 iv_index 0x0000
[00:00:20.808,410] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:20.808,685] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:20.808,715] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:20.808,715] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:20.808,746] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:20.808,746] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:20.943,420] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:21.348,419] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:21.348,449] <wrn> bt_mesh_transport: No matching TX context for ack
[00:00:21.438,385] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:21.438,568] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:23.013,397] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:23.013,610] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:24.633,483] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:24.678,497] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0006
[00:00:24.678,558] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001
[00:00:24.680,175] <dbg> bt_mesh_friend.bt_mesh_friend_match: No matching LPN for address 0x0001

What surprised me a bit is that he searched at address 0x0006 (itself) and 0x0001 but the LPN was provisionned with base address 0x0002. Is that normal ?
I tried to play a bit with Kconfig option, for example setting BT_MESH_LPN_RECV_DELAY at 150 but without success.
Is there an example somewhere about LPN & Friend ?
Expected behavior
I expected the friend to see the low power node and establish a connexion with it.
Impact
I need the Friend-Low power node feature for a project.
Environment (please complete the following information):

Linux Ubuntu 20.04.1 LTS
Toolchain : Zephyr SDK
Version 2.4.99 as per version file. The command git rev-parse HEAD gives me : 52ad9a468c1a3ae9a00d1e5aac389c5bfcf087ec.

Best regards.

I've tried to change the config for the low power node as follow :
CONFIG_BT_MESH_LOW_POWER=y
CONFIG_BT_MESH_LPN_SCAN_LATENCY=30
CONFIG_BT_MESH_LPN_RECV_DELAY=40
CONFIG_BT_MESH_LPN_POLL_TIMEOUT=300
CONFIG_BT_MESH_DEBUG_LOW_POWER=y
# Other values as default

As I've seen it commented is some nrf config, without success.


PyThaiNLP 2.3 change log

Schedule

First development release: 16 March 2021
Beta release: 23 March 2021
Production release: 30 March 2021

Docs: https://pythainlp.github.io/dev-docs/index.html
See 2.3 Milestone.
Deprecation and other API changes

NER change a ThaiNER model (from ThaiNER 1.4 to ThaiNER 1.5). If you need use ThaiNER 1.4 model, You can use version in ThaiNameTagger class. pythainlp.tag.named_entity.ThaiNameTagger(version: str = '1.4') (Docs: https://pythainlp.github.io/dev-docs/api/tag.html#pythainlp.tag.named_entity.ThaiNameTagger)

Tokenizer

#484 Add: model option for attacut.tokenize()
#502 Add: corpus.util.revise_wordset() to revise tokenization dictionary
#503 Add: NERCut tokenization engine

Corpus

License change:

All corpora, datasets, and documentation created by PyThaiNLP project are now released under Creative Commons Zero 1.0 Universal Public Domain Dedication License (CC0).
All language models created by PyThaiNLP project are released under Creative Commons Attribution 4.0 International Public License (CC-by).

#449 Fix: remove instances with [ or ] from etcc.txt
#467 Add: corpus.common.provinces() can now return romanized names
#476 Add: thai_family_names() to get a set of Thai family names
#487 Fix: thailand_provinces_th.csv not found issue
#492 Fix: remove erroneous AITT tag from ORCHID to UD table -- thanks @c4n for the fix

POS Tagger

#464 Add: LST20 language model for part-of-speech tagging
#468 Add: port PerceptronTagger from NTLK. POS tagging no longer needs NLTK for dependency.
#478 Update: ORCHID POS tags documentation

Name Entity Tagging

#526 Update ThaiNER 1.4 to ThaiNER 1.5
#538 Add ThaiNameTagger version and add ThaiNER 1.4 support

Transliterate

#485 Fixed Romanize failed in some examples
#511 Add Thai W2P (Thai Word-to-Phoneme converter)

Text Summarize

#523 Add mT5 text summarize to pythainlp.summarize

Chunk parser

#524 Add pythainlp.tag.chunk

Util

#481 Fix: remove_repeat_vowels() bug that remove spaces between different vowels
#483 Add: add remove() method to remove a word from a trie -- thanks @korakot
#490 Fix: thai_strftime() - normalize output for unsupported directive (running in glibc and musl should produce the same output)
#512 Add: emoji_to_thai() to convert emoji to Thai description -- thanks @ppirch for the development
#513 Add: thai_keyboard_dist() to calculate euclidean distance between two characters according to their location on a Thai keyboard layout -- thanks @ppirch for the development

Update Schedule


Move tolerance option

Make the moveTolerance variable in ol.MapBrowserEventHandler configurable via a moveTolerance option in ol.Map
Fix #6831

Nice work @itjope, I think would be useful to have this in.

Thanks for this contribution @itjope. Can you please submit a CLA so we can merge this?

@ahocevar  I have now sent a scanned signed copy of the CCLA.


Log Mavic Air3

Hi,
I have tried Tiplot v1.2.5 on Windows 11 to decod a flightrecord .txt file from a DJI mavic air 3 but Tiplot is loading the file without decoding it.
Could you help me?
Thanks,
Ben

Hi @benvsn238,
At the moment TiPlot only supports parsing DJI's DAT files, so that's why your TXT file isn't being decoded. Support for TXT files is something we're considering for future updates, but it's not available yet.


Generating additional presets if no presets file exists

Brief Issue Summary
Hi team! I was playing around with presets and ran into some strange error messages. Here is how you replicate:

open a project that does not have a CmakePresets.json file
Go to your settings and change the Use Cmake Presets setting to "always"
go back to your project and use the "Add configure preset", then choose based on your compiler, choose a compiler and add a name
A presets file will be generated for you. Now, click on the buttons in the status bar. When you choose "No configure preset selected" it will give you the error "Cannot configure: no configure preset is active for this CMake project"

I showed this to Ben and Sinem who both mentioned that by design, this makes sense, but is super confusing from a user experience. I through by using this method that the extension would just generate the entire presets file for me.
CMake Tools Diagnostics
{
  "os": "win32",
  "vscodeVersion": "1.86.1",
  "cmtVersion": "1.18.3",
  "configurations": [
    {
      "folder": "c:\\Users\\Cmakedemo",
      "cmakeVersion": "3.27.4",
      "configured": true,
      "generator": "Ninja",
      "usesPresets": false,
      "compilers": {
        "C": "C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/Llvm/x64/bin/clang.exe",
        "CXX": "C:/Program Files/Microsoft Visual Studio/2022/Preview/VC/Tools/Llvm/x64/bin/clang.exe"
      }
    }
  ],
  "cpptoolsIntegration": {
    "isReady": true,
    "hasCodeModel": true,
    "activeBuildType": "",
    "buildTypesSeen": [
      "Debug"
    ],
    "requests": [
      "file:///c%3A/Users/Cmakedemo/main.cpp"
    ],
    "responses": [
      {
        "uri": "file:///c%3A/Users//Cmakedemo/main.cpp",
        "configuration": {
          "includePath": [],
          "defines": [],
          "compilerPath": "c:/program files/microsoft visual studio/2022/preview/vc/tools/llvm/x64/bin/clang.exe",
          "compilerArgs": [],
          "compilerFragments": [
            "-O0 -g -Xclang -gcodeview -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd"
          ]
        }
      }
    ],
    "partialMatches": [],
    "targetCount": 29,
    "executablesCount": 1,
    "librariesCount": 0,
    "targets": []
  },
  "settings": [
    {
      "communicationMode": "automatic",
      "useCMakePresets": "always",
      "configureOnOpen": true
    }
  ]
}

Debug Log
No response
Additional Information

Just tested this and it has been fixed, when a new preset is added it is by default selected as the active configure preset


CON-4731 Updated SDK

Coverage decreased (-0.05%) to 34.429% when pulling 86858d38b25c24b018f90b422d3102b9f8a9fae8 on CON-4731 into 2e4ee74656060a9cdbe48752fe879d5cb538fb74 on master.

Coverage decreased (-0.05%) to 34.423% when pulling 7ef13723f2c2626420360407c5f532d271eb54c8 on CON-4731 into 2e4ee74656060a9cdbe48752fe879d5cb538fb74 on master.


1.5 Auto resizing row

Functionality of <iron-list> will be used to calculate rows heights when content of grid is rendered. Allowing undefined height of rows.
An example for this functionality will be provided in the scope of #7

reopenned with wrap issue

Done, demonstrated in the remote-data-source demo.


Could you please describe the format of deep_lesion_test.json in the file fps_msb.py?  I have some trouble in learning your codes. Thanks a lot!

hello, can i get your "deep_lesion_test.json", thanks a lot ?


Bump almost every dependency

Description

Recreated the lockfile and bumps a lot of things.
Need to manually check and run through features for regressions.
Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[x] Code quality improvements

How to test

Checklist

[ ] I have tested this code
[ ] I have updated the documentation

Still one remaining runtime error with the following cryptic message:

@chownces have you encountered this before?

Still one remaining runtime error with the following cryptic message:

@chownces have you encountered this before?

Nope, not yet. How can I repro this?

Nope, not yet. How can I repro this?

Just need to run yarn start on playground-only mode.

I think probably one of the resize libraries is causing this issue. Will need to investigate further. This only happens during browser force refreshes on my end.

I think probably one of the resize libraries is causing this issue. Will need to investigate further. This only happens during browser force refreshes on my end.

I suspect might be the router, but also, seems like ace is bugging out as well (despite being not updated):


x/llama3.2-vision:latest not working?

I downloaded x/llama3.2-vision:latest
But getting this error, any clue?

bump :: I get the same issue.

3.2 vision only working with 4.0 can download it here https://github.com/ollama/ollama/releases/tag/v0.4.0-rc3

However, I am getting this issue now

if you using proxy or something there is similar issues that are closed you can search for solutions there.

Not using any proxy, and facing the same issue while using Ollama Vision node.
Using Ollama v0.4.0-rc5.
Note that only the Ollama Vision node seems to be affected, as I'm able to get the Ollama Generate Advance node to work with Llama 3.2 Vision. Error details:
2024-10-27 14:27:53,032 - root - INFO - got prompt
2024-10-27 14:27:53,055 - root - ERROR - Failed to validate prompt for output 79:
2024-10-27 14:27:53,055 - root - ERROR - * (prompt):
2024-10-27 14:27:53,055 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,056 - root - ERROR - * ShowText|pysssss 79:
2024-10-27 14:27:53,056 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,056 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,056 - root - ERROR - Failed to validate prompt for output 77:
2024-10-27 14:27:53,056 - root - ERROR - * (prompt):
2024-10-27 14:27:53,056 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,056 - root - ERROR - * ShowText|pysssss 77:
2024-10-27 14:27:53,056 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,056 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,138 - root - INFO - Processing interrupted
2024-10-27 14:27:53,138 - root - INFO - Prompt executed in 0.08 seconds
2024-10-27 14:27:53,428 - root - INFO - got prompt
2024-10-27 14:27:53,452 - root - ERROR - Failed to validate prompt for output 79:
2024-10-27 14:27:53,452 - root - ERROR - * (prompt):
2024-10-27 14:27:53,452 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,452 - root - ERROR - * ShowText|pysssss 79:
2024-10-27 14:27:53,452 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,453 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,485 - root - INFO - Processing interrupted
2024-10-27 14:27:53,485 - root - INFO - Prompt executed in 0.03 seconds
2024-10-27 14:27:53,492 - root - INFO - got prompt
2024-10-27 14:27:53,514 - root - ERROR - Failed to validate prompt for output 79:
2024-10-27 14:27:53,514 - root - ERROR - * (prompt):
2024-10-27 14:27:53,515 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,515 - root - ERROR - * ShowText|pysssss 79:
2024-10-27 14:27:53,515 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,515 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,516 - root - ERROR - Failed to validate prompt for output 64:
2024-10-27 14:27:53,516 - root - ERROR - * (prompt):
2024-10-27 14:27:53,517 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,517 - root - ERROR - * ShowText|pysssss 64:
2024-10-27 14:27:53,517 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,517 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,547 - root - INFO - Processing interrupted
2024-10-27 14:27:53,547 - root - INFO - Prompt executed in 0.03 seconds
2024-10-27 14:27:53,550 - root - INFO - got prompt
2024-10-27 14:27:53,573 - root - ERROR - Failed to validate prompt for output 79:
2024-10-27 14:27:53,573 - root - ERROR - * (prompt):
2024-10-27 14:27:53,574 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,574 - root - ERROR - * ShowText|pysssss 79:
2024-10-27 14:27:53,574 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,574 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,574 - root - ERROR - Failed to validate prompt for output 66:
2024-10-27 14:27:53,574 - root - ERROR - * (prompt):
2024-10-27 14:27:53,574 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,574 - root - ERROR - * ShowText|pysssss 66:
2024-10-27 14:27:53,574 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,574 - root - ERROR - Output will be ignored
2024-10-27 14:27:53,576 - root - ERROR - Failed to validate prompt for output 64:
2024-10-27 14:27:53,576 - root - ERROR - * (prompt):
2024-10-27 14:27:53,576 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,576 - root - ERROR - * ShowText|pysssss 64:
2024-10-27 14:27:53,576 - root - ERROR -   - Required input is missing: text
2024-10-27 14:27:53,576 - root - ERROR - Output will be ignored
2024-10-27 14:27:56,054 - httpx - INFO - HTTP Request: POST http://<IP_ADDRESS>:11434/api/generate "HTTP/1.1 500 Internal Server Error"
2024-10-27 14:27:56,055 - root - ERROR - !!! Exception during processing !!! POST predict: Post "http://<IP_ADDRESS>:55110/completion": read tcp <IP_ADDRESS>:55113-><IP_ADDRESS>:55110: wsarecv: An existing connection was forcibly closed by the remote host.

I am facing similar issue
{
  "model": "x/llama3.2-vision:latest",
  "prompt": "Describe image.",
  "images": ['image_base64'
    ],
  "format": "json",
  "stream": false
}

returns :
wsarecv: An existing connection was forcibly closed by the remote host.

This custom node supports llama3.2 vision
https://github.com/heshengtao/comfyui_LLM_party

this node supports this model, and it is not Node job to support model, but rather Ollama's one

Yes! After upgrade it works 👯


Smarter retry behavior/cross priority retries

We're interested in having Envoy perform smarter retry behavior, where subsequent requests are sent to different hosts than the original request. More specifically, we'd be interested in having requests that route to priority P attempt to send retires to priority P' != P even in the case where the first priority is completely healthy, but fall back to the original priority if no healthy alternatives exist. The use case is mainly to maintain compatibility with our existing legacy systems: it's an attempt to minimize the change in behavior for our internal users when switching over to routing through Envoy.
Got a few ideas on the top of my mind that might help fuel a discussion:
Configurable subsets on retry
One somewhat suboptimal option would be to use subset lb and allow adjusting the metadata match on subsequent retires. I'm imagining something like:
       route:
          metadata_match:
            filter_metadata:
              envoy.lb:
                metadata: "primary"
          cluster: some-cluster
          timeout: 1s
          retry_metadata_match:
            -  envoy.lb:
                  metadata: "secondary"
            -  envoy.lb:
                  metadata: "tertiary"

which would issue the first request to the primary subset, the first retry to secondary, second retry to tertiary and then loop back again to route to secondary (i.e. the retry list wraps around). With this we could add metadata to the hosts in each priority to allow us to exclude certain priorities (e.g. hosts not in P0 get labeled P0=false).
The problem I can see with this is that there's no guards against the subsets being empty, which would cause an immediate 503 and quickly exhaust the permitted number of retries. Presumably this could be solved by being able to query the load balancer to determine if a subset is empty before trying to route to it, but I'm not sure how easy that would be to achieve. The other issue here is that we don't have knowledge about what priority was actually hit - we have to statically guess what priority to hit on the subsequent requests. For instance, if we have P0, P1, P2 and everything is healthy, requests with retries could hit P0, P1, P2, while if P0 is unhealthy, we'd hit P1, P1, P2.
Cross-priority failover
Another option I can think of would be more tightly coupled to priorities and simply keep track in the retry state what priority was last tried, and would attempt to select a host while ignoring the previous priority. Again this seems like it needs some way of checking whether there are available hosts when when retrying (falling back to hitting the same priority), but it seems like a simpler API and would at least achieve what we're looking for. This approach handles the edge case mentioned in the previous paragraph, because we'd know that we hit P1 on the first request and be able to take that into account when selecting the next priority to route to.
Fully configurable retry routing
A last approach is less fleshed out but would involve being able to register custom retry implementations (like how custom filters can be registered). It could expose an API like
RetryRouteDecision routeRetry(const std::vector<RetryAttempt>& previous_attempts);

This would allow Envoy users to implement an arbitrary retry policy based on the previous attempts, and it could be configurable on the route level, something like:
retry_router:
  name: my_retry_router
  config:
    available_subsets: [ primary, secondary, tertiary]

This way any Envoy user could implement their own bespoke retry behavior. It would still be useful to be able to query the health of subsets/clusters etc for aforementioned reasons, but you could presumably add something a like incrementRetryCounter() to the API to let the implementation decide whether we count the retry towards the retry counters.
Happy to consider other ideas, these were just top of mind.

A variant of the third option would be to use RetryState for this purpose instead of introducing a new type. It seems doable to pass it additional data to shouldRetry and provide hooks to mutate the the LoadBalancerContext values of the Router, allowing it to change the parameters used to select the next connection.

Note this is related to https://github.com/envoyproxy/envoy/issues/2259. @snowp will read/respond to the full proposal in the next few days.

@snowp just catching up here. IMO we should probably do the "fully configurable retry routing" option with some built-in options such as "don't route to to the same host," "don't route to same priority," etc. I think this could be built very cleanly into the existing retry/router implementation and would be very flexible. WDYT? Basically, I would like to solve #2259 while also allowing folks to do more complex stuff if they want?

Yeah that sounds reasonable to me. It would definitely satisfy our needs and seems generic enough that I'm sure others will find it useful.
Happy to work on this. Would it be natural to use the subset lb to implement this behavior? e.g. generate one subset per priority and when a request fails going to P0, we set metadata_match to priority = [P1, P2, ...] (using https://github.com/envoyproxy/envoy/pull/3964)?
One thing that would be nice with this being tied to the subset lb is that the work for host/priority would naturally extend arbitrary subsets.
The main concern I see with using the subset lb is performance, especially with the recent subset lb perf concerns. Does maintaining all these extra subsets in order to do smarter retries make sense? Can this be better implemented in a different way?

Maybe we can just change the name to indicate the function is using a static const backing store so we should avoid copies where we can but it's Ok to not use the literal string in the header entry?

Yeah I'm a little concerned about using the subset LB for this, at least in all cases. Or do you mean just for your plugin? The way I originally envisioned the "don't use the same host again for retry" behavior was to just pass the previous tried hosts as part of the LB context, and let the LB figure it out. So, potentially, should this plugin mechanism actually be a plugin that operates from within the LB context and could be somewhat generic depending on the LB actually used?

TBH I'm not sure of the best solution here without putting some dedicated thought time into it. There is going to be a tradeoff between flexibility and performance. For example, I could imagine a plugin that does something like:

Some method that optionally pre-filters the hosts/priorities to LB on, given the LB context with list of previously tried hosts.
Some method that optionally post-filters the LB result and says something like "try again."

This is not fleshed out, but I wonder if given something like this we could build it into the various LBs pretty easily? For most of the LBs this would be built-in to the base classes anyway and "just work." Anyway maybe it's worth doing a bit of experimentation here and coming back with a more firm proposal?

That sounds reasonable. At least for priorities I think it would have to be a pre-filter simply due to how priorities work: if you're trying to avoid P0 but P0 is healthy you'll always hit P0, so trying again won't help.
I'll spend some time playing around with it and report back when I got a better sense of how this would work. Thanks for all the ideas!

After looking at the code for a while it’s clear that 1) priorities need to be filtered before we attempt to select a host and that 2) filtering individual hosts before selection is hard because they’re buried into EdfSchedulers. As such I propose that we add the ability to filter out hosts during host selection (allowing filtering both before and after host selection) and wire up the router to specify these filters by inspecting the RetryState.
We add three functions to the LoadBalancingContext that can influence the hosts considered during host selection:
absl::optional<std::function<bool(uint32_t, const Host&)>> preFilter() PURE;
std::function<bool(const Host&)> postFilter() PURE;
int maxSelectionAttempts() const PURE;

The first function allows one to optionally specify a priority filter. The presence of this would mean that we generate a temporary per_priority_load using the hosts remaining after filtering them out using the predicate. This will allow filtering out entire priorities or affecting priority spillover by excluding certain hosts, which could in turn affect the per priority health %. Priority selection would then follow as usual, using the updated per_priority_load data. The preFilter functions returns an optional due to the fact that rebuilding the per_priority_load isn’t free, so one might want to return nothing here in order to use the existing load information.
The second filter will be used after chooseHost is selected to determine whether we should reattempt host selection, indicated by returning false. This is done so that we can avoid having to rebuild the schedulers with the filtered hosts, and also makes this mechanism agnostic towards the exact host selection mechanism. No optional is necessary here since a simple []() { return true } should be cheap to evaluate for the selected host.
We’ll probably want to handle the case where applying the filter makes it impossible to find a new host. For instance, when routing to a cluster with only one host and a postFilter that excludes that hosts, we’ll be unable to find a new candidate host. We’ll probably want to bail out of filtering hosts, falling back to using no filters. To make this behavior configurable we have the maxSelectionAttempts function which will return the number of times we should attempt to re-select a host.
To configure this for retries, we can introduce a RetryHostFilterFactory which accepts the RetryState and returns the appropriate predicates. I imagine it would look something like this
abstract class RetryHostFilterFactory {
absl::optional<std::function<bool(uint32_t, const Host&)>> preFilter(const RetryState&) PURE;
std::function<bool(const Host&)> postFilter(const RetryState&) PURE;
}

The router would be initialized with default filters for the initial request (empty optional for preFilter, always true for postFIlter, and only one attempt). In doRetry(), it would call into the RetryHostFilterFactory to retrieve the predicates for this retry attempt and store them in order to return them when the LoadBalancerContext functions are called.
To make this extensible we’d use the same kind of pattern that listeners/access logs/etc uses, and allow specifying a HostFilter by name. Something along the lines of:
retry_host_filter:
   name: envoy.retry_other_priority
   max_selection_attempts: 3
   config: {}

which would live on the RouteAction.RetryPolicy.
Rough order of implementation order:

Add filter functions to LoadBalancingContext and implement logic in LoadBalancerBase to respect them. Router will only ever use the noop defaults.
Allow registering arbitrary RetryHostFilterFactory implementations and have the router set the provided values on retry
Implement SkipAttemptedPriority filter
Implement SkipAttemptedHost filter

Happy to move this to a Google doc if it makes commenting easier.

@snowp in general I think this sounds great to me. For the retry policy, we might want to also allow specifying at the virtual host level? Also, I'm thinking that we can include one or more more built-in policies to solve the "don't retry same host" open issues.
@envoyproxy/maintainers any thoughts on this? @alyssawilk specifically would love your feedback.

Is this in a good enough state that I can start working on the implementation? Or should I wait for more feedback?

Ugh, sorry, I was out last week and am swamped by maintainer rotation this week :-(
Chiming in rather belatedly, I totally agree with Matt that an extensible/customization mechanism is the way to go.  I suspect other folks will want to preserve legacy behaviors so making it easier to program custom host selection seems ideal.
I guess my only thought is rather than have a callback before and after host selection where you mutate state such as per_priority_load, would it make more sense to make the priority and host selection actually the pluggable bit, where the default action is to call the current code, but if a plug-in is configured that's called instead?  Changing the internals before and after feels more fragile than allowing custom code to inspect and make its own decisions.  No strong feelings so if you want to go with the Matt-approved design over my hand-waving that's fine. :-)

@snowp I'm fine for you to move forward. If you want to investigate @alyssawilk's thoughts first that's fine too. I agree with @alyssawilk that not having before/after would be better, though my concern would be that the plugin would then have to do a lot more than what we are proposing that it does with the above design.

Seems like having the pre/post filters would be useful even if we allow overriding the entire host selection method: it'd let people move concerns such as "avoid this host/priority" out of the host selection algorithm, making it easier to reuse between implementations.
If a bunch of awesome host selection algorithms got upstreamed, I could add "retry other priority" to any of them without having them explicitly support that.
Additionally, I'd hate to have to somehow get ahold of the existing priority selection logic so that I can run through the same code with slight modifications.
I think I'll go with the currently approved design for now but open to pivoting if it ends up being too heavily coupled to the lb internals.

not stale, some work done in #4097

Both host selection and retry priority modifications has been implemented, including example implementations.


Add sok tests in Merlin

change dockerfile to build sok unit test;
keep the source folder which has sok test scripts;
add sok test in ci/test_container.sh

This looks good to me - have you built the container and tested that all the tests pass @EmmaQiaoCh  ?

The following line needs to be removed https://github.com/NVIDIA-Merlin/Merlin/blob/main/docker/training/dockerfile.tf#L116 and you need to figure out another way to get your package recognized. If you like that line in the dockerfile, anything you pip install after the ENV VAR is updated will fail, which is why we originally did https://github.com/NVIDIA-Merlin/Merlin/pull/317/. If you want to see an issue I hit, install jupyterlab and try to run... tensorboard will fail to load. Without the added path, it loads correctly.

The following line needs to be removed https://github.com/NVIDIA-Merlin/Merlin/blob/main/docker/training/dockerfile.tf#L116 and you need to figure out another way to get your package recognized. If you keep that line in the dockerfile, anything you pip install after the ENV VAR is updated will fail, which is why we originally did #317. If you want to see an issue I hit, install jupyterlab and try to run... tensorboard plugin will fail to load. Without the added path, it loads correctly.

Hi Julio,
Thanks for your comments, I can reproduce the jupyterlab problem. I tried to downgrade setuptools to '59.4.0', sok installed normally and no ENV needs. And the following distributed_embeddings also installed successfully. But still met the tensorboard plugin load failure. It works on @benfred 's PR, but sok test failed, so we need more time to fix these problems.

I've removed env PYTHONPATH and change to use the pip to install SOK, Please review the code changes. Thanks
Please Note: these changes depends on https://github.com/NVIDIA-Merlin/HugeCTR/pull/317 and https://github.com/NVIDIA-Merlin/HugeCTR/pull/320


First of all, thank you for sharing your code, it helps us a lot.   Can you show us the code for the statistical model activation in Figure 2 of the paper?

First of all, thank you for sharing your code, it helps us a lot.   Can you show us the code for the statistical model activation in Figure 2 of the paper?    llama13b is ok

The ratios in the figure are not summarized from the practical code running. They are derived from our theoretical analysis of the memory mechanism. The detailed analysis for llama13b is shown in Figure 6.

Thank you very much for your response. I have a small question regarding the activation memory generated during standard LoRA-based large model fine-tuning. Is the activation memory represented by the rightmost part of Figure 6? If so, in the LoRA formula ( Y = XW + XAB ), where ( W ) represents the original frozen weights and ( A ) and ( B ) are the low-rank trainable weights of LoRA, have you explicitly measured the activations such as ( XA )?

No, we neglected the activation of XA. If A and B are both trainable, we have to save X for dA and XA for dB, but XA is usually of much smaller size than X. Since XA's shape is [B, N, lora_r], X's shape is [B, N, C] and lora_r is usually very small, the memory of them are not comparable.

Thank you very much for your response. In the image above, does the red-highlighted section represent the activation memory generated during LoRA fine-tuning of a large model with frozen original parameters? I'm not entirely sure about this. If so, then what scenario does the memory next to it represent?

In the image above, does the red-highlighted section represent the activation memory generated during LoRA fine-tuning of a large model with frozen original parameters?

Yes, it can represent the case that tuning all the linear layers by LoRA. In fact, it can also represent the full-tuning.

If so, then what scenario does the memory next to it represent?

The next column is the case that all parameters in the transformer blocks (including lora_A and lora_B if using LoRA) are frozen. In real fine-tuning, we won't freeze all the parameters, but it is a good thought experiment to figure out what is the limit of activation memory that freezing can reduce.


suggestion: nested namespace

you can use temporarily disable any namespace level with Namespace Editor:

set current namespace to desired one
tick option - relative namespace in Options menu
do your stuff
roll back current namespace :root
untick relative namespace

Never too late to reply sorry ^^
Finally, as each studio has is own naming conventions rule and to avoid to make the vanilla behavior too complexe, I decided to open the "replace namespace" behavior. The command dwpicker.show has now an argument to let user write his own function.
Have a nice (8 month later) december ^^


What is different between the InstanceIsolationRequestHandler and CircuitBreakerRequestHandler

What do you want to ask?
When I add some circuitbreaker config and trigger fuse, the InstanceIsolationRequestHandler will intercept request and return  InstanceIsolationException, but I want to return CircuitBreakerException, so what should I do to meet my expectations. Looking forward to your answer, thanks~

The instance isolation priority is greater than the circuit breaker priority, so the InstanceIsolation RequestHandler intercepts the request and ultimately returns an InstanceIsolation Exception. Therefore, it is currently not supported to modify the returned exception to a Circuit BreakerException through configuration or other means.

The question has been answered. No more questions will be raised. Therefore, this issue is closed.


SDIO AT Command

Hi,
IS there any pin configuration for sdio at communication between master and salve.

Can you provide the corresponding log for us to analyze?


Certainty of pedestrian detection

Hello Carla Team,
Does the perception module of Carla provide the percentage value indicating the probability that the detected object is a pedestrian?

OS: win10
CARLA Version: CARLA 0.9.9
Python version: 3.7
Version: 0.9.9

@AkramKalaee what perception module? CARLA is a simulator, not a perception stack. CARLA doesn't do any perception for you.

I mean, how does Carla avoid the collision with pedestrians?


Password Storage

Currently credentials are stored in plain text.
Change to use the keychain instead.

Just FYI, I'm doing huge refactoring in https://github.com/czechboy0/Buildasaur/pull/138, so you might want to hold off on this task for a couple of days. Otherwise it might be a pain to even merge it :)

@czechboy0 that's fine :) will do.

@czechboy0 is this good to go now?

Yes, the big refactoring has been merged. Feel free to use this issue to track progress and ideas, let's discuss how you'll structure the change before you start so that we consider all aspects of it :)

FYI, @Brett-Best. I'm taking over this one. I need it done for more work that's queued.

This has been merged into the v0.8 development branch, so don't expect it in v0.7 yet. Closing to not be in the list of open issues though :)


optimize parsing of single monitor conditions

Conditions are a lot less complex in v2 so no further optimisations needed.


Support languages as first-class property

Can lambci support languages as a first-class property? Instead of:
{
  "cmd": ". ~/init/java 1.7 && mvn install -B -V && mvn test"
}

We would do:
{
  "language": "java:1.7",
  "cmd": "mvn install -B -V && mvn test"
}

Of course, it is just running ~/init/java 1.7 and then whatever is in cmd, but it is a cleaner interface, simplifies cmd, and makes it easier to understand. We also can support multiple languages by doing
{
  "language": ["java:1.7","node:7.2.1"],
}

I know other CI systems have something similar, but I've deliberately shied away from doing this for a few reasons:

There are no extra configuration properties to understand/document/maintain
Because it's imperative, it's a lot easier to debug – because you can see exactly what commands are being executed to setup your environment. Most of the frustrations ppl have with CI systems are figuring out wth is going on under the hood and trying to debug it – by making it explicit, it's a lot easier to see this – because there's no magic, it's just a script or two.
It keeps LambCI flexible – you can add whatever customizations you want before or after language setup, in between running tests, whatever you want – all you need to know is that there's a single cmd run. It's a lot easier to reason about without needing to figure out which step is run when, etc.
There's really not much gained by adding properties like this – just syntactic sugar.

So, for now, I'm -1 on adding this – if there's a compelling reason to do so in the future (ie, there are some really big use cases that this enables) – then it might be worth revisiting.
Hope that makes sense!

Hope that makes sense!

Yeah, I think it does. Just different philosophies. That having been said, I suspect many others added it for that reason. Hopefully this grows big enough to have such problems! :-)

just syntactic sugar

Hey, I like sugar!

just syntactic sugar

technically, so is having a build step and a deployment step, etc. But it does make a lot of it easier to understand. Even if they only are a bunch of separate commands (which is what I do with travis and circle).

a lot easier to understand

Well I'd haggle with you on this one too – I don't think it makes it a lot easier to understand – it just looks a bit neater. The thing is, by adding steps like that you need to document them and maintain them – they're not inherently understandable, how would you know what gets run in what order? That would have to be documented and it's another thing you need to learn about the tool.
Again, remember that this is totally customizable – if you don't like the way concattenating commands looks with && you can write a separate script (which many large projects end up doing with any CI tool), say, lambci.sh in your root directory and just execute that – it could specify things however you wanted:
#!/bin/bash -e

./test
./build
./deploy

Then your cmd is just ./lambci.sh

Well I'd haggle with you on this one too

"You've got to haggle!" https://www.youtube.com/watch?v=1xpzyk8Uo3E :-)


When I "Archive Artifacts" in Jenkins, that should be able to create Artifacts in DeployDB

A very commonly used functionality inside of Jenkins is "Archiving Artifacts" at the end of a build which persists those artifacts inside of Jenkins..
I tihnk it'd be very useful to have a checkbox in the Post build actions to state "[ ] Notify DeployDB of Artifacts" or something like that, would call the "Artifact Created" API in DeployDB.

Reminder - Jenkins is not a long term artifacts store at Lookout. RelEng
makes no guarantee about preserving jenkins builds with attached artifacts
and we reserve the right to delete them as disk space management requires.
If you need something to be preserved, please publish to artifactory.
On Thu, Apr 2, 2015 at 12:47 PM, R. Tyler Croy<EMAIL_ADDRESS>wrote:

A very commonly used functionality inside of Jenkins is "Archiving
Artifacts" at the end of a build which persists those artifacts inside of
Jenkins..
I tihnk it'd be very useful to have a checkbox in the Post build actions
to state "[ ] Notify DeployDB of Artifacts" or something like that, would
call the "Artifact Created" API in DeployDB.
—
Reply to this email directly or view it on GitHub
https://github.com/lookout/deploydb-jenkins-plugin/issues/22.

@csanders-lookout this isn't a Lookout specific request. To me this functionality makes sense to place into this plugin in some form or fashion as an open source project coupled with DeployDB


Update google-cloud-nio to 0.123.9

Updates com.google.cloud:google-cloud-nio from 0.123.3 to 0.123.9.
GitHub Release Notes - Changelog - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "com.google.cloud", artifactId = "google-cloud-nio" } ]

labels: library-update, semver-patch

Superseded by #718.


X-FHIR-Query support for variable extension

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).
Fixes #2075
Description

Add X-FHIR-Query support for variable extension
Gives launchContext access to variable extension

Alternative(s) considered
N/A
Type
Feature
Screenshots (if applicable)
Checklist

[x] I have read and acknowledged the Code of conduct.
[x] I have read the Contributing page.
[x] I have signed the Google Individual CLA, or I am covered by my company's Corporate CLA.
[ ] I have discussed my proposed solution with code owners in the linked issue(s) and we have agreed upon the general approach.
[x] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the style guide of this project.
[x] I have run ./gradlew check and ./gradlew connectedCheck to test my changes locally.
[x] I have built and run the demo app(s) to verify my change fixes the issue and/or does not break the demo app(s).

I am reviewing it, thanks!

@santosh-pingle @jingtang10
Can we first merge https://github.com/google/android-fhir/pull/2066, before we merge this PR?
I am anticipating merge conflicts from https://github.com/google/android-fhir/pull/2066, so I pulled from there and integrate it in this PR.
And I would like to ensure that @MJ1998's contribution is duly noted from https://github.com/google/android-fhir/pull/2066.

I'll resume this tomorrow, to:

refactor, think of ways on how the suspend function will work, in the context of enable when expression, because it uses the same evaluate method. Need to do this since https://github.com/google/android-fhir/pull/2132 was merged
fix merge conflict from the same other PR https://github.com/google/android-fhir/pull/2132

FYI most of the merge conflicts are from this merged PR https://github.com/google/android-fhir/pull/2132

@FikriMilano any update on this PR?

@omarismail94 let me address that tomorrow.
Thanks for the follow-up.

@omarismail94
there is a bug in createXFhirQueryFromExpression method.
where if we try to combine both fhirPathsEvaluatedPairs and variablesEvaluatedPairs, then fold the expression to replace the string template into the right evaluated value, the resulting xFhirQuery string gives the wrong result.
that happens because of the same variable name from both fhirPathsEvaluatedPairs and variablesEvaluatedPairs, and the variable from fhirPathsEvaluatedPairs are given first priority over the one from variablesEvaluatedPairs.
the one from fhirPathsEvaluatedPairs are empty, while what we need was from variablesEvaluatedPairs.
the resulting xFhirQuery has a search parameter, but that search parameter value is empty because of this. This will cause the fhirEngine resolver to search all resources of that type mentioned in the xFhirQuery. This can be prevented if the fhirEngine supports _total, but a quick fix would be to add a random string to prevent the fhirEngine to search everything frmo that resource.
Example:
fhirPathsEvaluatedPairs contains: [{a}, “”]
variablesEvaluatedPairs contains: [{a}, “47626”]
Resulting xFhirQuery: Patient?_id=
The xpected and correct xFhirQuery: Patient?_id=47626
Prevention 1, xFhirQuery: Patient?_total =1&_id=
Prevention 2, xFhirQuery: Patient?_total =1&_id=NOTHING

@FikriMilano
Or what if we replace the value where it exists.
The case where different value exists in both fhirPathsEvaluatedPairs and variablesEvaluatedPairs should ideally be considered as incorrect questionnaire authoring ?

@MJ1998 will also add the filtering as discussed

@MJ1998 @omarismail94 this is ready for review

Thanks @FikriMilano
A few requests as this is difficult to follow:-

Could you resolve the comments.
Also could you describe your solution a little more in this PR's descripiton

hold up, let me try to use _count, and see whether it can prevent the resolver to search everything, when there are no parameter values supplied

@MJ1998 @omarismail94
I've resolved the comments and updated the PR description

@omarismail94
there is a bug in createXFhirQueryFromExpression method.
where if we try to combine both fhirPathsEvaluatedPairs and variablesEvaluatedPairs, then fold the expression to replace the string template into the right evaluated value, the resulting xFhirQuery string gives the wrong result.
that happens because of the same variable name from both fhirPathsEvaluatedPairs and variablesEvaluatedPairs, and the variable from fhirPathsEvaluatedPairs are given first priority over the one from variablesEvaluatedPairs.
the one from fhirPathsEvaluatedPairs are empty, while what we need was from variablesEvaluatedPairs.
the resulting xFhirQuery has a search parameter, but that search parameter value is empty because of this. This will cause the fhirEngine resolver to search all resources of that type mentioned in the xFhirQuery. This can be prevented by using the _count param.
Example:
fhirPathsEvaluatedPairs contains: [{a}, “”] variablesEvaluatedPairs contains: [{a}, “47626”]
Resulting xFhirQuery: Patient?_id= The expected and correct xFhirQuery: Patient?_id=47626
Prevention 1, xFhirQuery: Patient?_count =1&_id= Prevention 2, xFhirQuery: Patient?_id=NOTHING

@FikriMilano can you create an issue here?


Use {array-bracket,object-curly,computed-property}-spacing

The properties that used to be a part of the space-in-brackets setting have been deprecated and broken out into separate settings. This PR updates those.

Awesome thanks


Add content to the Readme

The README.md needed some ❤
What did I do in this PR?

Adpated the description
Added a table of contents
Added some new chapters with code snippets frpm the example.php
Added links to external sources like the official API documentation and php.net

Feel free to give me feedback on this 👍

@dkaisers thanks for the review!
I added your feedback in the latest commit :)

LGTM 👍


travis env build failure : /bin/bash: aclocal-1.14: command not found

It used to build fine when it was on googlecode but now
https://travis-ci.org/facebook/wdt/jobs/139831655
+++git clone https://github.com/google/glog.git
Cloning into 'glog'...
remote: Counting objects: 1412, done.
remote: Total 1412 (delta 0), reused 0 (delta 0), pack-reused 1412
Receiving objects: 100% (1412/1412), 1.31 MiB | 1020.00 KiB/s, done.
Resolving deltas: 100% (1009/1009), done.
Checking connectivity... done.
+++cd glog
+++./configure --with-gflags=/home/travis --prefix=/home/travis
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/home/travis/build/facebook/glog/missing: Unknown --is-lightweight' option Try /home/travis/build/facebook/glog/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
checking for a thread-safe mkdir -p... /bin/mkdir -p
....
config.status: executing libtool commands
+++make -j 4
CDPATH="${ZSH_VERSION+.}:" && cd . && aclocal-1.14 -I m4
/bin/bash: aclocal-1.14: command not found
make: *** [aclocal.m4] Error 127

This is probably same as issue #97  and #86
workaround is :
to add
autoreconf --force --install
before ./configure
(found on http://stackoverflow.com/questions/3096989/libtool-version-mismatch-error/3205400#3205400 )


Metaboss update creator-all all NFTs fail to update

Updating NFTs. . .
180/180 updates failed. Retrying. . .
Updating NFTs. . .
180/180 updates failed. Retrying. . .
Updating NFTs. . .
180/180 updates failed. Retrying. . .
Updating NFTs. . .
180/180 updates failed. Retrying. . .
Updating NFTs. . .
180/180 updates failed. Retrying. . .
Updating NFTs. . .
Reached max retries. Writing remaining items to cache.
Done!
PLS HELP SIR :<
tried different RPCs, seems like this one works the best: https://rpc.ankr.com/solana
but still it always fails

Updating NFTs. . . 180/180 updates failed. Retrying. . . Updating NFTs. . . 180/180 updates failed. Retrying. . . Updating NFTs. . . 180/180 updates failed. Retrying. . . Updating NFTs. . . 180/180 updates failed. Retrying. . . Updating NFTs. . . 180/180 updates failed. Retrying. . . Updating NFTs. . . Reached max retries. Writing remaining items to cache. Done!
PLS HELP SIR :< tried different RPCs, seems like this one works the best: https://rpc.ankr.com/solana but still it always fails

Check the cache file in the same directory you ran the program to see what the errors are.

same issue "error": "Action failed with error: network request failed after three attempts: ensure you used a valid address and check the state of the Solana cluster"

I am having the same issue as the above ^

It's failing to decode the current data from the items in your mint list. Is your mint list correct? Maybe post a couple examples from the mint list here so I can take a look at them.

thanks for getting back. Here it is.

Thanks for getting back. The address is correct.

Thanks for getting back. The address is correct.

I need the actual mint account so I can copy paste it and try looking at it in an explorer.

77hHw476DSB5wAkGUT35o8zDy6Wj939nYvFWuyTfdns8

77hHw476DSB5wAkGUT35o8zDy6Wj939nYvFWuyTfdns8

This isn't a mint account: https://explorer.solana.com/address/77hHw476DSB5wAkGUT35o8zDy6Wj939nYvFWuyTfdns8. Using this address to update your NFT wont' work because it's not an address for a NFT. It's probably your update authority or treasury wallet.

Right that makes sense, this is the address of the wallet that minted the NFT.
How do I find out the mint address? Thanks again! You've been very helpful! I am a bit of a rookie at all this! SO appreciate your time!


M04-LAB09: .net 6 breaking change causes error NETSDK1152

Contact Details
<EMAIL_ADDRESS>What happened?
Lab 08, Ex 1, Task 1, Step 17
Pipeline build does not finish but fails on publish step.
Logs the following error:
C:\Program Files\dotnet\sdk\6.0.403\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path: D:\a\1\s\src\PartsUnlimited.Models\config.json, D:\a\1\s\src\PartsUnlimitedWebsite\config.json. [D:\a\1\s\src\PartsUnlimitedWebsite\PartsUnlimitedWebsite.csproj]
2022-11-30T07:57:02.5094684Z ##[error]Error: C:\Program Files\dotnet\dotnet.exe failed with return code: 1

(Full log entry at https://controlc.com/77b4c695)
Resolution:
Per resolution on this stack overflow post:
https://stackoverflow.com/a/69898671/2934158
Modify the PartsUnlimitedWebsite.csproj file, within the first <PropertyGroup> tag, add the tag:
<ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
Lab
Lab 09 Control Deployments using Release Gates
Relevant screenshots
https://controlc.com/77b4c695
https://stackoverflow.com/a/69898671/2934158
Do you want to help us? 👏

[X] Create a Pull Request by following this project's Contribution Guide

Is it possible to correct the code in the PartsUnlimited project, .csproje file? I would need to fork the PartsUnlimited repo that is deployed from the Demo Generator, is this accessible?

Hello @dave-007 , you can report it at https://github.com/microsoft/AzureDevOpsDemoGenerator
Many labs will be renewed December 9, this one included  --> https://github.com/MicrosoftLearning/AZ400-DesigningandImplementingMicrosoftDevOpsSolutions/discussions/322

The lab was refreshed and released today. I am closing the issue since it's not using AzureDevOpsDemoGenerator anymore. Thank you.


Run wasm-opt on bartholomew.wasm during build

This runs wasm-opt from Binaryen on the bartholomew.wasm file right after compiling in make build.
Signed-off-by: Matt Butcher<EMAIL_ADDRESS>

close #11
This will result in the GitHub action failing, but I'll pick this up in a separate PR.


Interpret Starlark Code

We need to interpret starlark source code so we can provide autocompletion. Either using Go or Java, doesn't matter.
General tasks

Load function definitions for rules
Interpret attributes for any bazel rule based on the definition
Parse the starlark code so we can find load statements, rules, function calls, etc...

This task may take more than one sprint. Bare bones, we need to figure out how to do the things listed in the items above.

Just parse the starlark and show errors (starlark syntax only)


Create Events Button and Form

Create an events button on home page and events form for adding new events (general events)

Event button added to home page. Events stored in Firestore are displayed on a calendar and add events button adds events to Firestore events.


Script broken if you previously installed Wireguard

On Ubuntu 20.04, I installed wireguard with apt install wireguard wireguard-tools wireguard-dkms but didn't do any configuration at all.
The wireguard-install script aborts without doing necessary setup when it detects packages installed, but then add-client always fails because my setup is invalid (for example, /etc/wireguard/params doesn't exist!)
Basically installing the software packages should not be equated with assuming the wireguard tunnel is configured.

The installer script actually abort because it detects existence of '/etc/wireguard' if you remove it, it will probably continue installing/configuring

Indeed:
https://github.com/angristan/wireguard-install/blob/2e492d263ae35b6874831ea1bbc6025f150d9f9f/wireguard-install.sh#L92-L95

Thanks for explaining the check. However, this check is likely to produce false positives. On Ubuntu at least, just apt install wireguard will create that directory, but not put anything in it.
The check could determine if there are any files within /etc/wireguard -- if there are, the existing behavior of echoing an error and aborting should occur, to avoid overwriting a user's manual config. If there are no files in /etc/wireguard, you can safely assume that wireguard is not set up, and proceed with the script.
Either that, or you can read a "Y" or "N" from the command line using the read builtin to ask the user if they want to proceed anyway.
I think this is going to be a fairly common use case for your users of this script:

Install wireguard via the package manager.
Spend an hour trying to configure it
Realize it's more complicated and give up, then google for helper scripts.
Find this script and try to use it.

Also, the error message of the script is a bit misleading. It made me think "Oh, OK, so the install is done. That means I can add a client now, right?" -- Wrong! :) I needed to fix this issue so I could run the install script before using add-client.


Fundraising, Donations, Help

Hi fellows,
I open sourced Papermerge project in February 2020. Since then, I work daily on it and I am very happy to see its userbase growing every single day! So many people use it, provide great feedback, help with code! I received countless number of emails with positive feedback, words of encouragement and features requests.
Thank you all for your fantastic support! :tada:
However, the less bright side of open source projects, especially in their initial phase is the financial part.
All projects struggle at the beginning to survive, Papermerge is no exception :cry:.
Donations
In case you find Papermerge useful, I humbly ask you to support Papermerge via a small donation.
Even an amount as small as $9 will make a huge difference.
For donations, you can use thee channels paypal, patreon and github itself:
Donate via Paypal
Sponsor via Github
Become a Patreon
What you will get in return?
In return, you will benefit from free, open and well documented management system (DMS).
In return, Papermerge will transform your paper work into a pleasant experience - for free!
In return, you will have high quality, easy to use and truly open DMS.
:green_heart: :green_heart:  :green_heart:

Can't donate via paypal, it seems like your account limit is reached

@dgalli1, indeed, there was a problem with my paypal account (My address was incomplete) which placed a limit on the account.
I fixed that.
Thank you a lot for your quick heads up!


Please make a new release

Hello up there. First of all I'd like to say thanks for dateparser.
We are using it in zodbtools to parse human-readable times into transaction ID. We found however that the parsing is very slow if the date/time input is invalid and cannot be parsed into a timestamp. This issue was already reported and somewhat fixed in 2018. However there is no dateparser version released with the fix.
Since last version of dateparser - v0.7.0 - was released in Feb of 2018 - approximately 1 year ago, it suggests that another release is due by.
So could you please release the next version of dateparser and upload it to PyPI?
Thanks beforehand,
Kirill
/cc @perrinjerome

Thank you! ETA for the release is 12th February.

Thanks for feedback, and good luck with releasing.

Version 0.7.1 released (https://github.com/scrapinghub/dateparser/releases/tag/v0.7.1)
Planning for releasing 0.7.2 with pending PRs (no date yet).

@asadurski, thanks for making the release.


TypeScript language server does not load plugins from tsconfig.json

VSCode Version: 1.34.0 and 1.35.0
OS Version: Ubuntu 19.04
TypeScript Version: 2.2 and 3.5-rc

I have constructed a minimal example of a language service plugin for TypeScript to demonstrate that it does not load. The repository contains settings that specify that the workplace version of TypeScript should be used.
Steps to Reproduce:
bullfrog@swamp:~$ git clone https://github.com/spensaur-k/minimal-tsserver-plugin
bullfrog@swamp:~$ code minimal-tsserver-plugin
bullfrog@swamp:~$ cd minimal-tsserver-plugin
bullfrog@swamp:~/minimal-tsserver-plugin$ npm install
bullfrog@swamp:~/minimal-tsserver-plugin$ cd plugin/
bullfrog@swamp:~/minimal-tsserver-plugin/plugin$ npm link
bullfrog@swamp:~/minimal-tsserver-plugin/plugin$ cd ..
bullfrog@swamp:~/minimal-tsserver-plugin$ npm link minimal-lplugin
bullfrog@swamp:~/minimal-tsserver-plugin$ code test.ts

After restarting the TypeScript language server and opening the test file, it can be observed that the plugin is not being run and the logs do not output any information for the plugin

Does this issue occur when all extensions are disabled?: Yes/No
Yes

Thank you for the detailed repo steps and sorry for the delay following up.
I tested this and it looks like the issue is that plugins from the workspace can only be loaded if you are also using a workspace version of typescript. Once I switch to use the workspace TS version, I see the plugin loading:

This is a security restriction. We do allow plugins that are bundled with  a vscode extension to always be loaded


Unable to authenticate GoogleAdsClient over Java 1.8

I'm trying to use Google Ads API, I already have my ads.properties file ready, and I added the following dependencies to my pom file:
 <dependency>             <groupId>com.google.api-ads</groupId>             <artifactId>google-ads</artifactId>             <version>9.0.0</version>         </dependency>
 <dependency>             <groupId>com.google.guava</groupId>             <artifactId>guava</artifactId>             <version>27.0-jre</version>         </dependency>
 <dependency>             <groupId>org.apache.httpcomponents</groupId>             <artifactId>httpcore</artifactId>             <version>4.4.8</version>         </dependency>
But when I try to run the code like this:
File file = new File(this.getClass().getClassLoader().getResource("/ads.properties").getFile());
GoogleAdsClient googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile(file).build();
I get the following error:
org.glassfish.jersey.server.ContainerException: java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V
Is there a problem with the library? And how could I fix it?
Would this be a problem with my credentials?

This is a common version conflict with the Guava dependency. Which version of the client library are you using? If it's 9.0.0 your version of Guava should be 28.2-android

@nwbirnie I tried 28.2-jre but still same issue, I'm not using it for android tho, it's for our general APIs
Any clue?
What else versions I may use?

Please use 28.2-android. We use the android version because we explicitly want to support usage from android (see details).

@nwbirnie Still same error!
Here's my maven dependencies:
        <dependency>
            <groupId>com.google.oauth-client</groupId>
            <artifactId>google-oauth-client-servlet</artifactId>
            <version>1.19.0</version>
            <exclusions>
                <exclusion>
                    <artifactId>servlet-api</artifactId>
                    <groupId>javax.servlet</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.google.apis</groupId>
            <artifactId>google-api-services-oauth2</artifactId>
            <version>v2-rev83-1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.http-client</groupId>
            <artifactId>google-http-client-jackson</artifactId>
            <version>1.19.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.api-ads</groupId>
            <artifactId>google-ads</artifactId>
            <version>9.0.0</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>28.2-android</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.8</version>
        </dependency>

If I want to use version 8, which Guava version would work?

If you move the Guava dependency to the top of the list it should work.
  <dependencies>
    <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>28.2-android</version>
    </dependency>
    <dependency>
      <groupId>com.google.oauth-client</groupId>
      <artifactId>google-oauth-client-servlet</artifactId>
      <version>1.19.0</version>
      <exclusions>
        <exclusion>
          <artifactId>servlet-api</artifactId>
          <groupId>javax.servlet</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>com.google.apis</groupId>
      <artifactId>google-api-services-oauth2</artifactId>
      <version>v2-rev83-1.19.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.http-client</groupId>
      <artifactId>google-http-client-jackson</artifactId>
      <version>1.19.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.api-ads</groupId>
      <artifactId>google-ads</artifactId>
      <version>9.0.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpcore</artifactId>
      <version>4.4.8</version>
    </dependency>
  </dependencies>

Are you using Intellij by any chance? It appears that maven CLI doesn't require this reordering, but IntelliJ does for some reason...
If you want to see the required dependencies for a version, simply add a dependency on that version, then run mvn dependency:tree -Dverbose and look for the entries you're interested in under google-ads. In the case of 8.0.0 the Guava dependency is also 28.2-android.

@nwbirnie yes I'm using IntelliJ for this.
I tried putting the Guava dependency on top, and still the same issue :/
Here's a screenshot from our dependencies tree, please check if we're making a mistake here:\

Is this seems right? And why it's saying com.google.guava:guava:jar:28.2-android:compile - omitted for duplicate:
[INFO]+- com.google.api-ads:google-ads:jar:9.0.0:compile [INFO] |  +- com.google.api:gax:jar:1.57.1:compile [INFO] |  |  +- (com.google.guava:guava:jar:28.2-android:compile - omitted for duplicate) [INFO] |  |  +- (com.google.code.findbugs:jsr305:jar:3.0.2:compile - omitted for duplicate)
I just have it once in my dependencies file

Can you create a repo with a minimal failing example please?

@nwbirnie it's so hard doing so, esp the project is huge and not easy to do so, but I can provide a full image of dependencies tree if that would make it easier?

@nwbirnie check above

I only need the minimal dependencies required to produce an error case, similar to what you pasted earlier.

To give you a starting point, here is the pom.xml and test case I created earlier which fixes the dependency list you originally sent over.

@nwbirnie you mean something like so?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">     <modelVersion>4.0.0</modelVersion>     <groupId>Mashvisor</groupId>     <artifactId>Mashvisor</artifactId>     <packaging>war</packaging>     <version>1.0-SNAPSHOT</version>     <name>Mashvisor Maven Webapp</name>     <url>http://maven.apache.org</url>     <dependencies>         <dependency>             <groupId>org.jasypt</groupId>             <artifactId>jasypt</artifactId>             <version>1.9.2</version>             <scope>compile</scope>         </dependency>         <dependency>             <groupId>com.google.guava</groupId>             <artifactId>guava</artifactId>             <version>28.2-android</version>         </dependency>         <dependency>             <groupId>com.google.http-client</groupId>             <artifactId>google-http-client</artifactId>             <version>1.19.0</version>         </dependency>         <dependency>             <groupId>com.google.oauth-client</groupId>             <artifactId>google-oauth-client</artifactId>             <version>1.19.0</version>         </dependency>         <dependency>             <groupId>com.google.oauth-client</groupId>             <artifactId>google-oauth-client-servlet</artifactId>             <version>1.19.0</version>             <exclusions>                 <exclusion>                     <artifactId>servlet-api</artifactId>                     <groupId>javax.servlet</groupId>                 </exclusion>             </exclusions>         </dependency>         <dependency>             <groupId>com.google.apis</groupId>             <artifactId>google-api-services-oauth2</artifactId>             <version>v2-rev83-1.19.0</version>         </dependency>         <dependency>             <groupId>com.google.http-client</groupId>             <artifactId>google-http-client-jackson</artifactId>             <version>1.19.0</version>         </dependency>         <dependency>             <groupId>com.google.api-ads</groupId>             <artifactId>google-ads</artifactId>             <version>9.0.0</version>         </dependency>         <dependency>             <groupId>org.apache.httpcomponents</groupId>             <artifactId>httpcore</artifactId>             <version>4.4.8</version>         </dependency>     </dependencies>     <repositories>         <repository>             <id>debop-releases-bintray</id>             <url>http://dl.bintray.com/debop/maven</url>         </repository>         <repository>             <id>terracotta-releases</id>             <url>http://www.terracotta.org/download/reflector/releases</url>             <releases>                 <enabled>true</enabled>             </releases>             <snapshots>                 <enabled>false</enabled>             </snapshots>         </repository>     </repositories>     <properties>         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>     </properties>     <build>         <finalName>v1</finalName>         <plugins>             <plugin>                 <groupId>org.eclipse.jetty</groupId>                 <artifactId>jetty-maven-plugin</artifactId>                 <version>9.3.6.v20151106</version>             </plugin>             <plugin>                 <groupId>org.apache.maven.plugins</groupId>                 <artifactId>maven-compiler-plugin</artifactId>                 <version>2.3</version>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                     <encoding>UTF-8</encoding>                 </configuration>             </plugin>         </plugins>     </build> </project>

This pom works correctly for me in IntelliJ.

On the command line I had to change packaging war -> pom, but it does work there too.

Are you possibly running an old version of IntelliJ? Or is there something about your war deployment that might be causing the issue?

@nwbirnie I'm using IntelliJ Idea 14.1.15
I'll try updating it now and see, and if it's about my war, I need some help therechecking if that the issue

@nwbirnie I tried updating the IntelliJ for the most recent version, and still the same
is it possible to have quick call about this and finish it ASAP?

Sure, I could do 3.30pm UK time if that works?

@nwbirnie  I work in 2 different timezones, what about anything after 7:00 pm UK time? If it doesn't work with you, please let's do it tomorrow morning?

How's 11am tomorrow?

@nwbirnie Super! Sounds perfect!
Can i get your email to send a calendar invite?

Just sent you one :)

As discssed on VC, this is now fixed. The culprit was
       <dependency>
           <groupId>com.google.apis</groupId>
           <artifactId>google-api-services-oauth2</artifactId>
           <version>v2-rev83-1.19.0</version>
       </dependency>

and updating to latest resolved this.

Just solved it!
So the thing that the Guava dependency for 28.2 and Google Ads 9.0.0 has conflict with older versions of Oauth2 package,
It works fine if you update the OAuth 2 to the latest one v2-rev157-1.25.:
<dependency>            <groupId>com.google.apis</groupId>            <artifactId>google-api-services-oauth2</artifactId>            <version>v2-rev157-1.25.0</version>        </dependency>


Fix counter name for HttpWebRequests Average Lifetime and…

…HttpWebRequests Average Queue Time.
Summary
Update the name to have HttpWebRequests plural. The counter names HttpWebRequest Average Lifetime and HttpWebRequest Average Queue Time are incorrect. In Perfmon the counters are spelled with HttpWebRequests being plural. The counters with a singular HttpWebRequest do not actually exist.
Fixes #Issue_Number (if available)

@brandonchastain Thank you!


Logo title subtitle Dummy commit

Description
Dummy commit.
Additional Information

[x] I have read the contributing docs (if this is your first contribution)
[x] This is not a duplicate of any existing pull request

Related Issues
_Closes #8 _
Your ENS/address:
0xc4Ad6218B68514161fFeC5dA54E1D30462C27CCD

Merged, thanks!


Update documentation with app update info

After #1472 need to update documentation with new feature description

Was fixed by #1529


[CMake] Update CMake build to account for _CShims --> _FoundationCShims rename

Now that _CShims has been renamed to _FoundationCShims, we need to update the cmake files to account for this rename

@swift-ci please test


Post Request submission - workspace goes blank

Multiple team members are seeing this behavior.  We hit the submit on a post request and the KeyRunner workspace goes blank.  We only see the top menu.  The only way to resolve is to exit the application and re-launch it.  If the post request is re-submitted the same behavior happens, however, after a period of time the behavior goes away and we can submit the post request to obtain a new key for our get request.  V1.0.53

Could you please provide a sample request that will help us reproduce this issue?

Would you like just the post request or the collection?

@sw270 We've identified and addressed several issues with the request/response headers causing runtime errors. Most edge cases have been covered and fixed now. Please update to v1.0.56 and let us know if this resolved workspace going blank issue.

@launchiamenterprise V1.0.56 does resolve the workspace going blank issue.  Myself and a colleague have verified resolution.  Thank you very much for the very quick response.

@sw270 thanks for confirming , Closing this issue !


[Event Request] Codeunit 99000833 Req. Line-Reserve - OnBeforeVerifyChangeReqLine

Hi Team,
In codeunit 99000833 we need possibility to replace and avoid using standard code. Having event with handling in the procedure VerifyChange, would be a perfect solution :

[IntegrationEvent(false, false)]
local procedure OnBeforeVerifyChangeReqLine(var NewReqLine: Record "Requisition Line"; var OldReqLine: Record "Requisition Line"; var IsHandled: Boolean)

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. We will update this issue with information about availability.


Add test cases (1 neg, 2 pos) for rule 920171

This PR also covers the rule 920171 as #2265, but has 2 positive tests (with explicit match) instead of expecting an error.

This looks good. Thank you.


discovery: etcd discovery subcommand

User might want to add different discovery mechanisms (A records, kubernetes) into etcd besides DNS SRV, public discovery services.
Right now, the discovery process is inside etcd server. But actually, it does not need to be inside core etcd server at all. All discovery needs to is to find the peers and write initial configuration into WAL. We should separate that out completely from etcd server. Then users can easily add whatever discovery mechanisms they want easily.
Also we want to provide a new subcommand of etcd to do the discovery. After finishing the discovery, user can start etcd as before without any cluster configuration, and it should just work.

We should separate that out completely from etcd server.

https://github.com/lyft/envoy uses a standardized Service Discovery API to outsource its need for discovery.  It might be valuable to see if their SD API would work for etcd; if so, we might see the emergence of a standardized SD component.  As someone who operates service meshes, let me tell you, that would be nice.


dash dev tools UI

Mocks here: https://www.figma.com/proto/icviajRVLhC69Ud0OW7dKe/dev-tools?node-id=162%3A2
This involves two things:

Providing a CSS file to re-skin the werkzeug debugger
Implementing the dash dev tools UI in the dash-renderer library.

@rmarren1 has written the skeleton UI for dash dev tools https://github.com/plotly/dash-renderer/pull/64. @valentijnnieman will work off that branch to implement the UI on top of it.

To start, we'll leave out the callback graph and the dev tools UI. We'll implement these in later PRs

To start, we'll leave out the callback graph and the dev tools UI. We'll implement these in later PRs

So just style the werkzeug debugger first?

and the dev tools UI

Sorry, I misspoke here. I meant the "Live Reload" UI and the "Callback Graph"

HotReload should be easy to disable/enable. Just need to stop the interval and restart it. Tell me if you need help.

I have a couple of questions about the design! I noticed the front end error cards say "clicking an alert takes the user to it's 'expanded view' in the alerts tray", but I don't see any designs for the expanded view, nor for the alerts tray. Am I missing something? I also cannot find designs for how the werkzeug debugger is supposed to be styled.

@valentijnnieman - The style for the werkzeug debugger are on pages 12-16:

@chriddyp  I just noticed there are multiple designs. I've been going off the "lo-fi" designs, which is what is linked in this issue, and as they were presented in presentation mode in Figma, I didn't think anything of it. The "hi-fi" designs indeed include the werkzeug debugger. I assume that the "hi-fi" designs are the ones I should've built.
Spend a good bit of time building this:

Shouldn't be THAT much work to reskin them though.

@chriddyp Ugh, if I click on the link now, it does go to hi-fo mode. My bad. Not sure what happened.

Dev tools UI is a thing. Any remaining issues with it please open a new issue in dash


Merge PR 2217

Thanks for the merge.
Sorry about leaving the temp-commented-out lines in test_shaders.sh. That was a bad oversight on my commit.


front-end updated

Pushing changes made to enhance the front-end interactivity and usability.

Great job


[BUG]access Script Console Jenkins lead to do rce migrations.ci.opensearch.org

What is the bug?
A clear and concise description of the bug.
I found bug access Script Console Jenkins lead to do rce migrations.ci.opensearch.org
How can one reproduce the bug?
Steps to reproduce the behavior.
1- go to https://<IP_ADDRESS>/_script  and see   access Script
Console Jenkins lead to do rce  migrations.ci.opensearch.org

and see
What is the expected behavior?
A clear and concise description of what you expected to happen.
can attacker   access Script Console Jenkins lead to do rce  migrations.ci.opensearch.org
What is your host/environment?
Operating system, version.
Do you have any screenshots?
If applicable, add screenshots to help explain your problem.
Do you have any additional context?
Add any other context about the problem.

Thanks for reporting this, please avoid reporting security-related issues on GitHub, see https://github.com/opensearch-project/.github/blob/main/SECURITY.md for how to report then. Someone will take a look.

cc @cwperks (for covering in triage)
@shadihh9 I don't understand the the reference to migrations.ci.opensearch.org in the screenshot.  Could you please follow the guidelines shared earlier; adding details around "What is the expected behavior?".

Hi @shadihh9 ,
Thank you for bringing this to our attention but I cannot reproduce any RCE from an anonymous user as I believe you are implying from the screenshot. Explicit steps may be helpful to determine if there is a vulnerability.
To clarify, while the _script endpoint is accessible, only authenticated users with admin privileges should be able to execute scripts. I have verified that this endpoint enforces both authentication and admin-level authorization for execution. Additionally, I have reviewed the list of admin users and confirmed that only current openSearch-migration maintainers possess the necessary permissions to execute scripts.
If you have evidence suggesting a security concern or unauthorized access, please provide additional details or steps to reproduce the issue for further investigation.

Closing this issue as unreproducible. @shadihh9, if you have evidence that this is still a problem, please provide detailed steps to reproduce. Thank you.


cw-utils depends on cw2 and cw20 on cw-utils leads to recursive repo dependency

which is bad

cw2 is all about migrations by managing versions of the state. So I wonder it reasonable to just move ensure_from_older_version into cw2 too. It adds a semver dependency to cw2 but that's not too bad I guess.
WDYT @maurolacy @chipshort

Just checked and I don't see a problem with the current dependency tree: cw-utils, cw20, and the cw20-base contract all depend on cw2, directly or indirectly.
That said, I think it makes sense to move ensure_from_older_version from cw-utils to cw2. That, or move everything to a cw-utils::version mod, and get rid of cw2.

As far as I can see, it's a circle of repositories and not crates. This caused some maintenance annoyance in the past.

cw-utils (cw-utils) -> cw2 (cw-plus)
cw20 (cw-plus) -> cw-utils (cw-utils)

means the repos cw-plus and cw-utils depend on each other.

That, or move everything to a cw-utils' version (or migrate) module; and get rid of ugly cw2 entirely.

I think at this point cw2 developed a bit of a brand and it makes more sense to clean it up than remove it. E.g. here we have a block explorer exposing CW2 version info:

https://neutron.celat.one/neutron-1/contracts/neutron16h2q0xyrnlwuu4kwj38qxjexlhf07ehhnk3c87l8srgn0uurm6dqq38jqy

I agree that conceptually ensure_from_older_version belongs in cw2

Could one of you copy it over such that we can deprecate it in here?

As far as I can see, it's a circle of repositories and not crates. This caused some maintenance annoyance in the past.

cw-utils (cw-utils) -> cw2 (cw-plus)
cw20 (cw-plus) -> cw-utils (cw-utils)
means the repos cw-plus and cw-utils depend on each other.
I see. This is basically because in the past everything was in a big cw-plus repo.

The best way to solve this circularity would be to move the cw2 package to cw-utils. Which makes sense.

ensure_from_older_version is deprecated and will be removed in 2.0. This removes the dependency on cw2 from here. Closing in vavour of #20.


Remove openSettings from docs for v0.59

"openSettings" is only available from v0.60 on.
See https://github.com/facebook/react-native/blob/0.59-stable/Libraries/Linking/Linking.js.

Thanks, can you also remove it from the table of contents?


doc/md: fixed wrong sample code for gorm guide

Background
https://atlasgo.io/guides/orms/gorm has the following sample code:
func main() {
    stmts, err := gormschema.New("mysql", &models.User{}, &models.Pet{}).Load()
    if err != nil {
        fmt.Fprintf(os.Stderr, "failed to load gorm schema: %v\n", err)
        os.Exit(1)
    }
    io.WriteString(os.Stdout, stmts)
}

However, the syntax for gormschema.New only takes String as argument and the provided code would not compile.
Fix
Changed sample code contents to match https://github.com/ariga/atlas-provider-gorm README

Hey @kylelmh, thank you for submitting the fix. Can you please revert the change for styling and keep the fix only?

@giautm
Thanks for the comment. I have updated the md so that only one line is affected

thank you for your contribution.


KAFKA-2862: Fix MirrorMaker's message.handler.args description

@guozhangwang do you mind taking a look at this trivial patch.

Thanks, LGTM.


Glow command is not available

I'm pretty sure this is an error on my side, but I can't figure out what I'm doing wrong.
I'm using vim-plug as a plugin manager and so far other plugins seem to be working fine. glow.nvim is also installed correctly, but the :Glow command is simply not available in nvim.
Here's my config:
call plug#begin('~/.vim/plugged')
  Plug 'tpope/vim-sensible'
  Plug 'tpope/vim-fugitive'
  Plug 'ellisonleao/glow.nvim'
  Plug 'Mofiqul/dracula.nvim'
call plug#end()

colorscheme dracula
au FileType gitcommit setlocal tw=72
filetype plugin indent on
syntax on

I'm using NVIM v0.8.2 and the latest commit for glow.nvim 77b5cb1.

Edit: I forgot to mention that glow itself is of course installed. It's an "unknown" version, because I installed it from source with go install, but it's the latest version as of today.

That is definitely related to the latest commit on master.
If I do the following:
Plug 'ellisonleao/glow.nvim', { 'commit': 'c88184a' }

The Glow command is there. However, I run into the same issues as reported in #90 .

hey @rluetzner sorry, I need to update README, but now you will need to call the glow setup command to create it. Can you put in your config:
lua << EOF
require("glow").config()
EOF

and try again please?

@ellisonleao , I tried that, but it errors out on me:
Error detected while processing /home/robertl/.config/nvim/init.vim[3]../home/robertl/.vimrc:
line   21:
E5108: Error executing lua [string ":lua"]:1: attempt to call field 'config' (a table value)
stack traceback:
        [string ":lua"]:1: in main chunk

@rluetzner oops, sorry again. Updated the command in the previous msg

Thank you. It's working now. Feel free to close this once you've updated the README. 🙂


bug: vimwiki doesn't use the config function

Did you check docs and existing issues?

[X] I have read all the lazy.nvim docs
[X] I have searched the existing issues of lazy.nvim
[X] I have searched the exsiting issues of plugins related to this issue

Neovim version (nvim -v)
v0.9.0-dev-3377+gef89f9fd4-dirty
Operating system/version
MacOS 13.1
Describe the bug
Loading vimwiki with lazy.nvim uses the default vimwiki config instead of the custom config from config, even with lazy = false and priority = 1000
Steps To Reproduce

Execute Neovim with the repro file.
Wait for Lazy to install.
Run :VimwikiIndex & see in the statusline that the filename has .wiki extension

Expected Behavior
Running :VimwikiIndex should open the markdown files instead of the .wiki ones. Running :let g:vimwiki_list shows the correct values (markdown syntax and correct path), which means the settings get added at one point, but it doesn't get registered by vimwiki
Repro
local root = vim.fn.fnamemodify("./.repro", ":p")

-- set stdpaths to use .repro
for _, name in ipairs({ "config", "data", "state", "cache" }) do
  vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
end

-- bootstrap lazy
local lazypath = root .. "/plugins/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "--single-branch",
    "https://github.com/folke/lazy.nvim.git",
    lazypath,
  })
end
vim.opt.runtimepath:prepend(lazypath)

-- install plugins
local plugins = {
  -- do not remove the colorscheme!
  "folke/tokyonight.nvim",
  -- add any other pugins here
{
    "vimwiki/vimwiki",
    branch = "dev",
    lazy = false,
    priority = 1000,
    -- event = "VeryLazy",
    config = function()
      vim.g.vimwiki_global_ext = 0
      vim.g.vimwiki_list = {
        {
          path = "~/Dropbox/wiki/",
          syntax = "markdown",
          ext = ".md",
        },
      }
    end,
  },
}
require("lazy").setup(plugins, {
  root = root .. "/plugins",
})

-- add anything else here
vim.opt.termguicolors = true
-- do not remove the colorscheme!
vim.cmd([[colorscheme tokyonight]])

You need to use init() if you need to set globals before a plugin loads. This is almost always the case for vimscript plugins

Is there any example on how to use the init() function? I've been trying to set up vimwiki with multiple wikis but can't get it to work. I'm using this config  as a template

Literally replace config with init

Thank you, that worked! 😅

Literally replace config with init

Thanks for the splendid job you've done. Today I moved from packer to lazy. The init function does not work with vimwiki or neorg which has a mistake in lazy config part of README file. I put the neorg load function in another lua file and it works fine.
I'm using neovim on Arch and the main branch of lazy:
nvim --version
NVIM v0.9.4
Build type: Release
LuaJIT 2.1.1696795921

   system vimrc file: "$VIM/sysinit.vim"
  fall-back for $VIM: "/usr/share/nvim"

Run :checkhealth for more info

---

    ● lazy.nvim 4.63ms  init.lua
        dir    /home/mzeinali/.local/share/nvim/lazy/lazy.nvim
        url    https://github.com/folke/lazy.nvim
        branch main
        commit e42fccc
        readme README.md
        help   |lazy.nvim.txt|

here is my config for vimwiki:
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git",
    "clone",
    "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git",
    "--branch=stable", -- latest stable release
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

require("lazy").setup({
  "vimwiki/vimwiki",
  init = function()
    vim.g.vimwiki_list = {
      {path = '~/.local/share/disroot/Notes',
        syntax = 'markdown',
        ext = '.md',
      }
    }
    vim.g.vimwiki_ext2syntax = {
      ['.md'] = 'markdown',
      ['.markdown'] = 'markdown',
      ['.mdown'] = 'markdown',
      ['.Rmd'] = 'markdown',
      ['.rmd'] = 'markdown',
    }
  end,
})

what's in your opinion wrong with neorg example in readme and
what didn't work with neorg and which setup did you use?

@max397574
in neorg example for lazy it used the config option which is not supported in lazy: "don't support string type, use fun(LazyPlugin) instead." it must be replaced with init.

didn't find any code using a string as config
I also use config with a function like in the example setup myself and it works just fine

@max397574
Sorry my mistake!


Suggestion: withSibling() to avoid strange traversal + more intuitive than Ancestor/Descendant

Is your feature request related to a problem? Please describe.
First I'd like to say that withAncestor() and withDescendant() do work. They select the current node's (grand)parents or (grand)childen.
My suggestion is to create a withSibling() to avoid frustration when trying to select a specific node by its id/text and a sibling of that same node (not a parent or child). Here is a simple example:
<View>
  <Text>Foo</Text>
  <Button>SameText</Button>
</View>
  ...
<View>
  <Text>Bar</Text>
  <Button>SameText</Button>
</View>

In step file:
element(by.text('SameText').withSibling(by.text('Bar'))).tap();

Describe the solution you'd like
Thinking about it from an xpath perspective, it would essentially be the detox equivalent to 'following-sibling' and 'preceding-sibling'. I do not want to go up or down the "tree". I want to look at the specified node, and only select it if it has a specified sibling.
https://www.w3schools.com/xml/xpath_axes.asp

Hello,
I'll be frank here; I'm inclined to refuse this. Ancestor and descendant quaries are already edge cases that should be avoided unless absolutely necessary. This proposal is even more esoteric in my eyes (first time someone has requested it in 4+ years). Coupled with the fact that XCUITest, which we want to main some compatibility with on iOS, lacks this functionality, and I just don't think this is worth the effort. The goto solution should be to put a unique identifier to each button, and then you can target it directly, without needing any of the -with*() query extensions.


Webfonts & Typekit

Thanks for the great tool.
There seems to be some major inconsistencies with webfonts (particularly Typekit). Sometimes they load, fallback to browser defaults, only bold some characters, only load on some resolutions. Do I seem to be unaware of something?
This is using the api.

Apologies, duplicate #174 .