Linux support?

I getting error trying kubycat on my linux machine

TypeError [ERR_FEATURE_UNAVAILABLE_ON_PLATFORM]: The feature watch recursively is unavailable on the current platform, which is being used to run Node.js
    at new NodeError (node:internal/errors:405:5)
    at Object.watch (node:fs:2416:11)
    at Kubycat.watchFiles (/home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/Kubycat.js:56:46)
    at Kubycat.<anonymous> (/home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/Kubycat.js:90:18)
    at Generator.next (<anonymous>)
    at /home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/Kubycat.js:8:71
    at new Promise (<anonymous>)
    at __awaiter (/home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/Kubycat.js:4:12)
    at Kubycat.start (/home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/Kubycat.js:89:16)
    at KubycatCli.main (/home/myhome/.npm-packages/lib/node_modules/kubycat/dist/cjs/KubycatCli.js:39:17) {
  code: 'ERR_FEATURE_UNAVAILABLE_ON_PLATFORM'
}

Node.js v18.17.1

the error brought me to this stackoverflow which says that the recursive option seems unsupported on linux.
What to do? Is this just not working linux?

Just found that not too much ago, the linux recursive features seems to have been added

Thanks for finding that! I'll add in a note about Node.js version requirements, but I also found that chokidar or node-watch might be alternatives to fs.watch that don't have this limitation on Linux. If chokidar is really as easy to work with as people have said, I can switch to that too.

Indeed it works after updating nodejs to use a 20.x version! :partying_face:


Material German translation of pasteButtonLabel is incorrect

Copied from https://github.com/flutter/flutter/pull/63126, thanks for the report by @lazylazyllama:
After #63026 was merged, the German translation of pasteButtonLabel was changed from EINFÜGEN to Einsetzen, but I as a native German speaker can tell you that Einsetzen is a very weird translation and not common at all. It really should be Einfügen.
Native Android is also calling it Einfügen:

On the other hand, Native iOS uses Einsetzen for its paste button label.
The issue here is that Google's internal translation console treats both paste button labels as the same message, so the translation for both paste labels are identical. The change from EINFÜGEN to Einsetzen was created due to a request to match native iOS for the Cupertino widget, which unfortunately caused the native Android version to no longer match. Thus, the fix involves decoupling these translations so that they are independent of each other.

Hello, is there any progress here?
As a german, it's very inconvinient so see "Einsetzen" on windows, linux and android instead of "Einfügen", since it doesn't match the default names inside the system/other apps


Ingress glbc pod: NodePort should have a firewall rule auto-created for health check

It looks like the glbc pod gets created with a dynamic NodePort.
Under the GCE HTTP console, the health check for this service shows up as "unhealthy" - because no firewall rule has been created to allow the HTTP load balancer to probe the service.
Users should not be required to create the firewall rule for this to work (very confusing). Ideally, any firewall rules should be auto-created.

Thanks for the report. I agree we should create the firewall rule for the default backend service because this service is create as part of kube-up. It shouldn't affect traffic to your other endpoints, though.


minor fix in Readme to add completion/custom.completion.bash to the customization list

this adds completion/custom.completion.bash to the customization list for consistency with other list items

Thanks!


azcopy crashes during sync or copy of a whole Premium FileStorage to one another

Which version of the AzCopy was used?
Note: The version is visible when running AzCopy without any argument
10.12.1
Which platform are you using? (ex: Windows, Mac, Linux)
Linux, Windows
What command did you run?
Note: Please remove the SAS to avoid exposing your credentials. If you cannot remember the exact command, please retrieve it from the beginning of the log file.
./azcopy sync 'https://<sourcestorageaccount>.file.core.windows.net/<fileshare>?<SAS>' 'https://<deststorageaccount>.file.core.windows.net/<fileshare>?<SAS>' --log-level INFO --recursive=true

What problem was encountered?
azcopy crashes during the scan phase after a random number of files scanned (e.g. sometime 2000, sometime 60000). It also happens during the copy with azcopy copy [...]
Here is a sample of what I get on stderr:
fatal error: concurrent map read and map write

goroutine 70 [running]:
runtime.throw(0xf70464, 0x21)
        /opt/hostedtoolcache/go/1.16.0/x64/src/runtime/panic.go:1117 +0x72 fp=0xc013f0dc40 sp=0xc013f0dc10 pc=0x438fd2
runtime.mapaccess2_faststr(0xe12200, 0xc0119b1c20, 0xc002149100, 0x7f, 0xc002149100, 0xc013f0dcd8)
        /opt/hostedtoolcache/go/1.16.0/x64/src/runtime/map_faststr.go:116 +0x4a5 fp=0xc013f0dcb0 sp=0xc013f0dc40 pc=0x415e85
github.com/Azure/azure-storage-azcopy/v10/ste.(*jpptFolderTracker).RecordCreation(0xc0116bc920, 0xc002149100, 0x7f)
        /home/vsts/work/1/s/ste/folderCreationTracker.go:80 +0x94 fp=0xc013f0dd08 sp=0xc013f0dcb0 pc=0xc7a554
github.com/Azure/azure-storage-azcopy/v10/ste.AzureFileParentDirCreator.CreateDirToRoot(0x10ca038, 0xc013c682a0, 0xc008d1da00, 0x5, 0x0, 0x0, 0x0, 0xc008d1da08, 0x2c, 0xc008d1da34, ...)
        /home/vsts/work/1/s/ste/sender-azureFile.go:455 +0xa55 fp=0xc013f0f728 sp=0xc013f0dd08 pc=0xc9a9f5
github.com/Azure/azure-storage-azcopy/v10/ste.(*azureFileSenderBase).EnsureFolderExists(0xc00785bba0, 0x0, 0x0)
        /home/vsts/work/1/s/ste/sender-azureFile.go:355 +0x13a fp=0xc013f0f958 sp=0xc013f0f728 pc=0xc990da
github.com/Azure/azure-storage-azcopy/v10/ste.anyToRemote_folder(0x10d94d0, 0xc00110d500, 0xff4eb712c2795bb5, 0x44580b6a9b0a6a44, 0x800000, 0xc008d1db00, 0xf0, 0x0, 0xc008d1da00, 0xf8, ...)
        /home/vsts/work/1/s/ste/xfer-anyToRemote-folder.go:70 +0x2b4 fp=0xc013f0fae8 sp=0xc013f0f958 pc=0xcb0354
github.com/Azure/azure-storage-azcopy/v10/ste.anyToRemote(0x10d94d0, 0xc00110d500, 0x10b7380, 0xc015508c00, 0x7f78c0a6a088, 0xc000418000, 0xfbaa70, 0xfbaa30)
        /home/vsts/work/1/s/ste/xfer-anyToRemote-file.go:179 +0x198 fp=0xc013f0fe40 sp=0xc013f0fae8 pc=0xcac3f8
github.com/Azure/azure-storage-azcopy/v10/ste.parameterizeSend.func1(0x10d94d0, 0xc00110d500, 0x10b7380, 0xc015508c00, 0x7f78c0a6a088, 0xc000418000)
        /home/vsts/work/1/s/ste/xfer.go:76 +0x73 fp=0xc013f0fe90 sp=0xc013f0fe40 pc=0xcc5b13
github.com/Azure/azure-storage-azcopy/v10/ste.(*jobPartMgr).StartJobXfer(0xc015dafc00, 0x10d94d0, 0xc00110d500)
        /home/vsts/work/1/s/ste/mgr-JobPartMgr.go:676 +0x71 fp=0xc013f0fed0 sp=0xc013f0fe90 pc=0xc883d1
github.com/Azure/azure-storage-azcopy/v10/ste.(*jobPartTransferMgr).StartJobXfer(0xc00110d500)
        /home/vsts/work/1/s/ste/mgr-JobPartTransferMgr.go:215 +0x48 fp=0xc013f0fef8 sp=0xc013f0fed0 pc=0xc89648
github.com/Azure/azure-storage-azcopy/v10/ste.(*jobsAdmin).transferProcessor.func1(0x10d94d0, 0xc00110d500)
        /home/vsts/work/1/s/ste/JobsAdmin.go:465 +0x1b7 fp=0xc013f0ff78 sp=0xc013f0fef8 pc=0xcb8bf7
github.com/Azure/azure-storage-azcopy/v10/ste.(*jobsAdmin).transferProcessor(0xc00041a000, 0x2e)
        /home/vsts/work/1/s/ste/JobsAdmin.go:473 +0x8f fp=0xc013f0ffd0 sp=0xc013f0ff78 pc=0xc74eaf
runtime.goexit()
        /opt/hostedtoolcache/go/1.16.0/x64/src/runtime/asm_amd64.s:1371 +0x1 fp=0xc013f0ffd8 sp=0xc013f0ffd0 pc=0x470aa1
created by github.com/Azure/azure-storage-azcopy/v10/ste.initJobsAdmin
        /home/vsts/work/1/s/ste/JobsAdmin.go:219 +0x7bd

goroutine 1 [chan receive]:
github.com/Azure/azure-storage-azcopy/v10/cmd.(*fileTraverser).traverse(0xc000154200, 0x0, 0xc0003eb2b0, 0x16b3d50, 0x0, 0x0, 0x0, 0x0)
        /home/vsts/work/1/s/cmd/zc_traverser_file.go:236 +0x6aa
github.com/Azure/azure-storage-azcopy/v10/cmd.(*syncEnumerator).enumerate(0xc000090550, 0x10ca000, 0xc0003e4870)
        /home/vsts/work/1/s/cmd/zc_enumerator.go:631 +0xf4
github.com/Azure/azure-storage-azcopy/v10/cmd.(*cookedSyncCmdArgs).process(0xc000248e00, 0x13f, 0x0)
        /home/vsts/work/1/s/cmd/sync.go:678 +0x3e5
github.com/Azure/azure-storage-azcopy/v10/cmd.init.21.func2(0xc000428a00, 0xc0001014a0, 0x2, 0x5)
        /home/vsts/work/1/s/cmd/sync.go:713 +0x17a
github.com/spf13/cobra.(*Command).execute(0xc000428a00, 0xc000101450, 0x5, 0x5, 0xc000428a00, 0xc000101450)
        /home/vsts/go/pkg/mod/github.com/spf13/cobra@v1.2.1/command.go:860 +0x2c2
github.com/spf13/cobra.(*Command).ExecuteC(0x1677640, 0x44580b6a9b0a6a44, 0xc0002dfdf8, 0x0)
        /home/vsts/go/pkg/mod/github.com/spf13/cobra@v1.2.1/command.go:974 +0x375
github.com/spf13/cobra.(*Command).Execute(...)
        /home/vsts/go/pkg/mod/github.com/spf13/cobra@v1.2.1/command.go:902
github.com/Azure/azure-storage-azcopy/v10/cmd.Execute(0xc000176f80, 0x1b, 0xc000176f80, 0x1b, 0xc000150420, 0x21, 0x3ffff)
        /home/vsts/work/1/s/cmd/root.go:165 +0xf8
main.main()
        /home/vsts/work/1/s/main.go:82 +0x3a5

[and so on with many other goroutine blocks]

How can we reproduce the problem in the simplest way?

Create 2 Premium FileStorage accounts (1 will be the source storage account, and the other 1 will be the destination), with 1 file share in each
In the source storage account, put/generate at least 100k files distributed in a ~6 levels of directory depth
Get SAS tokens for the source and destination storage
Run azcopy copy for the whole source file share to the destination file share, using their respective SAS token

Have you found a mitigation/solution?
Downgrade to version 10.11.0 of azcopy.

Seeing the same errors on the same version.
Distribution of ~30TB of data across 50 distinct fileshares with random sizes but both sync & copy operations fail after some period of time.
The error handling around the goroutine also supercedes any of the logging and thus isn't directly capturable in the log files, or via piping the ps output to a file.

Can confirm this behavior using azcopy copy to transfer data from a local disk to an Azure File Share.
SO: Ubuntu 18.04
Files: 22169
Folders: 7260
TotalBytes: 221MB
azcopy --log-level ERROR copy '/REDACTEDorigem' 'REDACTED-StorageAccountSASURL' --recursive
INFO: Scanning...
INFO: Any empty folders will be processed, because source and destination both support folders
Job 3294d529-98bc-3740-4ce5-50ac3b422b9b has started
Log file is located at: .azcopy/3294d529-98bc-3740-4ce5-50ac3b422b9b.log
0.0 %, 0 Done, 0 Failed, 10000 Pending, 0 Skipped, 10000 Total (scanning...),
1.8 %, 376 Done, 0 Failed, 29053 Pending, 0 Skipped, 29429 Total, 2-sec Throughput (Mb/s): 17.0232
fatal error: concurrent map read and map write
goroutine 52 [running]:
runtime.throw(0xf7304a, 0x21)
/opt/hostedtoolcache/go/1.16.0/x64/src/runtime/panic.go:1117 +0x72 fp=0xc00244d7d8 sp=0xc00244d7a8 pc=0x438fd2
.......
I´m yet to test the downgrade to version 10.11.0 as suggested by the op.

This is pretty wild to hear, since the folder creation tracker has a mutex on it. No two threads can ever be writing to this map. Would one of you mind dropping the full set of stack traces? That should help dramatically.

Hi, I believe this PR resolved this issue and was released with 10.13.0.
I also attempted to reproduce this issue on the latest version of AzCopy and was not successful. I will go ahead and close this issue. In case you are still experiencing it, please feel free to reopen the issue.


Buy and setup real domain for production instance

http://jvm-bloggers.com/ is now live with a simple placeholder.


Regex rework and adding validations for query params

Cleaned up white listing regex with list of approved domains.
Added validation errors for query params when in development.

This is 👍

@cometman @celly @alexdean @redoPop - Asking because you're name is in this PR: I'd like to get this merged. Any objections?

i have no opinion on whether this is ready to merge or not. haven't seen the code. sorry.

Same: my name is in the PR because I added an extra domain to the whitelist to keep it parallel with the main branch.
All tests were passing when I did so, and the general approach here seems similar to the one we've taken in js-crushinator-helpers, so I think it's both conceptually and behaviorally sound, but @cometman knows this code's status best!

merge it with fire.

Released as 0.1.0

Ah, ok. Thanks @cometman.


Controls property set to true causes content to jump around on load

Bug
When controls property is set to true, causes content around  to jump around on load. If controls is set to false content around  does not jump around.
Platform
IOS 13.2
Which player are you experiencing the problem on:

iOS

Environment info
System:
OS: macOS Mojave 10.14.6
CPU: (4) x64 Intel(R) Core(TM) i5-7360U CPU @ 2.30GHz
Memory: 61.57 MB / 8.00 GB
Shell: 3.2.57 - /bin/bash
Binaries:
Node: 12.13.0 - /usr/local/bin/node
npm: 6.12.0 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
SDKs:
iOS SDK:
Platforms: iOS 13.2, DriverKit 19.0, macOS 10.15, tvOS 13.2, watchOS 6.1
Android SDK:
API Levels: 26, 27
Build Tools: 26.0.2, 27.0.3
System Images: android-26 | Google APIs Intel x86 Atom
IDEs:
Xcode: 11.3/11C29 - /usr/bin/xcodebuild
npmPackages:
@react-native-community/cli: ^2.9.0 => 2.9.0
react: ^16.9.0 => 16.9.0
react-native: ^0.61.5 => 0.61.5
npmGlobalPackages:
react-native-git-upgrade: 0.2.7
Library version: 5.0.2
Steps To Reproduce
Reproduce by creating  element.
Expected behaviour
Other elements shouldn't jump around when video element loads with controls UI.
Reproducible sample code

Video sample

@joshallison I'm seeing this too, any solution?
Hey, I couldn't find a solution so just disabled controls and created my own UI and used API to mute, pause etc.

@joshallison I'm seeing this too, any solution?

Hey, I couldn't find a solution so just disabled controls and created my own UI and used API to mute, pause etc.

Not exactly the same issue, but might be of the same cause:
I figured out, that enabling "controls" at IOS is the cause of a strange Issue.
I open the Video-Component in an own screen.
If I enable controls, the late loading of controls cause the issue, that the Screen will not shown in right way.
Most of the time, you got an gap at the right-side, because the whole Screen (it's a StackNavigator-Screen from react-navigation) is moved to the left.
If I deactivate "controls" and use an own set of Media-Controler (e.g react-native-media-controls), this Issue dosen't appear.
I think the issue is, that the Controls does "oversize" the Screen-Container on loading time, before it adjust itself into the Video-Component-Width. After this resizing, no state-update is made... so no rerendering for the screen.
here a Picture to show what the issue is:

Same here.
Although setting controls prop to true after onReadyForDisplay the video still jumping!!!
onReadyForDisplay={() => {             this.setState({controlDisplay: true});   }}
Any solution please.


Weird results using point clouds of objects from YCB

Hi everyone,
I am very interested in this network and I have modified the scripts command_evaluate.sh, evaluate.py and model_concat_upsa.py in order to be able to do inference on point clouds of objects from YCB dataset.
Specifically, I changed the code in a way such that the point clouds of the two frames can have a different number of points as indicated in the paper. I tried again this code with the evaluation set from FlyingThings3D, that you provided, to verify that performance are unchanged.
However, when I try to feed the network with point clouds (xyz + colors in [0, 1]) from YCB I am getting very weird results.
As an example consider the following two frames involving the Cracker Box object

Basically, the point clouds represent one of the faces of the box after it undergoes a small rotation. The rotation is such that the maximum change between points of the two frames is in the order of ~ 4cm as shown in the figure.
When doing inference, the translation vectors from the frame on the left to the frame on the right are very strange and not compatible with that motion, something like
[[[-0.25203004 -0.04336617 -0.24234553]
  [-0.25667757 -0.05793389 -0.23309565]
  [-0.25017104 -0.03977326 -0.2452542 ]
  ...
  [-0.2619986  -0.07882687 -0.21964237]
  [-0.26357266 -0.0843826  -0.21680456]
  [-0.26159576 -0.07794474 -0.21985136]]]

Do you think the point clouds I am feeding to the network are too different from the data from the FlyingThings3D dataset such that the network is not able to generalize with a model trained on that dataset?
Also, I saw that, within the model model_concat_upsa.py, several radiuses are defined, i.e.
RADIUS1 = 0.5
RADIUS2 = 1.0
RADIUS3 = 2.0
RADIUS4 = 4.0

plus some other hardcoded radius like radius = 5.0,  radius = 2.4, radius = 1.2 and radius = 0.6 in the definitions of the layers.
In your experience, are these values critical for the network? In case I need to the re-train the network with point clouds, optical flow and colors from scenes involving small objects, e.g. from YCB dataset, should I care in selecting them carefully or they are general enough?
Please find attached the point clouds (xyz + colors) of the two frames (files frame0.txt and frame1.txt) and the results of the inference (file predicted_val.txt) obtained using the pre-trained model available in this repository.
Thank you for your availability.
frame0.txt
frame1.txt
predicted_val.txt

Yes. Radius values is critical. You have to ensure that the scale of your object and/or the density of your point cloud suits radius values.

Hi @xEnVrE ,
Could you please share your inference code which you modify from evaluate code? Is that OK?
Thanks.

Hi @KevinYuk,
here's the code.

Hi @KevinYuk,
here's the code.

Hi @xEnVrE ,
Thanks a lot for that.

@xEnVrE Hi, have you tried it out using more reasonable radius? Does it help?


Consolidate ctr cri load and ctr import

After https://github.com/containerd/cri/pull/865 is in, cri can see images pulled/loaded by ctr.
We should be able to ues ctr import instead of ctr cri load once https://github.com/containerd/containerd/pull/2633 is in.
And then we should start deprecating ctr cri load.

Is this blocked by something? All referenced PRs seem to be in, however (using containerd 1.2.1 and 1.2.3) I'm unable to get ctr images import and crictl images to align, or ctr cri load and ctr images ls to align either. Furthermore, an image loaded using ctr cri load which shows up in crictl images doesn't result in any objects in ctr content ls.
This despite the containerd 1.2.0 release notes saying

cri plugin can see images pulled/imported into containerd by ctr images pull and ctr images import

which I haven't been able to reproduce in my testing.

@NicolasT You need to specify --namespace=k8s.io when using ctr.
Containerd supports namespaces, and the cri plugin is using the k8s.io namespace.

We should evaluate ctr images import to see whether it meets all our requirement.
If yes, we should start deprecating ctr cri load since 1.3

We should start deprecating ctr cri load in 1.3, probably:

Print deprecation notice first;
Remove in containerd 1.4

@dmcgowan WDYT?

The ctr cri load command is removed. https://github.com/containerd/cri/pull/1170
Only thing left for this issue is the 1.3 release note update.

Thanks for the work @Random-Liu !

The update for this will be included in https://github.com/containerd/containerd/pull/3492.


Create DEVELOPMENT.md

This file will contain instructions for potential developers so consistent coding standards can be followed.

This issue duplicates #15.


Handle files with no metadata.

Thanks for the script! Here's a little fix for an issue I've encountered when running on my account.

Thanks for your contibution @lukaspili !


use original target if it contains mobi file extension

Now if the user specifies -o foo.MOBI, the name of the final file with be foo.MOBI instead of foo.mobi.

I think it make complex to understand what is mobi output result. Output name should base on target but not epub_file, epub_file is a temp file for mobi.
Problem come form epub converter support two format but only set outfilesuffix as one value .epub. I'm not complete read the converter call stack, but change it maybe too far for fix output filename.
I think current fix-out-file-option branch is good for fix -o problem.

I see your concern. Technically, the epub_file is derived from the target, so that are the same root file, but I agree that it is clearer to rebuild the path off the target directly. I have updated my pull request. I think it satisfies your concern while still maintaining compatibility with existing behavior.
(I realize that we are still lacking tests...I am testing against editions to make sure that it continues to work. Clearly, we need to get tests setup...that's a major error in my part that I skipped that step).

I still think it's not necessary to have a guard to check target is end with /.mobi/i , .kf8 and .azw3 is also a valid KF8 extname. asciidoctor-pdf and kindlegen both don't prevent the use of any extname.
But I accept it that let things move on, it's not a big problem...

Now I see why you were replacing the epub extension with mobi. It took me a while to understand why you were doing it that way, but now I totally see it. Sorry it took me so long to make the connection.

The only change that remains is to make the epub extension regex case-insensitive. Once that's merged in, then I think we'll finally have it sorted out.

Great!


[feature request]: make Yaml a optional package

Is your feature request related to a problem? Please describe.
not really. would just reduce the dependencies that are required.
Describe the solution you'd like
Only use the YamlFileLoader, when the Yaml class is there

I think it is nice to have the yaml package by default. ( it is used in the skeleton: https://github.com/neutomic/skeleton/blob/main/config/http.yaml )
I don't see any real issues that having the yaml package introduces, or any actual benifits from removing it.


[WIP] Allow version hashs

Not sure if we should allow this, just checking if the PoC works out.

Codecov Report

Merging #3693 into dev will decrease coverage by 0.35%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##              dev    #3693      +/-   ##
==========================================
- Coverage   98.24%   97.89%   -0.36%
==========================================
  Files          18       18
  Lines        1140     1140
  Branches      307      307
==========================================
- Hits         1120     1116       -4
- Misses         20       23       +3
- Partials        0        1       +1

Impacted Files
Coverage Δ

lib/core/middleware/error.js
87.8% <0%> (-9.76%)
:arrow_down:

Continue to review full report at Codecov.

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

Closed, as file is from Vue


bibata-cursors: 1.1.2 -> 2.0.3; clickgen: fix build after update to 2.1.3

Description of changes
bibata-extra-cursor is broken by the update of clickgen, but upstream1 marked this project as archived on Nov 9th, 2022. I'm not sure what to do about this.
Fixes #203394
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
23.05 Release Notes (or backporting 22.11 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

Result of nixpkgs-review pr 211379 run on x86_64-linux 1

1 package failed to build:

bibata-extra-cursors

3 packages built:

bibata-cursors
clickgen (python310Packages.clickgen)
python311Packages.clickgen

May you mark bibata-extra-cursor as broken if there is no easy fix.


Remove version: Peppy.Osu! version 2023.803.0

https://github.com/microsoft/winget-pkgs/issues/152768#issuecomment-2102735187

Resolves #152768

Microsoft Reviewers: Open in CodeFlow

URL: https://github.com/ppy/osu/releases/download/2023.803.0/install.exe
OK
(Automated message - build 882)


Support for running maya-apiserver & openebs-provisioner in custom namespace

Is this a BUG REPORT or FEATURE REQUEST?
This is a FEATURE REQUEST

What happened:
Right now OpenEBS can only be deployed to the default namespace.
What you expected to happen:
I want to deploy the operator to custom namespaces for example openebs or kube-system.
How to reproduce it (as minimally and precisely as possible):
Just deploy the operator to a non-default namespace? Change all the namespaces in k8s/openebs-operator.yaml to openebs.
This will put the provisioner in a CrashLoopBackOff and the logs show:
E0206 18:09:03.238356       1 openebs-provisioner.go:69] Error getting maya-apiserver IP Address: services "maya-apiserver-service" not found

Anything else we need to know?:
In Kubernetes it is pretty common to run services in their own namespace. Looking at OpenEBS, I feel like running the maya-apiserver & openebs-provisioner in the default namespace is strange.
Right now I'd like to run these in an own openebs namespace or perhaps in kube-system too.
As discussed on Slack I now open an issue.
@tboerger @yudaykiran

With 0.5.1, the support for deploying openebs in custom namespace (other than default) and then launching an app in a different namespace is supported. To deploy openebs in its own namespace (say openebs) the following changes need to be done to the openebs-operator.yaml:
(1) Create a name space:
apiVersion: v1
kind: Namespace
metadata:
  name: openebs

(2) Change the references in openebs-operator.yaml to namespace: default to namespace: openebs (or anything else used in the step1 above).
(3) In the openebs-provisioner deployment, add the following ENV:
        - name: OPENEBS_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace

The modified openebs-operator:

https://github.com/kmova/bootstrap/blob/master/openebs-yamls/openebs-operator-ns-openebs.yaml

The sample percona yaml used to test percona in its namespace:

https://github.com/kmova/bootstrap/blob/master/openebs-yamls/percona-ns-percona-sc-percona.yaml

The above yamls use 0.5.2-RC1 (since i was currently testing them, but the non-default namespace works with 0.5.1 as well).

The above details are added to the documentation.
https://docs.openebs.io/docs/namespace.html


Validation error in Bundles using profiles

Describe the bug
I've created a profile for a Patient resource, I enabled the validation whenever I create or update using
x-ms-profile-validation: true header.
Whenever I have missing fields defined in my resource based on profile, I retrieve an error telling that fields are missing in my resource. However when I try with Bundle it doesn't
FHIR Version?
R4
Data provider?
SQL Server
To Reproduce
Steps to reproduce the behavior:

Create a Patient profile with gender is required
Set your header x-ms-profile-validation: true
Post a Patient without gender
Retrieve a warning because of missing gender field
Create a Bundle includes Patient with a Profile`
Set your header x-ms-profile-validation: true
Post the Bundle includes Patient without gender
Server doesn't validate and creates resources automatically

Expected behavior
Validating the content using Profile and retrieving an error same as creating a Patient
Actual behavior
Server doesn't validate and creates resources automatically

Thanks @ikivanc for reporting this. We will triage and update here as we determine timelines for updates.

AB#87248

Thanks @ikivanc for reporting the issue. The issue is now fixed. Please let us know if you have any questions.


adding business attributes information

updating page with business attributes section.

Docs Build status updates of commit 3b9e7fc:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

Advertising/bingads-13/campaign-management-service/accountproperty.md
:white_check_mark:Succeeded
View (=bingads-13)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Ensure default cask tap is installed on CaskUnavailableError.

[x] Have you followed the guidelines in our Contributing document?
[x] Have you checked to ensure there aren't other open Pull Requests for the same change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your changes? Here's an example.

[x] Have you successfully run brew tests with your changes locally?
[ ] Have you successfully run brew man locally and committed any changes?

Fixes https://github.com/Homebrew/homebrew-cask/issues/94072.

Review period will end on 2020-12-04 at 03:18:08 UTC.

Review period skipped due to critical label.


Refactoring deprecated fields of Kustomize

What type of PR is this?
/kind cleanup
What this PR does / why we need it:
Refactoring deprecated fields of Kustomize, thus getting rid of the warnings
Which issue(s) this PR fixes:
Fixes #817

This is a duplicate to 831


[[DOCS]] Add Codacy to "Who uses JSHint" list

Coverage remained the same at 97.754% when pulling 0f668f20d02888e06b68841ee9c9ce1619aa6441 on funkylexoo:patch-1 into 78b79c099fc490d93cd7aef599a1528761e9498d on jshint:master.

It took some digging, but I found a primary source for Codacy's use of JSHint

Open Source Tools
In addition to in-house built rules, we use open source tools for many of our
static analysis. We want to express our gratitude to those tools and to
everyone who contributed.
[...]

jshint

https://support.codacy.com/hc/en-us/articles/207995005-Special-Thanks
So I merged your patch (ac4f7c064db590e1de6b87d1772c18b198804e57) and added
this in a follow-up commit (12afbcdeb38edcbe379b1e9eb9b388e3741ecc75).
If anyone reading this would like to submit a similar patch, please include a
reference in your patch!


Add a Jimp constructor with image buffer

Could you please add a Jimp constructor with image buffer and not only path.

Done in 0.1.3.
You can now construct like this:
var image = new Jimp(data, "image/png", function () {
    // ready
});


autocomplete in Firefox search/awesome bar?

I have GitHub set up as a search engine in the Firefox "awesome bar" with a prefix of gh:

Would it be possible to use this add-on to autocomplete as I type there?

Would it be possible to use this add-on to autocomplete as I type there?

I don't know the Firefox address bar API enough but it seems to be somehow possible to hook into it to add suggestions (see what https://github.com/estivo/Instantfox does).
Any pull-request is very welcome and I would love to assist you 👍

Hey @drewda ,
As much as I like the idea, I don't think we want to implement this.
This would require us to expose a search endpoint on our end and hack the opensearch mechanism to add a new plugin to fetch results from there.
If you have a better idea in mind please let us know.
Also, I feel like so far opensearch isn't that used, probably because the UX of the address bar kinda hides this feature from users.

Hmmm, I actually found something worth experimenting, let's leave it open a bit longer 🤓

@rayrutjes this is a really cool new feature, but may I humbly suggest there be a way to disable it? several times a day I run google searches about american airlines ("aa") and I'm no longer able to do this from the omnibox without the extension taking over.
or, alternatively, do you know how to redirect text input back to normal, after an extension has control in the omnibox? I've tried hitting escape key but that clears the entire input, and backspace temporarily works but as soon as a space is added after your keyword it brings it back to the extension input.
thank you!

Wow that's unfortunate @sammarcus .
I'll take a look to see what we can do.

thank you! I know it's an (extreme) edge case, thanks for your consideration 🙏🏼😇

@sammarcus I went through all chrome settings and it seems to be impossible to either change/override the shortcut nor disable just the omnibox part.
As a workaround, what I can suggest is:

clone this repo
edit the content/chrome.js file and change the aa shortcut to whatever you want (or disable it by removing it)
install grunt and run grunt
then from chrome://extensions enable developer mode and load the build/unpacked-prod directory as an "unpacked extension".

Let me know if that could work for you.
I'll help you along the road if you have an issue getting this manually loaded.


Mascot doesn't play sound when clicked

Even though the url in the <audio> is the same the website tries to load  b.doko.moe/znadfr.mp3 instead for some reason

@Kiloutre If you look into templates/layouts/partials/base.jet.html, you see that the audio src is b.doko.moe/znadfr.mp3 for logged user. However when going to b.doko.moe/znadfr.mp3, you have error 404 :/. So the file must have been deleted?

idk, it works now, loads a.doko.moe instead of b.doko.moe, the file exist on a and not on b


libtcamlloc couldn't get the backtrace on the arm

hi,all:
I use my own tool-chains to comopile the gperftools，and use the libtcmalloc.so.4.2.6 on arm platform.
but I couldn't  get the backtrace using the  heap_profiler
version:
gperftools release 2.4
configure as follows
CC=$ourown CXX=xx CFLAGS+=" -g -fno-omit-frame-pointer " CPPFLAGS+=" -g -fno-omit-frame-pointer " CXXFLAGS+=" -g -fno-omit-frame-pointer " ./configure --host=arm-linux-gnueabi --build=arm-linux-gnueabi --enable-frame-pointers
I got the heap info like follows,we cant none backtrace!

eap profile:      1:       16 [     1:       16] @ heapprofile
1:       16 [     1:       16] @
MAPPED_LIBRARIES:
00010000-00011000 r-xp 00000000 00:00 2446834     /tmp/link_tcmalloc
00020000-00021000 r-xp 00000000 00:00 2446834     /tmp/link_tcmalloc
00021000-00022000 rwxp 00001000 00:00 2446834     /tmp/link_tcmalloc
01c87000-02588000 rwxp 00000000 00:00 0           [heap]
b6998000-b6b68000 rwxp 00000000 00:00 0
b6b68000-b6b7f000 r-xp 00000000 00:00 6827        /usr/lib/libpthread-2.20.so
......
and then I use objdump -d and readelf -u  to to parse the libtcmalloc.so.4.2.6

objdump -d

arm-eabi-objdump -d  .libs/libtcmalloc.so.4.2.6 >libtcmalloc.objdump

some objdump result sections as follows

libs/libtcmalloc.so.4.2.6:     file format elf32-littlearm
Disassembly of section .plt:
00038968 _ZNSt8_Rb_treeIN15MemoryRegionMap6RegionES1_St9_IdentityIS1_ENS0_9RegionCmpE13STL_AllocatorIS1_NS0_11MyAllocatorEEE24_M_get_insert_unique_posERKS1_@plt-0x14:
38968:       e52de004        push    {lr}            ; (str lr, [sp, #-4]!)
3896c:       e59fe004        ldr     lr, [pc, #4]    ; 38978 <_init+0x1c>
38970:       e08fe00e        add     lr, pc, lr
38974:       e5bef008        ldr     pc, [lr, #8]!
38978:       00060688        .word   0x00060688
0003897c _ZNSt8_Rb_treeIN15MemoryRegionMap6RegionES1_St9_IdentityIS1_ENS0_9RegionCmpE13STL_AllocatorIS1_NS0_11MyAllocatorEEE24_M_get_insert_unique_posERKS1_@plt:
3897c:       e28fc600        add     ip, pc, #0, 12
38980:       e28cca60        add     ip, ip, #96, 20 ; 0x60000
38984:       e5bcf688        ldr     pc, [ip, #1672]!        ; 0x688
00038988 _ZNSt3mapIPKvPKcSt4lessIS1_ESaISt4pairIKS1_S3_EEE11lower_boundERS7_@plt:
38988:       e28fc600        add     ip, pc, #0, 12
3898c:       e28cca60        add     ip, ip, #96, 20 ; 0x60000
38990:       e5bcf680        ldr     pc, [ip, #1664]!        ; 0x680
00038994 _ZN8tcmalloc8PageHeap23SearchFreeAndLargeListsEj@plt:
38994:       e28fc600        add     ip, pc, #0, 12
38998:       e28cca60        add     ip, ip, #96, 20 ; 0x60000
3899c:       e5bcf678        ldr     pc, [ip, #1656]!        ; 0x678
000389a0 getpagesize@plt:
389a0:       e28fc600        add     ip, pc, #0, 12
389a4:       e28cca60        add     ip, ip, #96, 20 ; 0x60000
389a8:       e5bcf670        ldr     pc, [ip, #1648]!        ; 0x670

readelf -u:

arm-eabi-readelf -u .libs/libtcmalloc.so.4.2.6 >libtcmalloc.readelf

readelf result some sections as follows

Unwind table index '.ARM.exidx' at offset 0x8682c contains 750 entries:
0x3d344 <deregister_tm_clones>: 0x80b0b0b0
Compact model index: 0
0xb0      finish
0xb0      finish
0xb0      finish
0x3d3e0 <__do_global_dtors_aux>: @0x84388
Compact model index: 1
0xb1 0x08 pop {r3}
0x84 0x00 pop {r14}
0xb0      finish
0xb0      finish

As I knows, the ARM.exidx is used for unwinding the backtrace, but when we found the .arm.edidx lack a lot of instructions
eg:
from the objdump we found a lot functions point the instructions begin with 0x39
but from the readelf ,we found the the instructions begins with 0x3dxxx?!so where is the instructions that in 0x39xxx-0x3dxxx?
So,I have two questions.
First, Does the libtcmalloc.so support perfectly for arm platform?
Second, does the Arm.exidx useful for unwinding the backtrace?How can I get the full Arm.exidx? OR How can i get the full backtrace.

We have asm frame-pointer-base ARM unwinder implementation, but it is known to be broken.
Libunwind unwinder mostly works (configure with --enable-libunwind). In my testing on arm I've found libunwind to occasionally crash.
There is also proposal for semi-portable frame-pointer based unwinder here: https://github.com/alk/gperftools/tree/wip-backtrace-via-gcc
In my testing on arm I've found that it didn't work on gcc but it did work with clang.

Thanks very much. We also found the logic of arm backtrace is something wrong,so we use the glibc backtrace logic code.

I tried to fix a similar issue for sanitizers on ARM [1] [2] and on my findings frame-pointer unwinder on ARM is broken due a set of constraints:

GCC and CLANG differs on which saved frame pointer value is saved on current frame pointer. This make it impossible without external information to walk on GCC-based stack frame due the fact we do not know which is the size of the allocated stack.
THUMB objects are broken on both compiler (-thumb), while as for 1. -marm only works for CLANG.

These issues is leading me to send a patch to just disable the fast unwind options (the frame-pointer based on) on ARM for sanitizers.
[1] https://llvm.org/bugs/show_bug.cgi?id=22741
[2] https://llvm.org/bugs/show_bug.cgi?id=18505

Fixed now with libgcc-based unwinder and working support of libunwind  (requires --enable-emergency-malloc)


Run unit test with github actions

@fordnox @timothygwebb this is ready for review and merging.
This PR successfully executes units. It currently covers unit tests for bb-modules.
The bb-library unit tests require a different pull request.


Support secondary ip addresses for nat gateway

Is your request related to a new offering from AWS?
The functionality is there, I don't know when it was introduced, but I presume for at least a year.
Is your request related to a problem? Please describe.
We are being rate limited by github based on IP address from one of our aws accounts, in order to work around this problem we added secondary ip addresses to our natgateways.  We have no way of configuring the vpc module to reflect this desired configuration.
Describe the solution you'd like.
Expose configuration for secondary ip addresses to allow more than 1 ip address to be configured per nat-gateway
Describe alternatives you've considered.
configuring the nat-gateway outside of this module.
Additional context

Duplicate https://github.com/terraform-aws-modules/terraform-aws-vpc/issues/1005?

I'm also waiting for this for a while. I see it being worked on here: https://github.com/terraform-aws-modules/terraform-aws-vpc/pull/1109 but not moving forward. This is actually a big pain point for us right now ;-(

@bryantbiggs  @AlexisColes  Is there something that can be done to unblock the merge? The current issue with the computed values as keys in maps could maybe be fixed in another way?
Thanks

Please re-open this issue. This is really needed. Thanks.


Memoization

Implement memoization for methods.
Replaces one_value_by by MemoizeMethod which can handle bound methods.
Also provides a more general syntax for specifying how to identify cache entries.
The new decorator is applied to AllToAll.

Does branch feature-memoized-solves contain anything that's still interesting or can it go?

I think everything that was interesting about it is implemented correctly here, and can be purged.


Support for Anotar.Serilog

The Anotar.Serilog.Fody package allows you to write code like this:
public class MyClass
{
    void MyMethod()
    {
        LogTo.Verbose("Message template with {SomeValue}", 42);
    }
}

And have it compile to something like this:
public class MyClass
{
    static ILogger logger = Log.ForContext<MyClass>();

    void MyMethod()
    {
		if (logger.IsEnabled(LogEventLevel.Verbose))
		{
			logger
				.ForContext("MethodName", "Void MyMethod()")
				.ForContext("LineNumber", 8)
				.Verbose("Message template with {SomeValue}", 42);
		}
    }
}

I'm switching from using Anotar.Log4Net to Serilog right now, and I love that this analyzer can warn me about common mistakes, but I would love to get the concise code and extra context that Anotar.Serilog provides. Since the Anotar.Serilog.LogTo static methods seem to mirror those of Serilog.Log, it seems like it might be an easy lift to make these analyzers provide the same analyses that they provide for Serilog.

If the logging methods would be annotated with Serilog.Core.MessageTemplateFormatMethodAttribute like in https://github.com/serilog/serilog/blob/2d4d8d13cffe33e5c72e6c6f4a29f84aaba8f5a3/src/Serilog/ILogger.cs#L93-L100 then it would be recognized automatically.

Very nice. I've created an Issue to ask if they can add those annotations.
https://github.com/Fody/Anotar/issues/123

The annotation is added, and everything works as expected. Thanks!


When creating a room, the "Owners" and "Users" fields in the right hand column aren't populated.

This only occurs when
               var messages = new List<ChatMessage>();
is not used within Chat.cs GetRoomInfoCore(ChatRoom room)

It actually doesn't have to do with the last comment, it's more related to the await and .ToListAsync() calls. For some reason having the method be async but not actually making async calls is the only way to get this to work. Realized I created a different duplicate issue #139

Fixed in PR #204, waiting for merge


Enhance useTheme to provide default theme without ThemeProvider

Description
In Short: Providing default theme using withTheme, default value, etc... often fails. This PR solve this problem by enhancing useTheme in dooboo-ui. Now, useTheme will at least return default theme(light) even if there aren't ThemeProvider exists.

Providing theme is complicated task. And providing default theme is harder.
dooboo-ui aims to provide default theme even if user forget to wrap componets with ThemeProvider.
Currently, theme providing is done by this.
const ButtonComponent: FC<ButtonProps & {theme: DoobooTheme}> = ({})

export const Button = withTheme(ButtonComponent);

and providing default theme(when ThemeProvider is not provided) is done by this.
// Sol 1
ButtonComponent.defaultProps = {theme: defaultTheme};

// Sol 2
const {theme = defaultTheme} = props

However, default theme is not applied as I mentioned in #104.
It is because withTheme from emotion provides { } when there aren't any theme to provide. So props.theme is never undefined, resulting our defaultTheme never applied. See this line of emotion implementation.
So, I made a workaround in #86 using isEmptyObject.

But it is just a workaround. It should be much easier and effortless to do it.
So I re-write useTheme and provide light to be default theme.
Now, there's no need to have theme prop, withTheme HOC, and default value. All you need to do to get current theme is calling useTheme. This will reduce confusion a lot.
In this PR, I refactor only SwitchToggle using new useTheme.
Test Plan
none.
Related Issues
#104
Tests
none.
Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] Run yarn test or yarn test -u if you need to update snapshot.
[x] Run yarn lint
[x] I am willing to follow-up on review comments in a timely manner.

I'll solve build error and open it again.

@hyochan  Maybe this helps about providing default context value.


The path may not always be a true path for stacktraces.

Occassionally we will get a stacktrace that's an importlib instance string
representation. While we may be able to put the python path or something else
it's likely easier (and more logical) to simply pass that onto the user.
I was unable to reproduce the issue in our tests, so I've mocked the case
in test_importlib_path_issue_1612.
Fixes #1612

tests are failing.

I didn't have time to investigate that part. It's likely failing on main as well since the other recent PR has the same failure exception.

You're right. Let's merge this.


Make using this as a library easier

Hi Tuan,
First of all thanks for the effort you've put into this awesome project! Very happy we have a decent MQTT library for the ESP8266.
I've been looking around for projects that use the ESP8266, MQTT and the DHT22 and all of the projects I've found contain copies of parts of this repo. This already indicates that it's difficult to use this repo in a modular way.
Then I tried to create a project myself with this repo as a git submodule, but that obviously doesn't work well either since the necessary files are not in the root of the repo.
I'd like to propose/discuss splitting this repo up in a library and an example project that uses the library, so the library can be used as a drop-in library for other projects.
FYI I'd like to add a section to clib for the esp8266 with drop-in libraries.
The main things that would need to be done for this are:

Rename this repo to esp_mqtt_example or something similar
git filter-branch as documented here the mqtt directory into a new esp_mqtt repo
Move the include/driver uart files to driver/include and then git filter-branch the driver directory into a new esp_uart repo
Add a submodule to the example project for both the esp_mqtt and esp_uart repos in the correct location

This is the structure I'm using for my example project right now:
.
├── Makefile
├── lib
│   ├── esp_mqtt
│   └── esp_uart
└── src
    ├── include
    │   ├── config.h
    │   ├── user_config.h
    │   └── wifi.h
    ├── config.c
    ├── user_main.c
    └── wifi.c

I have no clue where the drivers, modules and user directories convention in a lot of esp8266 projects comes from, but we could use that as well if that would make adoption easier.
.
├── Makefile
├── drivers
│   └── esp_uart
├── modules
│   └── esp_mqtt
└── user
    ├── include
    │   ├── config.h
    │   ├── user_config.h
    │   └── wifi.h
    ├── config.c
    ├── user_main.c
    └── wifi.c

Hi Simon, Tuan
I have modified and worked with the library/project for a while now and
have added some new commands. Maybe we should get designs ideas and other
improvements and put heads together.
Besides its been a while since I have visited HCMC Tuan and I am going to
see my family in Tuy Hoa soon so we could meet in person.
Simon I will look at your proposals but we should include OTA upgrades and
smartconfig as well.
Kind Regards
Neil Franken
On 05 Dec 2015 10:43 PM, "Simon van der Veldt"<EMAIL_ADDRESS>wrote:

Hi Tuan,
I've looking around for projects that use the ESP8266, MQTT and the DHT22
and all of the projects I've found contain copies of parts of this repo.
This already indicates that it's difficult to use this repo in a modular
way.
Then I tried to create a project myself with this repo as a git submodule,
but that obviously doesn't work well either since the necessary files are
not in the root of the repo.
I'd like to propose/discuss splitting this repo up in a library and an
example project that uses the library, so the library can be used as a
drop-in library for other projects.
FYI I'd like to add a section to clib https://github.com/clibs/clib for
the esp8266 with drop-in libraries.
The main things that would need to be done for this are:

Rename this repo to esp_mqtt_example or something similar
git filter-branch as documented here
https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/
the mqtt directory into a new esp_mqtt repo
Move the include/driver uart files to driver/include and then git
filter-branch the driver directory into a new esp_uart repo
Add a submodule to the example project for both the esp_mqtt and
esp_uart repos in the correct location

This is the structure I'm using for my example project right now:
.
├── Makefile
├── lib
│   ├── esp_mqtt
│   └── esp_uart
└── src
├── include
│   ├── config.h
│   ├── user_config.h
│   └── wifi.h
├── config.c
├── user_main.c
└── wifi.c
I have no clue where the drivers, modules and user directories convention
in a lot of esp8266 projects comes from, but we could use that as well if
that would make adoption easier.
.
├── Makefile
├── drivers
│   └── esp_uart
├── modules
│   └── esp_mqtt
└── user
├── include
│   ├── config.h
│   ├── user_config.h
│   └── wifi.h
├── config.c
├── user_main.c
└── wifi.c
—
Reply to this email directly or view it on GitHub
https://github.com/tuanpmt/esp_mqtt/issues/79.

Hi Neil, Simon,
I've made this library can work as libmqtt.a but haven't published yet. I need to fix some critical bug and optimize queue work as outbox before publish it.
Ps: Maybe while you come to Vietnam, I am in South Korea, Neil. 1 week from today.

@Namphibian @tuanpmt great to hear you guys are looking to make this work as well :)
@Namphibian Do you have other/more improvements than improving the modularity?
Also, what do you mean exactly with we should include OTA upgrades and smartconfig? Do you mean those are things that this library should support?
@tuanpmt Np :) You have a local branch that includes all those fixes together?
I've done a quick git filter-branch as I described above and building from an example project works as it should, haven't had the time to test the firmware files yet, but will do so ASAP to let you know if it works as it should.

@simonvanderveldt  @tuanpmt  this project has some great potential however I think we need to
focus on not just a improvement on the current structures/modularity, but also set some goals which will make this a awesome project.
Here is some of my thoughts. Please note these are very rough ideas but hopefully enough to stimulate some discussion.
Ease of use:
At the moment this library is not difficult to use at all. The thing is we live in a world where people press a button and the thing works. We need to make sure this library/framework can be easily deployed and used where needed.
More API styled calls:
Handling the REST API Calls and MQTT in Arduino can be pretty memory intensive. There is a lot of strings that need to be passed. For example when doing a REST or MQTT Calls you have to specify the topic/JSON string. For example /my_id/hello/helloworld in MQTT or worse in JSON
 {      "client": {"ID":"1234567890", Event:"ATWORK"} }
The ESP has much more memory than the arduino and thus offloading these type of functions onto the ESP would make more sense. I currently have a board with 6 different sensors reporting from a ATMega328-PU and getting the memory usage down to acceptable levels was not very difficult but the problem was why should a device with less memory be burdened to handle details a device with more memory can handle with ease? With the new ESP32 around the corner there is some scope here apparently this will improve the current ESP greatly with better ADC converters etc. Hopefully two UARTS as well I hope.
Solution: Create a API style interface in addition to the current methods. It occurred to me that most people will be sending sensor or input data via ESP to a server.
Thus for example instead of:
REST:
void post(const char* path, const char* data);
MQTT:
void publish(const char* topic, char* data);
We could also have:
REST:
`void sensordata(const int* sensortype, const char* data);
MQTT
void sensordata(int sensortype, char* data);
The sensortype variable could be some sort of array, enum etc that contains some common sensors for example PIR, Sound Sensor(Digital), Sound Sensor(Analogue), Lidar, Ultrasound etc. This will allow the ESP to handle some of the other heavy lifting. The list of sensors could be in a header file etc. Lets face it things like PIR sensor and MQ135, no matter the manufacturer, will report the data the same way no matter who made it.  It is quiet possible to describe in structure what the sensor is and what data it is sending e.g PIR, DIGITAL 0,1 or Sound Analogue 1-1024 for example.
Another goal that one can achieve here is to have the devices(Arduino and ESP) query each other. For example the arduino can ask the ESP what the MAC address is so that it can use that information in say authentication to REST services or use in some topic level on MQTT.
This is just a very rough example and would need some refining of course but I hope you understand that we can possibly leverage more of the ESP and use the arduino as more of a auxiliary processing unit.
SmartConfig:
@simonvanderveldt   the following idea has working examples on the internet.
There are several examples of smartconfig available for the ESP8266. The biggest problem people will face when deploying these applications on a large scale is catering for configuration of every device(wifi access point details). For example if the Wifi AP is not found the ESP can listen to multicast packets for new configuration. A technician can then send these UDP/multicast packets via an application and the ESP could reconfigure itself. Much more thought is needed here but you get the idea.
OTA upgrades:
@simonvanderveldt   the following idea has been implemented on the ESP SDK.
I have read that the ESP can do over the air upgrades thus allowing the system to upgrade itself. It is critical that all devices can be updated with minimum effort and this feature will be killer. It would be great if the ESP could act as an ICSP for the Arduino and you could upload a new sketch to the Arduino using this feature. Complete remote upgrades.
Documentation:
More tutorials, WIki documentation and how to get started articles needs to be published. I firmly believe this framework has great potential however potential not realized is a great waste. While not  a very difficult project to start with I do believe there can be a bigger market if there was more clear documentation and maybe some easy to implement circuits etc.
Anyways it is getting late here I just thought I would make some notes on the items I had on my mind,

@simonvanderveldt  ek sien jy is van die nederland. Het gedink jy is van daardie deel van die wereld.

Any updates on this ? @tuanpmt

In my opinion, OTA should not be integrated into the core part of the library. OTA is already possible with this project as it is. But if/when the app code is separated out from the transport code an OTA example could be added.
For SmartConfig, I believe it can be done, but it's outside of the MQTT spec. I think it would be better suited as a separate project since MQTT is meant for TCP.


[WIP] Entity specific analytics

@Pralish moving forward please create your branches on this repo. You have write access!


Upstream merge 7/28

Linked to #293

For an easier comparison, check the diffs of this branch vs. upstream/dev: https://github.com/bloom-housing/bloom/compare/dev...CityOfDetroit:upstream-merge

I checked every file carefully myself using this diff view as well as the diff view in the comment above. @abbiefarr @avaleske could you double check the changes to classes relevant for filtering?
Also to note: all the changes in backend/core/migrations and most of the backend-swagger.ts changes are formatting only.

Thanks for the review!


Starting with build 3098, some Hyperdecks stuck on "Connecting"

After upgrading to build 3098 of Companion, which introduced " feat: timecode countdown and select clip from list", around half of my Hyperdecks are stuck on "Connecting."
I'm able to send actions to them, and although the button variables don't initially load once I send an action they do. So they're obviously connected, but something is not right with the status.
Deleting and re-adding the instance has the same result.
Out of my 7 Hyperdecks:
OK: 2 Studio Pros, 1 Mini
Stuck on Connecting: 3 Studios, 1 Mini

Sorry to hear it's not quite living up to expectations. What firmware versions are these decks on? It would be very helpful if you could connect to one of the failing decks over TCP (using something like putty or netcat) and give me the output from the clips get command
For what it's worth I ran all my testing on a mini so we should certainly somehow be able to get it to work again :)

It sounds like it might be firmware related, given you have one Mini that works and one that doesn't.
Most of my testing is on a Studio, so would be good to get to the bottom of this.

Ok, updating to 7.1.3 firmware on one of the problem decks  and updating Companion again I got this bug on all of the Hyperdecks. I confirmed it's showing the "Connected to a Hyperdeck Studio" in the logs, but the instance status is stuck on Connecting.

Hi, I'm having the same issue with. both Hyperdeck Studio. 12G's (6) and Hyperdeck Studio Mini's (2).
Status shows connecting but can control decks.

This was being caused by code attempting to get a list of clips before setting the connected status. There was an assumption that there would be clips to return, and when there weren't the code got stuck waiting.
Should now be fixed.


Top level pom

Just cloned project, and tried to build. Might be helpful if there is a top-level pom so one can just run man install. Either that or add info in your README to run mvn -f JGDMS/pom.xml

Added build instructions to README.
Thank you.


std.json doesn't parse duplicate keys

Răzvan Ștefănescu reported this on 2021-12-20T07:07:00Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=22612
CC List

basile-z
Salih Dincer

Description
auto j = parseJSON(`{ "key": 1, "key" : 2 }`);
writeln(j); //outputs only {"key":2}

Of course, j["key"] contains 2, value 1 gets lost in translation.

According to ECMA-404:

"The JSON syntax does not impose any restrictions on the strings used as names, does not require that name strings be unique, and does not assign any significance to the ordering of name/value pairs"

rumbu commented on 2021-12-20T16:34:11Z
(In reply to anonymous4 from comment #4)
> A documentation issue, right?

Yes, if we assume that std.json is not ECMA compliant.

I don't understand why stdx.data.json didn't replace already the old std.json. It can handle also my case of duplicate keys since the parser is public.

rumbu commented on 2021-12-20T15:03:57Z
(In reply to Salih Dincer from comment #1)
> Probably, but the 2nd object with the same name is overwritten with the 1st.
> In summary, data points to a single object.
>
> NodeJS has the same effect:
>
> const jsonStr ='{"name":"Salih","age":42,"name":"SALIH"}';
> const data = JSON.parse(jsonStr);
>
> var assert = require('assert');
> assert(data.name != "Salih");

I don't expect anything else from JavaScript :)

I would never post this if I didn't encounter such json in the wild. Initially I had the same reaction, but the client providing that json stream pointed me to the ECMA standard and I lost all my arguments. I know that in the corresponding RFC says that you SHOULD not have duplicate keys, but SHOULD is interpreted by some people as "CAN".

There are npm packages even for node.js which can handle duplicate keys. The ideea is that as long as duplicate keys are allowed in the standard, at least std.json can provide in the documentation that last value wins (there are other approaches - first value wins, error, silently transform duplicate keys in arrays).

salihdb commented on 2021-12-20T09:14:40Z
Probably, but the 2nd object with the same name is overwritten with the 1st.  In summary, data points to a single object.

NodeJS has the same effect:

const jsonStr ='{"name":"Salih","age":42,"name":"SALIH"}';
const data = JSON.parse(jsonStr);

var assert = require('assert');
assert(data.name != "Salih");

b2.temp commented on 2021-12-20T10:48:42Z
the spec quoted is clearly only about syntax, not about semantics of conflicted keys. off-topic but yaml is better on that aspect.

dfj1esp02 commented on 2021-12-20T15:29:23Z
A documentation issue, right?

salihdb commented on 2021-12-20T17:17:50Z
> ... at least std.json can
> provide in the documentation
> that last value wins ...
You're right...


Add notebook sample with write.

This README contains notebook sample with write example.
Closes #1459
Signed-off-by: Revital Sur<EMAIL_ADDRESS>Co-authored-by: Mohammad Nassar<EMAIL_ADDRESS>

Why is this example in testdata/notebook/README.md and not in the QuickStart page?

Why is this example in testdata/notebook/README.md and not in the QuickStart page?

Hi @shlomitk1, I asked not to put it into the QuickStart for now. We'll move it there after implementation of other write use cases.

Thanks for the comments! will create a new pr based on the latest suggestions.


add type anntation for better documentation

Since this is used in https://gatling.io/docs/current/advanced_tutorial/#step-01-isolate-processes it would be better to label the type of the value, so that people would have a easier time to get it to compile.

Thanks for contributing, but those types are inferred and not explicit for a reason: they are not part of the public API (which is the DSL) so we can change them if needed.


[21.05] cacert: 3.63 -> 3.66

Motivation for this change
mozilla says this is CA version 2.50, up from 2.48 in nss 3.63
(cherry picked from commit e579e93b6517c29af8b84641d2ec16a064d34c8b)
Partial backport of #123048
Things done

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

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

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Added a release notes entry if the change is major or breaking
[x] Fits CONTRIBUTING.md.

LGTM but perhaps pick https://github.com/NixOS/nixpkgs/pull/124969 as well so we can run a more "streamlined" upgrade mechanic here.


Unexpected ACK received for message-id

Hello,
sometimes I'm getting ACK error messages from a consumer. After googling a bit I found that I need to pass ACK header in  acknowledge method.
I doing it but anyways. Could you please advice?
Here is the code:
# consumer
  def run
    id = SecureRandom.uuid
    @logger.info "Starting #{self.class.name} with client ID: #{id} at #{Time.now}"
    @client = AsyncHandler::ActiveMQ::Client.new(logger: @logger)
    @logger.info "Connected to<EMAIL_ADDRESS>                 " server with STOMP<EMAIL_ADDRESS>
    @client.subscribe("/queue/#{@queue}", { 'id' => id, 'ack' => 'client' } ) do |message|
      body = ::Marshal::load(message.body)
      @logger.info "[#{Thread.current.object_id}-#{@queue}-#{id}] got message: #{message.headers['message-id']}, body: #{body}"
      execute(body)
      @client.acknowledge(message, message.headers)
    end
  rescue => e
    @logger.error "Error in message processing! #{e.message} #{e.backtrace.join('\n')}"
 end

Here is the error message
/Users/retgoat/.rvm/gems/ruby-2.4.1@nebenan/gems/rake-12.2.1/lib/rake/trace_output.rb:20:in `write': Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-58984-1519877225506-3:9789:-1:1:14] (Stomp::Error::ProtocolException)

Thanks a lot!

Hi - several points:
Number 1:
Yes:
@client.acknowledge(message, message.headers)

should work with the gem.
I am assuming that your client is compatible with the gem.  You do not have an instance of Stomp::Client.  So that makes it hard to tell.  If you can, show me your 'require's.
Number 2:
With the exception you show (Stomp::Error::ProtocolException), your broker has likely returned an ERROR, and the body of the error contained a Java stacktrace which happened in the broker.
You should modify your broker's configuration to produce detailed stomp logs.  Then inspect those logs and examine the stacktrace.
This error make me think that .... something other than ACKs might be wrong.

Here is the message from ActiveMQ log
2018-03-14 14:13:41,897 | WARN  | Exception occurred processing: ACK -> org.apache.activemq.transport.stomp.ProtocolException: Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-50431-1521011395844-3:3:-1:1:2] | org.apache.activemq.transport.stomp.ProtocolConverter | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:50489@61613
2018-03-14 14:13:42,269 | WARN  | Exception occurred processing: ACK -> org.apache.activemq.transport.stomp.ProtocolException: Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-50431-1521011395844-3:3:-1:1:4] | org.apache.activemq.transport.stomp.ProtocolConverter | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:50489@61613
2018-03-14 14:13:42,594 | WARN  | Exception occurred processing: ACK -> org.apache.activemq.transport.stomp.ProtocolException: Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-50431-1521011395844-3:3:-1:1:6] | org.apache.activemq.transport.stomp.ProtocolConverter | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:50489@61613
2018-03-14 14:13:42,956 | WARN  | Exception occurred processing: ACK -> org.apache.activemq.transport.stomp.ProtocolException: Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-50431-1521011395844-3:3:-1:1:8] | org.apache.activemq.transport.stomp.ProtocolConverter | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:50489@61613
2018-03-14 14:13:43,329 | WARN  | Exception occurred processing: ACK -> org.apache.activemq.transport.stomp.ProtocolException: Unexpected ACK received for message-id [ID:MacBookPro-Roman.local-50431-1521011395844-3:3:-1:1:10] | org.apache.activemq.transport.stomp.ProtocolConverter | ActiveMQ Transport: tcp:///0:0:0:0:0:0:0:1:50489@61613

Here is the client initializetion code
class AsyncHandler::ActiveMQ::Client
  delegate :publish, :join, :acknowledge, :subscribe, :connection_frame, :uuid,  :close, to: :@client

  def initialize(config: {}, logger: Logger.new(STDOUT))
    config_hash = config.empty? ? Rails.configuration.x.active_mq : config
    @client = ::Stomp::Client.new(config_hash.merge(logger: logger))
  rescue => e
    logger.error("#{e.message} #{e.backtrace.join('\n')}")
  end
end

Thanks for assistance!

One more addition. It seems  this is normal for client ack mode.
Please see https://markmail.org/thread/4am76tb6ilzqzgul#query:+page:1+mid:7vqxye63a5ikl3gm+state:results
I tryed to use client-individual ack mode as well, but with no luck again.
Any ideas?
Thanks!

My ideas are that your code is running ACK's out of order (with :ackmode => "client").  That is the only way I can recreate that AMQ message here.
You need to figure out why that is happening - and not do it.
Get some additional debugging information.
Suggestion 1:
More STOMP logging.  Here is how (this is also explained on the AMQ web site).
Modify your activemq.xml configuration file to add STOMP tracing.  The trace=true part in this example:
<transportConnector name="stomp" uri="stomp://<IP_ADDRESS>:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600&trace=true"/>

Also modify the log4j.properties file that AMQ uses.  Add lines like the following:
log4j.logger.org.apache.activemq.transport.stomp=TRACE, stomp
log4j.appender.stomp=org.apache.log4j.RollingFileAppender
log4j.appender.stomp.file=${activemq.base}/data/stomp.log
log4j.appender.stomp.maxFileSize=4096KB
log4j.appender.stomp.maxBackupIndex=5
log4j.appender.stomp.append=true
log4j.appender.stomp.layout=org.apache.log4j.PatternLayout
log4j.appender.stomp.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
log4j.additivity.org.apache.activemq.transport.stomp=false

When problems occur, look in the stomp.log file for clues.  This is a great debugging tool.
Suggestion 2
Add detection of ERROR frames when you are processing messages.  You really should do this all the time.  Something like this example:
c.subscribe("/queue/aq", :ack => "client", :id => "subscription-id") {|m|
  puts "Msg: #{m.inspect}"
  raise "ERROR detected" if m.command == "ERROR"
  # Normal processing follows .....
}

I can not recreate this at all using "client-individual".  That seems to indicate that there is some logic in your code that is ..... not well understood.  With "client-individual" ACK order should not matter.

@gmallard thank a lot!
I clarified that the above behavior only reproduces when I starting more than one consumer per queue
So, I think this is a kind of race conditions.
Anyways, thanks for your help!
Would be great and very appriciated if you could advise something in this situation.
Anyways I'll close the ticket when I'll find the solution

If all of the following are true:

:ackmode => "client"
SUBSCRIBE an a given queue is called multiple times

You are in a situation where multiple threads (the SUBSCRIBE callback) are receiving simultaneously from the same queue.  (the callbacks are separate threads.) If the callback logic includes sending ACKS, then you are for sure in a situation with a race condition.
I am thinking you should:

Have a single method that may issue ACKs
Force single threading in that method - use a mutex to accomplish this
Have this method examine message headers to see if an ACK really needs to be done
If an ACK is needed, send it.  Otherwise send nothing

Call this method from the SUBSCRIBE callback.
With ActiveMQ you should be able to examine the 'message-id' and determine if a subsequent message has already been ACK'd.  Or you could add a user header when the messages are originally written to track this (example: :msgseq => #####), and examine that data.
As I said above, if you use :ackmode => "client-individual" this should not be required.  Examine the stomp.log file to make sure that your SUBSCRIBE's use the correct ackmode.  Note:  in the scenario you describe do not use different ackmode's for the different SUBSCRIBEs.  That is just asking for trouble.
A curiosity question:  is this a JRuby engine or standard Ruby?

Thanks @gmallard I came to the same conclusion.
So I solved the issue by forking the processes like this:
module AsyncHandler::ActiveMQ
  class Processor

    def self.run(concurrency: 2, daemon: false, debug: false)
      concurrency.times do |i|
        fork do
          self.new(concurrency: concurrency, daemon: daemon, stat: i, debug: debug).start
        end
      end
      Process.waitall
    rescue Interrupt
      @logger.info "Shutting down"
      shut_down
      exit(0)
    end

    def initialize(concurrency: 2, daemon: false, stat:, debug: false)
      @concurrency     = concurrency.to_i
      @daemon          = daemon
      @stat            = stat
      @debug           = debug
      @logger          = Logger.new("#{Rails.root}/log/active_mq.log")
      @pidfile         =<EMAIL_ADDRESS>      @workers_started = nil
    end

    def start
      @logger.info "Starting #{@concurrency} workers #{@daemon ? 'in daemon mode' : ''} of each of #{workers.map { |w| w.class.name }.join(", ")}"
      check_pid
      daemonize if @daemon
      write_pid
      trap_signals
      redirect_output
      start_workers

      while !@quit
        sleep(1)
      end

      if @quit
        shut_down
      end
    rescue Interrupt
      @logger.info "Shutting down"
      shut_down
      exit(0)
    end

    private

    # Some non important stuff here

    def workers
      @workers ||= [AsyncHandler::ActiveMQ::Workers::DefaultQueueWorker,
                    AsyncHandler::ActiveMQ::Workers::HeavyQueueWorker].map { |w| w.new(logger: @logger, debug: @debug) }
    end

    def start_workers
      workers.each { |w| w.run }
      @workers_started = true
    end
  end
end

So, now all working perfectly! Many thanks!


sentry: adds additionally integrations

Any news? I would be very usefull on production. Thanks.

Closed by #64


[$500] IOU - IOU report is duplicated in LHN after emptying Merchant field and saving it

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Go to staging.new.expensify.com
Request money from another use
Click on IOU preview two times to enter detail page
Click on the merchant
Empty the merchant and click Save

Expected Result:
IOU report is not duplicated in LHN
Actual Result:
IOU report is now duplicated in LHN. The duplicate disappears after the page is refreshed
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.58-1
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/5a1d9189-a03a-4972-88f3-f75a7e4fd739
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01a14404ef51543e9e
Upwork Job ID:<PHONE_NUMBER>359842816
Last Price Increase: 2023-09-07

Proposal
Please state again the problem we are trying to solve in this issue.
IOU report is duplicated in LHN after emptying Merchant field and saving it.
What is the cause of this issue?
After emptying merchant field and saving it, BE returns error as below.

So the following failureData is merged.
https://github.com/Expensify/App/blob/766dd656af85ae73057f4db02664d9b4b919ceae/src/libs/actions/IOU.js#L1020-L1038
But iouReport.report is undefined (this should be a typo), so report_undefined will be merged into Onyx.
Because report_undefined's content is just same with iouReport, so this will be displayed in LHN.
Therefore, IOU report is duplicated.
What changes do you think we should make to solve the problem?
We should change iouReport.report to iouReport.reportID in this line.
Merchant field should not be empty.
Thus we should add validating whether merchant field is empty or not in EditRequestMerchantPage.

Add a validate function as below.

    const validate = () => {
        const errorFields = {};
        if (_.isEmpty(merchantInputRef.current.value)) {
            errorFields.merchant = 'iou.error.emptyMerchant';
        }
        return errorFields;
    };

Add validate props to Form.

    <Form
        ...
        validate={validate}

Add 'iou.error.emptyMerchant' translation key.

What alternative solutions have you investigated? (Optional)
None.

Might be related to https://github.com/Expensify/App/issues/24608#issuecomment-1688742711

Cool, reproduced and I'll open it up!

I think will be fixed with this PR as not allowing empty merchant.

This https://github.com/Expensify/App/pull/26373 disallow empty merchant.
But if EditMoneyRequest API fails, still appear duplicated IOU report.
I think we should fix this bug.

@jjcoffee What do you think?

Hmm so looks like @Pujan92 is correct, that PR did fix the issue (it has been merged now and this particular issue is no longer reproducible), but @StevenKKC is also correct that there's a typo in the failureData, i.e. iouReport.report is used instead of iouReport.reportID, so if there is ever any error there will always be a duplicate report added as we'll be looking for an undefined report ID to merge into. I'm not sure how we'd normally handle this, should it be a new issue? @garrettmknight

@jjcoffee Let's fix that issue here! @StevenKKC can you propose the fix?

Updated proposal.

@StevenKKC's proposed fix LGTM!
:ribbon::eyes::ribbon: C+ reviewed

@StevenKKC looks like the automation didn't work, but I've assigned you. Please get the PR up when you get a chance.

@garrettmknight @jjcoffee PR https://github.com/Expensify/App/pull/27194 is ready for review.

Issue not reproducible during KI retests. (First week)

@garrettmknight PR was deployed to production, but the title was not updated and I haven't received an offer. Could you please take a look at this?

@StevenKKC / @jjcoffee sorry for the wait on this one, slipped through the cracks with the 'Reviewing' label on it.
Summarizing payments for this issue:

Contributor: @StevenKKC $500
Reviewer: @jjcoffee $500 paid via Upwork

Upwork job: https://www.upwork.com/en-gb/ab/applicants/1697289310359842816/job-details

@StevenKKC Going to move this to monthly while your Upwork account gets sorted out. Ping me when it does and I'll complete payment.

@garrettmknight I am afraid to let you know that My Upwork account is suspended so I couldn't get paid with my account. May I send proposal with my friend's account?

Hey @StevenKKC we're only able to pay through your account since it's verified by Upwork. Once you've got your Upwork account working again I'll pay.


Added Firebase setup steps for android

I prepared this while I implemented the steps. I hope they are verbose enough. The whole setup doesn't require any code alterations. Only files touched in the making of this PR are only the README, the added google-service.json from following the steps and the untracked files by successfully building both the debug build and a release build
resolves #16

@miquelbeltran I also at first felt the debug variant was complicating things, but there is a use case for the separate projects that make sense, i.e. you don't want data from development and debugging showing up in your release build analytics.

The original idea was not to have two apps, but to have two different Firebase projects for Debug and Release, because even when you have two apps in a single Firebase project the Firestore database is the same, something we wanted to avoid. We never implemented analytics.


Releasedrafter

Fixed release drafter for HassClient too

Coverage increased (+0.2%) to 78.49% when pulling 5dc695c20332d6830f0add21826649a2988f7931 on release-drafte into efd3e37b20863310d9c05a1c3f076073b007cb5e on dev.

Coverage increased (+0.2%) to 78.49% when pulling 5dc695c20332d6830f0add21826649a2988f7931 on release-drafte into efd3e37b20863310d9c05a1c3f076073b007cb5e on dev.


Add culture invariant writer

Tests are currently failing on some European culture systems. Add culture invariant writer to resolve this.

using System;

nit, could you add this header?
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.

Refers to: src/Microsoft.OpenApi/Writers/FormattingStreamWriter.cs:1 in c49a853. [](commit_id = c49a85351371ae4fe19d67613279559e2ef8ff77, deletion_comment = False)

Missed the header, sorry. Resolved.

Looks good to me. I'll check it in. Thanks for contributing!


Issue serializing classes/structs with static variables of the same type

Trying to serialize this struct:
public struct Color {
  public byte R, G, B;
  public Color(byte r, byte g, byte b)
  {
    R = r;
    G = g;
    B = b;
  }
  public static Color Zero = new Color(0, 0, 0);
}

causes a stack overflow.
Initial issue was the byte types. After adding the byte types (along with all the missing numeric types for other classes that need it) it gets stuck at the static (goes into the static and then in the static it finds the static again and so on).
I've bypassed it for now by adding  && !fieldInfos[i].IsStatic to the check if a field is public and seems to work.
It will be an issue if someone has a class with public static variables that he wants serialized.

Serializing static variables shouldn't be supported I think - I will add your suggestion. Thanks!

Fixed and added unit tests for it


RedisLock.acquire(...) requires key to be passed

The ability to pass key to RedisLock.acquire makes little to no sense. The key is already stored in RedisLock.key.
Example of poor usage that this pattern allows:
pool = Redis(await create_pool(...))
key = 'some:key'
lock = RedisLock(pool, key)
await lock.acquire('other::key')

I'm currently implementing an async version of
https://github.com/sebleier/django-redis-cache/blob/master/redis_cache/backends/base.py#L409
and will need to do await lock.acquire('some:key', wait_timeout=0) which smells since I already passed the key when I instantiated lock.

🥳


Why keep closing un-transpilation issues?

This is a (multiple allowed):

[ ] bug
[X] enhancement
[X] feature-discussion (RFC)

I made an issue long ago with ESM issues: https://github.com/nolimits4web/swiper/issues/3073 today I discover I have an issue using React Id Swiper because of this very same issue. Not only that but this issue is happening for more people https://github.com/kidjp85/react-id-swiper/issues/273
What surprises me is the fact that this was reported and the issue (3047) was deleted too which seems odd enough.
So, my question is why do you keep silencing these issues when they are real and they make using your library for older browsers a nuisance? I assume you don't want that as, otherwise, you wouldn't have continued with Swiper this long.
Can we move forward and try to fix this situation? If not, what's preventing it from happening?
Thanks.

There is nothing to fix and there is no situation. Is it so hard to add these few lines to webpack config?
module: {
  rules: [
    {
      test: /\.(js|jsx)$/,
      use: 'babel-loader',
      include: [
        resolvePath('node_modules/swiper'),
        resolvePath('node_modules/dom7'),
        resolvePath('node_modules/ssr-window'),
      ],
    },
    ...
  ...
}

Or import UMD bundle instead.
What is the issue? ES modules will not be transpiled here, and main reason for this is tree-shaking, transpiling classes will make it not tree-shakeable.


Click one queue -> Show corrsponding queue detail window

Click Queue -> show corresponding queue detail window
Add destroy methods for message list and qm selector

Issue:

Is it possible to add a button on the QM block to trigger the QM detail windows? (since the current QM consists if multiple block objects, it is difficult to locate.)

One small bug I encountered: when creating a second QM inside our app, is the connection window and the first QM visualization overlap, mouse click in the connection window will be captured by the QM visualization in the background. For example, if I click on the input box for apikey, and the current viewpoint has DEV.QUEUE.1 in the background, the mouse click on the apikey input box would bring up the QM info panel.

LGTM

Sorry. There is a conflict with the main branch. Need re-review. 😂


Chore(fix): set asynctimerchan=1 on build

Set go:debug directive  "asynctimerchan=1" until https://github.com/golang/go/issues/69312 is fixed.

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

Project coverage is 45.42%. Comparing base (2469e7a) to head (ada8ee3).
Report is 195 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3761      +/-   ##
==========================================
+ Coverage   44.83%   45.42%   +0.58%
==========================================
  Files         265      281      +16
  Lines       14620    16059    +1439
==========================================
+ Hits         6555     7294     +739
- Misses       7313     7924     +611
- Partials      752      841      +89

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

Let's do it in go.mod instead as per (https://go.dev/doc/godebug). The main file also works, but it's buried somewhere deep instead of top level go.mod


OS-50 RegistryDaoLayer - refactoring first part

Summary of changes:

Created an init method to setup some common static, reusable vars
Created a startTransaction, commitTransaction methods that will take care of starting and committing a transaction, if the underlying database supports it.
Most places the if-else code blocks were doing a similar thing with minor variation in the params - removed such occurrences.
Left some TODO-Refactor in here for my reference.

Future work:

get rid of encryption and move it up
methodOrigin should be removed
align the interface to graphengine interface

Testing done (using postman):

Invoked add record (of type teacher) -> Added record success.
Deleted this record -> Delete success (can't issue a GET and retrieve)
Repeat 1 and Added an entity (obj) -> Added success (can issue a GET and retrieve the updated info).

Most of my initial commits failed due to missing application.yml.sample changes, unit-test case failure. I've learnt now, thanks for your patience.

There is new light thrown on refactoring the entire codebase. This PR can well be ignored and closed.


Question: how do you find the function hash "b61d27f6"

@bokkypoobah this is more a question than an issue
I've noticed this in your https://github.com/bokkypoobah/TheDAOData/blob/master/getTheDAOCreatedTokenEventsWithNonZeroExtraBalance_v3
else if (stack[0].substring(56) == "b61d27f6")
how did you come up with this and what does it mean?
I did some digging, but I didn't come up with much
by looking at this gist it seems to be the hash of the execute function

b61d27f6:  execute(address,uint256,bytes)

but I couldn't reproduce the hash from that signature
either using this https://emn178.github.io/online-tools/keccak_256.html
nor did I find it in the link you suggest to retrieve the fuction hashes
https://www.4byte.directory/signatures/?bytes4_signature=0xbaac5300
https://www.4byte.directory/signatures/?bytes4_signature=0xb61d27f6
which doesn't seem to work any more
by tracing the transactions and looking at the CALL functions stacks I've noticed that most (if not probably all) smart contract addresses have that function has as the first paramenter. Why is that?
for instance, here are the 2 CALL functions for transaction '0x694d35e8cacd209636e042e09681491ee82f15424e55db1e23fe7146af2337ad'
[{
    depth: 1,
    error: "",
    gas: 25007,
    gasCost: 96722,
    memory: ["0000000000000000000000003a1dd9ceec16c17d74a31f64040a77a6a6dec33d", "0000000000000000000000000000000000000000000000000000000000000102", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000003a1dd9ceec16c17d74a31f64040a77a6a6dec33d", "0000000000000000000000000000000000000000000000030927f74c9de00000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000000000000000000080", "0000000000000000000000000000000000000000000000000000000000000000"],
    op: "CALL",
    pc: 3215,
    stack: ["00000000000000000000000000000000000000000000000000000000b61d27f6", "00000000000000000000000000000000000000000000000000000000000002f1", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000030927f74c9de00000", "0000000000000000000000000000000000000000000000000000000000000084", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000030927f74c9de00000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000030927f74c9de00000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000000000000000015682"],
    storage: {
<PHONE_NUMBER>000000000000000000000000000000000000000000000000000106: "0000000000000000000000000000000000000000000000030927f74c9de00000",
<PHONE_NUMBER>000000000000000000000000000000000000000000000000000107: "0000000000000000000000000000000000000000000000000000000000004235"
    }
}, {
    depth: 2,
    error: "",
    gas: 25007,
    gasCost: 64055,
    memory: ["0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060"],
    op: "CALL",
    pc: 2761,
    stack: ["0000000000000000000000000000000000000000000000000000000000000966", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000980", "000000000000000000000000050f81ae80a07542a70bb52f15895e347164f867", "0000000000000000000000000000000000000000000000000000000000000000", "000000000000000000000000000000000000000000000002061aa4ddbe955555", "000000000000000000000000807640a13483f8ac783c557fcdf27be11ea4ac7a", "000000000000000000000000000000000000000000000001030d526edf4aaaab", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "000000000000000000000000000000000000000000000001030d526edf4aaaab", "000000000000000000000000807640a13483f8ac783c557fcdf27be11ea4ac7a", "000000000000000000000000000000000000000000000000000000000000d6e7"],
    storage: {}
}]

It is the first part of the sha3 hash of execute(address,uint256,bytes). In geth the following command produces the hash:
> web3.sha3('execute(address,uint256,bytes)')
"0xb61d27f68746b0955d4867ce6e77d35c62208909547ca5c62d2a533c00d5b837"
> web3.sha3('execute(address,uint256,bytes)').substring(0,10)
"0xb61d27f6"
This is the amount that is transferred by the wallet contract execute(...) function.
Thanks for checking.

hey thanks for your reply :) - I was still writing this follow up doubt :)
I also think there might be a mistake in line 74
else if (stack[0].substring(56) == "b61d27f6") {
        amount = web3.toBigNumber("0x" + stack[stack.length-3]);

try it like this
//the stack is saved from tracing transaction '0x694d35e8cacd209636e042e09681491ee82f15424e55db1e23fe7146af2337ad'
//and finding the first CALL
var stack =  {
    depth: 1,
    error: "",
    gas: 25007,
    gasCost: 96722,
    memory: ["0000000000000000000000003a1dd9ceec16c17d74a31f64040a77a6a6dec33d", "0000000000000000000000000000000000000000000000000000000000000102", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000003a1dd9ceec16c17d74a31f64040a77a6a6dec33d", "0000000000000000000000000000000000000000000000030927f74c9de00000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000000000000000000080", "0000000000000000000000000000000000000000000000000000000000000000"],
    op: "CALL",
    pc: 3215,
    stack: ["00000000000000000000000000000000000000000000000000000000b61d27f6", "00000000000000000000000000000000000000000000000000000000000002f1", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000030927f74c9de00000", "0000000000000000000000000000000000000000000000000000000000000084", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000030927f74c9de00000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000030927f74c9de00000", "000000000000000000000000bb9bc244d798123fde783fcc1c72d3bb8c189413", "0000000000000000000000000000000000000000000000000000000000015682"],
    storage: {
<PHONE_NUMBER>000000000000000000000000000000000000000000000000000106: "0000000000000000000000000000000000000000000000030927f74c9de00000",
<PHONE_NUMBER>000000000000000000000000000000000000000000000000000107: "0000000000000000000000000000000000000000000000000000000000004235"
    }
}

var amount = web3.toBigNumber("0x" + stack[stack.length-3]);

Outputs the warning
new BigNumber() not a base 16 number: undefined
    at raise (web3.js:14426:29)
    at web3.js:14414:33
    at BigNumber (web3.js:13461:28)
    at web3.js:2238:20
    at <anonymous>:1:14

Yup. The extraBalance amount is picked up by the statement
extraBalanceAmount = web3.toBigNumber("0x" + stack[stack.length-3]);
And the statement you highlighted picks up the amount that the wallet sends to The DAO.

yes I've seen that, but in the case the stack is like the one I wrote you earlier on
both amount and extraBalanceAmount are the same
they extract the same values from the stack
extraBalanceAmount = web3.toBigNumber("0x" + stack[stack.length-3]);
and
amount = web3.toBigNumber("0x" + stack[stack.length-3]);
therefore when you do
var theDAOAmount = amount - extraBalanceAmount; will be zero

more importantly the extraBalanceAmount is not at that index if the function is "b61d27f6"
there is no extraBalance at that function... you should probably avoid reading alltogether from that functions and only read the extraBalance if you can read the other 2 function hashes (""00000966" and "baac5300")

also, I've noticed that in the case the user sends an inputData with the call, the funcHash won't be at the index 0 of the stack, but will be shifted down 1 position to
stack[1].substring(56)
look for example at this transaction http://etherscan.io/tx/0xeea3be70ab2204693fb0bc30a37ab09aa47f790bd61f058efd7c2be4fa64a66b
where the input data is "dao"
the stack will be moved one index down

What happens is that I'm expecting the second "CALL" stack data to overwrite the amount figure.
var stack = ["0000000000000000000000000000000000000000000000000000000000000966", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000980", "000000000000000000000000050f81ae80a07542a70bb52f15895e347164f867", "0000000000000000000000000000000000000000000000000000000000000000", "000000000000000000000000000000000000000000000002061aa4ddbe955555", "000000000000000000000000807640a13483f8ac783c557fcdf27be11ea4ac7a", "000000000000000000000000000000000000000000000001030d526edf4aaaab", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "0000000000000000000000000000000000000000000000000000000000000000", "0000000000000000000000000000000000000000000000000000000000000060", "000000000000000000000000000000000000000000000001030d526edf4aaaab", "000000000000000000000000807640a13483f8ac783c557fcdf27be11ea4ac7a", "000000000000000000000000000000000000000000000000000000000000d6e7"];

var amount = web3.toBigNumber("0x" + stack[stack.length-3]);
console.log("amount: " + amount)
// amount:<PHONE_NUMBER>6666666667

And regarding your extra data in your Tx http://etherscan.io/tx/0xeea3be70ab2204693fb0bc30a37ab09aa47f790bd61f058efd7c2be4fa64a66b, here is the corresponding data from the spreadsheet
From	TokenOwner	CreatedBy	BlockNumber	TxHash	Timestamp	GMTDateTime	Amount	TheDAOAmount	extraBalanceAmount	TheDAOTokens	GasUsed	GasPrice	Cost	Nonce	Error
0x416bdadc20ae5238ea7b1373fb783e893d51048e	0x416bdadc20ae5238ea7b1373fb783e893d51048e	Owner	1537724	0xeea3be70ab2204693fb0bc30a37ab09aa47f790bd61f058efd7c2be4fa64a66b<PHONE_NUMBER>	Wed, 18 May 2016 04:08:13 GMT	35.985	31.2913043478	4.6936956522	3129.1304347826	82281<PHONE_NUMBER>0	0.00411405	0

oh yes.. seen it now :)
sorry.
but going back to the first question. how did you know to look for "b61d27f6" in the first place? :)

Reverse engineering. I used some sample transactions, extracted the "CALL" traces, searched for the addresses and amounts required then worked out which signature to look for. The 4bytes site was down so I did not document the function declaration for the wallet execute() but I saw the same signature across several wallet type transactions.
Thanks again for checking.
Something else to verify if you have the time - https://github.com/bokkypoobah/TheDAOETCTokenBalance .

ok, like I was doing too :)
I thought you might have a special trick :)
I've noticed also other types of func hashes
I've seen many "797af627"
for example in this
address: 0x7da7ec4d7342b0a088f3c0e9dea9a6bf92fb5088 txs: 3
transaction hash: 0xa1bf21e115847970a88ff433c70ecec22924c34961605e5777fa989c870e6ed4 - found 2 CALL functions:
CALL1 > s0: 797af627 	s1: 00000356
Has input Data 0x797af6271a8078d10979531767d0cf073228575b773df9e8c6975408a8c9c8246299455d
and found it also in other contracts and transactions like this
http://etherscan.io/tx/0xb53834fc8a6c3df178a84dd4026afeef3139ca4f0092c81546aaa2537fb09615
but I'm not sure what it means
thanks for your very instructive code :)


[eas-cli][eas-json] add developmentClient to metadata

Why
Add developmentClient to metadata. Companion to https://github.com/expo/universe/pull/13215.
How
Add developmentClient to metadata.
Test Plan
Test manually

/changelog-entry chore Add developmentClient to metadata