AWS Cloudwatch Scaler, do nothing on empty metric data received

Proposal
Is there a way to do nothing when an empty metric response is returned from AWS CloudWatch? The current behaviour appears to be to return the minMetricValue, but would it be possible to do nothing in this case? I may of overlooked the option for this though
https://github.com/kedacore/keda/blob/main/pkg/scalers/aws_cloudwatch_scaler.go#L385-L386
Happy to implement this if functionality doesn't exist in the current AWS CloudWatch scaler options.
Use-Case
We are experimenting with the AWS Scaler and custom metrics. The use case here is when the system producing metrics is offline and unable to produce metrics, we would want no scaling actions to take place.
Is this a feature you are interested in implementing yourself?
Yes
Anything else?
No response

Hi @robpickerill could you please draft here the empty response? It is a null or empty array and it is something that is expected from CloudWatch? Also, what is the value that should be reported in this case?

Hi, thanks for the follow up @zroubalik.
It is an empty response, so in this case, there are no metrics being returned from the GetMetricData call. We fall into this branch: https://github.com/kedacore/keda/blob/main/pkg/scalers/aws_cloudwatch_scaler.go#L386, as the MetricDataResults has zero length.
The wider scenario here is that another system is producing custom metrics, by which a ScaledObject is being used to query that metric and scale a separate system, which is a deployment, to the relevant capacity. In the case whereby the system producing the custom metrics is offline, no metrics are being returned from the GetMetricData call. In this scenario, no metrics in the GetMetricData call is normal behaviour from CloudWatch.
What I wanted to guard against in this scenario is further scaling activity. I'd like the deployment to remain at the current scale. From what I've observed, the deployment will scale down to the largest value of the minReplicaCount, or the evaluation of the minMetricValue in the scaling policy.
I don't know if this is a viable approach, but one way I could see working from so far is to have an option on the AWS CloudWatch scaler to handle an empty result as an error. Thus marking that scaler/trigger in an error state. This option would therefore be mutually exclusive to the minMetricValue option.

Sorry for the delay, I missed the reply somehow.
Having an option setting that would allow AWS CloudWatch scaler to handle an empty result as an error is okay with me. We just need to be backwards compatible.

Thanks @zroubalik -- just to check, would the backwards compatibility be enough to add a new metadata option for the cloudwatch scaler: errorWhenMetricValuesEmpty, that's optional, and defaults to false to maintain previous behaviour if the user supplies no options when upgrading?

Thanks @zroubalik -- just to check, would the backwards compatibility be enough to add a new metadata option for the cloudwatch scaler: errorWhenMetricValuesEmpty, that's optional, and defaults to false to maintain previous behaviour if the user supplies no options when upgrading?

Yes, that's enough :)

Thanks, you can assign this to me, I'll send over a PR for review soon


Does Brackets have autocomplete for SASS?

I started to use SASS instead of SCSS sometime ago and found out there is no the same autocomplete as it was for SCSS. While typing SASS markup, Brackets doesn't suggest me names of CSS properties and values. Should I enable something in settings or do something similar?

Use version of 1.8.0.

@DalonK Brackets in it's current for doesn't provide any tooling out of the box for tab based SAAS format. However you may try to find some relevant extensions in brackets extension registry.

Have found what I've been searched for: Brackets SASS Code Hints.

@DalonK great! Closing as solved 😸

How to make Brackets compile sass?

Hi @ydd3064, see https://github.com/jasonsanjose/brackets-sass for autocompiling SASS inside Brackets

@petetnt ,I can't understand……

@ydd3064 you can use the terminal(cmd or terminal) to set a watch for your sass files and automatically dump it into your css files

install ruby
in search explorer open cmd using ruby
go to your work folder in cmd
sass --watch yourSASSFileName.sass:yourCSSFileName.css
this will automatically set a watch and whatever changes you do in your sass file will reflect in your css file

I am facing same problem as @SkyFlame00,does any have better suggestions?


Confirm Travis PyPI deployment works

Travis erroring out on tag builds that are supposed to be deployed to PyPI. Example: https://travis-ci.org/HDI-Project/BTB/jobs/454809090
I believe error is due to incorrect use of travis encrypt for the PyPI password. I believe I fixed it in decd2a8 but need to confirm on next tag that it is fixed.
If error recurs, can manually release by git checkout vX.Y.Z && make release.
Log snippet follows:
Deploying application
running sdist
running egg_info
creating baytune.egg-info
writing baytune.egg-info/PKG-INFO
writing dependency_links to baytune.egg-info/dependency_links.txt
writing requirements to baytune.egg-info/requires.txt
writing top-level names to baytune.egg-info/top_level.txt
writing manifest file 'baytune.egg-info/SOURCES.txt'
reading manifest file 'baytune.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no previously-included files matching '__pycache__' found under directory '*'
warning: no previously-included files matching '*.py[co]' found under directory '*'
warning: no files found matching '*.jpg' under directory 'docs'
warning: no files found matching '*.gif' under directory 'docs'
writing manifest file 'baytune.egg-info/SOURCES.txt'
running check
creating baytune-0.2.3
creating baytune-0.2.3/baytune.egg-info
creating baytune-0.2.3/btb
creating baytune-0.2.3/btb/recommendation
creating baytune-0.2.3/btb/selection
creating baytune-0.2.3/btb/tuning
creating baytune-0.2.3/docs
creating baytune-0.2.3/docs/_static
creating baytune-0.2.3/tests
creating baytune-0.2.3/tests/btb
creating baytune-0.2.3/tests/btb/recommendation
creating baytune-0.2.3/tests/btb/selection
creating baytune-0.2.3/tests/btb/tuning
copying files to baytune-0.2.3...
copying AUTHORS.rst -> baytune-0.2.3
copying CONTRIBUTING.rst -> baytune-0.2.3
copying HISTORY.md -> baytune-0.2.3
copying LICENSE -> baytune-0.2.3
copying MANIFEST.in -> baytune-0.2.3
copying README.md -> baytune-0.2.3
copying setup.cfg -> baytune-0.2.3
copying setup.py -> baytune-0.2.3
copying baytune.egg-info/PKG-INFO -> baytune-0.2.3/baytune.egg-info
copying baytune.egg-info/SOURCES.txt -> baytune-0.2.3/baytune.egg-info
copying baytune.egg-info/dependency_links.txt -> baytune-0.2.3/baytune.egg-info
copying baytune.egg-info/not-zip-safe -> baytune-0.2.3/baytune.egg-info
copying baytune.egg-info/requires.txt -> baytune-0.2.3/baytune.egg-info
copying baytune.egg-info/top_level.txt -> baytune-0.2.3/baytune.egg-info
copying btb/__init__.py -> baytune-0.2.3/btb
copying btb/hyper_parameter.py -> baytune-0.2.3/btb
copying btb/recommendation/__init__.py -> baytune-0.2.3/btb/recommendation
copying btb/recommendation/matrix_factorization.py -> baytune-0.2.3/btb/recommendation
copying btb/recommendation/recommender.py -> baytune-0.2.3/btb/recommendation
copying btb/recommendation/uniform.py -> baytune-0.2.3/btb/recommendation
copying btb/selection/__init__.py -> baytune-0.2.3/btb/selection
copying btb/selection/best.py -> baytune-0.2.3/btb/selection
copying btb/selection/constants.py -> baytune-0.2.3/btb/selection
copying btb/selection/custom_selector.py -> baytune-0.2.3/btb/selection
copying btb/selection/hierarchical.py -> baytune-0.2.3/btb/selection
copying btb/selection/pure.py -> baytune-0.2.3/btb/selection
copying btb/selection/recent.py -> baytune-0.2.3/btb/selection
copying btb/selection/selector.py -> baytune-0.2.3/btb/selection
copying btb/selection/ucb1.py -> baytune-0.2.3/btb/selection
copying btb/selection/uniform.py -> baytune-0.2.3/btb/selection
copying btb/tuning/__init__.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/constants.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/custom_tuner.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/gcp.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/gp.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/tuner.py -> baytune-0.2.3/btb/tuning
copying btb/tuning/uniform.py -> baytune-0.2.3/btb/tuning
copying docs/Makefile -> baytune-0.2.3/docs
copying docs/api_reference.rst -> baytune-0.2.3/docs
copying docs/authors.rst -> baytune-0.2.3/docs
copying docs/conf.py -> baytune-0.2.3/docs
copying docs/contributing.rst -> baytune-0.2.3/docs
copying docs/history.rst -> baytune-0.2.3/docs
copying docs/index.rst -> baytune-0.2.3/docs
copying docs/make.bat -> baytune-0.2.3/docs
copying docs/readme.rst -> baytune-0.2.3/docs
copying docs/recommenders.md -> baytune-0.2.3/docs
copying docs/selectors.md -> baytune-0.2.3/docs
copying docs/tuners.md -> baytune-0.2.3/docs
copying docs/_static/BTB-Icon-small.png -> baytune-0.2.3/docs/_static
copying tests/__init__.py -> baytune-0.2.3/tests
copying tests/btb/__init__.py -> baytune-0.2.3/tests/btb
copying tests/btb/test_hyper_parameter.py -> baytune-0.2.3/tests/btb
copying tests/btb/recommendation/test_matrix_factorization_recommender.py -> baytune-0.2.3/tests/btb/recommendation
copying tests/btb/recommendation/test_recommender.py -> baytune-0.2.3/tests/btb/recommendation
copying tests/btb/recommendation/test_uniform_recommender.py -> baytune-0.2.3/tests/btb/recommendation
copying tests/btb/selection/__init__.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_best.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_constants.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_custom_selector.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_hierarchical.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_pure.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_recent.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_selector.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_ucb1.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/selection/test_uniform.py -> baytune-0.2.3/tests/btb/selection
copying tests/btb/tuning/__init__.py -> baytune-0.2.3/tests/btb/tuning
copying tests/btb/tuning/test_custom_tuner.py -> baytune-0.2.3/tests/btb/tuning
copying tests/btb/tuning/test_gp.py -> baytune-0.2.3/tests/btb/tuning
copying tests/btb/tuning/test_tuner.py -> baytune-0.2.3/tests/btb/tuning
copying tests/btb/tuning/test_uniform.py -> baytune-0.2.3/tests/btb/tuning
Writing baytune-0.2.3/setup.cfg
creating dist
Creating tar archive
removing 'baytune-0.2.3' (and everything under it)
running bdist_wheel
running build
running build_py
creating build
creating build/lib
creating build/lib/btb
copying btb/__init__.py -> build/lib/btb
copying btb/hyper_parameter.py -> build/lib/btb
creating build/lib/btb/recommendation
copying btb/recommendation/uniform.py -> build/lib/btb/recommendation
copying btb/recommendation/matrix_factorization.py -> build/lib/btb/recommendation
copying btb/recommendation/__init__.py -> build/lib/btb/recommendation
copying btb/recommendation/recommender.py -> build/lib/btb/recommendation
creating build/lib/btb/tuning
copying btb/tuning/uniform.py -> build/lib/btb/tuning
copying btb/tuning/custom_tuner.py -> build/lib/btb/tuning
copying btb/tuning/tuner.py -> build/lib/btb/tuning
copying btb/tuning/constants.py -> build/lib/btb/tuning
copying btb/tuning/gp.py -> build/lib/btb/tuning
copying btb/tuning/__init__.py -> build/lib/btb/tuning
copying btb/tuning/gcp.py -> build/lib/btb/tuning
creating build/lib/btb/selection
copying btb/selection/uniform.py -> build/lib/btb/selection
copying btb/selection/best.py -> build/lib/btb/selection
copying btb/selection/constants.py -> build/lib/btb/selection
copying btb/selection/custom_selector.py -> build/lib/btb/selection
copying btb/selection/selector.py -> build/lib/btb/selection
copying btb/selection/__init__.py -> build/lib/btb/selection
copying btb/selection/hierarchical.py -> build/lib/btb/selection
copying btb/selection/recent.py -> build/lib/btb/selection
copying btb/selection/pure.py -> build/lib/btb/selection
copying btb/selection/ucb1.py -> build/lib/btb/selection
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/btb
creating build/bdist.linux-x86_64/wheel/btb/recommendation
copying build/lib/btb/recommendation/uniform.py -> build/bdist.linux-x86_64/wheel/btb/recommendation
copying build/lib/btb/recommendation/matrix_factorization.py -> build/bdist.linux-x86_64/wheel/btb/recommendation
copying build/lib/btb/recommendation/__init__.py -> build/bdist.linux-x86_64/wheel/btb/recommendation
copying build/lib/btb/recommendation/recommender.py -> build/bdist.linux-x86_64/wheel/btb/recommendation
copying build/lib/btb/__init__.py -> build/bdist.linux-x86_64/wheel/btb
creating build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/uniform.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/custom_tuner.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/tuner.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/constants.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/gp.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/__init__.py -> build/bdist.linux-x86_64/wheel/btb/tuning
copying build/lib/btb/tuning/gcp.py -> build/bdist.linux-x86_64/wheel/btb/tuning
creating build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/uniform.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/best.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/constants.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/custom_selector.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/selector.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/__init__.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/hierarchical.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/recent.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/pure.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/selection/ucb1.py -> build/bdist.linux-x86_64/wheel/btb/selection
copying build/lib/btb/hyper_parameter.py -> build/bdist.linux-x86_64/wheel/btb
running install_egg_info
Copying baytune.egg-info to build/bdist.linux-x86_64/wheel/baytune-0.2.3-py3.6.egg-info
running install_scripts
adding license file "LICENSE" (matched pattern "LICEN[CS]E*")
adding license file "AUTHORS.rst" (matched pattern "AUTHORS*")
creating build/bdist.linux-x86_64/wheel/baytune-0.2.3.dist-info/WHEEL
creating 'dist/baytune-0.2.3-py2.py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'btb/__init__.py'
adding 'btb/hyper_parameter.py'
adding 'btb/recommendation/__init__.py'
adding 'btb/recommendation/matrix_factorization.py'
adding 'btb/recommendation/recommender.py'
adding 'btb/recommendation/uniform.py'
adding 'btb/selection/__init__.py'
adding 'btb/selection/best.py'
adding 'btb/selection/constants.py'
adding 'btb/selection/custom_selector.py'
adding 'btb/selection/hierarchical.py'
adding 'btb/selection/pure.py'
adding 'btb/selection/recent.py'
adding 'btb/selection/selector.py'
adding 'btb/selection/ucb1.py'
adding 'btb/selection/uniform.py'
adding 'btb/tuning/__init__.py'
adding 'btb/tuning/constants.py'
adding 'btb/tuning/custom_tuner.py'
adding 'btb/tuning/gcp.py'
adding 'btb/tuning/gp.py'
adding 'btb/tuning/tuner.py'
adding 'btb/tuning/uniform.py'
adding 'baytune-0.2.3.dist-info/AUTHORS.rst'
adding 'baytune-0.2.3.dist-info/LICENSE'
adding 'baytune-0.2.3.dist-info/METADATA'
adding 'baytune-0.2.3.dist-info/WHEEL'
adding 'baytune-0.2.3.dist-info/top_level.txt'
adding 'baytune-0.2.3.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Uploading distributions to https://upload.pypi.org/legacy/
Uploading baytune-0.2.3-py2.py3-none-any.whl
100%|██████████| 38.5k/38.5k [00:00<00:00, 191kB/s]
NOTE: Try --verbose to see response content.
HTTPError: 403 Client Error: Invalid or non-existent authentication information. for url: https://upload.pypi.org/legacy/

It continues not to work and its not worth investigating further, we will do manual releases


[Hub Generated] Review request for Microsoft.Insights to add version stable/2021-05-01

This is a PR generated at OpenAPI Hub. You can view your work branch via this link.
Changelog
Please ensure to add changelog with this PR by answering the following questions.

What's the purpose of the update?

[ ] new service onboarding
[ ] new API version
[ ] update existing version for new feature
[ ] update existing version to fix swagger quality issue in s360
[ ] Other, please clarify

When you are targeting to deploy new service/feature to public regions? Please provide date, or month to public if date is not available yet.
When you expect to publish swagger? Please provide date, or month to public if date is not available yet.
If it's an update to existing version,  please select SDKs of specific language and CLIs that require refresh after swagger is published.

[ ] SDK of .NET (need service team to ensure code readiness)
[ ] SDK of Python
[ ] SDK of Java
[ ] SDK of Js
[ ] SDK of Go
[ ] PowerShell
[ ] CLI
[ ] Terraform
[ ] No, no need to refresh for updates in this PR

Contribution checklist:

[ ] I commit to follow the Breaking Change Policy of "no breaking changes"
[ ] I have reviewed the documentation for the workflow.
[ ] Validation tools were run on swagger spec(s) and errors have all been fixed in this PR. How to fix?

If any further question about AME onboarding or validation tools, please view the FAQ.
ARM API Review Checklist

[ ] Ensure to check this box if one of the following scenarios meet updates in the PR, so that label “WaitForARMFeedback” will be added automatically to involve ARM API Review. Failure to comply may result in delays for manifest application. Note this does not apply to data plane APIs, all “removals” and “adding a new property” no more require ARM API review.

Adding new API(s)
Adding a new API version
[ ] Ensure to copy the existing version into new directory structure for first commit (including refactoring) and then push new changes including version updates in separate commits. This is required to review the changes efficiently.
Adding a new service

[ ] Please ensure you've reviewed following guidelines including ARM resource provider contract and REST guidelines. Estimated time (4 hours). This is required before you can request review from ARM API Review board.

[ ] If you are blocked on ARM review and want to get the PR merged with urgency, please get the ARM oncall for reviews (RP Manifest Approvers team under Azure Resource Manager service) from IcM and reach out to them.

Breaking Change Review Checklist
If there are following updates in the PR, ensure to request an approval from Breaking Change Review Board as defined in the Breaking Change Policy.

[ ] Removing API(s) in stable version
[ ] Removing properties in stable version
[ ] Removing API version(s) in stable version
[ ] Updating API in stable or public preview version with Breaking Change Validation errors
[ ] Updating API(s) in public preview over 1 year (refer to Retirement of Previews)

Action: to initiate an evaluation of the breaking change, create a new intake using the template for breaking changes. Addition details on the process and office hours are on the Breaking change Wiki.
Please follow the link to find more details on PR review process.

@kairu-ms / @weidongxu-microsoft Can one of you help me complete this pull request?

@kairu-ms / @weidongxu-microsoft Can one of you review this pull request?

@ToddKingMSFT If you have new API, please mark it on the checkbox, so that ARM can be invovled.

A different PR with the same content was already checked in


[NB] how to add custom devices

Hi there,
hopefully of use to others when using custom device.xml.
A few things needed, most importantly mapping the correct folder in the zwave2mqtt docker.

map this location /usr/local/etc/openzwave/ to a local folder.
your docker command will be something like this:

docker run --name=zwave2mqtt --restart=always -it -p 8091:8091 --device=/dev/serial/by-id/usb-0658_0200-if00 -e TZ=America/Los_Angeles -v /home/user/docker/zwave2mqtt16:/usr/src/app/store -v /home/user/docker/zwave2mqtt16/config:/usr/local/etc/openzwave robertslando/zwave2mqtt:2.2.0

Clone the OZW rep  and copy ALL the files from the OZW config folder into the local config folder you mapped above. When the docker starts the new files will be loaded into the container (and it is persistent now so changes will remain) PLUS its also easier to edit if needed.

You will need to edit a couple more things. The list of devices OZW uses to identify what is what called manufacturer_specific.xml and the device.xml itself.
Part 1: Firstly edit the device xml you want to add simply by ammending the revision number at the top to a very high number (which prevents it from being over written when OZW 1.6 queries for updates. If your device eventually gets an official release, you can change/update later. Top line:

Product Revision="999"

Then move the device.xml to where it needs to be. In my case the Inovelli lzn31.xml device into the innovelli folder inside the config directory:
config
inovelli
lzn31.xml
Part 2: Now finally, you need to tell OZW it exists, and how to identify it (note you'll sometimes see device types show up as unknown id=0004 type=0001. Edit the manufacturer_specific.xml to include the device id and type or the zwave device you want to be identified like so:
[Be sure to check for the right Manufacturer block to simply add your device within]
  <Manufacturer id="031E" name="Inovelli">
    <Product type="0002" id="0001" name="LZW30-SN Switch Red Series" config="inovelli/lzw30-sn.xml"/>
    <Product type="0004" id="0001" name="Test Fan" config="inovelli/lzw30.xml"/>
    <Product type="0001" id="0001" name="LZW31-SN Dimmer Red Series" config="inovelli/lzw31-sn.xml"/>
    <Product type="0003" id="0001" name="LZW31 Dimmer" config="inovelli/lzw31.xml"/>
    <Product type="0005" id="0001" name="LZW42 Multi-Color Bulb" config="inovelli/lzw42.xml"/>
    <Product type="0006" id="0001" name="LZW41 Multi-White Bulb" config="inovelli/lzw41.xml"/>
    <Product type="0007" id="0001" name="LZW40 Dimmable  Bulb" config="inovelli/lzw40.xml"/>
  </Manufacturer>

Thank you so much for this 🙏🏻

On 29 Feb 2020, at 05:03, jaburges<EMAIL_ADDRESS>wrote:

Hi there,
hopefully of use to others when using custom device.xml.
A few things needed, most importantly mapping the correct folder in the zwave2mqtt docker.
map this location /usr/local/etc/openzwave/ to a local folder.
your docker command will be something like this:
docker run --name=zwave2mqtt --restart=always -it -p 8091:8091 --device=/dev/serial/by-id/usb-0658_0200-if00 -e TZ=America/Los_Angeles -v /home/user/docker/zwave2mqtt16:/usr/src/app/store -v /home/user/docker/zwave2mqtt16/config:/usr/local/etc/openzwave robertslando/zwave2mqtt:2.2.0
Clone the OZW rep and copy ALL the files from the OZW config folder into the local config folder you mapped above. When the docker starts the new files will be loaded into the container (and it is persistent now so changes will remain) PLUS its also easier to edit if needed.
You will need to edit a couple more things. The list of devices OZW uses to identify what is what called manufacturer_specific.xml and the device.xml itself.
Part 1: Firstly edit the device xml you want to add simply by ammending the revision number at the top to a very high number (which prevents it from being over written when OZW 1.6 queries for updates. If your device eventually gets an official release, you can change/update later. Top line:
Product Revision="999"
Then move the device.xml to where it needs to be. In my case the Inovelli lzn31.xml device into the innovelli folder inside the config directory:
config
inovelli
lzn31.xml
Part 2: Now finally, you need to tell OZW it exists, and how to identify it (note you'll sometimes see device types show up as unknown id=0004 type=0001. Edit the manufacturer_specific.xml to include the device id and type or the zwave device you want to be identified like so:
[Be sure to check for the right Manufacturer block to simply add your device within]

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I also add a link to this guide: https://github.com/robertsLando/Zwave2Mqtt-docker#auto-update-ozw-device-database

@robertsLando in the 3.0.0 I confirmed your guide works. Closing this for your persistent guide.

@jaburges Thanks for the feedback!


JavaScript errors with Safari

Several lab users today ran into issues using DIGITS with Safari.
They couldn't select different silver types or see advanced learning rate options.
It's probably a quick fix.

I can confirm this issue with the latest digits master version and Safari Version 9.0.3 (10601.4.4):

I have the same issue with Firefox 38.5.2

#702 fixes this in Safari.

I'm using,"Show advanced learning rate options"


fix(axelar-gateway): ensure the testutils feature is loaded for tests

the tests import structs from the testutils module, which is only loaded when the testutils feature is active. So the test should ensure that it is

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 99.36%. Comparing base (a71b97a) to head (73c7cf7).

Additional details and impacted files
@@           Coverage Diff           @@
##             main      #70   +/-   ##
=======================================
  Coverage   99.36%   99.36%
=======================================
  Files          33       33
  Lines        2054     2054
=======================================
  Hits         2041     2041
  Misses         13       13

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Receive a 502 bad request in vagrant.

Hello, i am receiving a 502 bad request using homestead with Laravel and nginx. I am using php 7.4 fpm.

You'll have to be more specific.


ci_push probably not testing what it should

Both [1] and [2] have steps "Build code" and "Test code".
In [1] there is a REMOTE arg only for the "Build code" step but in [2] there is a REMOTE arg for both steps. I think [1] has the desired behavior and [2] has a subtle bug.
Basically, I think it is intending to test the current code, but instead it is testing whatever version was previously pushed to ghcr.io. But I could be wrong about the intent.
[1] https://github.com/nasa/astrobee/blob/master/.github/workflows/ci_pr.yml
[2] https://github.com/trey0/astrobee/blob/workflow_dispatch/.github/workflows/ci_push.yml

I see what you mean. It seems like it's doing the right thing, but in a slightly obfuscated way. By comparison, I find the pattern you used in ci_release.yml easier to follow.

In CI release I am forced to retag everything because I need to add the version number


Clamp the mouse 1 pixel off the right and bottom edges of the window when confining cursor

Closes https://github.com/ppy/osu-framework/issues/4508

Have you cross-tested this with https://github.com/libsdl-org/SDL/pull/4831 already?

So this is fixing the way we are handling disabling relative mode, rather than avoiding a glitch caused by cursor clipping near the edge of the window? Because the linked PR changes that last portion.


Add back the undo/redo functions

Awesome work on this enhancement, Turbo! Glad it's coming along nicely.

If you need help with how I did it back then, let me know.


bug(drag-drop): cdkDragPreview matchSize does not always match size due to view container insertion

The below StackBlitz reproduction is a fork of the horizontal list official example. All that was added was a cdkDragPreview with the matchSize input property.

    {{timePeriod}}
    <ng-template cdkDragPreview matchSize>

        {{timePeriod}}

    </ng-template>

(In this case, the preview element is basically the same thing as the cdkDrag element, which doesn't make too much sense, but it is just for demonstration purposes and could contain different elements/styles)
Upon dragging an item, the preview does not match the same size as the original item/placeholder.

(Notice the "Bronze Age" preview is not as wide causing text wrap)
The cause of this problem is the flexbox droplist container (where the items grow/shrink to fill the available space) combined with how the preview element is created.
The preview template is currently being stamped out in the cdkDrag injected view container.
private _createPreviewElement(): HTMLElement {
    const previewConfig = this._previewTemplate;
    const previewClass = this.previewClass;
    const previewTemplate = previewConfig ? previewConfig.template : null;
    let preview: HTMLElement;

    if (previewTemplate) {
      // <-- HERE -->
      const viewRef = previewConfig!.viewContainer.createEmbeddedView(previewTemplate,
                                                                       previewConfig!.context);
      viewRef.detectChanges();
      preview = getRootNode(viewRef, this._document);
      this._previewRef = viewRef;

      if (previewConfig!.matchSize) {
        matchElementSize(preview, this._rootElement);
      } else {
        //...
      }
    } else {
      //...
    }
//...
}

If you put a breakpoint immediately after the viewRef.detectChanges() line, you will see the preview becoming another item in the list, as creating and inserting the embedded view in the view container essentially just tacks on another sibling.

("Bronze Age" was started to be dragged)
Since the preview item is added as a sibling, flexbox recalculates the width of all the items. The matchSize functionality is then executed with these modified (smaller, in this case) dimensions.

Possible Solution
Is a view container even necessary here?
Changing the above code to the following appears to work just fine.
 if (previewTemplate) {
      // <-- HERE -->
      //const viewRef = previewConfig!.viewContainer.createEmbeddedView(previewTemplate,
      //                                                                 previewConfig!.context);
      const viewRef = previewTemplate.createEmbeddedView(previewConfig!.context);
      viewRef.detectChanges();

This creates the same drag preview viewRef, except it is not immediately attached to the DOM.
The reproduction link contains some copied source code to preview this change - just need to comment/uncomment those lines.
Alternatively, the dragged item could be measured before the preview is created. But if there is no reason to use a view container, the above change seems like the more optimal approach.
Reproduction
StackBlitz
Expected Behavior
Preview to match size.
Actual Behavior
Preview does not match size.
Environment

Angular:
CDK/Material: 9.2
Browser(s):
Operating System (e.g. Windows, macOS, Ubuntu):

Thank you for the detailed report 👍 . The idea behind inserting the v thiewrough the ViewContainerRef is to ensure that it's inside the same view/DI hierarchy as drag item. I agree that ideally we'd just create the element outside the DOM, but an alternate solution is to measure the element before the preview has been created.


bug/parent_id is still a hash with unique_element_ids=True

with 0.11.8
>> part = partition(url=source, unique_element_ids=True)
>> part[5].id
'80aeff2c-f406-470e-b82e-512723f1bdd3'
>>> part[5].metadata.to_dict()['parent_id']
'11364a4c8f174651156e7203a53f4c1a'

it makes the whole parent_id unusable

i had a quick look at the code, i think the easiest fix would be to add a _parent to the metadata class, and make a parent_id property to return _parent.id.
and then in unstructured/partition/common set _parent to topelement

for now i just swapped the has code on https://github.com/Unstructured-IO/unstructured/blob/main/unstructured/documents/elements.py#L755 to the uuid code of the next elif block, and ofcourse disabled the unique_element_ids=True (since that would regenerate the id)
being able to toggle this behaviour is a quick hack ofcourse

Closing, fixed months back.


Redis 'System.ExecutionEngineException' occurred in System.Private.CoreLib.ni.dll

Hi!
I'm trying using redis as a backplane but am receiving the following error.
An unhandled exception of type 'System.ExecutionEngineException' occurred in System.Private.CoreLib.ni.dll
No stacktrace other then the above.
Sometimes it works and sometimes it craches.
In my log, it always stops at the following line:
CacheManager.Redis.RedisConnectionManager:Debug: BeginConnect: xxxxx.redis.cache.windows.net:6380
CacheManager.Redis.RedisConnectionManager:Debug: 1 unique nodes specified
CacheManager.Redis.RedisConnectionManager:Debug: Requesting tie-break from xxxxx.redis.cache.windows.net:6380 > __Booksleeve_TieBreak...
CacheManager.Redis.RedisConnectionManager:Debug: Allowing endpoints 00:00:05 to respond...
CacheManager.Redis.RedisConnectionManager:Debug: EndConnect: xxxxx.redis.cache.windows.net:6380
CacheManager.Redis.RedisConnectionManager:Debug: Configuring SSL
and then debugging crashes with the exception above.
Any idea on how to debug this error ?
Regards
Per

After researching this a little bit I came across this issue in corefx and a workaround described here: https://github.com/dotnet/corefx/issues/13814.
Not sure if that helps at all though as I cannot reproduce your stuff without setting up a similar environment.
Anyways, if the above workaround doesn't help, could you post all information? like project.json, configuration, dotnet --version, environment (windows/linux version)? (don't post passwords or stuff like that though ;) )

@Eneuman So, I just gave it a try and did setup a test project against a MS Azure Redis instance.
I tested it with .NET full framework, .NET Core netcoreapp1.0 and netcoreapp1.1; with and without backplane.
Worked every time without any issues.
Can you at least show me how you configure the connection to the azure redis instance?
In general you just use the ssl port 6380 and set the password to one of your access keys, and that should be it.

Hi and thanks for your quick answer.
I have the following configuration:
      // Create cache configuration
      var cacheConfig = new CacheManager.Core.ConfigurationBuilder()
        .WithMicrosoftLogging(f =>
        {
          f.AddConsole(LogLevel.Information);
          f.AddDebug(LogLevel.Trace);
        })
        .WithJsonSerializer()
        .WithMicrosoftMemoryCacheHandle("inprocess")
        .WithExpiration(ExpirationMode.Absolute, TimeSpan.FromMinutes(10))
        .And
        .WithRedisConfiguration("redis.azure", "xxxx.redis.cache.windows.net:6380,password=xxxx,ssl=True,abortConnect=False")
        .WithRedisBackplane("redis.azure")
        .WithRedisCacheHandle("redis.azure", true)
        .Build();

      services.AddSingleton(cacheConfig);

      // Add the cache manager interface and impl type as open generics
      services.AddSingleton(typeof(ICacheManager<>), typeof(BaseCacheManager<>));

I have also created the following extension method:
 public static class CacheManagerExtensions
  {
    public static async Task<TCacheValue> GetOrAddAsync<TCacheValue>(this ICacheManager<TCacheValue> cacheManager, string key, string region, Func<string, string, Task<TCacheValue>> valueFactoryAsync)
    {
      var tries = 0;
      do
      {
        tries++;
        var item = cacheManager.GetCacheItem(key, region);
        if (item != null)
        {
          return item.Value;
        }

        var newValue = await valueFactoryAsync(key, region);

        // Throw explicit to me more consistent. Otherwise it would throw later eventually...
        if (newValue == null)
        {
          throw new InvalidOperationException("The value which should be added must not be null.");
        }

        item = string.IsNullOrWhiteSpace(region) ? new CacheItem<TCacheValue>(key, newValue) : new CacheItem<TCacheValue>(key, region, newValue);
        if (cacheManager.Add(item))
        {
          return newValue;
        }
      }
      while (tries <= cacheManager.Configuration.MaxRetries);

      // should usually never occur, but could if e.g. max retries is 1 and an item gets added between the get and add.
      // pretty unusual, so keep the max tries at least around 50
      throw new InvalidOperationException(string.Format("Could not get nor add the item {0} {1}", key, region));
    }
  }

That im using like this:
      var value = await _cacheManagerString.GetOrAddAsync("GetUserInfoAsync_" + uniktId, "Tenant" + tenantId, async (key, region) =>
      {
        return await _dbContext.Users.Where(ap => u.Id == id).Select(a => u.Name).FirstOrDefaultAsync();
      });

I'm gonna try the suggested fix for the corefx bug, I have a feeling that this whats happening to us aswell. The error is very similar and we are also using Certificates heavily. Thanks for the link!
I'll post my results as soon as possible.,

I found that commenting out the following rows makes the error go away.
        .And
        .WithRedisConfiguration("redis.azure", "xxx.redis.cache.windows.net:6380,password=xxxx,ssl=True,abortConnect=False")
        .WithRedisBackplane("redis.azure")
        .WithRedisCacheHandle("redis.azure", true)

Configuration looks fine, I used pretty much the same for testing in a console app and web.api connecting to my managed redis services on ...redis.cache.windows.net:6380. And it just works fine.
Yeah ofc it will work if you comment out the redis related stuff. Problem is clearly the SSL binding done by the StackExchange.Redis package (at least according to the log file you posted).
Can you check your dotnet --version? I have 1.0.0-preview2-1-003177 installed, which is v 1.1.0.
Also, make sure you are not mixing 1.0.0 with 1.1.0 versions of System.* packages and use the right Microsoft.NETCore.App version. Could eventually cause issues, too.
But to be totally honest, I have no idea why the SSL configuration for me just works fine and you get an exception...

I found the problem :)
It's already been logged in the coreclr repo under here
I'm gonna close this issue but thank you soo much for trying to debug this!

Nice!  Yeah it seems to link to another issue I found earlier... Happy testing ;)


Wooden fence gates are mixed up.

Description
Small wooden fence gate will make a tall wooden fence gate and vice versa
[Screenshots
https://medal.tv/tr/games/space-station-14/clips/22Efnh0ciJR4Gj/d1337Li7pCA1?invite=cr-MSx5RFcsMjAyMDUyNjA0LA
Additional context
I hate medal!!

Was fixed in PR https://github.com/space-wizards/space-station-14/pull/26409


Date/Time/Timestamp constructor internally uses current system timezone

...which mangles data while inserting to database and reading back.
Symptoms
Saving times to database, changing system time zone and reading data back produces different results from original input.
Background
Currently Requery converters use ZoneOffset.UTC which will always produce unwanted results while reading and writing in zone other than UTC.
Proposal, variant A:

Classes representing a single point in time (Offset-, ZonedDateTime, Instant) should be passed to Timestamp with a ZoneOffset.systemDefault(). That means converting everything to OffsetDateTime with said zone and then feeding it to Timestamp.
Classes representing local time (LocalTime, LocalDate, LocalDateTime) have to be converted to millis/nanos since Unix epoch, used directly with Date/Time/Timestamp constructor (millis) or (millis, nanos). Similarly on the way back. Read further.

Proposal, variant B:
Do everything in UTC. Date/Time/Timestamp has a constructor which takes only (millis) or (millis, nanos) and if only getTime() is called no time zone juggling is involved.
Converters between JSR-310 and Date:
https://github.com/consp1racy/android-commons/blob/6e8c4792905710f59b685b4c20d66f652509ec42/commons/src/main/java/net/xpece/android/time/DateTimeUtilsUTC.kt
(Good enough) Unit test:
https://github.com/consp1racy/android-commons/blob/6e8c4792905710f59b685b4c20d66f652509ec42/commons/src/test/java/net/xpece/android/time/DateTimeUtilsUTCTest.kt
I've tested these in a project and they work.
Cause
java.util.Date has two constructors of interest.
The good (no timezone conversions involved):
public Date(long date) {
    fastTime = date;
}

And the bad (calculate epoch millis based on current system time zone):
@Deprecated
public Date(int year, int month, int date, int hrs, int min, int sec) {
    int y = year + 1900;
    // month is 0-based. So we have to normalize month to support Long.MAX_VALUE.
    if (month >= 12) {
        y += month / 12;
        month %= 12;
    } else if (month < 0) {
        y += CalendarUtils.floorDivide(month, 12);
        month = CalendarUtils.mod(month, 12);
    }
    BaseCalendar cal = getCalendarSystem(y);
    cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.getDefaultRef());
    cdate.setNormalizedDate(y, month + 1, date).setTimeOfDay(hrs, min, sec, 0);
    getTimeImpl();
    cdate = null;
}

JSR-310 sadly relies on the second one.
What next

Databases supporting storing times with time zones cannot use Date, Time or Timestamp, they're unpredictable. Ideas welcome.
Report this to the ThreeTen repo?

Thanks for the detailed write up, yes this is definitely problematic. The Java 8 converters should be made more configurable they do assume all values are UTC in the current version.


Generalize script with a selection menu

We can do a selection menu. It should be lean in selection and have an efficient layout for mass deployment.
While we could have an optional configuration file, it is a bad practice for this project because information such as credentials and location data are more accessible (regardless of if the harm is statistically negligible). Even a partial configuration file consisting of only technical choices would be obsolete due to having more for all parties to manage. A configuration file would be desirable for tuning hefty amounts of technical choices. At that point, this project would become an interactive install guide, and that is not the goal. Thus, it's best to not have a configuration file for security, privacy, safety, and development. Instead, an interactive selection menu can be provided.

All entries except credentials are filled by default and can thereby only be changed. As a result, excluding credentials, we do not need to check if user-modifiable "variables" are being filled prior to install.
Consider implementing fuzzy search for a faster setup.
Disk
WARNING:
Back up data for all devices.
Ensure the disk name is correct.
The entire disk will be wiped.

default: guess with disk=$(lsblk -do NAME | tail -1) since USB connected devices could also be installed upon

Credentials
users

detection: at least one user exists
detection: all user credentials must have username and password
default: none
typing is required

root

default: waterfall from first user password in the list (must be the case during install time)
typing is optional

Package

default: prewritten list
typing is optional

Timezone

default: UTC

Keyboard

default: U.S. (or waterfall if possible)

Language

default: U.S. (or waterfall if possible)

Hostname

default: arch
typing is optional

Services
systemctl enable

default: provided for package list
typing is optional

systemctl start

default: provided for package list
typing is optional

Use -x for disk size to improve detection.
Only allow writing over hostname or determine if it exists to continue.

The main idea is that users should interact only when needed.
This is done for the disk, credentials, and timezone.
Prompting for packages and services in a friendly way is being decided upon.

After much deliberation, I have considered it best to leave what are presumed to be ideal defaults.


Fixed Github provider

If Opsweekly username is different than GitHub username the application can't retrieve the user activities in Github. To make it work I've created a new column "github_username" in "user_profile" table and updated the user profile page to handle this new field. The user must add his github username in order to get his github activities. I've fixed also the github url in config.php.example since it didn't work.

Nice!
Does it work if you just want to use your defaults? E.g. we use Github Enterprise so our names are a one to one match, and I don't want to break anyone else relying on that.
Thanks!

Now yes :-)

Blast.. merge issues.. can you rebase?

Sure, done!

Also, I've fixed the list of commits to the week chosen in Opsweekly

Many thanks!


Fix endian when serialize Roaring64NavigableMap

SUMMARY
Fix endian when serialize Roaring64NavigableMap.
In Cpp and Go versions, the little endian is used to serialize the keys of highToBitmap. However, in Java version, such keys are serialized using java's default big endian. To be compatible with other language versions, we should use little endian to serialize such keys.
Automated Checks

[x] I have run ./gradlew test and made sure that my PR does not break any unit test.
[x] I have run ./gradlew checkstyleMain or the equivalent and corrected the formatting warnings reported.

Do you have accompanying tests to show the interoperability that you desire?

Do you have accompanying tests to show the interoperability that you desire?

Suppose there is  a Roaring64NavigableMap which contains [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,<PHONE_NUMBER>L,<PHONE_NUMBER>L,<PHONE_NUMBER>L].
we can use following code to serialize  it to a base64 string:
    public void Roaring64NavigableMapToBase64() throws IOException {
        Roaring64NavigableMap map = newUnsignedHeap();
        map.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,<PHONE_NUMBER>L,<PHONE_NUMBER>L,<PHONE_NUMBER>L);

        int rbmPrefixBytes = 1 + 4; // 5 bytes: (boolean) signedLongs + (int) highToBitmapSize
        int serializedSizeInBytes = (int)map.serializedSizeInBytes();
        int rbTotalSize = serializedSizeInBytes - 5 + 8; // 8 bytes: (long) highToBitmapSize

        ByteBuffer bos =  ByteBuffer.allocate(rbTotalSize);
        bos = bos.order() == ByteOrder.LITTLE_ENDIAN ? bos : bos.slice().order(ByteOrder.LITTLE_ENDIAN);

        long highToBitmapSize = map.getHighToBitmap().size();
        bos.putLong(highToBitmapSize);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        map.serialize(new DataOutputStream(baos));
        bos.put(Arrays.copyOfRange(baos.toByteArray(), 5, serializedSizeInBytes));

        System.out.println(Base64.getEncoder().encodeToString(bos.array()));
    }

which results

AgAAAAAAAAAAAAAAOjAAAAEAAAAAAB8AEAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAAAAABOjAAAAEAAAAAAAIAEAAAAAAAAQACAA==

If we deserialize it in C++ using the following code:
#include <iostream>
#include "roaring/roaring64map.hh"
#include "base64.h"

int main() {
  std::string encoded = "AgAAAAAAAAAAAAAAOjAAAAEAAAAAAB8AEAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAAAAABOjAAAAEAAAAAAAIAEAAAAAAAAQACAA==";
  std::string decoded = base64_decode(encoded);

  Roaring64Map r1 = Roaring64Map::read(decoded.c_str());

  std::cout << r1.toString() << std::endl;
}

the result is

{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,72057594037927936,72057594037927937,72057594037927938}

You can see that numbers equal to or greater than 2^32 are incorrect. This is because that keys of highToBitmap (high 32 bits) are serialized with big endian in Java. However, the rest uses little endian. This makes the high 32 bits (00, 00, 00, 01) of<PHONE_NUMBER> get reversed to (01, 00, 00, 00) and<PHONE_NUMBER> become<PHONE_NUMBER>7927936.

To be sure understanding: with given endian change, the interaporability
with C++ and Go is OK ? (Or is this a first fix amongst more to need ?)
Le ven. 4 mars 2022 à 06:29, metahys @.***> a écrit :

Do you have accompanying tests to show the interoperability that you
desire?
Suppose there is a Roaring64NavigableMap which contains [1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
26, 27, 28, 29, 30, 31, 32,<PHONE_NUMBER>L,<PHONE_NUMBER>L,<PHONE_NUMBER>L].
we can use following code to serialize it to a base64 string:
public void Roaring64NavigableMapToBase64() throws IOException {
    Roaring64NavigableMap map = newUnsignedHeap();
    map.add(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
            21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,<PHONE_NUMBER>L,<PHONE_NUMBER>L,<PHONE_NUMBER>L);

    int rbmPrefixBytes = 1 + 4; // 5 bytes: (boolean) signedLongs + (int) highToBitmapSize
    int serializedSizeInBytes = (int)map.serializedSizeInBytes();
    int rbTotalSize = serializedSizeInBytes - 5 + 8; // 8 bytes: (long) highToBitmapSize

    ByteBuffer bos =  ByteBuffer.allocate(rbTotalSize);
    bos = bos.order() == ByteOrder.LITTLE_ENDIAN ? bos : bos.slice().order(ByteOrder.LITTLE_ENDIAN);

    long highToBitmapSize = map.getHighToBitmap().size();
    bos.putLong(highToBitmapSize);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    map.serialize(new DataOutputStream(baos));
    bos.put(Arrays.copyOfRange(baos.toByteArray(), 5, serializedSizeInBytes));

    System.out.println(Base64.getEncoder().encodeToString(bos.array()));
}

which results
AgAAAAAAAAAAAAAAOjAAAAEAAAAAAB8AEAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAAAAABOjAAAAEAAAAAAAIAEAAAAAAAAQACAA==
If we deserialize it in C++ using the following code:
#include
#include "roaring/roaring64map.hh"
#include "base64.h"
int main() {
std::string encoded = "AgAAAAAAAAAAAAAAOjAAAAEAAAAAAB8AEAAAAAEAAgADAAQABQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAAAAABOjAAAAEAAAAAAAIAEAAAAAAAAQACAA==";
std::string decoded = base64_decode(encoded);
Roaring64Map r1 = Roaring64Map::read(decoded.c_str());
std::cout << r1.toString() << std::endl;
}
the result is
{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,72057594037927936,72057594037927937,72057594037927938}
You can see that numbers equal to or greater than 2^32 are incorrect. This
is because that keys of highToBitmap (high 32 bits) are serialized with big
endian in Java. However, the rest uses little endian. This makes the high
32 bits (00, 00, 00, 01) of<PHONE_NUMBER> get reversed to (01, 00, 00, 00) and
4294967296 become<PHONE_NUMBER>7927936.
—
Reply to this email directly, view it on GitHub
https://github.com/RoaringBitmap/RoaringBitmap/pull/551#issuecomment-1058842025,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAQFCF3NBY6NKKBNJLIOZGDU6GNSLANCNFSM5P4NAZFA
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Currently, we only promise interoperability with other programming languages when using 32-bit bitmaps. It seems worthwhile to extend this promise.
I have two concerns.

I think @richardstartin is correct that changing the serialization format after the code has been deployed is problematic since it may well break existing systems. We cannot do this. However, we can add new functions (e.g., seriallizePortable or something).
If the change guarantees interoperability, then this needs to be demonstrated clearly.
2.A We need to format specification, so please consider contributing one at https://github.com/RoaringBitmap/RoaringFormatSpec
2.B We need reasonable tests to demonstrate interoperability. This can be done by adding binary dumps created from other programming languages and making sure we can parse them.

When in doubt, I prefer not to promise anything. If we do, then we need to be serious about it. Promising interoperability without documentation or testing is worse than promising nothing because people might deploy it in production expecting interoperability only to have their whole system become corrupted.
So I am not, at all, shutting down your idea... I am just saying that the bar is higher.

My main concern is that Pinot uses this format (I would have recommended against it since no commitment was made to support the format) for id sets in some distributed queries. Changing the serialisation would break this, but adding a portable and (hopefully more efficient) format would alleviate this concern and allow us to migrate away from the current format.

Thanks for all the comments.
The intention of this PR is to make the endian used for serialization in the Java version compatible with other languages. However, it is clear that just changing the endian is not enough to ensure interoperability if we don't have a format specification. And changing the serialize method may cause existing systems to be broken. There is still some work to be done. I will try to work on that.

I would have recommended against it since no commitment was made to support the format

Which kind of commitment are you looking for?

Which kind of commitment are you looking for?

It is currently undocumented, for one thing. It would be really nice if folks took it to document these formats.


Automatic max stats

Hi again!
There's an issue here but Idk why when I start a new account, my character seems to have all of it's skills maxed out and HP 10
My friend seems to have everything fine while starting at low level and 0 skills
How can fix it

Also apparently my friend doesn't have premium so he can't upgrade to past 3

You have to update your server to the latest version. Or join your friend in theirs.

yah me too

also how do you join or make your friend join your server? do you just paste your IP from the API file to them and have them paste that in their file and connect?

also how do you join or make your friend join your server? do you just paste your IP from the API file to them and have them paste that in their file and connect?

The server host has to:

Open TCP ports 5001, 5002 and 5003. (portforwarding, you're on your own there)
Set the value of game_server_ip in api.json to the host's public IP address.

People who want to connect have to:

Use a modified host.reg (found in the Windows patching kit) where all instances of <IP_ADDRESS> are replaced with the host's public IP address.

You can use a simple text editor to modify the host.reg file.
For example:
For the server host, if your public IP is <IP_ADDRESS>, then your api.json should look something like this:
{
  "game_server_ip": "<IP_ADDRESS>",
  "game_server_port": 5002,
  "gateway_port": 5001,
  "portal_port": 5003,
  "news": [
    {
      "title": "Default News",
      "content": "This news entry was automatically generated.\nEdit 'api.json' to make your own!",
      "published_at": "A long time ago..."
    }
  ]
}

Then, you can edit host.reg to look like this:
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Bytebin LLC\Deepworld]
"gateway"="<IP_ADDRESS>:5001"
"api"="<IP_ADDRESS>:5003"

Make sure that you are using your public IP and not your machine's private IP.
Also do not to remove the port suffixes. (:5001 and :5003)
You can then send your modified host.reg file to your friends who want to join your server.
All they will have to do to join is run that file. They do not need to run a server themselves in order to play on another's.
Good luck and I hope this helps!

Well, we both managed to get everything done, I edited my API file with my public IP but I can't edit host.reg. how can I edit a reg file?
And then when I edit host.reg, do I just drop the file on discord have them download it and run host and open deepworld while my brainwine is running?

Well, we both managed to get everything done, I edited my API file with my public IP but I can't edit host.reg. how can I edit a reg file? And then when I edit host.reg, do I just drop the file on discord have them download it and run host and open deepworld while my brainwine is running?
Also: do we have to keep remaking characters from scratch each time we update/play singleplayer? Like if my friend connects to my server via host.reg, he can't play on his own anymore?

You can edit .reg files by right clicking and then selecting Edit. For some reason it will treat it as if you're running it, so just click Run if you are prompted to.
Yes, all they will have to do is run the file and open the game.
You do not have to make new characters each time you update. Just make sure not to delete your brainwine folder, as that is where all player and world data is stored. Dragging & dropping the updated version to the same location and then replacing all files when prompted is the preferable way to update.
People can switch back to their own local server any time by simply running the unedited host.reg file included in the Windows patching kit. Naturally, they won't be able to play on their own server with an account made on another server (and vice versa) so make sure to register your accounts so you don't lose them!

Ok so everything worked! However
I edited my host.reg file and ran my server eith brainwine and sent that host.reg to my friend who ran the file but still couldn't connect

Ok so everything worked! However I edited my host.reg file and ran my server eith brainwine and sent that host.reg to my friend who ran the file but still couldn't connect

You might have to portforward, then.

I could connect, but they couldn't

I could connect, but they couldn't

That's interesting.. Where'd you get your public IP from?

I tried to use the IP found by googling my IP, of course that didn't work so instead I ran ipconfig and grabbed my ipv4 address and tried that. Worked well for me, not him.

I tried to use the IP found by googling my IP, of course that didn't work so instead I ran ipconfig and grabbed my ipv4 address and tried that. Worked well for me, not him.

ipconfig shows your machine’s private IP, not your public IP. If your public IP didn’t work, double check your api.json and host.reg and if everything checks out then you probably haven’t portforwarded, so look into that.

So what's the server configuration update?
Can It let you host a server or something much easier? Because port forwarding isn't exactly something I can do

So what's the server configuration update?
Can It let you host a server or something much easier? Because port forwarding isn't exactly something I can do

I unfortunately cannot make it easier for you, as port forwarding is a requirement for hosting pretty much any public game server. Alternatives could be hiring dedicated server hardware, or asking a friend who is able to port forward to host it for you. You can also use software like Hamachi, which would allow your friends to join you through your private IP and without needing to port forward.

hamachi works

Glad to hear it, I'll close this issue then.


Revel 1.0.0 Upgrade Guide and Guidance for Existing apps

Hi Revel Team,
My team has used revel for the past 2 years and been very happy with the framework.
We have a website built on revel that attracts more than 20k users per month, and we're very pleased with performance, maintainability, ease of development, etc.
Last year we adjusted our app to use dep for dependency management, per the recommendations in the following two revel discussions:
https://github.com/revel/cmd/issues/177
https://github.com/revel/revel/issues/1326
We were happily chugging along with development until this past weekend when Revel v1.0.0 was released. Our dep build process is no longer compatible with the latest version of revel, we need to adjust our builds to work again. We're seeking guidance in how to proceed (Either to upgrade our build process to use go mods and latest revel version, or how to use legacy revel cmd and framework to maintain existing functionality)
It seems there were some major changes in the 1.0.0 release that fundamentally changed the way that Revel can be included as a dependency, and how the revel cmd is used to start apps.
i.e. the revel run command now requires a -a flag for application path, and a -m flag for run mode.
In the past, we just ran our app by invoking revel run <appname> prod.
We're really excited about the update, and we're glad that Revel officially supports go modules now.
However, for teams with existing prod applications, do you have an official upgrade guide for the new revel version? i.e. a doc with general upgrade steps and common issues? We would love to get our application builds fixed so that we can continue development.
Also, is it possible for teams to use the legacy version of revel and revel cmd in the interim? If so, can you please share steps to do that?
Thanks very much.

Right now I'm creating a sample application to familiarize myself with the updated revel version, but running into some issues..
An example issue:
I'm on a machine with go v 1.14
After creating a sample app  with the command revel new -a revel-test-app
When I run revel run -a revel-test-app -m dev the server boots fine.
But when I go to the test runner page, I'm unable to run the sample test suite (See screenshot)

Why do the tests not run out of the box? Am I doing something wrong with the skeleton project? My team has ~70 revel integration tests that we want to keep and port to the new version.
Thanks

this is a critical issue for our team and users.  any other revel users experiencing this problem after the update?

Hi guys,
Sorry you are seeing these issues, it was a complicated process to change to use the new dependency model with Go and some things may have been overlooked. To use an older version of revel with go.mod tools it is pretty easy.
in an empty folder
$ mkdir gopath && export GOPATH=$PWD/gopath && go mod init test.com
$ go get -v<EMAIL_ADDRESS>$ gopath/bin/revel version
Revel executing: displays the Revel Framework and Go version
WARN  22:01:33 version.go:71: Unable to extract version information from Revel error,err=nil LOG15_ERROR="Normalized odd number of arguments by adding nil"
WARN  22:01:34 version.go:71: Unable to extract version information from Revel Modules error="open /home/notzippy/Downloads/temp/test/test3/gopath/pkg/mod/github.github.com/revel/modules/version.go: no such file or directory"
Revel Framework :       Unknown (1.0.0 remote master branch)
Revel Cmd       :       0.21.1  (1.0.0 remote master branch)
Revel Modules   :       Unknown (1.0.0 remote master branch)

There appears to be a bug with the mode flag, I'm working on a unit test to check it and verify the fix as we speak. The command line syntax accepts both flagged and non flagged data, but there are assumptions made on order, so it is recommended you use flagged parameters.
ill be on https://gitter.im/revel/community to support you as much as I can over the next few days, there are others there who can be of help too.

Mode flag issue https://github.com/revel/cmd/issues/189

Unit test issue https://github.com/revel/modules/issues/104

Unit test issue moved to https://github.com/revel/cmd/issues/191

@eparziale new revel/cmd v1.0.1 has been merged and tagged which should fix the issues with not finding tests and the revel run command. Let us know if you have identified further issues.

@notzippy Thanks for fixing the test flag!
We were able to adjust our code to build using all of the latest Revel Gear.
Here were the keys:

Make sure we uninstalled previous version of Go (1.12 ) entirely from our our machines
clean Install latest go version (1.14)  on machines
Follow the guide here to migrate from dep to go modules https://blog.callr.tech/migrating-from-dep-to-go-1.11-modules/ (Pretty straightforward)
Increment all revel dependency versions in go.mod to latest version
cd into our project folder and run go get github.com/revel/cmd/revel
run revel build -a /go/src/[proj folder]
cd to project dir and run -> go build ./... (Note revel build needs to run before this in order to build routes.go file)
cd out of project dir (now I'm in /go/src). run -> revel run [project] [env]

All set!
One extra helpful note:
If you depend on private repos, need to run  go env -w GOPRIVATE=github.com/[repo]

@notzippy  One issue we observed:
When we run revel test [project] dev, that command can be run from any directory and it will dynamically find the project.  i.e. I dont need to pass -a flag with absolute path.
However, revel run  dev will only work if we are in parent dir of [proj]. i.e. if I have dir structure /go/src/[proj], I can run revel run [proj] dev when I am in /go/src dir.
However, if I am in another dir I need to run revel run -a /abs/path/to/[proj] dev in order to properly find the app.
See screenshot:

Can you please make this behavior consistent between the test and the run commands?
Thanks,

@eparziale that is great news, I'm sorry about the dependency manager switch, but there was a high demand for being able to use Revel outside of the GOPATH and supporting multiple dependency managers got very complicated so we had to make a choice.
Another helpful idea is that revel supports multiple --gomod-flags from the command line, you can use that to modify your go.mod file dynamically to point to a specific path where files are checked out, these flags are run before the application is built (in the folder where the go.mod exists). See https://golang.org/cmd/go/#hdr-Module_maintenance  (this is what I do on travis builds https://github.com/revel/cmd/blob/master/.travis.yml).
revel new     --gomod-flags "edit -replace=github.com/revel/revel=github.com/revel/revel@$REVEL_BRANCH" -a my/testapp2

Tracking your new issue here: https://github.com/revel/cmd/issues/193 , I know the code behaves a bit different if the path is an absolute path VS a relative path, perhaps that can be eliminated now.

No problem about the dependency manager switch. Go Mods is the official golang dependency manager,  and we're happy to be on the latest and greatest.
Thanks for the info about --gomod-flags and for raising the new cmd issue.
E

I'm getting
$ revel run -a FOO
...
CRIT  15:40:42  revel  revel.go:292: Failed to import FOO with error:   error="package FOO is not in GOROOT (/usr/lib/go-1.14/src/FOO)"

Sure. Why would it be in GOROOT? I created a new project using revel new reveltest and that runs just fine using revel run -a reveltest. Didn't spot differences in go.mod

Also remove vendor directory left by dep.

Hi @notzippy Congrats on the release of revel 1.1.0!
At this point, my development team has been using the revel framework for 4+ years on a website that serves 45k unique users per month. We have been very pleased with the framework.
Unfortunately, with the release of revel 1.1.0, all of our Continuous integration and deploy processes have broken.
This is because our app still targets revel 1.1.0 in go.mod and go.sum, but
go get github.com/revel/cmd/revel

now downloads revel cmd v1.1.0 instead of cmd v1.0.3
(https://github.com/revel/cmd/tags)
We currently run golang 1.14 on our servers. We are happy to upgrade to revel 1.1.0 and golang 1.17 in the coming weeks, but until we make those changes, it would be great if we can still build and deploy using revel 1.0.
For us, and other folks in our position, is there a way to maintain backwards compatibility with our previously working build steps (Copy/pasting from earlier comment)

Everything from the above works to set revel version to 1.0.0, except for
 go get github.com/revel/cmd/revel

Is there a way for us to still download revel cmd version 1.0.3 while staying on go 1.14?
Thanks!
Eric

For reference, the error we get when trying to run a revel 1.0.0 app with revel cmd 1.1.0 is
Revel executing: run all tests from the command-line
Parsing packages, (may require download if not cached)... Completed
panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
main.testApp(0xc00019c000, 0x0, 0x0)
	/home/circleci/go/pkg/mod/github.com/revel/cmd@v1.1.0/revel/test.go:115 +0x176e
main.main()
	/home/circleci/go/pkg/mod/github.com/revel/cmd@v1.1.0/revel/revel.go:112 +0x212

Exited with code exit status 2

We're working to resolve this now.

A v1.1.2 hotfix release for revel/cmd has been pushed.
Thanks for your patience.

Thanks so much for the quick fix!
We confirmed our CI process is working again. Really appreciate the help.

We really appreciate your feedback and encouragement :)

Btw, in case it might help drive adoption/use of revel - our website is https://driverbase.com
If you potentially want to link to it from revel landing page - you could use it as a reference of the framework in action.
We could also add a "Powered by Revel" tag to our website to link back to the framework.
Happy to discuss, or chat about it.
https://driverbase.com/company/contact-us/
Thanks!


Latest release breaks semver

Version 0.5.3 upgraded cpal to 0.6.  This breaks semver since the cpal EndpointsIterator structure is exposed in the rodio API.

Relevant line in our broken build: https://ci.appveyor.com/project/amethyst/amethyst/build/1.0.1535/job/o2l58flb23w5krgo#L511

@tomaka Amethyst considers this a high priority, if this and winit 0.10.1 aren't yanked we'll need to release an emergency patch to get our crates building again.

Our latest version on crates wasn't using winit 0.10 fortunately so we only needed to lock down our rodio version to fix it.  We've released amethyst_audio 0.1.1 to get things building again.

Err... Yanked and re-released. Sorry for the trouble.


add time since record start marker to the output

Hi! This adds [HH:ss] marker right before the user name in the output. Looks useful in general if you want to build navigation over video etc.

@romantolkachyov could you explain in more detail on why you would prefer relative timestamp (time elapsed since start of meeting) over absolute timestamp?

@vivek-nexus sorry for the long reply. I used relative timestamp because that's my target format. But you're right, it would probably be much better to store absolute timestamps in general and calculate relative timestamp if needed on complete transcription.
On the other hand, video subtitles use relative format too.

@romantolkachyov understood the use case you are looking at. Video subtitle files have a very specific and singular purpose, which justifies the use of relative timestamp. I will stick to absolute timestamps, to prevent loss of information at source.
For your use case, may be you could write a local script to convert absolute timestamps to relative ones, along with file format conversion from txt to srt, if needed?

Sure, it works


Document workaround for Insert into local-table, select from distributed table.

insert into foo(colA, colB) select A,B from bar where bar is distributed and foo is not,

And the reverse direction is #80


software volume control

Before opening the issue, have you...?

[X] Searched for existing issues

Is your feature request related to a problem? Please describe
I have connected two DELL S2721QS to my mac mini M1. Only one screen can be controlled by DDC with the M1. The feature enable software dimming if required is available for this, but only for brightness and not for volume.
Describe the solution you'd like
If an external display can´t be controlled, software volume control will be used instead.
Describe alternatives you've considered

Anything else?
No response

I think the idea is solid but I am afraid implementing software volume control for digital outputs is out of scope for MonitorControl. This would require a virtual audio output device as a filter (which stands between the original output and the system output) that is able to adjust the level of the audio stream with volume control option exposed to the OS. Windows has this capability built-in to its default digital audio drivers but macOS lacks this - there are third party tools (like https://rogueamoeba.com/soundsource/ ) that can fix this but these are quite pricey (formerly you could use SoundFlower for this as a free option but it does not work anymore with recent macOS versions and M1).
I'll close this issue now but if you have a better approach solving this problem, please let us know!
Thank you!
(@JoniVR please let me know if you feel differently about this request!)


Is it possible to declare poincut variables?

For example, look into call logger implementation. We need to have a call stack available from pointcuts.

You can use joinPoint implicit variable inside /configuration/aspects/process/expression
For example :
log.put("level", joinPoint.getSignature().getName());
log.put("srcf", joinPoint.getSourceLocation().getFileName());
log.put("srcl", joinPoint.getSourceLocation().getLine());

Looks like you didn't get the point. I've not asked about pointcut info. I just need [global] variables to pass information between pointcuts. Its not obvious how to declare such (if possible).

/globalContext/init/expression/
globalThreadLocalVariable=new  ThreadLocal();
globalCounter = new AtomicInteger();
globalList = new CopyOnWriteArrayList();


[Event Hubs] EventHubConsumer occasionally fails to consume all messages

When running a perf tests which attempts to consume 1M messages (spread across 32 partitions), the perf test occasionally gets stuck at less than 1M messages.  I don't have more information at  this time.  The perf test will need to be updated with more logging to understand what's getting stuck.
https://github.com/mikeharder/EventHubsPerf/blob/master/java/eventhubsconsumeperf/src/main/java/com/microsoft/eventhubsconsumeperf/App.java

Setting AZURE_LOG_LEVEL = 3 will also show warnings and AZURE_LOG_LEVEL = 4 will show errors.


Update multi-factor-authentication-enforcement.md

@dcurwin
Can you review the proposed changes?
Important: When the changes are ready for publication, adding a #sign-off comment is the best way to signal that the PR is ready for the review team to merge.
#label:"aq-pr-triaged"
@MicrosoftDocs/public-repo-pr-review-team

#sign-off

#sign-off


Firewx update

The algorithm changed for Hourly Wildfire Potential.  I used Eric's email to adjust the code for the calculation.
Since this involves a change in units and plot range, there are some small changes to the default specs for the color bar.
Passed pylint, will use the GitHub pytest, since I think mine is still broken.
Examples (before and after after):

Eric already approved the changes in our email thread, but I'll ask him to do so here before implementing it.

@cshartsough it looks good to me!  Thank you for making the changes, and for the example plot!


Is it possible to add support for *nix agents ?

Hi @junalmeida,
The task is internally using a library from Microsoft written in .net to do the transformation and it is not a .net core library compatible with *nix agents.
Except from rewriting the library using .net core or in typescript it won't run on *nix agent and I don't have the time to do so.


If socket server dies unexpectedly, try and revive it

Currently it stays dead with little user feedback. This seems to happen if it's left alone for a while, or if computer goes to sleep, whatever

I haven't been able to repro this in a while. Could have just been a fluke


Provide Examples

Provide examples in an Examples/ directory. That show how to use this lib.

Yes, that is planned, though I haven't had much time due to school and whatnot. I should write a roadmap for planned features. I want to provide more, better examples and automatic testing.


Use set instead of shebang in install_linux.sh

curl install_linux.sh | bash does not respect the shebang
see also https://github.com/terraform-linters/tflint/pull/1870

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

cc @simar7

ping @simar7

ping

ping @simar7

ping

@simar7

ping

ping

@ddelange tfsec is dead. See https://github.com/aquasecurity/tfsec/discussions/1994.

thanks for the ping. maybe archive this repo then?


Rustify recent changes according to @plietar

Somewhat uniform coding style might help myself to better understand Rust :-)

There's no reason to catch ports under 1024 at this point in time.

librespot maybe running as root. This is not unreasonable on embedded devices or in Docker containers
In some circumstances it is possible to bind a low port even without being root (process has CAP_NET_BIND_SERVICE for example, bind(2) is being trapped using ptrace and the port number replaced (this is crazy but technically possible), ...)
Binding may fail even with a high numbered port (port already taken) and you can't predict that, so you have to be ready to deal with errors at that point.

All valid reasons for not defaulting to anything if one tries to set a port under 1024, but surely we should at least panic so that it doesn't just look like a bug? I note that it crashes here: https://github.com/librespot-org/librespot/blob/master/src/discovery.rs#L218, shouldn't we have a handler for the error that just panics with 'Unable to bind port' or similar? Currently there is nothing when it errors to point the user to their use of --zeroconf-port being the issue...

I see no reason that it shouldn't panic and give an informative error at least then said user will hopefully not  create an issue.

Given that we're going for the panic on bad initial-volume and when ports are already taken/unusable, please add an error handler to https://github.com/librespot-org/librespot/blob/53fab4dc8637b94692a683accbc420483d67db3b/src/discovery.rs#L218 with a generic message like "Unable to bind to port" for when it panics, as the standard rust panic is not informative. cc @michaelherger

Haha... if only I knew how to do this. I guess that'll be the next Rust lesson for me.

Would this just be a case of replacing unwrap() with expect("some informative error message")?

Hmm... I applied @kingosticks' suggestion, pushed to my repository. But the change wouldn't show up here?

I think I had the same issue and put it down to changing my origin to the new one. I think github gets confused.

If it's easier, you could open a new PR

Maybe the reason is that librespot-org was "unforked" from the plietar repo to enable searching.

I'm closing this PR, as I had to fix my repository setup due to the "unforking".


Somalia improvements

Adds additional prefixes for Somalian mobile numbers

Coverage increased (+0.001%) to 99.18% when pulling 83b6e3d294c6e796c176312b0a5d7c69cad9831b on dwilkie:somalia_improvements into d81ca8845ab47a148a9ce5972c9d613b95e26614 on floere:master.

Thanks so much, @dwilkie! Nicely documented, with ample tests, as usual 😊 Released in 2.15.47 🚀


[BUG] ESP lighting example build failed

Reproduction steps
I used: IDF 5.0.1, MacOS, chip M1

Run the command

idf.py build

Got the error

[1/1] cd /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/bu...nectedhomeip/examples/lighting-app/esp32/build/bootloader/bootloader.binBootloader binary size 0x6740 bytes. 0x8c0 bytes (8%) free.
[257/344] Performing build step for 'chip_gn'FAILED: esp-idf/chip/chip_gn-prefix/src/chip_gn-stamp/chip_gn-build esp-idf/chip/lib/libCHIP.a /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/esp-idf/chip/chip_gn-prefix/src/chip_gn-stamp/chip_gn-build /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/esp-idf/chip/lib/libCHIP.a
cd /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/esp-idf/chip && ninja esp32
[566/690] c++ obj/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/libnlfaultinjection.nlfaultinjection.cpp.oFAILED: obj/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/libnlfaultinjection.nlfaultinjection.cpp.o
/Users/df/.espressif/tools/xtensa-esp32-elf/esp-12.2.0_20230208/xtensa-esp32-elf/bin/xtensa-esp32-elf-g++ -MMD -MF obj/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/libnlfaultinjection.nlfaultinjection.cpp.o.d -Og -g2 -fno-common -ffunction-sections -fdata-sections -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -Wall -Werror -Wstack-usage=8192 -Wextra -Wshadow -Wunreachable-code -Wvla -Wformat -Wformat-nonliteral -Wformat-security -Wno-deprecated-declarations -Wno-missing-field-initializers -Wno-unknown-warning-option -Wno-unused-parameter -Wno-cast-function-type -Wno-psabi -Wno-maybe-uninitialized -fdiagnostics-color -fno-strict-aliasing -std=gnu++14 -fno-rtti -Wnon-virtual-dtor -DESP_PLATFORM -DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -D_GNU_SOURCE -D_POSIX_READER_WRITER_LOCKS -I/Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/config -isystem/Users/df/matter/esp-idf/components/freertos/include/freertos -isystem/Users/df/matter/esp-idf/components/freertos/FreeRTOS-Kernel/include/freertos -isystem/Users/df/matter/esp-idf/components/newlib/platform_include -isystem/Users/df/matter/esp-idf/components/freertos/FreeRTOS-Kernel/include -isystem/Users/df/matter/esp-idf/components/freertos/FreeRTOS-Kernel/portable/xtensa/include -isystem/Users/df/matter/esp-idf/components/freertos/esp_additions/include/freertos -isystem/Users/df/matter/esp-idf/components/freertos/esp_additions/include -isystem/Users/df/matter/esp-idf/components/esp_hw_support/include -isystem/Users/df/matter/esp-idf/components/esp_hw_support/include/soc -isystem/Users/df/matter/esp-idf/components/esp_hw_support/include/soc/esp32 -isystem/Users/df/matter/esp-idf/components/esp_hw_support/port/esp32/. -isystem/Users/df/matter/esp-idf/components/esp_hw_support/port/esp32/private_include -isystem/Users/df/matter/esp-idf/components/heap/include -isystem/Users/df/matter/esp-idf/components/log/include -isystem/Users/df/matter/esp-idf/components/soc/include -isystem/Users/df/matter/esp-idf/components/soc/esp32 -isystem/Users/df/matter/esp-idf/components/soc/esp32/include -isystem/Users/df/matter/esp-idf/components/hal/esp32/include -isystem/Users/df/matter/esp-idf/components/hal/include -isystem/Users/df/matter/esp-idf/components/hal/platform_port/include -isystem/Users/df/matter/esp-idf/components/esp_rom/include -isystem/Users/df/matter/esp-idf/components/esp_rom/include/esp32 -isystem/Users/df/matter/esp-idf/components/esp_rom/esp32 -isystem/Users/df/matter/esp-idf/components/esp_common/include -isystem/Users/df/matter/esp-idf/components/esp_system/include -isystem/Users/df/matter/esp-idf/components/esp_system/port/soc -isystem/Users/df/matter/esp-idf/components/esp_system/port/include/private -isystem/Users/df/matter/esp-idf/components/xtensa/include -isystem/Users/df/matter/esp-idf/components/xtensa/esp32/include -isystem/Users/df/matter/esp-idf/components/lwip/include -isystem/Users/df/matter/esp-idf/components/lwip/include/apps -isystem/Users/df/matter/esp-idf/components/lwip/include/apps/sntp -isystem/Users/df/matter/esp-idf/components/lwip/lwip/src/include -isystem/Users/df/matter/esp-idf/components/lwip/port/include -isystem/Users/df/matter/esp-idf/components/lwip/port/freertos/include -isystem/Users/df/matter/esp-idf/components/lwip/port/esp32xx/include -isystem/Users/df/matter/esp-idf/components/lwip/port/esp32xx/include/arch -isystem/Users/df/matter/esp-idf/components/bt/include/esp32/include -isystem/Users/df/matter/esp-idf/components/bt/common/osi/include -isystem/Users/df/matter/esp-idf/components/bt/common/api/include/api -isystem/Users/df/matter/esp-idf/components/bt/common/btc/profile/esp/blufi/include -isystem/Users/df/matter/esp-idf/components/bt/common/btc/profile/esp/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ans/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/bas/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/dis/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gap/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/gatt/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ias/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/ipss/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/lls/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/services/tps/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/util/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/store/ram/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/host/store/config/include -isystem/Users/df/matter/esp-idf/components/bt/porting/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/porting/nimble/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/port/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/transport/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/porting/npl/freertos/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/nimble/nimble/include -isystem/Users/df/matter/esp-idf/components/bt/host/nimble/esp-hci/include -isystem/Users/df/matter/esp-idf/components/esp_timer/include -isystem/Users/df/matter/esp-idf/components/esp_wifi/include -isystem/Users/df/matter/esp-idf/components/esp_event/include -isystem/Users/df/matter/esp-idf/components/esp_phy/include -isystem/Users/df/matter/esp-idf/components/esp_phy/esp32/include -isystem/Users/df/matter/esp-idf/components/esp_netif/include -isystem/Users/df/matter/esp-idf/components/mbedtls/port/include -isystem/Users/df/matter/esp-idf/components/mbedtls/mbedtls/include -isystem/Users/df/matter/esp-idf/components/mbedtls/mbedtls/library -isystem/Users/df/matter/esp-idf/components/mbedtls/esp_crt_bundle/include -isystem/Users/df/matter/esp-idf/components/fatfs/diskio -isystem/Users/df/matter/esp-idf/components/fatfs/vfs -isystem/Users/df/matter/esp-idf/components/fatfs/src -isystem/Users/df/matter/esp-idf/components/wear_levelling/include -isystem/Users/df/matter/esp-idf/components/esp_partition/include -isystem/Users/df/matter/esp-idf/components/sdmmc/include -isystem/Users/df/matter/esp-idf/components/driver/include -isystem/Users/df/matter/esp-idf/components/driver/deprecated -isystem/Users/df/matter/esp-idf/components/driver/dac/include -isystem/Users/df/matter/esp-idf/components/driver/gpio/include -isystem/Users/df/matter/esp-idf/components/driver/gptimer/include -isystem/Users/df/matter/esp-idf/components/driver/i2c/include -isystem/Users/df/matter/esp-idf/components/driver/i2s/include -isystem/Users/df/matter/esp-idf/components/driver/ledc/include -isystem/Users/df/matter/esp-idf/components/driver/mcpwm/include -isystem/Users/df/matter/esp-idf/components/driver/pcnt/include -isystem/Users/df/matter/esp-idf/components/driver/rmt/include -isystem/Users/df/matter/esp-idf/components/driver/sdio_slave/include -isystem/Users/df/matter/esp-idf/components/driver/sdmmc/include -isystem/Users/df/matter/esp-idf/components/driver/sigma_delta/include -isystem/Users/df/matter/esp-idf/components/driver/spi/include -isystem/Users/df/matter/esp-idf/components/driver/temperature_sensor/include -isystem/Users/df/matter/esp-idf/components/driver/touch_sensor/include -isystem/Users/df/matter/esp-idf/components/driver/twai/include -isystem/Users/df/matter/esp-idf/components/driver/uart/include -isystem/Users/df/matter/esp-idf/components/driver/usb_serial_jtag/include -isystem/Users/df/matter/esp-idf/components/driver/touch_sensor/esp32/include -isystem/Users/df/matter/esp-idf/components/esp_pm/include -isystem/Users/df/matter/esp-idf/components/esp_ringbuf/include -isystem/Users/df/matter/esp-idf/components/app_update/include -isystem/Users/df/matter/esp-idf/components/bootloader_support/include -isystem/Users/df/matter/esp-idf/components/bootloader_support/bootloader_flash/include -isystem/Users/df/matter/esp-idf/components/esp_app_format/include -isystem/Users/df/matter/esp-idf/components/console -isystem/Users/df/matter/esp-idf/components/vfs/include -isystem/Users/df/matter/esp-idf/components/nvs_flash/include -isystem/Users/df/matter/esp-idf/components/spi_flash/include -I/Users/df/matter/connectedhomeip/examples/lighting-app/esp32/managed_components/espressif__mdns/include -mlongcalls -Wno-frame-address -fdiagnostics-color=always -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=unused-but-set-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-enum-conversion -gdwarf-4 -ggdb -Og -fmacro-prefix-map=/Users/df/matter/connectedhomeip/examples/lighting-app/esp32=. -fmacro-prefix-map=/Users/df/matter/esp-idf=/IDF -fstrict-volatile-bitfields -fno-jump-tables -fno-tree-switch-conversion -DconfigENABLE_FREERTOS_DEBUG_OCDAWARE=1 -Wno-format-nonliteral -Wno-format-security -Wno-error=maybe-uninitialized -Wno-error=uninitialized -std=gnu++20 -fno-exceptions -fno-rtti -std=gnu++17 -Os -DCHIP_HAVE_CONFIG_H -I/Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/config  -I../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlfaultinjection/repo/include -I../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlassert/repo/include -c ../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/nlfaultinjection.cpp -o obj/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/libnlfaultinjection.nlfaultinjection.cpp.o
In function 'void nl::FaultInjection::Die()',
    inlined from 'bool nl::FaultInjection::Manager::CheckFault(nl::FaultInjection::Identifier, bool)' at ../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/nlfaultinjection.cpp:453:16,
    inlined from 'bool nl::FaultInjection::Manager::CheckFault(nl::FaultInjection::Identifier, bool)' at ../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/nlfaultinjection.cpp:409:6:
../../../../../../config/esp32/third_party/connectedhomeip/third_party/nlfaultinjection/repo/src/nlfaultinjection.cpp:885:31: error: array subscript 0 is outside array bounds of 'volatile long int [0]' [-Werror=array-bounds]
  885 |         *((volatile long *)1) = 0;
      |         ~~~~~~~~~~~~~~~~~~~~~~^~~
At global scope:
cc1plus: note: unrecognized command-line option '-Wno-unknown-warning-option' may have been intended to silence earlier diagnostics
cc1plus: all warnings being treated as errors
[575/690] c++ obj/third_party/connectedhomeip/src/transport/tests/libTransportLayerTests.TestSessionManager.cpp.oninja: build stopped: subcommand failed.
ninja: build stopped: subcommand failed.
ninja failed with exit code 1, output of the command is in the /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/log/idf_py_stderr_output_35392 and /Users/df/matter/connectedhomeip/examples/lighting-app/esp32/build/log/idf_py_stdout_output_35392

Bug prevalence
When ever I do it
GitHub hash of the SDK that was being used
6bb89174aaf3ee57c06c21fee11bc9c911c55f07
Platform
esp32
Platform Version(s)
No response
Anything else?
No response

@haihuynhDF Did this use to work, or is this the first time you are trying it?
@shubhamdp @dhrishi

@haihuynhDF IDF 5.0.1 is not tested and there may be possibility that build will fail. Latest supported IDF version is v5.0

I am able to build it using idf 5.0.1 @shubhamdp  ,
unable to add in apple home or google home stuck on
ble con(0)
do I need , hubs like homepod or google home to add?

Currently the ESP32 lighting app is building fine (executed in CI). Please try with the latest supported ESP-IDF. Closing this.


Problem with stmt.query_arrow([])?.collect()

I'm a total starter and trying to learn Rust with DuckDB. Just close if it's too basic of a question, just posting it here in case others have trouble getting started.
Error:
rustc: a value of type `Vec<RecordBatch>` cannot be built from an iterator over elements of type `arrow::record_batch::RecordBatch` the trait `FromIterator<arrow::record_batch::RecordBatch>` is not implemented for `Vec<RecordBatch>`

Question: What am I doing wrong:

I understand the rust iterator does not like the arrow RecordBatch. But how can I fix that, did I use the wrong arrow dependencies in my Cargo.toml on the right?

why depends on duckdb 0.1 version but libduckdb-sys 0.5.1 ? suggest to always use the same version, and latest version which is 0.5.1.
0.1 version duckdb doesn't support arrow

Thank you so much for your kind answer. OK now I see, I updated to the latest 0.5.1, but still has the same error.
Which Cargo.toml should be used for the simple example on the left? Should that work with the right dependencies, or should I follow something like this https://github.com/wangfenjin/duckdb-rs/blob/main/Cargo.toml?

Refer to #88 , the readme example should works fine. You can try run the example in command line with cargo. Not sure what's the problem with your code editor

Didn't really manage to make it work, but I used some part of this https://github.com/hotg-ai/weld-studio/blob/7121cbffbbe7dd4ee703b1dd8b3be89daee1f857/src-tauri/src/sql.rs and removed let rbs: Vec<RecordBatch> = stmt.query_arrow([])?.collect();.
Now I have managed to have a working starting point. Thanks so much; I will close.

Hi @sspaeti
I checked the issue again. The arrow version in your project's Cargo.toml should be same as the version in duckdb (latest one is version 23) . Otherwise it may report error.
Sorry for the inconvenience.

I ran into this problem a lot as well and the rustc error message isn't very helpful in this case and doesn't actually tell you what the problem is, i.e. it has nothing to do with an iterator and is actually just a version mismatch between different versions of arrow.
This would be helped a lot by #92 .

Excellent, thanks so much, you both. The example of Readme with the arrow version 23 worked!
For anyone else, this is my Cargo.toml:
[package]
name = "duckdb-playground"
version = "0.1.0"
edition = "2021"

[dependencies.duckdb]
version = "0.5.1"
features = ["bundled"]

[dependencies]
libduckdb-sys = "0.5.1"
arrow = { version = "23", features = ["prettyprint", "ffi"] }


--help does not show options for packwiz-installer.jar even when it is present.

When I run java -jar packwiz-installer-bootstrap.jar --help after downloading packwiz-installer.jar, it does not actually update the help text. It still outputs the following text:

Options for packwiz-installer will be visible once it has been downloaded.

Edit: I have tested this on multiple Java versions on both Windows 11 and Arch Linux.

This has been known about for a while - it was caused by an oversight in updating packwiz-installer to use a newer relocated version of Apache Commons CLI, which isn't compatible with the older version packwiz-installer-bootstrap uses. I'm in the process of reworking packwiz-installer-bootstrap to avoid using Apache Commons CLI and communicate with packwiz-installer in an easier-to-maintain manner, particularly also as it will conflict with other things on the classpath in the new chainload system.


DS-3643: Use correct license on ingest (7.x)

References

Fixes https://jira.lyrasis.org/browse/DS-3643
Fixes #6992

Description
This is a port of https://github.com/DSpace/DSpace/pull/1801
Instructions for Reviewers
Import an item without a license using the packager cli to a collection that also lacks a license. Without this PR an empty license gets created. With it the default license is used.
Checklist
This checklist provides a reminder of what we are going to look for when reviewing your PR. You need not complete this checklist prior to creating your PR (draft PRs are always welcome). If you are unsure about an item in the checklist, don't hesitate to ask. We're here to help!

[X] My PR is small in size (e.g. less than 1,000 lines of code, not including comments & integration tests). Exceptions may be made if previously agreed upon.
[X] My PR passes Checkstyle validation based on the Code Style Guide.

@nwoodward : Thanks for porting this!  I'll wait for tests to pass, but assuming they do, I'll merge this immediately... as it's an obvious fix & I just merged #1801 as well.
(Sidenote...if you have interest/time, I'm giving some attention to ensuring 6.x fixes are ported to main for 7.x.  So, I'd be glad to review any other ports you have time/interest in creating -- just assign them right to me.  I'm also trying to help others finally get 6.4 out the door.)


fix tutorial in appdev hands-on

Some commands seem not to be shown as bash commands because of the markdown attribute.

LGTM


R program to convert string to vowelcase added

📑 Description
copilot:summary
R program to convert string to vowelcase
🐞 Related Issue

Closes #3603
📋 Explanation of changes
copilot:walkthrough
copilot:poem

Hi @0ME9A ,
Thanks for pointing out the issue in the convertToVowelcase function. To address the problem, I have modified the isVowel function as suggested. Could you please review it from your side? Thankyou

Could you please merge the PR to close this issue? Thankyou

Hey @namrata18s,
I appreciate your eagerness to get this issue resolved. I've reviewed the code and found it to be well-structured and functioning properly. While I'm confident in merging it, our policy requires a minimum of two reviewers for pull request merges. This helps ensure the quality and maintainability of our codebase.
I'll encourage additional reviewers to provide their feedback promptly, and we'll proceed with merging the pull request once the required approvals are in place. Thank you for your understanding and cooperation.


Strange comment formatting

Users of tombi will have noticed that comments are oddly combined.
This was designed with the intention of sorting the keys in the table.
However, I understand that there are cases where this decision may result in unintuitive behavior.
This Issue was created to address key reordering while making the behavior better.

fixd.


deps: update dependencies

Update module dependencies, along with container base image for integration test. Will tag this as v1.1.4 once approved and merged.
Closes: #19
Closes: #23
Closes: #24

@moznion thanks for your review. I forgot to update docker image for CI (soratun/soratun-test). Pushed the latest, re-run the job, and Ci have passed. Please review the result again. Thanks!