[Narwhal] introduce consensus randomized tests

Description
This PR is introducing "randomised" tests for our consensus engine. A main test has been added bullshark_randomised_tests where the test orchestration is taking place. Basically the test is running for multiple core properties (ex various DAG rounds, gc_depth, committee size) where for each test iteration it:

creates random DAGs based on some quality characteristics (FailureModes)
creates multiple execution plans - different order of feeding the certificates to consensus -  using a variation of Kahn's algorithm, and executes those via the Bullshark consensus engine
compares the output of each execution plan to ensure they don't diverge - for the same DAG we should expect to have the exact same output for different execution plans

All the random generators used across the above process are seeded by known seeds - and printed on informative output - so we can later easily reproduce a scenario in case of a failure.
The test will run as part of the nightly CI workflow, as it can take quite some time to execute. Also, I have added some finger in the air parameters for the time being, but we can tune them further based on run time etc.
The DAG generation and the execution plan creation is using (seeded) randomness in order to achieve various permutations - which of course is not exhaustive and the different combinations depend to the number of iterations. To reproduce an error someone can use the provided seeds to replay the specific scenario.
Running the tests manually
To run the tests manually can do via the nextest:
 cargo nextest run -p narwhal-consensus bullshark_randomised_tests --run-ignored ignored-only --no-capture

If a failure is detected then a log line like the following will be printed:
Fork detected in plans for run_id=7, seed=18, rounds=7, committee=4, gc_depth=7, modes=FailureModes { nodes_failure_probability: 0.0, slow_nodes_percentage: 0.33, slow_nodes_failure_probability: 0.7 }'

Then the run_id can be used to go back to the bullshark_randomised_tests, set it to that number and run the test , so can reproduce the result and investigate.
Running against "fork" bug
As part of https://github.com/MystenLabs/sui/pull/8403 we fixed a fork bug that got introduced in earlier work. When running the randomised tests against the code with the bug managers to successfully detect the fork and report it. To test this I cherry picked the randomised test on top the commit with the issue and ran the tests. The branch can be found on this branch .
Running like this:
 cargo nextest run -p narwhal-consensus bullshark_randomised_tests --run-ignored ignored-only --no-capture

will output:
thread 'bullshark::randomized_tests::bullshark_randomised_tests' panicked at 'assertion failed: `(left == right)`
  left: `[dwwml/yqkhsUT8G7: C1(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, eKp5YZF6ApG6lTS9, E0), XwSoL1Tx0XzPywRx: C1(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, RTmx44i8TAq6UJrn, E0), IerZdSvQBNXmie6x: C1(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, OcqdgfvXy0lsqb4p, E0), 0bNKLmBEzcgw+pbR: C2(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, wZtJ2NyeHrAKU7PF, E0), jC8y2AbMI2GMF56d: C1(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, uvP+CGnDrCSqi4ZP, E0), 1oPpAISn93H9n9ao: C2(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, zVms6gWDMBzVG/Xm, E0), yZ400cpb93I9TnzX: C2(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, TtlXcRyUU2u0+eDQ, E0), 75QIn5xjThJarMUM: C3(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, yUZRIIA32ljxlifT, E0), k2Zqd75XK7Onak9o: C3(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, L1zUn/wKugYLV+Xv, E0), JzxeOnfWcbpAQcts: C3(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, 5ZyjwRmHNMmAOZ/L, E0), fPAjkOz5Tt+mxOZC: C4(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, vJWr4dIDXo0F30Vl, E0), TL8Kydc5sdhSxnP/: C3(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, fSYvLRNdKrQhcCp+, E0), yMpRyHGQo2cGi/tv: C4(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, ME1XmO723pJhuSqt, E0), ltALm4ODvtotkhyC: C4(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, s80s5UMIrXpXbkXK, E0), nSH6bchZOV93PJho: C4(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, p4EPG6LVG3S32DMW, E0), f2iy8HuuaxfcspQY: C5(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, cIDSU9Bg3xMrDA4V, E0), fTRna0aA8xNa6N0O: C5(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, sbD8udPdVTQooLuG, E0), HtGRM6uo63WTNzzz: C5(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, rXqqkKkUMUkpmbGJ, E0), rem1TN11AkWXsqaq: C6(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, mXOWLEy6W0f4XGtk, E0)]`,
 right: `[dwwml/yqkhsUT8G7: C1(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, eKp5YZF6ApG6lTS9, E0), XwSoL1Tx0XzPywRx: C1(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, RTmx44i8TAq6UJrn, E0), IerZdSvQBNXmie6x: C1(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, OcqdgfvXy0lsqb4p, E0), 0bNKLmBEzcgw+pbR: C2(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, wZtJ2NyeHrAKU7PF, E0), jC8y2AbMI2GMF56d: C1(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, uvP+CGnDrCSqi4ZP, E0), 1oPpAISn93H9n9ao: C2(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, zVms6gWDMBzVG/Xm, E0), yZ400cpb93I9TnzX: C2(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, TtlXcRyUU2u0+eDQ, E0), 75QIn5xjThJarMUM: C3(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, yUZRIIA32ljxlifT, E0), k2Zqd75XK7Onak9o: C3(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, L1zUn/wKugYLV+Xv, E0), JzxeOnfWcbpAQcts: C3(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, 5ZyjwRmHNMmAOZ/L, E0), fPAjkOz5Tt+mxOZC: C4(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, vJWr4dIDXo0F30Vl, E0), n5mpACbbClwrs3OK: C2(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, MeOvYaDWid+gWdAA, E0), TL8Kydc5sdhSxnP/: C3(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, fSYvLRNdKrQhcCp+, E0), yMpRyHGQo2cGi/tv: C4(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, ME1XmO723pJhuSqt, E0), ltALm4ODvtotkhyC: C4(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, s80s5UMIrXpXbkXK, E0), nSH6bchZOV93PJho: C4(hsHWobFaIM1WzZYy+mgfv7ABPS0G10Wf2iAWd/xmOla/oarahIEHvNlxCoOnrbteE3O7wsVFwl0HPBZvGCRbdemwudJk1xcPfEc7R9rGmWPP3lkogbw2QK/MVrg2spqG, p4EPG6LVG3S32DMW, E0), f2iy8HuuaxfcspQY: C5(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, cIDSU9Bg3xMrDA4V, E0), fTRna0aA8xNa6N0O: C5(qFHWDpkBDWYzUPieD7zvu6vT0eTcUEeRmZ7r9Bd6nVSKZN8/VTXOtBF7I6uTNsZgF0sjkxgE6sTv6rHzYYQXhepALY49pCXzAk1bwd30esNmQxTxKnWOIBl/c5dnnINP, sbD8udPdVTQooLuG, E0), HtGRM6uo63WTNzzz: C5(spJhWejffj1vEBGZgKdW972Zvu/4J0xMhJN9MmHAjGcVqE4VwT13lolJZdTgZHANERCqwhOs1+wZBlG3XfqjwDr8ShhIdxG9x/WJBoihhd7wV6mnw4H37TVyfwc+8hFj, rXqqkKkUMUkpmbGJ, E0), rem1TN11AkWXsqaq: C6(gM7/G81TYckTfJAIEkHv5ituvxNqFP9/ENpMq5+fFkzo+gmIP2GIZNcgbrEKm5e8Ay5FulFJESCqFR70Og9i3kMtvtbzkOA1R4nKyXTWuzAzuvJHo2ezl+5eu/LebwKv, mXOWLEy6W0f4XGtk, E0)]`: Fork detected in plans for run_id=7, seed=18, rounds=7, committee=4, gc_depth=7, modes=FailureModes { nodes_failure_probability: 0.0, slow_nodes_percentage: 0.33, slow_nodes_failure_probability: 0.7 }'

where one extra certificate gets committed in one case compared to the other
Future work

[ ] Parallelise test runs
[ ] pretify DAG output and improve the reporting to allow easier debugging
[ ] add more properties on DAG generator to support more cases
[ ] currently works when authority per stake = 1, change tests to support variable stakes

Test Plan

If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.
Type of Change (Check all that apply)

[ ] user-visible impact
[ ] breaking change for a client SDKs
[ ] breaking change for FNs (FN binary must upgrade)
[ ] breaking change for validators or node operators (must upgrade binaries)
[ ] breaking change for on-chain data layout
[ ] necessitate either a data wipe or data migration

Release notes

This is a very useful tool for hardening checks, and ideally we need this to be operating. @akichidis do we plan to merge it asap? @mwtian I'd support accepting the deterministic tests as designed by Tasos, without simtests, and then have an upcoming future PR that converts this to the ideal design. My main point is to unblock this as it might help us find last minute edge cases, and we need this asap.

@kchalkias my plan is actually to merge this without the simtest approach and iterate on upcoming PR once we have introduced simtesting for Narwhal.

Very happy to have this facility: two good directions to take this:
(1) lets make sure we support uneven stake to catch issues where.
(2) would love to be able to generate a DAG as a file / other structure and feed it into test cases.

Thanks @gdanezis for the review. Regarding your points:
(1) Totally agree, I'll do that in a follow up PR as more effort will be needed for this
(2) Even as is someone can use the generate_randomised_dag method and create the DAG . That will be in form of sequence of certificates which we can later feed to consensus etc.  Ultimately we could come up with a separate structure that would represent a DAG which could give the ability to generate under such properties - I can look into that separately. Creating as a file we can totally do even as a naive approach (ex serialise on a base64 list or some blob format).


chore: flail (take 2) to attempt to fix dependabot updates for examples/ dir

This time we'll remove the grouping to see if that helps.
We would like dependabot updates for examples/ to all be in a single group,
but that isn't working, so we'll take separate update PRs instead if that works.
Refs: #384 (flail attempt 1)

After this second flail the dependabot run no longer warns. However, it finds no deps to update:
https://github.com/elastic/elastic-otel-node/actions/runs/11131324430/job/30932639072
 updater | 2024/10/01 18:32:23 INFO <job_894215474> Found no dependencies to update after filtering allowed updates in /examples

despite this:
[11:36:57 trentm@peach:~/el/elastic-otel-node/examples (git:main)]
% npm ls
<EMAIL_ADDRESS>/Users/trentm/el/elastic-otel-node/examples
├──<EMAIL_ADDRESS>-> ./../packages/opentelemetry-node
├──<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└──<EMAIL_ADDRESS>
[11:37:01 trentm@peach:~/el/elastic-otel-node/examples (git:main)]
% npm outdated
Package  Current  Wanted  Latest  Location              Depended by
express   4.19.2  4.21.0  4.21.0  node_modules/express  examples

Lovely.
My last theory is that dependabot npm updates are breaking on this devDep entry:
  "devDependencies": {
    "@elastic/opentelemetry-node": "../packages/opentelemetry-node",

I don't have any real evidence for that though.


redis.write: set results based on the return values of the pipeline

Currently all records are returned with SUCCESS.

Implemented.


Addresses Issue 27

Addresses #27.

@robstewart57 In my latest changes I thread use of the PrefixMappings type throughout TurtleSerializer which allowed me to remove the coerce from the test.  What do you think?  Personally, I like sticking with PrefixMappings throughout.

@tmciver I agree, using PrefixMappings throughout is cleaner.
I've merged your PR. Thanks!

@tmciver  Moving the discussion from https://github.com/robstewart57/rdf4h/pull/96
I agree that exposing internal functions is less than ideal. As you suggest, I'd be in favour of:
module Text.RDF.RDF4H.TurtleSerializer
  ( TurtleSerializer (TurtleSerializer)
  where

import Text.RDF.RDF4H.TurtleSerializer.Internal (findMapping, writeUNodeUri)

and
module Text.RDF.RDF4H.TurtleSerializer.Internal
  ( findMapping
  , writeUNodeUri
  )
  where

Allowing testing of findMapping and writeUNodeUri, but hopefully to users it should be fairly clear to import Text.RDF.RDF4H.TurtleSerializer not Text.RDF.RDF4H.TurtleSerializer.Internal in their code.


Multi-GPU QLoRA?

Hi, first of all thanks for the great tutorials on lora and qlora! I was able to follow them very easily.
I was wondering if multi-gpu QLoRA is supported? I couldn't find a config file in the repo, and when I tried using the multi-gpu LoRA recipe and adding model.quantize_base=True, I get this error:
ValueError: The module has CPU parameters or buffers when `sync_module_states=True`, which requires them to be on GPU. Please specify the `device_id` argument or move the module to GPU before passing it to FSDP.

I was wondering if multi-gpu QLoRA is supported currently, or if it is on the roadmap? Thanks a lot!

Hey @cuichenx  - glad you found the tutorials useful!
Currently, multi-GPU FSDP + QLoRA is not supported in torchtune, but this is something we are actively working on. Turns out it's a non-trivial combination. See this blog post from the folks over at answer.ai for some more information.
cc: @rohan-varma

Hi @kartikayk, I'm currently doing some exploratory studies on QLoRA vs LoRA, so I was looking for a more apples-to-apples comparison because LoRA for a larger model like 34B or 70B would need multiple GPUs. But for now I can do my studies on the smaller models.
Thanks for making this awesome framework!

@cuichenx sounds awesome! We'll make sure to comment on here as soon as we have this up and running!

Thanks for trying out QLoRA @cuichenx and glad to hear that the tutorial is helpful!
Re: LoRA vs QLoRA, as per the tutorial and enablement PR (https://github.com/pytorch/torchtune/pull/478), in my experience we're actually able to get pretty good convergence w/QLoRA and match LoRA for some eval tasks, with about 50% memory savings. As mentioned though, we don't yet have the multi-GPU support and are working on support for this.

This was recently added in #909 and is currently available as an experimental feature in our latest stable version. Closing as completed for now, please reopen if you run into any issues using it.


Fixed AudioClient Disconnect Deadlock

Hi There,
I've found (after going back & forth a lot) that when calling DisconnectAsync within the ConnectionManager "_task", that invokes the Disconnected AsyncEvent. After going through all the code, I found the event handler that was attached to AudioClient.Disconnect in SocketGuild called the audioClient.Dispose. This goes onto calling stopasync which then goes onto the stopasync in the connection manager.
The deadlock was found when awaiting the "_task".
TL:DR : "_task" was awaiting on itself to finish before completing the disconnected event.
This commit solves the deadlock by simply removing the await "_task" from stopasync.
This commit has been tested numerous times by recreating the 4003 auth error exception to see if the deadlock was no more.
As a side note, I've moved the disconnectevent.invoke before the logger to also further prove the deadlock is gone.
Regards,
CM1

UdpClient (located in DefaultUdpSocket) is already being disposed when stopped and was causing ObjectAlreadyDisposed Exceptions within RunAsync method. Try..Catch simply swallows it & breaks.
Unobserved event from Task scheduler kept pinging about this.

UDP does not have Dispose in .NET 4.5 - please test your code in all supported platforms. Furthermore, dispose should not be used as a control flow, which is why the code was as it was before.

Slight correction, my bad: it's there since since .NET 4.5 - but the issue about relying on dispose behaviour is still bad

alright, as an alternative we can do this
private async Task RunAsync(CancellationToken cancelToken)
        {
            var closeTask = Task.Delay(-1, cancelToken);
            while (!cancelToken.IsCancellationRequested)
            {
                var receiveTask = _udp.ReceiveAsync();

#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
                receiveTask.ContinueWith((recieveResult) =>
                {
                    //observe the exception as to not recieve as unhandled exception
                    _ = recieveResult.Exception;

                }, TaskContinuationOptions.OnlyOnFaulted);
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed

                var task = await Task.WhenAny(closeTask, receiveTask).ConfigureAwait(false);
                if (task == closeTask)
                    break;

                var result = receiveTask.Result;
                await ReceivedDatagram(result.Buffer, 0, result.Buffer.Length).ConfigureAwait(false);
            }

which would still observe the exception and (mostly) keep using the original implementation
would that be acceptable? @FiniteReality

I've applied what @LDSpits has suggested & tested via netcore 2.1 (I don't have any other runtime sadly). The ObjectDisposedException is no longer popping up. Task Scheduler doesn't see it either.

Just as a side note, we've seem to have indirectly solved a possible memory leak within the library for audio. I've been monitoring this for a while now. I already knew the library had a memory leak in it due to the blocked code that got fixed in my previous pull request. However, there was still another possible memory leak. This pull request indirectly seemed to have solved it.

Hi There,
I'm going to close this pull request as too many changes have been made and may or may not be of use to the library.
Regards,
CM1


[BUG] GUI Lua Error

🔵 Describe the bug:
can't open the GUI by using the slash command /gui
🔵 To reproduce: (Steps to reproduce the behavior)

Go inside the game.
In the chat type /gui
An LUA Error window will appear
Read the error.

🔵 The error:
Paste the error message in this blockquote.
Message: Interface/AddOns/GSE_GUI/Viewer.lua:141: attempt to index field 'MetaData' (a nil value)
Time: Wed Nov 30 01:01:38 2022
Count: 1
Stack: Interface/AddOns/GSE_GUI/Viewer.lua:141: attempt to index field 'MetaData' (a nil value)
[string "@Interface/AddOns/GSE_GUI/Viewer.lua"]:141: in function `GUICreateSequencePanels'
[string "@Interface/AddOns/GSE_GUI/Viewer.lua"]:510: in function `GUIShowViewer'
[string "@Interface/AddOns/GSE/API/Events.lua"]:525: in function `?'
[string "@Interface/AddOns/GSE/Lib/AceConsole-3.0/AceConsole-3.0.lua"]:90: in function `?'
[string "@Interface/FrameXML/ChatFrame.lua"]:5224: in function `ChatEdit_ParseText'
[string "@Interface/FrameXML/ChatFrame.lua"]:4888: in function `ChatEdit_SendText'
[string "@Interface/FrameXML/ChatFrame.lua"]:4924: in function `ChatEdit_OnEnterPressed'
[string "*ChatFrame.xml:127_OnEnterPressed"]:1: in function <[string "*ChatFrame.xml:127_OnEnterPressed"]:1>

Locals: frame = <table> {
 SequenceName = ""
 panels = <table> {
 }
 sizer_e = Frame {
 }
 base = <table> {
 }
 Hide = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:124
 AceGUIWidgetVersion = 30
 ClassID = 0
 ApplyStatus = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:146
 Show = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:128
 titlebg = Texture {
 }
 content = Frame {
 }
 OnRelease = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:90
 OnWidthSet = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:95
 SetStatusText = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:120
 sizer_se = Frame {
 }
 OnAcquire = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:79
 EnableResize = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:132
 userdata = <table> {
 }
 clearpanels = <function> defined @Interface/AddOns/GSE_GUI/Viewer.lua:44
 SetStatusTable = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:140
 MacroIconButton = <table> {
 }
 OnHeightSet = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:105
 type = "Frame"
 EditButton = <table> {
 }
 ScrollContainer = <table> {
 }
 ExportButton = <table> {
 }
 SetTitle = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua:115
 statustext = FontString {
 }
 titletext = FontString {
 }
 Width = 700
 sizer_s = Frame {
 }
 events = <table> {
 }
 children = <table> {
 }
 Height = 500
 frame = Frame {
 }
 LayoutFunc = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/AceGUI-3.0.lua:619
 localstatus = <table> {
 }
}
container = <table> {
 OnRelease = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:48
 OnWidthSet = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:152
 parent = <table> {
 }
 OnAcquire = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:43
 userdata = <table> {
 }
 scrollframe = ScrollFrame {
 }
 OnHeightSet = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:158
 type = "ScrollFrame"
 AceGUIWidgetVersion = 26
 LayoutFunc = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/AceGUI-3.0.lua:619
 base = <table> {
 }
 LayoutFinished = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:134
 events = <table> {
 }
 FixScroll = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:91
 children = <table> {
 }
 SetStatusTable = <function> defined @Interface/AddOns/GSE/Lib/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua:144
 MoveScroll = <function> defin

🔵 Screenshots:
Screenshot
🔵 Expected behavior:
A GUI window to appear to show macros that either created or imported.
🔵 GSE.lua file:
Please provide your GSE.lua file or the export string for the specific macro that is causing an issue.

To find the GSE.lua file:

First, make sure you have enabled the "File Name Extensions" checkbox in Explorer (View tab)
Browse to C:\path\to\wow\_retail_\WTF\Account\YourAccountName\SavedVariables\ or /path/to/WoW/_retail_/WTF/Account/YourAccountName/SavedVariables
Copy the GSE.lua file to your Desktop
Rename this copy to GSA.lua.txt
Then just drag it here in your message

Note: If you do not include your GSE.lua file you are wasting your time and mine. 90% of the time, the first thing I will ask for is "Can you please upload your GSE.lua file?".  This file is needed with the error to work out Why that error occured for you.

🔵 Desktop (please complete the following information):

OS: Windows 11 Pro 64bit
Game Version Retail <IP_ADDRESS>

🔵 GSE Version:

Version: 3.1.21
Downloaded From: https://www.github.com/TimothyLuke/GSE-Advanced-Macro-Compiler
https/curseforge,com
Discord GSE server

🔵 Additional context:
Add any other context about the problem here.
GSE.lua.txt

Just a first note - I have no idea what the /gui command is - this should respond to /gse
BUT this error appears to be caused by a corrupt macro.  It looks like you have tried to force a GSE2 macro to be loaded in GSE3.

The fix is simple:
1-  delete the GSE.lua file and start again
Or
2- edit and remove all the ["Lutechi 9.x+ ….."] macros from the file.
This file has not appear to have been generated by GSE but manually crafted.  As this isn’t a bug but corrupt data moving to a discussion from here on


Yaml validation and auto-completion 2

Merged JSON schema into single file
Additional example file added
[patch]

Codecov Report

Merging #5 into main will not change coverage.
The diff coverage is n/a.

@@            Coverage Diff            @@
##               main       #5   +/-   ##
=========================================
  Coverage     97.24%   97.24%
  Complexity      538      538
=========================================
  Files            67       67
  Lines          1199     1199
  Branches         94       94
=========================================
  Hits           1166     1166
  Misses           16       16
  Partials         17       17

Continue to review full report at Codecov.

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


Control Gallery app switches to default route when changing Theme color for the first time

In Colors - Theme Colors example #2, when you click on the "Change Primary color to GREEN" button for the first time, the app will go to Layout page. When clicking second time, it will remain on the example page.

Closing as dup of https://github.com/flet-dev/flet/issues/1406


License?

Thanks for this cute hack! Can you please clarify its license?

It is under MIT License.

It is under MIT License.

Thanks for reply! Would you mind dropping a LICENSE file into the repo with your copyright and license text, to avoid any future confusion?
Just to explain my interest, I was looking for a solution to a proverbial "do dlopen() from a static executable" problem (for a context, dlopen() is usually disabled in this case). I followed many ideas and deadends with various ELF loaders out there on github, and in the end, one of ideas applied against your code worked. So, I'd be looking at publishing that as a separate project, and would like to ensure that license and credit to you are properly given. Thanks!

I've uploaded LICENSE file. I want to clarify one important thing. Usually such standalone loaders needs to relocate itself before loading requested binaries. This loader is written the way to avoid any type of relocation. As an example errno is static variable and is addressed from other functions as a macro (z_errno()) which deferences a pointer of static variable. If it were a simple shared int value it would produce an unnecessary reloc. The other case is outptr = outbuf under init guard in kdoprnt(). If outptr was assigned with outbuf address in outptr declaration at the beginning of the file it would also produce a reloc. All described cases are relevant only if the loader is standalone so probably it's not your case but just warn you in advance. So when porting as standalone check the loader with readelf/objdump for created relocs.

Usually such standalone loaders need to relocate itself before loading requested binaries. This loader is written the way to avoid any type of relocation.

Thanks for this info. That's not something I had problems with, or even gave a thought to. I guess, you mean a completely "bare metal" environment, where loader itself not loader by a system ELF loader, like would be the case when run under Linux.
Anyway, my usecase is kinda opposite - I'm not interested in "baremetal" setting (-nostdlib), but actually be built against a libc (and be part of a larger application). Where interest lies is to load ELF .so built against a "foreign" libc, which may not match libc the application was built with. E.g., loading a glibc dynamically linked .so in a static application built against musl. But I appreciate ingenuity you put into implementing this to be as baremetal as possible, and preserve that config in my changes too.
I intend to submit a couple of non-invasive fixes as PR, first one already went: https://github.com/MikhailProg/elf/pull/2 . Btw, I understand that this is an old project project of yours, and you may be not interested in patches, let me know then. (But I wanted to mention, because due to vanity matters, I intend to set up my fork not as a github-level fork, so people interested in your project might have harder time discovering it.)

I guess, you mean a completely "bare metal" environment, where loader itself not loader by a system ELF loader, like would be the case when run under Linux.

Btw, I understand that this is an old project project of yours, and you may be not interested in patches, let me know then.

The project is even 3+ years older than the initial commit but PRs are always welcomed.

Where interest lies is to load ELF .so built against a "foreign" libc, which may not match libc the application was built with. E.g., loading a glibc dynamically linked .so in a static application built against musl.

Am I right that except your .so you also manually load glibc and resolve all symbols extracting relocation info from ELF dynamic section?

Am I right that except your .so you also manually load glibc and resolve all symbols extracting relocation info from ELF dynamic section?

That was the initial idea, yeah - if we want to load dynamic lib set, then we need to load the entire set ourselves, right? I started trying to separate dynamic loader out of musl libc, but fount it to be relatively tightly coupled with the rest of libc. Next, I spent enough time with https://github.com/GregorR/gelfload, just to find out that it segfaults trying to load an executable doing anything beyond purely trivial. Then I looked at https://github.com/robgjansen/elf-loader , and saw the problem: glibc and its ld.so are even more tightly coupled than musl. ld.so, being executed at its entry point, initialized a lot of data structures, and glibc may access them at any time with seemingly unrelated functions and crash. The last project does crazy things to work around that, effectively trying to mirror layout of such ld.so structures, but they're of course glibc version dependent.
It's clear that there's no way around using the original dynamic loader intended for use with a particular binary, and trying your project, which does just that, showed that all segfaults I saw were indeed gone. The obvious problem is that ld.so loads executables, whereas I'm interested in loading shared libs. ld.so unconditionally starts executable, which then unconditionally calls syscall to terminate. Pondering about it, a crazy/dirty idea of using setjmp/longjmp to "return" from executable came up. And indeed, it worked!
Of course, that's still not ideal, because I can't just drop a prebuilt static executable on any system, and start loading that system's shlibs, I first actually need to build a proxy executable against shlibs of that system. But given the way ld.so's appear to be implemented in such systems, that's the only scalable ("blackbox") way to deal with it, the only other alternative is to patch every ld.so case.

Thank you for your detailed reply.

Pondering about it, a crazy/dirty idea of using setjmp/longjmp to "return" from executable came up. And indeed, it worked!

As I can imagine you use argv to pass jmp_buf pointer to the proxy and to set some return values (e.g dl* function pointers) just before longjmp.

Of course, that's still not ideal, because I can't just drop a prebuilt static executable on any system, and start loading that system's shlibs.

Since your initial executable is static it sounds like your proxy executable is compiled as PIE to avoid images address overlapping.
Thanks again that you continue to reply in the thread.

Since your initial executable is static it sounds like your proxy executable is compiled as PIE to avoid images address overlapping.

Good catch, I actually didn't give a thought to it, but my Ubuntu's gcc indeed produces PIE executables by default. Doing that trick on a random embedded Linux system (which is ultimate, but remote goal) would take more hassle.
FWIW, I posted my code at https://github.com/pfalcon/foreign-dlopen .


DFM-8 Add endpoint to calculate price

Using formula from excel doc to calculate price given:

miles (required)
pallets
std. packages

Due to some rounding in excel the price calculation is slightly off, but I think close enough for the time being.

@Zhenia-Magic @mammadu addressed comments if ya'll wanna take another pass


Release Toolium 2.3.0

Coverage remained the same at 88.958% when pulling ae731d468c2d3ccd360326afd6d6723f2044d929 on release/2.3.0 into 80563ab78d7cb582995ae1455942b5d917696c87 on master.


x/net/websocket: remove Gorilla recommendation in docs

What version of Go are you using (go version)?
1.18
Does this issue reproduce with the latest release?
No Issue
What operating system and processor architecture are you using (go env)?
What did you do?
Read the docs
What did you expect to see?
How to use the x/net/websocket library
What did you see instead?
https://github.com/golang/net/blob/e1ec361d0b39748d321472b2be7298211e05a3b6/websocket/websocket.go#L11
Gorilla recommendation which is now archived

archived: https://github.com/gorilla/websocket
cc @neild @ianlancetaylor


Mark disable-instantiation-cache-exec.swift as unsupported when back-deploying

rdar://88507002

@swift-ci please test


How to put multiple signatures on 1 page

How,
I'm not a JS expert and I don't succeed in having more than 1 signature on a page. How can I have multiple var SignaturePad instances ?
Any idea or some short sample code to get me started ?
Thx,
Stefan

Hi, i'm trying to add multiple signpads. I've used your jsfiddle above and I can draw now. But the clear buttons don't work. Can you show me how to make this work please?
Thank you!


HEUR:Trojan.WinLNK.Alien.gen found in LAUNCH-CTT-WINUTIL.lnk

Kaspersky just found that few moments ago.

https://github.com/ChrisTitusTech/winutil/issues/2433
See similar alert from Chris Titus Tech’s page

Thanks for this. I'm going to close this issue as it's something Chris Titus will have to fix. I see some people are reporting it as a false positive to their respective AV's. That's all you can do for now.


💡[FEATURE] Adding bottom to top button for all pages

Description
I think the bottom to top button will valid for all the pages like for about us page because it also contains many sections .
Screenshots
No response
Checklist

[X] I have checked the existing issues.
[X] I have read the Contributing Guidelines
[X] I have read the Code Of Conduct
[X] The changes don't break the code

Duplicate


Pro-mini + ESP8266 connection to Firebase

Good morning all!
It looks like a similar question was asked a few months back, but has not been closed as complete, so I decided to post one here.
I am trying to connect to Firebase using a Pro-mini connected to a ESP8266. I have successfully connected a ESP8266 directly to my Firebase DB and sent info. Now I want to use the Pro-mini as the main board and send the data this way.
Has anyone done this yet? Sample code? Much appreciated!

It looks like it errors on missing <string.h>. Any ideas?
Trying to run this via ESP thru Pro-mini.

@proppy - When I try to compile the sketch before uploading it to the ESP8266 I get the following error:
....fatal error: SerialTransceiver.h: No such file or directory
#include <SerialTransceiver.h>
^
compilation terminated.
exit status 1
Error compiling for board Generic ESP8266 Module.
The .h files are located in the repository. Not sure why this is not compiling.

This might have broken when we moved the file to contrib.
Can you try to copy the file from https://github.com/firebase/firebase-arduino/tree/master/contrib/src in your sketch directory.

I have copied all SerialTranceiver.h contents and replaced in the current directory. The same error exists.

I also tried the commit prior to contrib. That does not work as well.

The following commits (e1co3 /922cf / 67c88 ) on example: FirebaseSerialHost_ESP8266 produced the following error:

Arduino: 1.8.5 (Mac OS X), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"
/Users/Documents/Arduino/libraries/firebase-arduino-67c880d543d47612eca34c5a62a18555a3cabf74/src/thing/FireThing.cpp:15:3: error: 'D1' was not declared in this scope
D1,  // digital in
^
/Users/Documents/Arduino/libraries/firebase-arduino-67c880d543d47612eca34c5a62a18555a3cabf74/src/thing/FireThing.cpp:18:3: error: 'D1' was not declared in this scope
D1, // analog out
^
/Users/Documents/Arduino/libraries/firebase-arduino-67c880d543d47612eca34c5a62a18555a3cabf74/src/thing/FireThing.cpp:19:3: error: 'D0' was not declared in this scope
D0, // config mode button
^
exit status 1
Error compiling for board Generic ESP8266 Module.
#######
The following commit has compiled: 9ae40
I will test and report back.

I have successfully uploaded the FirebaseSerialHost file to the ESP8266. After the initial upload the board  successfully got through the setup() w/ SSID and PASSWORD entered via the sketch.
I will connect the Arduino board to the ESP and try to send general protocol commands via the Arduino serial monitor and report back.

I can not get the ESP to respond to any general protocol items. I tried directly to the ESP with serial monitor and I have also tried through the Arduino Pro-mini.
Can you provide some more info on how to get this working? The details on the connections are not that clear.
Also, does anyone have any other ideas?

@jfrankert what happens when you try to talk to the ESP thru the serial port after deploying https://github.com/firebase/firebase-arduino/tree/master/contrib/examples/FirebaseSerialHost_ESP8266 ?
By default the serial channel is on pin 4 and 5, see https://github.com/firebase/firebase-arduino/blob/master/contrib/examples/FirebaseSerialHost_ESP8266/FirebaseSerialHost_ESP8266.ino#L35
I think we discussed with @ed7coyne in the past that it might be better to set it on the default channel for better discovery.
Can you try to replace data_serial with Serial in the sketch and see what happens?

@proppy When I connect the ESP to an FTDI and upload, the serial monitor will show wifi connected. If I try to run commands through the serial monitor, I get no response. No errors / +OK ...etc.
Just to explain a bit better, on the Arduino Pro-Mini I run a sketch like attached: http://www.martyncurrey.com/arduino-to-esp8266-serial-commincation/
I changed the serial channel pins to 2 and 3 based on how I have successfully used the Pro-mini in the past. So on the FirebaseSerialHost sketch this is updated.
Yes, I will pull out SoftwareSerial and just use Serial today. I will report back.

Hi @proppy, I am working on the same issue and I am making some progress. My 'strategy' is to take the modem code you previously did, and adapt it to the new FirebaseArduino.h functions rather than the lower level Firebase.h ones which have evolved in an incompatible way apparently.
Using the adapted modem I am able to connect to Firebase and set an integer value --> Good!
Now I am trying to replace the previous error handling. I was thinking about using Firebase.available() to replace else if (!fbase_) on line 28 of DatabaseProtocol.cpp, but it seems that I cannot get a proper response from that. While I am able to push and get values to my Firebase, a call to Firebase.available() will return False. Am I understanding this function right?

FYI, filed #340 to turn the modem codebase into a simpler sample, which would go in the same direction point ed by @Nerus92 in https://github.com/firebase/firebase-arduino/issues/297#issuecomment-347085120.

Is this solution still working?? I think this might solve the problem I am currently experiencing. I am working with an Arduino Mega2560 as the main board and ESP8266 (ESP-01) as the WiFi Module, they communicate using Serial Communication. The library I used to manage the WiFi is "ESPWiFi.h" but I haven't been able to Read/Write data from (to) Firebase because the existing libraries seem to not be compatible with the ATMega2560's architecture... any ideas??


List of possible "Blocked reason"

[Enter feedback here]
Hi,
Would be useful to have a list of all the possible the blocked reasons.

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 9d203675-1231-e284-acb3-1191058f651a
Version Independent ID: 9a41d6e8-0f65-1823-6146-c08e7967ce1a
Content: Microsoft Teams PSTN blocked users report - Microsoft Teams
Content Source: Teams/teams-analytics-and-reports/pstn-blocked-users-report.md
Service: msteams
GitHub Login: @LanaChin
Microsoft Alias: v-lanac

@DevJonBirkett Thanks for the feedback, we are currently investigating this issue.

@LanaChin please can you let me know if this is possible?

It's not possible as we usually block users to prevent fraud/abuse. Providing a list of reasons why we blocked the user would tip our hand to fraudsters on which things we watch/monitor to stop fraud/abuse.

Closing issue.


Add juce and blueprint modules in root CMakeLists.txt

As discussed on Discord, I moved the directives that add blueprint and juce modules from the GainPlugin directory to the root directory.
The main issue addressed was that on Windows the symlinks are not working and it's required to copy the directories inside GainPlugin folder to compile.
With these changes, the CMake configuration is made on the root folder and the GainPlugin example does not need to add juce and blueprint. This way juce will be configured only once and it will make it easier to add new examples.

Nice stuff @stfufane, this is a better approach in my opinion. I'm no great fan of build processes which require symlinks generated by scripts etc. etc. @nick-thompson this looks good to me. I can give it a test shortly.

Great! Yea, let's do it. I just tested locally myself, all looks good


How to set up github actions to do integration tests

Greetings I can't seem to make testcontainers play well with my github action.
Could you help me out
XUnit async class fixture code:
    var dockerEndpoint = Environment.GetEnvironmentVariable("DOCKER_HOST");
    Console.WriteLine("Connecting to docker endpoint: " + dockerEndpoint);

    Container = new TestcontainersBuilder<MsSqlTestcontainer>()
        //.WithExposedPort("1433")
        .WithDatabase(new MsSqlTestcontainerConfiguration()
        { Password = DatabasePassword })
        .WithDockerEndpoint(dockerEndpoint)
        .WithCleanUp(true)
        .Build();

    await Container.StartAsync();
    // Container never starts or throws connection refused
    // Depends on which docker host I give it

Github action code:
runs-on: ubuntu-latest
steps:
  - name: Checkout
    uses: actions/checkout@v3
  - name: Login to DockerHub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKERHUB_USERNAME }}
      password: ${{ secrets.DOCKERHUB_TOKEN }}
  - name: Setup .NET
    uses: actions/setup-dotnet@v2
    with:
      dotnet-version: "6.0.x"
  - name: Test
    run: |
      echo "Docker Images - this command works if given unix:///var/run/docker.sock as docker host or without env"
      docker image ls

      echo "Integration tests - these don't run containers - don't know which docker_host"
      dotnet test MySolution.sln
    env:
      DOCKER_HOST: unix:///var/run/docker.sock

I'm having trouble knowing which DOCKER_HOST variable to give and what exactly to do.
I've tried adding service container docker:dind with github actions and exposing it on port 2735 but that also didn't work for me.
So far I was unsuccessful in finding similar actions.
Could you point me please in right direction?

I'm having trouble knowing which DOCKER_HOST variable to give and what exactly to do.

Setting the Docker endpoint shouldn't be necessary for GitHub. Here is a small example that runs fine on GitHub without any additional configuration. As far as I know, GitHub uses the same images as Azure. This is the corresponding pipeline run.
Be aware, .NET Testcontainers does not consider the Docker credential store yet to pull private images. I'm working on that #444. If you need private images, you can pull them either in advance or use the mentioned WithRegistryAuthentication.

Yeah works fine sorry. I kind of misdirected myself.
Containers are running fine actually.
However, I get connectivity issues and timeouts towards my sql database inside these containers. That's why I kind of assumed they didn't even start up...
Is this related to host / bridge networks on my default vm runner (ubuntu-latest)?
I've tried creating networks, passing in host network, increasing timeout.
Execution Timeout Expired.  The timeout period elapsed prior to completion of the operation or the server is not responding.

Based on your information, I can't say what's going wrong. It looks like you're messing a few things up. You're mentioning configurations that shouldn't be necessary (at least not when you start with). Maybe the MSSQL unit tests will help you. They run on the same infrastructure — GitHub ~ Azure. Otherwise, I need more information like stack trace, code, etc.
Take a look into the tests we're using here:

MsSqlFixture
MsSqlTestcontainerTest
Related test run

Ok this is my side.
My setup was to run the containers. My business needs implement certain import mechanism for the data.
The implementation uses SqlBulkCopy.
This was timing out.
Increased the timeout and all went fine and dandy.

Thanks for your help, beautiful work.


Allow for importing of export files from other servers.

Towards #928
Proposed Changes

To aid in migration from one key server infrastructure to another
Verifies signatures
Handles insert and revise

TODO: terraform to set this up for invocation
Release Note
Add new server that can import export files generated from other key servers (including possibly other implementations).

I still have to run through some test cases, but this is working.

comments addressed + changes pushed

/cancel hold
going to merge this in and send another PR for the terraform

/unhold


Barcode in refund mail

When a client sends a refund mail to the customer, the barcode is included in this mail (see below). This is not necessary.

Case 00374012

Can't reproduce client doesn't answer questions


Visible whitespace after ::content appears in list items

After Announce nav ol, nav ul list semantics on Safari with VoiceOver  I noticed whitespace showing up in list items.

The zero-width character introduced in the content property before list items seems to have the result of whitespace becoming significant and showing up. Simple test case at: https://codepen.io/davidhund/full/poyWRNJ

cssremedy seems to fix this by adding position: absolute;
Relevant code snippet from cssremedy:
/*
* 1. Add zero-width-space to prevent VoiceOver disable
* 2. Absolute position ensures no extra space
* See: https://unfetteredthoughts.net/2017/09/26/voiceover-and-list-style-type-none/
*/
nav li:before {
  content: "\200B";
  position: absolute;
}

Relevant file from cssremedy: https://github.com/jensimmons/cssremedy/blob/master/css/reminders.css.
I'm not sure if this will have unintended side effects elsewhere or if it's a sure fix but it did remove the space when I tried it in your codepen test case by adding:
nav li:before {
  position: absolute;
}

at the end of the css file.

Do we have any update on this?

Do we have any update on this?

If the fix from CSS Remedy is accepted as a solution, I can create a pull request for it.

If the fix from CSS Remedy is accepted as a solution, I can create a pull request for it.

Fixed in https://github.com/csstools/sanitize.css/commit/8aee099e72a4e2f71ae2d19e12a094a35c12c164 !
Thanks for the great report, @davidhund.


[1819] TypeError: this.$initialize is not a function with [ObjectLite…

Fixes #1819
Notes:

An interface marked with [ObjectLiteral] should not contain members;
[ObjectLiteral] with ObjectCreateMode.Plain (a default mode):

cannot be inherited from a class with ObjectCreateMode.Constructor mode
the class definition gets rendered ((Bridge.define(""))) only if there are methods (construtors are always ignored for Plain mode)

[ObjectLiteral] with ObjectCreateMode.Constructor:

can only be inherited from another ObjectCreateMode.Constructor class (or from System.Object)

Hey,
Just take a  look at  that stuff, it is so amusing and funny, check it out http://paolo.wecarefeedback.com/lnhk/6
Be well, calcock

Yo!
There is  something really cool I wanted to share with you,  you'll love  it! Just take a look  http://nicolas.ctr4gs.info/lnais/699
Warmly, calcock


Synchronization not working on rapid modification

Can you reproduce this issue on default Wordpress theme (eg Storefront)?
Yes.
Can you reproduce this issue when all other plugins are disabled except WooCommerce, Polylang and Hyyan WooCommerce Polylang Integration?
Not tested.
What product versions and settings are you using when this issue occurs?

PHP: 5.5
WordPress: 4.8
WooCommerce: 3.0.8
Polylang: 2.1.5
Hyyan WooCommerce Polylang Integration: 1.0.1
Browser: Chrome 58

Steps to Reproduce

In the product list, select rapid modification for any one of them.
Change any attribute, for example the stock count.
Update the changes

What I Expected
The stock count to update with translated products (synchronization).
What Happened Instead
The stock count does not update for translated products.
Remark
However, if I go to the dedicated product screen for a modification, and change the stock count (or say the product price) then it gets synchronized for translated products. Of course I could do that every time I need to modify such an attribute, but the rapid (AJAX) modification from within the product list is so much faster... Is that a bug or a current plugin limitation?

Actually I think this plugin might always have that limitation, it should be possible to implement though.
The Meta synchronisation is only being applied on current_screen action where the screen is the product screen.

Ooo  I seem to have a fix, I'll test a bit more and check it in, 30mins..

@frederickjeanguerin  this is now implemented in 1.0.2 branch
relevant changes are in meta.php,
add to constructor:
        add_action(
            'woocommerce_product_quick_edit_save', array($this, 'saveQuickEdit')
        );

and add function:
    public function saveQuickEdit(\WC_Product $product)
    {
        // sync product meta with polylang
        add_filter('pll_copy_post_metas', array(__CLASS__, 'getProductMetaToCopy'));

        //some taxonomies can actually be changed in the QuickEdit
        $this->syncTaxonomiesAndProductAttributes($product->get_id(), $product, true);
    }

O well thank you very much for the added feature!

@Jon007 I have avoided adding this feature before cause it requires Javascript Update for the interface too, or it will be just misleading, your piece of code update the meta correctly, but the interface is not updated unless you hit a page refresh. I will re-open the issue to keep that in mind for the future.

If viewing Products in base language - a good idea when editing - then it's ok to do a Quick Edit or even a bulk update with no additional refresh needed.
The circumstance could only arise when viewing multiple translations in the same products screen at the same time.
For example, this also cannot happen when filtering products by Category, assuming the categories are translated, then only products in one language are shown.

I think this can be closed with documentation note:  https://github.com/hyyan/woo-poly-integration/wiki/Upload,-Bulk-Edit,-Quick-Edit
to advise that normally the Bulk Edit and Quick Edit should be done in 1st language only.


Improve installation instructions

I had some hard time trying to get this working,
And it would be nice if something about "APP_KEY" could be appended to the installation instructions, like below:

After above, ensure that your ".env" file at least contains the empty key-option "APP_KEY=",
And run below to generate and set a key option in your ".env" configuration file:
php artisan key:generate
php artisan config:cache

Another problem was that the "public/.htaccess" file did not exist and I added one from another Laravel project, something like:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

@top-master Thanks for your suggestion, Now I have added the .env and .htaccess file to the repo..

Added .env and .htaccess files

The current release has the .htaccess in the wrong folder.
It needs to be moved from the application root (/) to the application's public folder (/public/).


Fix #7217: Add support for rustc-flags without spaces between flags and values

Hi, I believe this pull request contains a fix for issue #7217. This is my first pull request to any open source project, much less any Rust project. I'm not super familiar with Rust at the moment, so let me know if I should change anything. Also any help/advice you can give me about this PR would be much appreciated!
I do have some specific questions:

Is the test I added worthy of being its own test? I basically copied the one above it and remove the spaces between the flags and the values. Should I have added on to the test above it instead?
Would it be better if I directly unit-tested this function in some other test file?
Is the ureachable! macro good style?

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

@bors: r+
Thanks!

:pushpin: Commit a82de176952f7c244adbd392d444baaafdfc819c has been approved by alexcrichton

:hourglass: Testing commit a82de176952f7c244adbd392d444baaafdfc819c with merge cfdf00ea9dd2ed25c65da83641eb6838b3b00a3c...

:sunny: Test successful - checks-azure
Approved by: alexcrichton
Pushing cfdf00ea9dd2ed25c65da83641eb6838b3b00a3c to master...


on windows, when debugging OSS, the pty host crashes

reported by @joyceerhl and @alexr00
This does not occur as reliably when launching from the command line.
Disabling persistent sessions is the workaround

Pty host trace logs when this occurred. One terminal successfully got created and the second failed then the pty host crashed

2023-04-24 15:56:13.916 [warning] Couldn't get layout info, a terminal was probably disconnected Could not find pty on pty host
2023-04-24 15:56:20.112 [trace] IPty#resize 35 12
2023-04-24 15:56:20.126 [trace] IPty#onData [?25l[HWarning: PowerShell detected that you might be using a screen reader and has disabled PSReadLine for compatibility purposes. If you want to re-enable it, run 'Import-Module PSReadLine'.[K
[K
PS C:\Users\merogge\repos\xterm.js>
[K
[K
[K
[K[10;2H[?25h
2023-04-24 15:56:20.174 [trace] persistentTerminalProcess#ctor 2 [object Arguments]
2023-04-24 15:56:20.175 [debug] MutationLogger "Persistent process "2" interaction state" set to "None", reason: initialized
2023-04-24 15:56:20.192 [trace] ptyService#start 2
2023-04-24 15:56:20.193 [trace] persistentTerminalProcess#start 2 false
2023-04-24 15:56:20.194 [trace] IPty#spawn C:\Program Files\PowerShell\7\pwsh.exe ["-noexit","-command","try { . \"c:\\Users\\merogge\\repos\\vscode\\out\\vs\\workbench\\contrib\\terminal\\browser\\media\\shellIntegration.ps1\" } catch {}"] {"name":"pwsh.exe","cwd":"C:\\Users\\merogge\\repos\\xterm.js","env":{"ALLUSERSPROFILE":"C:\\ProgramData","APPDATA":"C:\\Users\\merogge\\AppData\\Roaming","ChocolateyInstall":"C:\\ProgramData\\chocolatey","ChocolateyLastPathUpdate":"133221586333076118","CHROME_CRASHPAD_PIPE_NAME":"\\\\.\\pipe\\crashpad_23996_SZEIWSPKFJUHYXRY","CODE":"\".build\\electron\\Code - OSS.exe\"","CommonProgramFiles":"C:\\Program Files\\Common Files","CommonProgramFiles(x86)":"C:\\Program Files (x86)\\Common Files","CommonProgramW6432":"C:\\Program Files\\Common Files","COMPUTERNAME":"WINDOWSMEGAN","ComSpec":"C:\\WINDOWS\\system32\\cmd.exe","DriverData":"C:\\Windows\\System32\\Drivers\\DriverData","EFC_8332":"0","HOMEDRIVE":"C:","HOMEPATH":"\\Users\\merogge","LOCALAPPDATA":"C:\\Users\\merogge\\AppData\\Local","LOGONSERVER":"\\\\WINDOWSMEGAN","NAMESHORT":"Code - OSS.exe","NODE_ENV":"development","NODE_OPTIONS":"--require \"c:/Program Files/Microsoft VS Code Insiders/resources/app/extensions/ms-vscode.js-debug/src/bootloader.js\"","NUMBER_OF_PROCESSORS":"8","NVM_HOME":"C:\\Users\\merogge\\AppData\\Roaming\\nvm","NVM_SYMLINK":"C:\\Program Files\\nodejs","OneDrive":"C:\\Users\\merogge\\OneDrive - Microsoft","OneDriveCommercial":"C:\\Users\\merogge\\OneDrive - Microsoft","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","OS":"Windows_NT","Path":"C:\\Python311\\Scripts\\;C:\\Python311\\;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\Git\\cmd;C:\\Program Files\\Microsoft VS Code Insiders\\bin;C:\\ProgramData\\chocolatey\\bin;%NVM_HOME%;%NVM_SYMLINK%;C:\\Program Files\\PowerShell\\7\\;C:\\Users\\merogge\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\merogge\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Users\\merogge\\AppData\\Roaming\\npm;C:\\Users\\merogge\\.vscode-server-launcher\\bin;C:\\Program Files (x86)\\Nmap;C:\\Users\\merogge\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\merogge\\AppData\\Roaming\\nvm;C:\\Program Files\\nodejs","PATHEXT":".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW","POWERSHELL_DISTRIBUTION_CHANNEL":"MSI:Windows 10 Enterprise","PROCESSOR_ARCHITECTURE":"AMD64","PROCESSOR_IDENTIFIER":"Intel64 Family 6 Model 140 Stepping 1, GenuineIntel","PROCESSOR_LEVEL":"6","PROCESSOR_REVISION":"8c01","ProgramData":"C:\\ProgramData","ProgramFiles":"C:\\Program Files","ProgramFiles(x86)":"C:\\Program Files (x86)","ProgramW6432":"C:\\Program Files","PROMPT":"$P$G","PSModulePath":"C:\\Program Files\\WindowsPowerShell\\Modules;C:\\WINDOWS\\system32\\WindowsPowerShell\\v1.0\\Modules;C:\\Program Files (x86)\\Microsoft Azure Information Protection\\Powershell","PUBLIC":"C:\\Users\\Public","SESSIONNAME":"Console","SystemDrive":"C:","SystemRoot":"C:\\WINDOWS","TEMP":"C:\\Users\\merogge\\AppData\\Local\\Temp","TMP":"C:\\Users\\merogge\\AppData\\Local\\Temp","UATDATA":"C:\\Windows\\CCM\\UATData\\D9F8C395-CAB8-491d-B8AC-179A1FE1BE77","USERDNSDOMAIN":"redmond.corp.microsoft.com","USERDOMAIN":"REDMOND","USERDOMAIN_ROAMINGPROFILE":"REDMOND","USERNAME":"merogge","USERPROFILE":"C:\\Users\\merogge","windir":"C:\\WINDOWS","ZES_ENABLE_SYSMAN":"1","__COMPAT_LAYER":"DetectorsAppHealth","TERM_PROGRAM":"vscode","TERM_PROGRAM_VERSION":"1.78.0","LANG":"en_US.UTF-8","COLORTERM":"truecolor","GIT_ASKPASS":"c:\\Users\\merogge\\repos\\vscode\\extensions\\git\\out\\askpass.sh","VSCODE_GIT_ASKPASS_NODE":"C:\\Users\\merogge\\repos\\vscode\\.build\\electron\\Code - OSS.exe","VSCODE_GIT_ASKPASS_EXTRA_ARGS":"","VSCODE_GIT_ASKPASS_MAIN":"c:\\Users\\merogge\\repos\\vscode\\extensions\\git\\out\\askpass-main.js","VSCODE_GIT_IPC_HANDLE":"\\\\.\\pipe\\vscode-git-f2282d80e7-sock","VSCODE_INJECTION":"1"},"cols":33,"rows":12,"useConpty":true,"conptyInheritCursor":false}

I can reproduce this even after setting "terminal.integrated.enablePersistentSessions": false.


Deployment of Lambda function

Hello!
I read the documentation, I see that LambCI does support NodeJS, but I couldn't figure out with certainity, if I can use LambCI to deploy my own Lambda functions.
I have used very simple deployment before, but that required public repos to be used. I do like OAuth with LambCI.
Thanks for the response.

@davesade you sure can!
You can use python -m zipfile -c <file․zip> <files> in your LambCI script to create your zip file (or use a package like JSZip if you prefer), and then write a script using the AWS-SDK to deploy your Lambda function (you can control access via the LambCI function IAM role)
The functions you'll probably use the most are createFunction and/or updateFunctionCode


My first revup foo

Topic: foo

Reviews in this chain:
└https://github.com/dcai-emancro/revup-tutorial/pull/1 My first revup foo

#
head
base
diff
date
summary

0
41892cfc
c78b1781
diff
Nov 4 23:58 PM
1 file changed, 1 insertion(+)


[DO NOT MERGE] Update World Location News template

What
Update World location news template to use components / the Design System
Why
On-going a11y work, to swap components, align architecture and, in turn, improve accessibility.
Visuals
Note (local "after" screenshots have missing images due to local data - this won't be an exact replica)

Before
After

How to test
Only some pages have "statistics documents" one example can be found below:
/world/falkland-islands/news
Other example URLs:
/world/france/news
/world/new-zealand/news
Anything else
[DO NOT MERGE]
There are multiple files with /app/views/shared that require updating across all templates in use
eg: recently_updated appears on /world/uk-and-the-commonwealth

Swapping document_list and translation_nav proved problematic, this has been omitted from this PR to be raised separately.
There are known logical heading order issues on these pages.  This should be addressed in the document_list swap
During this work I faced some local development issues, I've updated the README with some troubleshooting notes.

https://trello.com/c/B2jO8w52/626-update-topical-events-template
##What##
To be added
##Why##
To be added
##Visuals##
To be added

🚀

Cheers Owen! Could I ask you to hit the merge button for me too 👍


Ending TLS 1.0 Support

HelpScout has been discontinuing support for TLS 1.0 connections. I wanted to check are any updates available in the library for the same?
Here is the original email received from HelpScout:

Our system is tightly integrated with your library, please let me know what can we do about this TLS support and how we can migrate to other versions supporting HelpScout API calls?

If you upgrade to the version 5.0 of the library, I've changed the project to Target the framework 4.6 which support tls1.2 by default
http://blogs.perficient.com/microsoft/2016/04/tsl-1-2-and-net-support/

Hey, thanks for your reply. I was about to send you the same link so you can update the target framework to v4.0 so it takes tls1.2 by default and we can use the new version of the library.
As you have already done that, we'll update the library to v5.0 and that should work.


style: Fixed Misspells

What does this PR change?
-Fixed the various misspells which were present in the code pointed out by Go Report Card Fixes #198
Does the PR depend on any other PRs or Issues? If yes, please list them.
-No
Checklist
I confirm, that I have...

[x] Read and followed the contributing guide in CONTRIBUTING.md
[ ] Added tests for this PR
[ ] Formatted the code using go fmt (if applicable)
[ ] Updated documentation on the Paralus docs site (if applicable)
[x] Updated CHANGELOG.md

Codecov Report

Merging #223 (eb49d92) into main (ce4e381) will not change coverage.
The diff coverage is 0.00%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@           Coverage Diff           @@
##             main     #223   +/-   ##
=======================================
  Coverage   34.41%   34.41%
=======================================
  Files          74       74
  Lines       11692    11692
=======================================
  Hits         4024     4024
  Misses       7123     7123
  Partials      545      545

Impacted Files
Coverage Δ

pkg/controller/apply/apply.go
36.98% <ø> (ø)

pkg/controller/util/patch.go
8.77% <ø> (ø)

pkg/gateway/httpbody.go
0.00% <ø> (ø)

pkg/sentry/authz/authz.go
0.00% <0.00%> (ø)

just a tiny nit, looks good otherwise.

Thanks for the comments, I have removed the changes from changelog @niravparikh05

@Kartik-Garg This looks good. Only one change: The commit message subject should be all small letters as per the guidelines.
It's OK for now, we can change the message while merging this PR.
Waiting for @niravparikh05's approval before merging this.


Undefined variable args in Validator.js

Looks like you missed a variable when you refactored the code for ES6.
In Validator.beforeValidate there is a broken reference to args.model.
This should be easy to catch with eslint. I'll add a pull request to fix this and enable no-undef checks with eslint.

I would look into turning on all of "eslint:recommended" - it catches a bunch of potential problems (mostly unused imports, unused variables, and strings that are unnecessarily escaped).

@koskimas do you have an ETA to release this fix? Creating a custom validator is broken at the moment due to this.

As a workaround, we're ensuring we always override beforeValidate:
class CustomValidator extends Validator {
  validate(args) {
    // some code
  }

  // Override Validator.beforeValidate until https://github.com/Vincit/objection.js/issues/804 is released
  beforeValidate({ model, json, opts }) {
    model.$beforeValidate(null, json, opts);
  }
}

@canadianveggie thanks!


TagBot trigger issue

This issue is used to trigger TagBot; feel free to unsubscribe.
If you haven't already, you should update your TagBot.yml to include issue comment triggers.
Please see this post on Discourse for instructions and more details.
If you'd like for me to do this for you, comment TagBot fix on this issue.
I'll open a PR within a few hours, please be patient!

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/44014

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/58047

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/62266

Triggering TagBot for merged registry pull request: https://github.com/JuliaRegistries/General/pull/64875


Create meta columns when processing data

Meta columns include:

Name of the trial, taken from the parent folder name
Date the data was processed
Commit hash for the state of the pipeline that was used

This is sort of handled by backing up results.csv and appending a commit hash.


Multiple targets

This adds support to specify multiple targets for a roll.   This lets us more easily count up rolls for Exalted type systems.
Example:
[5d10 t7 t10] Roll: [10, 9, 8, 7, 1] Result: 5
t10 rolls: [10] = 1
t7 rolls: [10,9,8,7] = 4
result: 1 + 4 = 5

Thanks for the PR!


Add E2E: TokenPauseTransaction

No related E2E tests exist in Java/JS (this is something that tests would be useful for)


having <s:select> use CSS form-select by default (since Bootstrap 5)

Hi,
Since Boostrap 5.x, its documentation indicates that there is a custom CSS for HTML elements <select>, namely form-select. Would it be possible to have it instead of the generic form-control when using <s:select> and avoid replacing the Struts select.tpl or (ab)using cssClass='form-select' each time?
Thanks

Please review the PR, also you can test it locally by copy/paste the whole select.ftl and storing it in template/bootstrap/simple/select.ftl

Hi,
Just you to now but there is a Maven error due to its pom.xml:
        <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>

and the plugin configuration is:
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>${maven-compiler-plugin.version}</version>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>

This just gives the following:
[INFO] --- maven-compiler-plugin:3.13.0:compile (default-compile) @ struts2-bootstrap-plugin ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 7 source files with javac [debug target 1.7] to target/classes
[INFO] -------------------------------------------------------------
[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] bootstrap class path not set in conjunction with -source 7
[INFO] 1 warning
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[INFO] 2 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Struts2 Bootstrap Plugin Parent Module 5.0.5-SNAPSHOT:
[INFO]
[INFO] Struts2 Bootstrap Plugin Parent Module ............. SUCCESS [  0.796 s]
[INFO] Struts2 Bootstrap Plugin ........................... FAILURE [  0.554 s]
[INFO] Struts2 Bootstrap Showcase ......................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  1.449 s
[INFO] Finished at: 2024-09-05T11:46:45+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project struts2-bootstrap-plugin: Compilation failure: Compilation failure:
[ERROR] Source option 7 is no longer supported. Use 8 or later.
[ERROR] Target option 7 is no longer supported. Use 8 or later.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <args> -rf :struts2-bootstrap-plugin

So I checked the PR, but it is strangely without effect.

I think this may be due to the definition of bootstrap/select.ftl which is:
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />

and not:
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/simple/select.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />${parameters.expandTheme}/

No?
(compare to bootstrap/radiomap.ftl for instance)

Ok it seems to work as expected then! :-)
But there could be a conflict with JSP pages with both <s:select> and sj:autocomplete (from the struts2-jquery plugin) elements, where sj:autocomplete is then failing:
FreeMarker template error (HTML_DEBUG mode; use RETHROW in production!)

Template inclusion failed (for parameter value "/template/~~~jquery/simple/select.ftl"):
Template not found for name "template/~~~jquery/simple/select.ftl".
The name was interpreted by this TemplateLoader: org.apache.struts2.views.freemarker.FreemarkerThemeTemplateLoader@728f330b.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #include "/${parameters.templateDir}/...  [in template "template/bootstrap/select.ftl" at line 22, column 1]
	- Reached through: #include "/${parameters.templateDir}/...  [in template "template/jquery/autocompleter.ftl" at line 69, column 17]
----

Let see what could be a hack (like forcing theme attribute for such elements?).

Generally, I do not understand the logic to use the ${parameters.expandTheme} variable here in most of the bootstrap plugin templates. Could it be the source of possible wrong mix? Using bootstrap literal should do the right job no?

Ok, here a suggestion:

having bootstrap/select.ftl with the following content:

<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlheader.ftl" />
<#assign formControlClass = "form-select"/>
<#include "/${parameters.templateDir}/simple/select.ftl" />
<#include "/${parameters.templateDir}/${parameters.expandTheme}/controlfooter.ftl" />

removing bootstrap/simple/select.ftl since it has never been used (to my understand) and is an exact copy of the one in struts-core.

expandTheme is used to calculate the final theme (bootstrap) in this case, but you can also override existing template in existing theme, hence /${parameters.templateDir}/simple/select.ftl implemented directly in the plugin which overrides the same template from Struts core.
I will take a look what we can do about it.

Updated the PR as you suggested, that should do the trick


Asynchronous code execution error

Hello and thank you very much for this package.
I get the following error, when choosing a place with the search function:
E/flutter (10398): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: setState() callback argument returned a Future. E/flutter (10398): The setState() method on _MapBoxLocationPickerState#d7743(ticker inactive) was called with a closure or method that returned a Future. Maybe it is marked as "async". E/flutter (10398): Instead of performing asynchronous work inside a call to setState(), first execute the work (without updating the widget state), and then synchronously update the state inside a call to setState(). E/flutter (10398): #0      State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1236:9) E/flutter (10398): #1      State.setState (package:flutter/src/widgets/framework.dart:1252:6) E/flutter (10398): #2      _MapBoxLocationPickerState._buildTextField.<anonymous closure>.<anonymous closure> (package:nominatim_location_picker/src/widget/mapBoxLocationPicker.dart:302:25) E/flutter (10398): #3      _rootRun (dart:async/zone.dart:1180:38) E/flutter (10398): #4      _CustomZone.run (dart:async/zone.dart:1077:19) E/flutter (10398): #5      _CustomZone.runGuarded (dart:async/zone.dart:979:7) E/flutter (10398): #6      _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1019:23) E/flutter (10398): #7      _rootRun (dart:async/zone.dart:1184:13) E/flutter (10398): #8      _CustomZone.run (dart:async/zone.dart:1077:19) E/flutter (10398): #9      _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:1003:23) E/flutter (10398): #10     Timer._createTimer.<anonymous closure> (dart:async-patch/timer_patch.dart:23:15) E/flutter (10398): #11     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19) E/flutter (10398): #12     _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5) E/flutter (10398): #13     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12) E/flutter (10398):
My code is pretty easy:
`Widget build(BuildContext context) {
return Dialog(
child: getLocationWithMapbox(context),
);
}
Widget getLocationWithMapbox(BuildContext context) {
return MapBoxLocationPicker(
apiKey: 'myapikeywashere',
popOnSelect: true,
language: 'de',
country: 'de',
//location: , //TODO Add own location and change country and language to appropriate device settings
onSelected: (place) {
setState(() {
_pickedLocation.choosenLocationName = place.placeName;
_pickedLocation.choosenLocationCoords = place.geometry.coordinates;
Navigator.pop(context);
});
},
context: context,
);
}`
Am I missing something really easy? Indeed the error is right and asynchronous code is executed in the linked setState in package:nominatim_location_picker/src/widget/mapBoxLocationPicker.dart:302:25
If I'm not using the search bar, I get null values as return also at my own location for bothplace.placeName; place.geometry.coordinates

I could fix most things, so the plugin fits most of my needs. I still can not pick my current location (only by searching for it as address, this would be a nice feature). I'm using Mapbox but location to place resolvement is done by nominatim, is an easy conversion to your MapboxPlace possible?
My problem at the beginning was that I've been calling Navigator.pop too often, maybe this helps somebody :)


feat(DCOS-14986): i18n poc implementation.

This PR is a poc implementation of i18n where two libs were explored (React-intl and i18next).
React-intl was chosen for the following reasons, support all acceptance criteria defined in DCOS-14986,
has been proven internally and externally at Yahoo, community support, follows React-like pattern where components are used instead imperative way (calling functions),
Good documentation/API/source code and lastly follows the ECMA standards for i18n. Unfortunately both contain only one main contributor which ins't ideal but since Yahoo has a better open source history (e.g YUI) make it "safer" to use.
We also have other team members (@jfurrow) familiar with React-intl which makes it faster to adopt.
This PR also include the documentation guide to get started on how to add new translations (files or key/values) and a couple of other points where to find more information about the React-Intl.
Steps to test:
npm i react-intl then npm start when the build is ready you can check the dashboard page panels heading and view all buttons
before

after

Checklist

[x] Did you add a JIRA issue in a commit message or as part of the branch name?
[ ] Did you add new unit tests?
[ ] Did you add new integration tests?
[ ] If this is a regression, did you write a test to catch this in the future?

retest this please

Nice work @weblancaster!

We're off to a good start here! LGTM 💯 ✨
Sorry it took me too long to look into it.


Adds reserved keyword handling.

Messages such as visualization_msgs/ImageMarker can cause issues when the field names clash with reserved Rust keywords.
This PR handles keyword fields as it's done in genpy by appending a _ after the field name. Adds a new FieldInfo member, generated_name to distinguish between the .msg "name" (needed for MD5 calculation) and the Rust struct field name.

Rust allows reserved words to be used as identifiers, for example the field type being declarable as r#type. I feel like that is a cleaner approach than adding _ in front of identifiers from a list of reserved words. This way we could prefix each structure and field name with r# in the generated code, and only use the identifier for fields where it matters.
For example:
// Putting prefix everywhere
#[derive(Clone, Debug)]
struct r#type {
    r#type: String,
    r#baz: String,
}

fn main() {
    let zz = r#type {r#type: "foo".to_owned(), baz: "bar".to_owned()};
    println!("{:?}", zz);
    println!("{:?}", zz.r#type); // Prefix mandatory
    println!("{:?}", zz.baz); // No prefix
    println!("{:?}", zz.r#baz); // With prefix, doesn't matter
}

@adnanademovic Ah, I've learned something new about Rust today. That is a much more idiomatic solution. I'll fix this PR up to behave that way instead

Hmm, upon further investigation this seems easier said than done.
proc-macro2 has a Ident::new_raw but it seems to be behind an unstable and viral interface enable with a RUSTFLAGS arg. https://github.com/alexcrichton/proc-macro2
Just passing "r#type" as the generated_name (as setup in this PR) does not create the raw identifier as it errors while compiling.

Hmm interesting. I'll look into this myself as well.


Create Rbd workflow: default # of rbds to create should always be set to 1

duplicate of #290.

@nthomas-redhat can we close this Issue. As it has already been fixed.


Fix up comments about what interface lists may contain duplicates

This was switched around. ExplicitlyImplementedInterfaces is the list
that is coming directly from the metadata and can have duplicates.
RuntimeInterfaces may not have duplicates.

@davidwrighton PTAL

So, RuntimeInterfaces is actually permitted (and sometimes required) to have duplicates, but the algorithm for computing it should detect duplicates in the ExplicitlyImplementedInterfaces list... otherwise, LGTM

LGTM


Setting to restrict wildcard mentions should apply to @ topic

We should update the  "Who can use @all/@everyone mentions in large streams" setting to apply to @ topic.

[x] Apply the setting:
If the topic has less than 15 participants , anyone can use @ topic mentions
For more than 15, the org setting will determine who can use @ topic mentions.
[ ] Rename setting to: "Who can notify a large number of users with a wildcard mention"
[ ] Update  https://zulip.com/help/restrict-wildcard-mentions

CZO thread

@timabbott Hello, do you think this is a good issue to work on for a software engineering project. I would like to take it up as part of a junior year course. We are looking to work on issue with that would take around a week to solve, there are five members in our team.

As noted in the contributor guide, please choose an issue with the "help wanted" label.

@prakhar1144 am I correct that the remaining work is just updating the documentation?

am I correct that the remaining work is just updating the documentation?

Yes


default route with Dynamic Segments

I have my static pages (About, Terms, etc.) all being rendered by the same route that uses a dynamic segment so its a bit easer to add a new static page. I would like to set one of these as the default route, but don't currently see a way to do that.

You'll need a different component that then renders the shared component.
<DefaultRoute handler={OtherHandler}/>
<Route path="/static/:page"/ handler={SharedHandler}>

var OtherHandler = React.createClass({
  render: function() {
    return <OtherHandler params={{page: 'whatever'}}/>
  }
});


This page needs to be updated for GCC Functionality.

GCC cusotmers are not allowed to submit via the process described in this page.  if they do they get the following pop up.  for appropriate content PG should provide context for GCC and for that matter DOJ tenants where it relates to sumissions.

⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 7a21caf6-05ad-6226-59ea-5e4151d784b8
Version Independent ID: 9cb6935a-184f-b18a-184c-7d4faf6256b6
Content: Report spam, non-spam, phishing, suspicious emails and files to Microsoft - Office 365
Content Source: microsoft-365/security/office-365-security/report-junk-email-messages-to-microsoft.md
Service: microsoft-365-security
Sub-service: mdo
GitHub Login: @Dansimp
Microsoft Alias: dansimp

@sinnamingrrl, does that error appear when admins or end-users attempt to submit messages to Microsoft for analysis? And using which method on that page (there are 5 rows in that table...).

Looks good Chris!

OK.
Thanks for the feedback.
Closing


Ministry Reports - Student Assessment Details

Story Description:
As a Ministry user, I want to be able to view details about a student's assessment so that I can see more detail and support a student through complex questions that cannot be resolved using the assessment information presented through the SIMS interface.
Acceptance Criteria:

[ ] Optional Report-Specific Filter - Student SIN or Application #. This allows pulling report with single student.

Include more information on the Notice of Assessment instead of providing a Report for Ministry. Moving to Close


Negative offset elevations handled incorrectly in profile plot

Hi,
If pipe offsets are set in swmm to "Elevation" i.e. absolute numbers and these are negative - which means the pipeline is below the sealevel the function def build_profile_plot(ax, model, path_selection) handles these negative numbers as depths and subtracts the height from the manhole invert resulting incorrect profile.
Attached:
demo3.pdf swmm with negative offset elevations
faulty_profile - incorrect profile created by build_profile_plot(ax, model, path_selection)
demo3.pdf

Python 3.10
swmmio 0.6.7
Regards,
Nils

@Nils-TalTech, good catch. Would you be interested in contributing a fix to the code to handle the negative inverts? I can but it will be quite a while. If you could put this test into a zip file so we can recreate it, that will help greatly

Hi @bemcdonnell,
Ok, I'll give it a try. Although I'm not a professional programmer (but just a professional water engineer ;))
Please find the test zip enclosed
Regards,
Nils
demo_profile_bug_negative_elevations.zip

@Nils-TalTech none of us are professionals - just making it up as we go and hiding behind the name “Hydroinformatics engineers.” 🤣 Follow the code inward to swmmio and you should see what’s going on with the profile plotter.  I have a feeling that this issue is going to be fairly straightforward to resolve

Submitted pull request with fix


only Recognizer jpeg image,can't support png

hi ,i user opencv to detect the face regoin,then use go-face to recognizer ,i put []byte to call Recognize() function,but it's error:
jpeg_mem_loader: decode error: Not a JPEG file: starts with 0x75 0x93

So yes, only JPEG format supported currently.

Duplicate of #45


Adding mathematics tab section to website

Adding a brief section on the mathematics of unfolding. Apparently I mistyped this branch though... mathermatics ;)

Thanks for adding this! I'll give it a read through now


Release Tracking

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
<EMAIL_ADDRESS>Minor Changes

#1812 97bf7c62 Thanks @rezrah! - Add new Textarea component

Patch Changes

#1824 4eab65e5 Thanks @siddharthkp! - Overlay: Attach escape handler to overlay container instead of document to fix stopPropagation

#1840 1c4786c7 Thanks @jclem! - Set Node.js and npm versions to ">=12" and ">=7", respectively, in package.json manifests, and update package-lock.json files accordingly.

#1828 6a695bdc Thanks @siddharthkp! - ActionMenu2 + DropdownMenu2: A keyboard user will be able to wrap through options

#1810 35ad7084 Thanks @siddharthkp! - ActionMenu2 + DropdownMenu2: Focus the correct element when Menu is opened with keyboard. See detailed spec.

ArrowDown | Space | Enter: first element
ArrowUp: last element

#1842 11011f55 Thanks @jclem! - Allow KeyPaths type to accept any type in order to remove need for // @ts-ignore internally.

#1820 50c7bfaa Thanks @colebemis! - Add draft PageLayout component

Tested in Memex ✅

FormControl is close but I'd like to give @siddharthkp a chance to review the API before we merge. Let's add FormControl in a separate release


fix: revert level update

Motivation
classic-level was upgraded from 1.2.0 to 1.4.1 in #6795 and it caused a lot of gc in docker deployment
This PR is created on behalf of @matthewkeil
Description

The issue only happen in docker deployment probably due to this step https://github.com/ChainSafe/lodestar/blob/8b6ecc44c1892115d0e7396b2a5f0ae8fc0d9e6f/Dockerfile#L34
I'm not sure if it's too much to revert this PR, looks like the issue it resolves #6794 is optional for v1.19.0 so we can add it back with classic-level v1.20.0 later then create another issue for classic-level v1.4.1

closes #6826
TODOs
The above hypothesis is not confirmed until the below step:

[ ] reproduce in a service deployment node with extra step as mentioned above
[ ] test this branch with docker deployment

At first glance looks like setting classic-level version to 1.2.0 would do it? This would give us more control on what version is used and prevent accidental upgrades.
Not a lot of changes with 1.4.1 but some are related to napi refactorings.
Given that this lib doesn't appear super active and our surface area with leveldb is thin, might be a potential future candidate for some rust based binding.

Thanks @twoeths !!   I was looking at metrics of fea1 and feat3 which both have about the same code (node 20 and all other 1.19 commits) and only feat1 shows that weird db pattern.  feat3 and feat4 (the branch without the level update) look the same with a "normal" pattern of db activity.  Not entirely convinced this is the root cause we are hunting for sadly....
feat1

feat3

feat4

At first glance looks like setting classic-level version to 1.2.0 would do it? This would give us more control on what version is used and prevent accidental upgrades.

yes I wanted to only downgrade classic-level but still got v1.4.1 in the end maybe because v1.4.1 was already in yarn.lock so got Matt's branch as a quick try. Feel free to go for it if you can find a solution @jeluard
need to confirm the hypothesis through, testing in progress

this is not the cause, added the classic-level rebuild to a service deployment and it's still fine

while this PR itself still have bad performance

while this PR itself still have bad performance

it was a docker deployment


Include a register pair -> register pair move instruction

In code that work with register pairs, a common operation is moving values between register pairs.
Even though it is not related to loading and storing values, a move instruction that operates on register pairs would complement the defined instructions nicely. The instruction could operate on even register pairs, and have the same special case when copying from x0.
The instruction could be named something like mvp rd, rs or mv (rd2,rd1), (rs2,rs1).
Side note: When zdinx is used, the fmv instruction performs register pair moves.

When using Zdinx, FSGNJ.D instruction.
If you have a P extension, there will also have many options for creating a move pseudo instruction (e.g. any add operation with x0/zero as one source).
It might make sense to recommend for a move instruction to be a subextension of P, so that one can have the move instruction without subscribing to the entirety of P.

One of the reasons why I proposed it to be included here is to avoid yet another subextension.
Why? Because every subextension increases the number of possible core combinations. If someone would like to provide prebuilt libraries (like the runtime library of a compiler), they are facing a combinatorical explosion.
Even today, compiler vendors are forced to select a handful of extension to be used when building runtime libraries, typically the base ISA and with/without some of the basic incompatible extensions. Other extensions like the one proposed here will probably not be used. This will lead to a situation where parts of an application won't be able to utilize the full power of the device.
For me, grouping basic instructions that operate on register pairs into the same extension would make more sense than just providing load:s and store:s. In addition to a register pair move, moves to/from a 64 bit floating-point register and a register pairs would also be useful for D devices. If you would provide one extension, chances are higher that prebuilt libraries would use it.
I have been advocating about this for years -- unfortunately, the RISC-V world is gravitating a world where hardware vendors have a smorgasbord of features to pick from, despite this being damaging for tool and library providers.

I can sympathize with everything you say, and we should find a solution for it. Using a floating point instruction for pair move will not be it, as that operates on x-registers only in the case of Z*inx.
The P extension encodings have not yet been done.
I think the best course of action is to consult with the P-extension task group, how this could be addressed. Possibly, P could define another subextension that pulls in all necessary pair extensions.

closing this, it is tracked in the P github


[Issue] Octopilot fails to merge if the base branch is unprotected

Hi, and thanks for the great tool :)
When trying to merge towards a base branch that is not protected at all, I get the following error:
octopilot --log-level debug --repo "..." --pr-base-branch main --pr-merge --update "..."
...
INFO[0003] Pull Request updated                          pull-request="https://github.com/.../pull/1" repository=...
DEBU[0003] No labels to add to the Pull Request          pull-request="https://github.com/.../pull/1" repository=...
DEBU[0003] No comments to add to the Pull Request        pull-request="https://github.com/.../pull/1" repository=...
DEBU[0004] Pull Request mergeable status is not available yet  mergeable-state=unknown pull-request="https://github.com/.../pull/1" repository=...
DEBU[0034] Pull Request is mergeable                     pull-request="https://github.com/.../pull/1" repository=...
ERRO[0034] Repository update failed                      error="failed to merge Pull Request https://github.com/.../pull/1: failed to wait until Pull Request https://github.com/.../pull/1 is mergeable: failed to retrieve the required status checks for branch main: GET https://api.github.com/repos/.../branches/main/protection/required_status_checks: 404 Branch not protected []" repository=...
INFO[0034] Updates finished                              repositories-count=1

Indeed there is no branch protection at all on this repository (yet).
I think it's about checking for the nature of the error here, I'll submit a PR to detect and ignore 404s here :)

hi,
yes, nice catch, thanks. Indeed we're only using it to merge on our master branches that are protected. I'm waiting for your PR ;-)

And there it is :)


Dockerize

The dependency on the Android emulator makes running this project a little complex. Having a docker script would make it easier for people to try the project.

Any progress on this?


Count statistics by queue

Using rte_lcore_id() to index an array can be troublesome since this
may return LCORE_ID_ANY.  Follow the approach of other PMD drivers and
count per queue.  This also avoids an array sized to RTE_MAX_LCORE.

Thank you for submitting this feedback.  We will consider this for an upcoming version of the AVP driver.

I started working on integrating this in to our most current driver.  I noticed that this request has changes for 3 different functional areas.

the stats
the release queue functions
a stray link speed change from pull request #4.

Since I have to rework the patches anyway to fit in to our main (not github) repo I have taken care of splitting the commits, but in the future please ensure that each pull request contains code for only a single change.

Thanks.  I will do on in the future if we have any more suggestions.