Attempt to get length of local 'certs' (a nil value)

Hi,
I'm using auto-ssl for a while now, but I'm facing some issues regularly.
Once in a while this error comes up. Which results in a handshake error. Restarting the nginx-instances solved the problem. I'm using Redis as storage.
2017/02/23 07:45:01 [error] 25#0: *3177 lua entry thread aborted: runtime error: /usr/local/openresty/lualib/ngx/ocsp.lua:54: attempt to get length of local 'certs' (a nil value)   stack traceback:   coroutine 0:   	/usr/local/openresty/lualib/ngx/ocsp.lua: in function 'get_ocsp_responder_from_der_chain'   	.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:123: in function 'get_ocsp_response'   	.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:180: in function 'set_ocsp_stapling'   	.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:210: in function 'set_cert'   	.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:252: in function 'ssl_certificate'   	.../local/openresty/luajit/share/lua/5.1/resty/auto-ssl.lua:70: in function 'ssl_certificate'   	ssl_certificate_by_lua:2: in function <ssl_certificate_by_lua:1>, context: ssl_certificate_by_lua*, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443   2017/02/23 07:45:01 [crit] 25#0: *3176 SSL_do_handshake() failed (SSL: error:1408A179:SSL routines:ssl3_get_client_hello:cert cb error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443
What could be going wrong here?
Gino

So in tracing through the code, I think this should have only been possible if OpenResty's built in ssl.cert_pem_to_der or ssl.priv_key_pem_to_der functions failed for some reason. If those failed, then lua-resty-auto-ssl wasn't properly returning an error, so it would try to proceed with OCSP stapling, which leads to this nil value error.
I've fixed lua-resty-auto-ssl so that it will log and return a proper error when those builtin functions fail (https://github.com/GUI/lua-resty-auto-ssl/commit/035dcbaddbbe6b60cdbd0216c032b734c206b786), and that update is published in the v0.10.4 release. I've also included some fixes in v0.10.4 which should hopefully handle unexpected errors like this more gracefully (so you might not have to fully restart things if an unexpected error like this crops up).
That being said, I'm still not exactly sure why ssl.cert_pem_to_der or ssl.priv_key_pem_to_der would fail (I've never seen that before). So while v0.10.4 should hopefully help debug the real underlying issue (with better error logging), I'm not sure it will solve the real issue. For those built in functions to even be called, there has to be certificate data returned from storage (or a newly issued certificate with data), but then those DER functions fail for some reason. The fact that it works again after restarting nginx is curious, since that would seem to indicate the data stored in Redis is valid. So unless Redis is sometimes returning a partial or corrupted response, this is all a bit odd.
So could you try updating to v0.10.4 and then we can see what the logs say when those built-in functions fail? Sorry for the trouble and hassle, but hopefully with v0.10.4's logging we can get to the bottom of this. If you get better error logs from v0.10.4, could you also provide which version of OpenResty and OpenSSL you're running, and whether this seems to be happening for existing certs, or just when certs are renewed? Thanks!

I think i'm experiencing a similar error to this. Here are my logs:
{"log":"2017/03/23 10:20:16 [error] 56#56: *1071875 lua entry thread aborted: runtime error: ...re/lua/5.1/resty/auto-ssl/ssl_providers/lets_encrypt.lua:21: attempt to concatenate a nil value\n","stream":"stderr","time":"2017-03-23T10:20:16.473057068Z"}
{"log":"stack traceback:\n","stream":"stderr","time":"2017-03-23T10:20:16.473060427Z"}
{"log":"coroutine 0:\n","stream":"stderr","time":"2017-03-23T10:20:16.473064263Z"}
{"log":"\u0009...re/lua/5.1/resty/auto-ssl/ssl_providers/lets_encrypt.lua: in function 'issue_cert'\n","stream":"stderr","time":"2017-03-23T10:20:16.473067343Z"}
{"log":"\u0009.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:86: in function 'issue_cert'\n","stream":"stderr","time":"2017-03-23T10:20:16.473070704Z"}
{"log":"\u0009.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:112: in function 'get_cert'\n","stream":"stderr","time":"2017-03-23T10:20:16.47307377Z"}
{"log":"\u0009.../luajit/share/lua/5.1/resty/auto-ssl/ssl_certificate.lua:245: in function 'ssl_certificate'\n","stream":"stderr","time":"2017-03-23T10:20:16.47307742Z"}
{"log":"\u0009.../local/openresty/luajit/share/lua/5.1/resty/auto-ssl.lua:70: in function 'ssl_certificate'\n","stream":"stderr","time":"2017-03-23T10:20:16.473080429Z"}
{"log":"\u0009ssl_certificate_by_lua:2: in function \u003cssl_certificate_by_lua:1\u003e, context: ssl_certificate_by_lua*, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443\n","stream":"stderr","time":"2017-03-23T10:20:16.473083802Z"}
{"log":"2017/03/23 10:20:16 [error] 56#56: *1071875 lua entry thread aborted: runtime error: ...re/lua/5.1/resty/auto-ssl/ssl_providers/lets_encrypt.lua:21: attempt to concatenate a nil value\n","stream":"stderr","time":"2017-03-23T10:20:16.47308708Z"}
{"log":"2017/03/23 10:20:16 [crit] 56#56: *1071874 SSL_do_handshake() failed (SSL: error:1408A179:SSL routines:ssl3_get_client_hello:cert cb error) while SSL handshaking, client: <IP_ADDRESS>, server: <IP_ADDRESS>:443\n","stream":"stderr","time":"2017-03-23T10:20:16.473152026Z"}

About 2 minutes after this happens, the docker container becomes totally unresponsive and only a restart fixes it. I'm on v0.10.3-1 of this plugin.

Hey,
I've upgraded to the latest version and now i get the following error in my logs:
*23036 [lua] ssl_certificate.lua:265: ssl_certificate(): auto-ssl: failed to run do_ssl: ...re/lua/5.1/resty/auto-ssl/ssl_providers/lets_encrypt.lua:15: attempt to concatenate a nil value, context: ssl_certificate_by_lua*

This seems to be around time when new certificates are generated.

@domharrington: Thanks for reporting this and for the details! I think I was able to track down what was happening. The line number on the error backtrace was a bit off for some reason, but the culprit was hook_secret being nil. The only way I think this could happen is if the shdict used for caching certs data in memory ran out of space. I think this in turn could lead to things becoming unresponsive if new certificates were being registered (because without the secret, the internal communication becomes rather broken).
So if this theory is correct, you might need to increase the configured size of lua_shared_dict auto_ssl in your nginx config. I estimated that for each 1MB, you can store 100 certificates, but that estimate might be off. But does this seem like it could be the issue in your setup, or do you not have that many certificates for this to make sense?
In any case, I've released v0.10.6, which I'm hoping should fix this in a couple different ways:

The hook secret is stored in a different way, so it shouldn't ever be subject to getting evicted from the cache, like it was before.
If the lua_shared_dict used for caching data begins to run out of memory, more explicit errors are logged to nginx's error log, suggesting that you raise the configured amount (but the server should still be operational when this happens due to the first change--just less efficient).

I'm hoping those updates in v0.10.6 should make things less fatal and easier to track down if your configured amount of memory is too low. This might also explain some other unresponsive issues a couple other people reported, but we were never able to get to the bottom of, so thanks again for the report.
Caveat: I'm not entirely certain this error is related to the original issue @gjongenelen reported.

Hey @GUI thank you very much for investigating this and coming up with a potential solution.
We do currently have lua_shared_dict set to 1m, and we a few hundred certs. I will try bumping this limit now and hopefully that will solve the problem!
Thank you very much again for taking the time to look into this. I will upgrade to 0.10.6 now.
Dom

@domharrington did you experience any more issues after bumping the limit and upgrading to the latest version?

@luto nope. It's been very stable since deploying the latest update.

Great, thank you for confirming! Going to go ahead and close this then.


Update The Mod

Is your feature request related to a problem? Please describe.
I'm Using 1.19.4 And Higher With Quilt And That Mod Is For 1.8.9 Witch Is A Very Legacy version
Describe the solution you'd like
Seding The Updates To The Newer Versions Of Minecraft And Make It COmpatible With Forge, Fabric And Quilt
Describe alternatives you've considered
Send Realeses To The Versions 1.8.9,1.9,1.10,1.11,1.12,<IP_ADDRESS>,1.15,1.16,1.17,1.18,1.19 And 1.20
Additional context
It Should be Acessible In Newer , Plese UPDATE

We are currently working on a complete rewrite for Fabric 1.19.4 and 1.20.1, and in the future newer versions as well. Older versions (before 1.19.4) won't be supported unless there are a lot of requests to do so.  See https://github.com/ChatTriggers/ctjs for that repo.

We will most likely never update the mod for Forge. The Fabric update is mostly complete. I believe Quilt is a fork of Fabric and so shouldn't be hard to support, but if it does require significant support, it probably won't happen without an equally significant demand for it. If you want to try out the new 3.0 beta (for 1.19/1.20 Fabric), join our Discord and check our the beta-discussion channel.


Ask for confirmation before start a long and expensive operation

It would be good to ask for confirmation before start to upload 1000 files.
Also have a flag to skip the confirmation like --confirm or -y.

Tracking this one internally.


I Work done on like,dislike and bookmark

kindly review the work doneo the like and unlike feature for the Night Tales app

please work on only assigned files


Implement STFT in Python based on RFFT

That would get us a step closer to converting the entire model (including the FFT parts) to Core ML.

With https://github.com/apple/coremltools/pull/1824 this might not be needed after all


[Feature Request] Add context menu for tray icon

Please add context menu for tray icon, because when you turn the application in the system tray, it can be closed only through the Task Manager.

Thanks! I've forgot that there's no quit command on Windows. I'll add it in a couple of days and publish an update.

It's closed. To update, please, download a new version.
There's a strange bug with auto-updater on Windows... I'm still researching it.

@antelle Yes I noticed a bug with auto-update. Already downloaded the new version, thanks!

Hope it works for you, if you notice something strange, please reopen this issue. For me, the only problem now is close if you have unsaved changes (shows a question instead of silent locking; will be fixed in v0.5 with merge sync).


Python Install Script Does Not Work.

'/quiet' is not recognized as an internal or external command, operable program or batch file.
Operating System: Windows 11, with already a Python 3.10 installed.

无法还原，或许是与已经安装的python冲突？


Blank storage on crash

It seems that ThreatDragon nulls out a model when crashing. I had just made a model a couple of days ago, stored and everything looked fine. At some point when I wasn't at my computer the Dragon crashed leaving the json file completely blank.
Nearly blank that is:
{
"summary": {
"title": "New Threat Model"
},
"detail": {
"contributors": [],
"diagrams": []
}
}

Hello @gobrtg - sorry to hear that TD crashed on you. What version were you running, and what operating system?
The json you list is the new and empty threat model that TD creates when needed, with a default file name of new-model.json. Did you save your threat model as a different file name?

Hey jgadsden, thanks for the quick response.
I had saved the file, and opened it again several times with no big issues. The version I'm running is 1.2.0 on Win10.

Hello @gobrtg - could you upgrade to version 1.3.1 ? I think there was an issue where there was a possibility that the model could be overwritten in version 1.2 and earlier ... but I can not remember which issue it was (I am getting old ;-) )
The updates can be found here:
https://github.com/OWASP/threat-dragon-desktop/releases
Sorry again to hear about the loss of your work, I know how aggravating it is

Ok, thanks a lot jgadsden. Yeah, not a good feeling when it sinks in. But, I'll give it another try. Even though it has some short comings, I like the ThreatDragons simplicity. So thanks to all of you guys laying down the hours to deliver this to the community, and keep up the good work. If all goes well and I'll continue to use the Dragon I'll post issues as I go along.


the output for Q4_gguf is strange again!!

Current Behavior
the output of Q4 model is very strange.

And I see there was ever such a bug, in https://github.com/SJTU-IPADS/PowerInfer/issues/77 and also I see you have given a solution in commit id 79986ec58853c23e6df3d277b6724b83e996b3e2 which I switched to run is good, but it is strange again in the newest version, may I know what have you changed? And can you give me some advice on this problem? And the commit id I use is 61cac9bf25e60336bbad27ada9dbb809204473ac
And now I found that if I build the program using only cpu, the output will be ok. That is, if I build it using GPU, the output will be strange.

I meet this issue too!


Question on handling time

Hello and thank you for this piece of software. I think it fits my niche. What I would like to understand though is how to handle time delays in the flow. For example I want to run an interaction only in case some event has happened and some time has passed since (e.g. in marketplace scenario interaction to remind seller of awaiting order 24 hours after order has been submitted ).  Would I need to solve this outside of the context of the recipe or can it be solved inside the recipe.
Thank you

Hello Michael, you will have to solve it outside of the recipe as Baker doesn't have a concept of time. You can pre-condition the interaction you would like to be triggered with an extra sensory event called RemindSeller or something like that. There are many ways to implement a timer, for example a cron job in your OS or k8s for example.


Recents on homepage

This wires up the recents on the home page (with sparse local data):

Fixes #149

Hold on, I just realised I'm taking the full set of records from the view. Should we limit this to 6 each in the query? Or just take what the materialized view returns, which is 10 at the moment?

10 sounds good.
After that's done, I'm happy with this so go ahead and merge.

Marking draft - I broke a test


Add this repository to QA Dashboard

Add this repository to QA Dashboard

It's already part of the QA Dashboard as can be seen there:
https://fabric8-analytics.github.io/dashboard/dashboard.html


PoS Window Upgrade: Not clear where in the 2016 block window we are

In the PoS Window Blowup, it's not clear where in the 2016 window we are currently. This would be useful to help see if we are on target for the 75% or not.
Perhaps on the stacked chart on the right, you could change the Y Axis to the 10080 to get a feel for the number left?
On the non-blowup, the bar graph filling up with votes with the 75% marked, perhaps votes which aren't V4 should show filling in from the right, so you can see visually if there is enough votes left in the window to make the 75% or not?
Also, isn't 5*2016=10080 votes, not 10012 votes?

I just recently updated the site, so take another look.
For the difference between 10080 and 10012, while that's true that is the total number of vote in the interval.  If any votes were missed, they are basically abstains.  Or in a different way to say it:  a vote version must be 75% of votes issued (not total available votes).  (eg blocks that have 3/5 or 4/5 votes)

I agree that some work can be done to make it more clear as far as stake interval progress

Would it be possible to show where in the static window you are with a line, similar to the % votes line?
So you would see:
Window
<----------------><                >
Votes
<------------><                     >
To visually see if we are behind or ahead of the needed votes?
Or you could combine them in one bar, so the non-V4 votes fill in right-to-left, and the v4 Left-to-right. When they meet the window is complete. That way you could see if we are on track to hit, or couldn’t possibly hit the 75% target?
Combined:
<--------------><             |  ><+++++>


feat(jsonnet): support setting extVars

extVars is a concept of Jsonnet that allow to inject data into the compiler
from the command line.
At Grafana, we have a build-image whose tag must be consistent across all CI
systems, so we use such an extVar for this.
To be able to adopt drone-cli (were using plain jsonnet before) we need this
functionality exposed :D

Hey, could this possibly be merged? Would be cool if we could do the switch to drone-cli over at grafana/loki :D

I would be able to merge that, but I would like to get the opinion of brad


Corrupted image when processing video of "uncommon" size

I have a problem when I try to play movie (1028 × 956) from GPUImageMovie in GPUImageView. Corrupted picture is shown. I have no problem when I work with videos with "common/standard" sizes (1024x768 for example). Problem easily to reproduce if you make screen recording of part of the screen with QuickTime (or other recording tool) and then use this file in SimpleMovieFilter. I find same problem in GPUImage Ver1. I think it is not a problem of SimpleMovieFilter sample, it is problem of GPUImage framework. I think problem is in GPUImageMovie, I meet it in my application which use GPUImage.
I really hope that you fix this issue or tell me how to fix it
p.s. thank you for you powerful framework!
I attached corrupted image.

Thank you


[CT200] SyntaxError encountered while sending request! Double-check login details!

Describe Your Problem:
I've checked, and double checked the details on the config.  The account password matches what I use to login to the Bosch account.
The access key is correct... but in the Bosch App it's called 'Access code' - I removed the spaces when entering it in the config.
Serial key is correct... but in the Bosch App it's called 'Serial number'.
All I keep getting in HomeBridge is the following:
[CT200] SyntaxError encountered while sending request! Double-check login details!
Logs:
[CT200] SyntaxError encountered while sending request! Double-check login details!
Plugin Config:
{
    "bridge": {
        "name": "Homebridge 4442",
        "username": "0E:BC:22:31:44:42",
        "port": 51920,
        "pin": "440-36-562"
    },
    "accessories": [],
    "platforms": [
        {
            "name": "Config",
            "port": 8581,
            "platform": "config"
        },
        {
            "access": "zFjBAV9ywfZyXPpV",
            "serial": "101205381",
            "password": "XXXXXX-XXXXXX-XXXXXX",
            "away": true,
            "zoneInterval": 2,
            "auxInterval": 5,
            "zones": [
                {
                    "index": 1,
                    "name": "Thermostat"
                }
            ],
            "platform": "CT200"
        }
    ]
}

Screenshots:

Environment:

Plugin Version:v2.2.0
Homebridge Version:
Node.js Version:
NPM Version:
Operating System:

I've worked out the password for your BOSCH ID account is the WRONG one to use.   You need to go to 'Settings' > 'Personal' > 'Change Password' and set a password here.
With the current EasyControl - you only use the BOSCH ID to authenticate.

Great that you figured it out yourself! I'll add these instructions to the README so that other people with the same problem can see the solution. Closing.


How to set setScaleType() like GiraffePlayer?

is there any to setScaleType or i just want to fit the video with parent but right now having some space in top and bottom of videoview.

+1


The desperately awaited collision detection.

@juliusv
I'll run this tomorrow in practice, but here you get the code to review.

PHAL. @matthiasr 's idea put into action, and comments addressed.

:+1: besides last typo


start_wallet.exe taking a lot of CPU

Describe the bug
While running the windows GUI, I found that even after syncing, it consumes a lot of CPU. I checked it in the task manager and hunted it down to the start_wallet.exe. It constantly takes 8-13% of the CPU.
To Reproduce
Steps to reproduce the behavior:
Start the GUI, check in in the task manager
Expected behavior
start_wallet should only take 0 to 3%, mostly 0. Like the original Chia wallet

Hello @naymecliff  - What version of DogeChia are you running? Are you still seeing this excessive CPU behavior? Did you install windows binary or from source? - I am having difficulty reproducing your issue. Any additional information would be most helpful. Thanks.


'ExternalGit' deployments fail

I, too, am having issues though I'm able to run locallly. When I set up the Function App for Deployment from External Git (a GH repo) the deployment says it's succeeded

but no Functions ever load (and no errors are shown in portal).

When I log into Kudu for the function app I can eventually get to logs which show:
[07/26/2021 19:43:45 > 099c13: SYS INFO] Run script 'Consumer.net5.exe' with script host - 'WindowsScriptHost'
[07/26/2021 19:43:45 > 099c13: SYS INFO] Status changed to Running
[07/26/2021 19:43:46 > 099c13: ERR ] Unhandled exception. System.UriFormatException: Invalid URI: The hostname could not be parsed.
[07/26/2021 19:43:46 > 099c13: ERR ]    at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
[07/26/2021 19:43:46 > 099c13: ERR ]    at System.Uri..ctor(String uriString)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Grpc.Net.Client.GrpcChannel.ForAddress(String address, GrpcChannelOptions channelOptions)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.GrpcServiceCollectionExtensions.<>c.<AddGrpc>b__1_1(IServiceProvider p) in D:\a\1\s\src\DotNetWorker.Grpc\GrpcServiceCollectionExtensions.cs:line 58
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:46 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitIEnumerable(IEnumerableCallSite enumerableCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService[T](IServiceProvider provider)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.RunAsync(IHost host, CancellationToken token)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(IHost host)
[07/26/2021 19:43:47 > 099c13: ERR ]    at Consumer.net5.Program.Main() in C:\home\site\repository\Consumer.net5\Program.cs:line 12
[07/26/2021 19:43:47 > 099c13: SYS ERR ] Job failed due to exit code -532462766
[07/26/2021 19:43:47 > 099c13: SYS INFO] Process went down, waiting for 60 seconds
[07/26/2021 19:43:47 > 099c13: SYS INFO] Status changed to PendingRestart

I, too, am using Dependency Injection for the TelemetryConfiguration object (due to #549)
If I then disconnect the External Git deployment from the Function App and use func azure functionapp publish locally, it succeeds and the Functions load in Azure without issue:
Uploading 6.95 MB [###############################################################################]
Upload completed successfully.
Deployment completed successfully.
Syncing triggers...
Functions in consumerzfk5ilpbbn6zu5:
    ClearDeadLetterServiceBusQueue - [TimerTrigger]

    EventGridProcessorAsync - [EventGridTrigger]

    EventHubProcessorAsync - [EventHubTrigger]

    ServiceBusQueueProcessorAsync - [ServiceBusTrigger]

    StorageQueueProcessorAsync - [QueueTrigger]

The code I'm deploying can be found here.
Possibly related to #553?

Huh, I'm the one that posted 553. Your message mentions "Unhandled exception. System.UriFormatException: Invalid URI: The hostname could not be parsed." Which sounds like an event that occurs after DI is completed. It sounds like you have a bad URI being parsed. Not sure it's related.

Huh, I'm the one that posted 553. Your message mentions "Unhandled exception. System.UriFormatException: Invalid URI: The hostname could not be parsed." Which sounds like an event that occurs after DI is completed. It sounds like you have a bad URI being parsed. Not sure it's related.

No URIs to be parsed in my setup and it works perfectly w/ the same code deployed  via func azure functionapp publish from my local machine.
Additionally, on the Portal when I "Show Logs" for the deployment from Git it doesn't appear to have any problems:
Command: "C:\home\site\deployments\tools\deploy.cmd"
Handling .NET Console Application deployment with MSBuild16.7.0.
Determining projects to restore...
Restored C:\home\site\repository\Consumer.net5\Consumer.net5.csproj (in 1.08 min).
CSC : warning CS8032: An instance of analyzer Microsoft.Azure.Functions.Worker.Sdk.Analyzers.WebJobsAttributesNotSupported cannot be created from C:\home\.nuget\microsoft.azure.functions.worker.sdk.analyzers\1.0.0\analyzers\dotnet\cs\Microsoft.Azure.Functions.Worker.Sdk.Analyzers.dll : Could not load file or assembly 'Microsoft.CodeAnalysis, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.. [C:\home\site\repository\Consumer.net5\Consumer.net5.csproj]
Consumer.net5 -> C:\local\Temp\8d95071bc166005\app_data\jobs\continuous\deployedJob\Consumer.net5.dll
Determining projects to restore...
Restored C:\local\Temp\wi3aptfw.ope\WorkerExtensions.csproj (in 1.31 min).
WorkerExtensions -> C:\local\Temp\wi3aptfw.ope\buildout\Microsoft.Azure.Functions.Worker.Extensions.dll
1 file(s) copied.

Finished successfully.

@ahmelsayed Is this a problem with the kudu build script not working with .NET isolated projects?

I'm going to close this as stale... at first glance it seems to be related to Grpc options being passed in as the worker is starting. If anyone is able to repro this, feel free to re-open and ping me.


Aang/develop/449 dmft endorsements

Hi @andrew-ang-ntt when the PR is ready for review add the Ready For Review label from the side menu on the PR


Changes in some other forks

Not sure how active you are with this library or if you stopped working on this at all.
But https://github.com/HawkEyeInnovations/nodeeditor/commits/master had some interesting visual changes, which might be interesting.
If you dropped this project at all please let me know.

Not sure how active you are with this library or if you stopped working on this at all.
But https://github.com/HawkEyeInnovations/nodeeditor/commits/master had some interesting visual changes, which might be interesting.
If you dropped this project at all please let me know.

I'm sorry @IceflowRE , I completely missed this one. I just rebased the develop branch with paceholder's master with the commits of one week ago.
Casually I found this fork you mentioned just today and I was considering about testing that changes. Have you tested those? Can you give me some feedback?

Unfortunately no idea yet, i joust found out about those libraries because iam searching such node libraries for a proprietary project.

Unfortunately no idea yet, i joust found out about those libraries because iam searching such node libraries for a proprietary project.

Feel free to give any feedback then

About forks with visual improvement I'm mostly not merging, the reasons are:

Mostly are not completed.
Styling is a bit fragile, I'm concerned about diverging in a non-reversible way from the original repo.
Changes often seems very specific to the application they're building on and no much general purpose.

If these three conditions were met, it would be simpliest to make a pull request toward paceholder's repo, and if not merged during a time then try to merge here.

About forks with visual improvement I'm mostly not merging, the reasons are:

Mostly are not completed.
Styling is a bit fragile, I'm concerned about diverging in a non-reversible way from the original repo.
Changes often seems very specific to the application they're building on and no much general purpose.

If these three conditions were met, it would be simpliest to make a pull request toward paceholder's repo, and if not merged during a time then try to merge here.


photo attribution

we need to add photo credits.
i like out they do this on site jeff designed:
http://www.conservationalliance.com/success-stories/

click on the camera and the credits appear.
most of the photos will be from lechphoto, but we'll probably have some from other sources as well.

lmk where to add photo attribution. lech is the photographer for most of the photos in there, but will also be getting some from 500px and maybe other places.

photo attribution can be added to photos from the manage images section of outerspatial and they will show up on the images


Question: Why does Rubytus use Goliath?

First of all, thank you for sharing this with the world, it was very inspirational to dive into the source code.
But I'm curious, why does Rubytus use Goliath instead of a regular synchronous framework? I feel like using EventMachine is awesome when you're doing a lot of IO (e.g. HTTP requests), because then everything is asynchronous. But Rubytus only writes to filesystem, which is very fast. And even if it's not, it's currently still synchronous.
So just out of curiosity I wanted to know why did you decide to use Goliath? Is it because of its ability to terminate the request before the request body is received?

Ok, I got it now. So I think the main advantage of Goliath over other web frameworks here is that it supports this part of the tus specification of the PATCH request:

The Server SHOULD always attempt to store as much of the received data as possible.

Since Goliath is a thin wrapper around EventMachine, it allows you to save however much data was sent in a PATCH request before it was terminated. Which is what tus-js-client does at the moment, it just sends a PATCH request with the whole file, and counts that in case of interruption the server would save whatever was received so far.
Rack-based web frameworks don't have that, as I see from the code none of the Puma/Unicorn/Thin currently allow forwarding the request to the Rack app if the connection was terminated, which means that any received data is lost.
I opened https://github.com/tus/tus-resumable-upload-protocol/issues/89 to hopefully relax this constraint. But until then Goliath is the only one that can properly resume an interrupted PATCH request, because it saves any received data in case of interruption. Tus-js-client can be configured to send data in chunks, but sending a single PATCH request is probably faster and preferred. And that answers my original question 😃


Add more permissions settings to benchmark CI

Pull Request Test Coverage Report for Build<PHONE_NUMBER>2
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 72.505%

Totals

Change from base Build<PHONE_NUMBER>6:
0.0%

Covered Lines:
1424

Relevant Lines:
1964

💛  - Coveralls


perf: improve facet pipeline performance

[x] Add logic to sort and limit earlier if there is no facet search

Fails

:no_entry_sign:
This PR has failing tests. Please alleviate the errors and commit them

Warnings

:warning:

Branch being merged does not follow Git Flow

:warning:
The README has not been updated. Please update the README.

Messages

:book:
Could not find any browser results.

  Generated by :no_entry_sign: dangerJS against 62b9f4608047a816c7a607da81680334a8e4b89a

@daedalus28 @Akrion @dubiousdavid @doug-patterson Do you think I should add unit tests for these implementation details which are here purely for performance reasons?
I feel like it might be getting a little too far into the weeds to test that specific stages are run before other stages.  Does anyone have any reasons that we should have tests for this?  The main one I considered was for documentation, but I'm not sure it's worth making these tests more fragile.

@daedalus28 @Akrion @dubiousdavid @doug-patterson Do you think I should add unit tests for these implementation details which are here purely for performance reasons?
I feel like it might be getting a little too far into the weeds to test that specific stages are run before other stages. Does anyone have any reasons that we should have tests for this? The main one I considered was for documentation, but I'm not sure it's worth making these tests more fragile.

We should have some tests just to make sure that someone doesn't look at this in the future, think "why is weird", simplify it, see the tests passing, and then wreck your shiny new performance gains.


WIP: Fuzz testing!

This PR is adding a module that can be used for fuzz testing (thanks for the i
term @cowanml!).  This module is attempting to break the RunEngine by throwing
random messages at it and making sure it can recover into a usable state.  This
PR is still WIP because I am not using all possible message types yet.  I also
need to throw keyboard interrupts at random points too.
Things left to do in this PR:

[ ] Make sure I am throwing all (or at least most) of the messages at the RunEngine
[ ] Weave in full scans from bluesky.examples and bluesky.plans with the random messages and random interrupts
[ ] Throw complete garbage messages at the RunEngine just to see what happens.

Messages that are passed in to the RunEngine:

[x] create
[x] save
[x] read
[x] null
[x] set
[x] trigger
[x] sleep
[ ] wait
[x] checkpoint
[x] clear_checkpoint
[x] pause
[x] collect
[x] kickoff
[x] configure
[x] stage
[x] unstage
[ ] subscribe
[ ] unsubscribe
[x] open_run
[x] close_run
[ ] wait_for

Did you look at any of the python fuzzers out there?
Looks like there's a handful:  Fusil, Fuzzing, Sulley, ...

@cowanml I did not look at any fuzzing frameworks.  Truthfully, I never even thought about looking for fuzzing frameworks

Is it the desired behavior that sending an 'unstage' message to the RunEngine with an object that has not been staged will raise a KeyError?
Minimum reproducible example:
from bluesky.examples import motor
from bluesky import Msg
from bluesky.tests.utils import setup_test_run_engine
RE = setup_test_run_engine()
RE([Msg('unstage', motor)])

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-1-2ed377aa2d7f> in <module>()
      3 from bluesky.tests.utils import setup_test_run_engine
      4 RE = setup_test_run_engine()
----> 5 RE([Msg('unstage', motor)])

/home/edill/dev/python/bluesky/bluesky/run_engine.py in __call__(self, plan, subs, raise_if_interrupted, **metadata_kw)
    567                 exc = self._task.exception()
    568                 if exc is not None:
--> 569                     raise exc
    570             if raise_if_interrupted and self._interrupted:
    571                 raise RunEngineInterrupted("RunEngine was interrupted.")

/home/edill/miniconda/envs/bs35/lib/python3.5/asyncio/tasks.py in _step(***failed resolving arguments***)
    237                 # We use the `send` method directly, because coroutines
    238                 # don't have `__iter__` and `__next__` methods.
--> 239                 result = coro.send(None)
    240             else:
    241                 result = coro.throw(exc)

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    739             logger.error("Run aborted")
    740             logger.error("%s", err)
--> 741             raise err
    742         finally:
    743             # call stop() on every movable object we ever set() or kickoff()

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    713                         raise
    714                     except Exception as e:
--> 715                         self._genstack[-1].throw(e)
    716                     self.log.debug("Response: %r", response)
    717                 except KeyboardInterrupt:

/home/edill/dev/python/bluesky/bluesky/run_engine.py in <genexpr>(.0)
    558         if not isinstance(gen, types.GeneratorType):
    559             # If plan does not support .send, we must wrap it in a generator.
--> 560             gen = (msg for msg in gen)
    561         self._genstack.append(gen)
    562         self._new_gen = True

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    709                         coro = self._command_registry[msg.command]
    710                         self.log.debug("Processing %r", msg)
--> 711                         response = yield from coro(msg)
    712                     except KeyboardInterrupt:
    713                         raise

/home/edill/miniconda/envs/bs35/lib/python3.5/asyncio/coroutines.py in coro(*args, **kw)
    204         @functools.wraps(func)
    205         def coro(*args, **kw):
--> 206             res = func(*args, **kw)
    207             if isinstance(res, futures.Future) or inspect.isgenerator(res):
    208                 res = yield from res

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _unstage(self, msg)
   1247             return
   1248         result = obj.unstage()
-> 1249         self._staged.remove(obj)
   1250         return result
   1251

KeyError: mover: motor

Messages left to hit:
{'collect',
'configure',
'kickoff',
'null',
'pause',
'sleep',
'subscribe',
'unsubscribe',
'wait',
'wait_for'}

Also todo: Include example scans in bluesky.examples  in the list of messages that I can throw at the RunEngine

Also todo: discuss and probably back out this change: https://github.com/NSLS-II/bluesky/pull/380/files#diff-918281cac085be7995578c4c2c57cd4eR1325.

These docstrings are very welcome! I expect they will be helpful to @hhslepicka and others who joined this party after the RunEngine methods had been written.

@danielballan @klauer @tacaswell Fuzzing found another way to get a user unfriendly exception out of the RunEngine.  If you have an open run and call collect before kickoff on a flyer:
from bluesky.examples import motor, det, MockFlyer
from bluesky.tests.utils import setup_test_run_engine
from bluesky import Msg
flyer = MockFlyer(motor, det)
RE = setup_test_run_engine()
RE([Msg('open_run'), Msg('collect', flyer)])

produces
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-8-2bbedb405a50> in <module>()
----> 1 RE([Msg('open_run'), Msg('collect', flyer)])

/home/edill/dev/python/bluesky/bluesky/run_engine.py in __call__(self, plan, subs, raise_if_interrupted, **metadata_kw)
    569                 exc = self._task.exception()
    570                 if exc is not None:
--> 571                     raise exc
    572             if raise_if_interrupted and self._interrupted:
    573                 raise RunEngineInterrupted("RunEngine was interrupted.")

/home/edill/miniconda/envs/bs35/lib/python3.5/asyncio/tasks.py in _step(***failed resolving arguments***)
    237                 # We use the `send` method directly, because coroutines
    238                 # don't have `__iter__` and `__next__` methods.
--> 239                 result = coro.send(None)
    240             else:
    241                 result = coro.throw(exc)

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    741             logger.error("Run aborted")
    742             logger.error("%s", err)
--> 743             raise err
    744         finally:
    745             # call stop() on every movable object we ever set() or kickoff()

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    715                         raise
    716                     except Exception as e:
--> 717                         self._genstack[-1].throw(e)
    718                     self.log.debug("Response: %r", response)
    719                 except KeyboardInterrupt:

/home/edill/dev/python/bluesky/bluesky/run_engine.py in <genexpr>(.0)
    560         if not isinstance(gen, types.GeneratorType):
    561             # If plan does not support .send, we must wrap it in a generator.
--> 562             gen = (msg for msg in gen)
    563         self._genstack.append(gen)
    564         self._new_gen = True

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _run(self)
    711                         coro = self._command_registry[msg.command]
    712                         self.log.debug("Processing %r", msg)
--> 713                         response = yield from coro(msg)
    714                     except KeyboardInterrupt:
    715                         raise

/home/edill/dev/python/bluesky/bluesky/run_engine.py in _collect(self, msg)
   1100                                          "run is open.")
   1101         obj = msg.obj
-> 1102         self._uncollected.remove(obj)
   1103         stream_name = self._flyer_stream_names.pop(obj)
   1104

KeyError: <bluesky.examples.MockFlyer object at 0x7f9a69322ac8>

Anyone object to catching this KeyError and raising an IllegalMessageSequence instead?

Is there any built-in protection from reading a detector before it has been triggered.  If not does it make sense to add such functionality?  I guess this assumes that there is always a 1:1 correspondence between trigger and read. Is that true?
I guess I'd propose something like this:
def __init__(self, ...):
    ...
    self._triggered = set()
    ...

def _trigger(self, msg):
    ...
    self._triggered.add(msg.obj)
    ...

def _read(self, msg):
    ...
    try:
        self._triggered.remove(msg.obj)
    except KeyError:
        raise IllegalMessageSequence("'read' message received before 'trigger' for object: {}".format(msg.obj))
    ...

I am confident that I do not understand all of the consequences of something like this, or if it is even useful.  Thoughts @danielballan?

I think we can leave it up to the object to set its own trigger/read rules and keep this complexity out of the RunEngine. For example, motors don't need to be (and can't be) triggered.
But I do think that the KeyError you spotted with "collect before kickoff" should be an IllegalMessageSequence.

I think we can leave it up to the object to set its own trigger/read rules and keep this complexity out of the RunEngine. For example, motors don't need to be (and can't be) triggered.

:+1: for less complexity. Thanks.

But I do think that the KeyError you spotted with "collect before kickoff" should be an IllegalMessageSequence.

Alright, updated in https://github.com/NSLS-II/bluesky/pull/380/commits/5ddbc2c42abf4222eddb57a26eb84ddf313a08e3
Thanks for the quick response :smile:

I am 50/50 on the collect IllegalMessageSequence  I could imagine a flyer that looks at some existing ring buffer which we might not need to actually kick off.  I suspect all of that logic is also going to get a bit of thrashing when we look into partial collection of flyers.

I am 50/50 on the collect IllegalMessageSequence

The only problem that this is solving is transforming KeyError -> IllegalMessageSequence.  Did you look at the change [here] (https://github.com/NSLS-II/bluesky/pull/380/commits/5ddbc2c42abf4222eddb57a26eb84ddf313a08e3)?

I think @tacaswell is suggesting that we use discard instead of remove, as we did previously for unstage, to allow users to collect from flyers that may have been kicked off previously (and that the RunEngine doesn't know about). I would rather not allow that until someone needs it, but if you forsee that use case as likely, then we should accommodate it now.

I think @tacaswell is suggesting that we use discard instead of remove

Ohhh ok, thanks. Sorry I misunderstood.  So IIUC the use case is reading a flyer multiple times?
Msg('open_run')
Msg('kickoff', flyer)
data1 = Msg('collect', flyer)
data2 = Msg('collect', flyer)

What should happen if collect is called before kickoff?

(this was sitting in my browser editor) -> That could also use discard and allow it to pass silently.
As with trigger/read that complexity should be shipped to the Flyer objects.

What should happen if collect is called before kickoff?

Basically the concern is _collect() returning data from the last scan. Sorry for not making that clear in my last post.  Is this something that should be taken care of by the stage/unstage methods on the flyers? IIRC all objects get staged/unstaged at the beginning/end of a scan?

And by "something" I mean stage initializes a ring buffer and unstage clears it (or something like that)

In all of the nicely packaged plan that is the case, but may not always be.
In general I think we should reserve IllegalMessageSequence for cases where the RE can not properly interpret the messages (ex 'save' without a paired 'create') and leave issues about detector state to the plan or object level.
The various caches are there to ensure that in the case of a non-graceful exit we can return  everything to a 'safe' state.

Ok, thanks.  I appreciate you guys being willing to bring me up to speed with the design decisions in the RunEngine.  I'll update the _collect to use set.discard() and not raise an exception.  We will leave dealing with collect-before-kickoff to the flyer objects to deal with.

This is ready for a review.  I am currently not sending four messages to the run engine: {'unsubscribe', 'subscribe', 'wait', 'wait_for'}.  One other thing that could be done is to just send total garbage messages at the run engine, but I'm not sure how useful that is.

Looks great! I think this is complete enough to merge. We can revisit later if inspired to add more coverage.
I took three careful passes through all the changes to run_engine.py and a look through the fuzz code. @tacaswell has signed off on this also.
Looks like it needs a rebase, then good to merge.

Looks great!

Thanks!

I think this is complete enough to merge. We can revisit later if inspired to add more coverage.

Sounds good to me.

Looks like it needs a rebase, then good to merge.

Rebased due to a merge conflict from fa817f0e6e5c70c6a37ec5601c9700d9bb7df791
Also got annoyed that my tests were failing because i didn't have ophyd/pyepics/epics installed and xray_vision.  The last three commits on this PR are pytest related things.  Happy to make that a separate PR if you want.
Should be good to go. Merge away


Feature:  Brackets for querybuilder

Is your feature request related to a problem? Please describe.
While doing complex WHERE expression with multiple and/ or , we need to group together particular condition inside brackets on the end query.
Describe the solution you'd like
Typeorm has Brackets
createQueryBuilder("user")
    .where("user.registered = :registered", { registered: true })
    .andWhere(
        new Brackets((qb) => {
            qb.where("user.firstName = :firstName", {
                firstName: "Timber",
            }).orWhere("user.lastName = :lastName", { lastName: "Saw" })
        }),
    )

which generates
SELECT ... FROM users user WHERE user.registered = true AND (user.firstName = 'Timber' OR user.lastName = 'Saw')

You can add a negated complex WHERE expression into an existing WHERE using NotBrackets
createQueryBuilder("user")
    .where("user.registered = :registered", { registered: true })
    .andWhere(
        new NotBrackets((qb) => {
            qb.where("user.firstName = :firstName", {
                firstName: "Timber",
            }).orWhere("user.lastName = :lastName", { lastName: "Saw" })
        }),
    )

Which will produce the following SQL query:
SELECT ... FROM users user WHERE user.registered = true AND NOT((user.firstName = 'Timber' OR user.lastName = 'Saw'))

Describe alternatives you've considered
Tried raw query
Additional context
https://github.com/typeorm/typeorm/blob/master/src/query-builder/Brackets.ts
https://github.com/typeorm/typeorm/blob/master/src/query-builder/NotBrackets.ts

I dont want to copy all typeorm features, this does not seem to be needed to me.


QuotaSubTree CPU requests in millicores

When specifying CPU requests in quota trees, the number given is assumed to be in millicores and not full CPUs. For example, cpu: 1000 is taken to be 1000m = 1 CPUs as opposed to 1000 CPUs. This deviates from Kubernetes convention where in order to specify millicores an m is appended at the end of the request.

This was closed by #367


Not syncing at all.. no way to force sync?

Hey @jasmeetchadha , you could press Command/Control + P on the keyboard in Obsidian to get the command palette and search for "resync".
Clicking on the "Omnivore: Resync all articles" will do the job.


Develop a scale testing framework

To run scale tests against a test deployment, so we can stay ahead of mainnet scale and fix issues before they affect users. [OpenTelemetry]

Actual stress test program is a Go program which speaks directly to REST API. Run manually for now.

Key thing to get out:

what is our QPS for many small jobs?


Invalid test is marked as valid

Not sure how to reproduce this. In output you can see that spec is failed but there is no error on the "ui" side

Also all tests are green when I run
mocha:Run All Tests

It seems like that the problem is that there are multiple tests  with the same name
we already open an issue about it
try to change the test names and let me know if you still see the problems


Change the way FastRoute is implemented to make use of cachedDispatcher

This would allow for changing out the dispatcher to use the cachedDispatcher, however the cachedDispatcher has some issues with the way we are handling routing. We also no longer need to extend RouteCollector as this all happens with the FastRoute function.
Example of how you would change the dispatcher.
$app = new Slim\App();
$app->get('/', function ($req, $res) {
    $res->write('Hello World');
});

// You can only change dispatcher after all your routes are defined
// as you will need them for the cachedDispatcher

$router = $app->getContainer()['router'];
$router->setDispatcher(\FastRoute\cachedDispatcher(function ($r) use ($router) {
  foreach ($router->getRoutes() as $route) {
    $r->addRoute($route->getMethods(), $route->getPattern(), [$route, 'run']);
  }
}, [
    'cacheFile' => __DIR__ . '/route.cache'
]));

$app->run();

You will notice this throwing an error at the moment as FastRoute is using var_export to create the cache file and by default var_export attaches __set_state to all objects it exports, so on re-import when it imports the code it will look for that method on every object and closure it exported.
There is also a secondary issue with cachedDispatcher if you add more than 1 route where we have an issue of circular referencing.

Let's plan on pulling this in for 3.1.

Now we can use the Route caching above without any issues at all, thanks to @nikic for pointing out that you can't serialize Closures, so a lookup table was necessary.
https://github.com/nikic/FastRoute/issues/63

:+1: Wanted to submit similar PR, but you were faster :) Ability to cache routes is crucial for apps with high load. Actually, it will be nice to have possibility to cache them in memory. @silentworks

Yeah - looks like a 3.1 issue as I can't get it work :)
This is my test case:
<?php
$app = new \Slim\App();

$app->get(
    '/',
    function ($request, $response) {
        return $response->write("Hello World!");
    }
);

$router = $app->getContainer()['router'];
$router->setDispatcher(\FastRoute\cachedDispatcher(function ($r) use ($router) {
    foreach ($router->getRoutes() as $route) {
        $r->addRoute($route->getMethods(), $route->getPattern(), [$route, 'run']);
    }
}, [
    'cacheFile' => __DIR__ . '/../route.cache'
]));

// Run app
$app->run();

I get this error: http://i.19ft.com/bbdea8a4.png

I'd like some of these changes for 3.0 though:

Updated RouteInterface and RouterInterface to match what we actually do
passing the router to dispatchRouterAndPrepareRoute()
Possibly the changes to Route & Router that affect the function signatures.

Since most of this stuff is internal there should be no user-land BC breaks right?

The interfaces would lead to BC breaks.

Okay. The problem was the way I was setting up the cachedDispatcher, not with the code itself. Once I fixed that, all was well.
I understand what the code does and why, so was happy to merge.


Adding Doxygen CI workflow to update documentation site

This should allow us to automatically update the Doxygen documentation based on whatever is currently live in the master branch.

Only will update as a PR is merged into master
Will only push the updated documentation into the gh-pages branch as Github Actions

Hey @tannergooding - if you could re-review when you get a chance? Thanks!


RuntimeError: Unable to cast Python instance to C++ type (compile in debug mode for details)

Environment:

ROS version: melodic
Python: 2.7
Velodyne type: VLP16

Issue
The default example in the README cause the following error:
    cloud_arrays.append(decoder.decode_message(scan_msg))
RuntimeError: Unable to cast Python instance to C++ type (compile in debug mode for details)

After installing the package in debug, I got
    cloud_arrays.append(decoder.decode_message(scan_msg))
RuntimeError: Unable to cast Python instance of type <type 'str'> to C++ type 'std::array<unsigned char, 1206ul>'

Workaround
To make the demo work (without changing the package), I had to convert each packet's data from a str type to a bytearray type
for packet in scan_msg.packets:
  packet.data = bytearray(packet.data)

By the way, thanks for sharing this package! Very usefull :)

This is now fixed in v2.0.0. Thanks for the bug report and debugging!


[Location Bug] CLLocationManager.swizzleMethods seems to block the showsUserLocation ability of MKMapView

Simply creating a new MKMapView and enable showUserLocation can reproduce this issue. MKUserLocation view will never show in a MKMapView instance.

Could you open a PR simulating this issue at the example?


Allowing boto keys to be passed directly to smart_open (#35)

Updated smart_open to accept an instance of boto.s3.key.Key as the
uri parameter.
Refactored S3OpenRead and S3OpenWrite to require only a
boto.s3.key.Key instance to work, and get the bucket directly from its
properties. This is not backwards compatible.
Commented out test SmartOpenReadTest.test_s3_boto temporarily.

I commented out one of the tests since I'm not very familiar with moto and I'm probably doing something wrong. This is the output I get:
Error
Traceback (most recent call last):
  File "/Users/asieira/.virtualenvs/smart_open/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
    return func(*args, **keywargs)
  File "/Users/asieira/Repositorios/smart_open/smart_open/tests/test_smart_open.py", line 139, in test_s3_boto
    smart_open_object = smart_open.smart_open("s3://mybucket/mykey")
  File "/Users/asieira/Repositorios/smart_open/smart_open/smart_open_lib.py", line 111, in smart_open
    return S3OpenRead(key, **kw)
  File "/Users/asieira/Repositorios/smart_open/smart_open/smart_open_lib.py", line 222, in __init__
    if not isinstance(read_key, boto.s3.key.Key):
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types

Thanks @asieira !
That's a weird error, not sure what's going on. Will have to check in more detail.

:bow:

@asieira
See comments in code. Refer to #45 for examples.
Please add the change description to the CHANGELOG and then it will be ready to merge

@asieira Thanks for the quick response. Waiting for the commit - going to release today.

There you go, @tmylk !

I see the new version was released as 1.3.1.
I would suggest that in the future the project follows the semantic versioning guidelines, which is what most developers expect these days. Under these guidelines, since new functionality was introduced by my PR, I believe the release version would have been 1.4.0.
No crisis, just a suggestion for future releases. :) Thanks again for the wonderful project!


Clicking on a large file in files page takes a long time to display

If you accidentally click on a large txt file, the preview takes a very long time to load, user might be unaware that it’s trying to display the file and think the site is frozen

This appears to be an issue with the experiment show files. I have not been able to get it to work for any files.


Why no task-specific fine-tuning // any plans?

If I understand correctly, the weights were used directly from BERT, with the only free parameters the LSTM+MLP layers:
"For simplicity, experiments are performed without
any hyperparameter tuning and with fixed BERT weights"

Why this choice?  I see the footnote that this is 2.5x slower, but that doesn't seem that prohibitive (is all relative, of course!), given that the original BERT paper (https://arxiv.org/pdf/1810.04805.pdf, section 5.4) observed a 1.5 point bump from fine-tuning on the downstream tasks.

Any plans to issue a second iteration of the paper with fine-tuning?  Seems like there might be a lot of upside left on the floor here.

Not a criticism, just 1) trying to understand how far SciBERT pushes things, in-domain, and 2) think this is neat and would love to see you push things all the way.  :)

Thanks for the interest.  We're currently in the process of doing the fine-tuning experiments :)  Look forward to the updated results when they finish


Reworded some of the text for C++ arrays

[X] I have read freeCodeCamp's contribution guidelines.
[X] My pull request has a descriptive title (not a vague title like Update index.md)
[X] My pull request targets the master branch of freeCodeCamp.
[X] None of my changes are plagiarized from another source without proper attribution.
[X] My article does not contain shortened URLs or affiliate links.

Thank you @sjames1958gm for your contribution and congratulations on your first PR merge to this repo! 🎉
Hope to see more contributions from you in the future.


Provide a user-friendly message if the /userinfo request fails, and update the README

A lot of people are going to mess up integration with the required REST endpoints the firsts time, which include...

The uPortal /userinfo endpoint
The FBMS /forms endpoint
The FBMS /submissions endpoint

We should...

Provide adequate coverage of this step in the README
Provide a user-friendly message in the UI if it doesn't work

Added user friendly message to the UI. on /userinfo and /forms of the fbms.

Awesome @cparaiso -- please don't forget to close the ticket when you've had a chance to touch the other aspects of this ticket.
Also, the bar for coverage in the README is not very high.  A few sentences is normally enough.

integrations for /submissions is inferred by existing properties. error messages for /submissions will be covered in Issue #13


Add create worklow task

Add "Create workflow" task to new workflows. The new task should result in a functional, permanent, workload cluster created out of the CAPI process.

/approve


style: 💄 remove unused isV6 internal function

Description

Breaking Changes

JIRA Link

Checklist

[ ] Updated the Readme.md (if required) ?

/fast-forward

:tada: This PR is included in version 27.0.0-beta.2 :tada:
The release is available on:

npm package (@beta dist-tag)
GitHub release

Your semantic-release bot :package::rocket:

:tada: This PR is included in version 27.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Somes CobbleStone Generator don't work with Pistons

Hi !
I've a little problem because If I try to use somes automatics generators with pistons, no custom blocs are generated because I've just cobblestone, to work I need to break all blocs with hand or tools I've try to add an bigger delay before blocks are pushed by pistons and he don't work.
Pistons : Don't work
Hand : Work
Into my configuration :
debug: false
options:
  generationModes:
    '0':
      firstBlock: water
      secondBlock: lava
  playerSearchRadius: 4.0
  money:
    format: true
  gui:
    showBarrierBlockIfLocked: false
    hideInfoIfLocked: false
    confirmpurchases: true
    admingui: true
  signs:
    enabled: true
  automation:
    pistons: true
  disabled:
    worlds:
    - world_nether
    - world_the_end

It's a SkyBlock, my world is named skyblock, If I try into an other world, it don't work with pistons.
 Thank u for this plugins and carry on. 👌
Sorry for my very poor english, just I doesn't like use google translator, because I would like learn more to upgrade my english level. 😂
King regard.
Ninatasia.

Nobody can help me ? :|

Hi sorry for no reply. I haven't had that much time. The piston bug may be fixed in the next version.
The other thing is not really a bug. It was not intended to only have items as a requirement. But it may be added in the future.

Phil

It would be great if it was solved and if it was also possible to buy with items / blocks and XP, it would make the plugin even more complete and it would do me a lot of service because I don't know how to do otherwise now: |
As a small idea, it might be nice to be able to organize the menu as desired, a bit like DeluxeMenu.
Otherwise great job for this magnificent plugins :)
Keep going like that.

The piston bug is noted see Issue #23 and the fix is currently being tested.
I'm in a hurry for the update to arrive.

I don't know if I have misunderstood your question but you can set items/blocks and XP as a price. So you can

If I config the price of the tier 4 into 10000$ and diamond block, the player need just to pay 10000$ and no diamond is removed and if the player haven't diamond block he can buy without.
And the required items don't apear into the menu.

There are going to be more config options to the GUI in the next version. But sadly not as customizable as DeluxeMenu

Very nice. :D


Feature/resolve issue 32

For some reason, in 14.3.37 it cannot resolve win_friendly_path from the windows cookbook.  This PR copies that functionality to the Helpers Library as a work around.
#32

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

Hi @estenrye
I tested this change today and it's good but I found a proper solution. Looks like I missed an include of "Windows::Helper" in resources\default.rb . Don't know why Chef didn't complain about this in earlier versions 😄
Solution is here: https://github.com/chef-cookbooks/windows/pull/555/files
action_class do
  include Windows::Helper
  require 'json'

Could you please update your PR to use include ?
Thank you in advance.

@ivadim I can do that.

@ivadim I have updated the PR as requested.

@estenrye thank you for the contribution. 👍


Documentation links have changed

The documentation links in the Godoc seem to have broken.
For example "https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#delete-an-app-token" should now be /rest/apps/apps/.

The documentation links in the Godoc seem to have broken.
For example "https://docs.github.com/en/free-pro-team@latest/rest/reference/apps/#delete-an-app-token" should now be /rest/apps/apps/.

Yes, the URLs on the GitHub documentation website change quite frequently. PRs are welcome to fix the links.
Thanks.


Fix: handle possibly not existing array property access

Fixes the following problems which throws a runtime exception:
object-get({}, 'children[1].foo')
object-get({ children: [{}]}, 'children[0].children[0].foo')

Hi, this fix looks good, thanks. Can I ask something - are you using this library directly in your own project? Or is this library a dependency of separate app/lib you are using?

Hi' Yes we are using it directly in our project that is where this issue came up last week.

OK.. Can I recommend you use _.get please? It is more complete. I am considering deprecating this package.

Sure, no problem. We also have alternatives introduced later in the development plus we recently introduced optional chaining + nullish coalescing which replaces these helpers in many cases. But older codes still relies on object-get which we will replace on demand probably.

I have released this fix but that will be the last one. Thanks.


Review Letter: Panel Transitioning Commands

Panel Transitioning commands
To ease the transitions across the 3 steps before sending letter, we want to use the 'enter command' to signify moving to the next step and implement locking for the accordion steps.

Tasks

[x] Create "next" buttons for each accordion panel

[ ] Create default, in progress and complete styles for the accordion as seen in the screenshot below:

[ ] Implement functionality so user is required to complete the steps in order

@nawazkhan @nawazeverlane


[bug] Detect Node Instead of Installing

Describe the bug
When first running a command, we see "installing Node " in the console. Moon should detect if node is installed and skip that step, or there should be a setting to disable installing node.
We manage our node versions with NVM and that's already been installed on the system. We don't mandate that our devs have to use NVM and can use a global install from another source, or build from source if they choose. Moon shouldn't assert a node install in this scenario.
This same idea applies to the installation of PNPM.
Steps to reproduce
Init a fresh Node+Moon repo
Expected behavior
No superfluous node installs.
Screenshots
Environment
MacOS Ventura
Additional context

@shellscape Sorry to say, but one workflow that moon is trying to solve is version differences across machines, both for developers and CI/CD. After years of supporting developers, relying on purely on nvm simply doesn't work (it's why we built proto https://moonrepo.dev/proto), so moon automates this and manages the toolchain behind the scenes. I'll actually say this is the biggest selling point to using moon, especially if you come from something like Bazel.
However! If you're so inclined, you can avoid the toolchain by not setting the version fields in toolchain.yml. This will fallback to the node available on the machine. https://moonrepo.dev/docs/guides/javascript/node-handbook#utilizing-the-toolchain

I see, and understood. I'd like to suggest that the docs could be improved to include the inverse to this:
Enabling the toolchain is as simple as defining the [node.version](https://moonrepo.dev/docs/config/toolchain#version) setting.

It wasn't clear that omitting the version would skip this node install portion of the toolchain. I understand that is def not what you all are going for, but it's helpful to understand that feature further.

The paragraph above that sentences talks about using the system binary. Should I reword it?

Perhaps. For what it's worth, I went through the "Getting Started" guide first and landed on this section https://moonrepo.dev/docs/setup-toolchain#configuring-nodejs. When I ran into the errors mentioned in the OP, I went to the "Utilizing the Toolchain" page via search. Between the two sections is where I think I was confused. It could just be PEBCAK on my part :D

Ah yeah that's fair, forgot about that page. I need to rewrite those docs, they're pretty old at this point.

Gonna close this since it's working as intended.
I did update the docs though: https://github.com/moonrepo/moon/pull/704


Engine - Add the ability to enable / disable / archive (delete) a Workflow

Add the ability to Archive a Workflow which will move it from active to inactive status. All the other calls / endpoints need to be updated to only work with Active Workflows. I.e. you can only submit an Active Workflow

Implemented three status types on a Workflow: active, inactive, deleted.
This way a workflow can be disabled (inactive) and not be able to be executed.

I wonder if 'deleted' should be 'archived' or or whether deleted should just 'delete it' and therefore its not a status but i dont think we can do that as it would make it hard to view WorkflowRuns... hmm

@timrbula @amhudson @gchickma @marcusdroy thoughts please

From the way I think about it, archived and inactive would mean an behave the same way. I don't think we want to actually delete any workflows.


Update C Language file

comments in C are never done with a # character so that pattern is removed
the symbol pattern is extended to support for preprocessor directives
a list of some commonly used preprocessor as well as some integer types were added to the list of symbols

Thank you for this proposition. I agree with you that the preprocessor directives should be highlighted not like comments but more like keywords.
Nevertheless I think that the current implementation is not wrong, it just chose to highlight all the preprocessor directive as comments. It doesn't mean that you can do comments in C using the '#'.
As for the uint8_t uint16_t I am a little bit perplexed because these are not part of the C language but are defined by a specific header file, "stdint.h" I think. While it is a standard header it is not always used and other libraries defines their own types for integers. Maybe we should stick to the rule of keeping only the core language elements in the syntax ?

Thank you for this proposition. I agree with you that the preprocessor directives should be highlighted not like comments but more like keywords.
Nevertheless I think that the current implementation is not wrong, it just chose to highlight all the preprocessor directive as comments. It doesn't mean that you can do comments in C using the '#'.

Sure it is not wrong but it definitely is less readable

not displaying anything starting with '#' as a comment will result in proper syntax highlighting

As for the uint8_t uint16_t I am a little bit perplexed because these are not part of the C language but are defined by a specific header file, "stdint.h" I think. While it is a standard header it is not always used and other libraries defines their own types for integers. Maybe we should stick to the rule of keeping only the core language elements in the syntax ?

[u]intN_t are part of the standard and have existed since C99
standard

<IP_ADDRESS>  Exact-width integer types
1 The  typedef  nameintN_tdesignates  a  signed  integer  type  with  widthN,nopaddingbits,  and  a  two’scomplement  representation.Thus,int8_tdenotes  a  signed  integertype with a width of exactly 8 bits.
2 The  typedef  nameuintN_tdesignates  an  unsigned  integer  type  with  widthN.Thus,uint24_tdenotes an unsigned integer type with a width of exactly 24 bits.
3 These  types  are  optional.However,  ifanimplementation  provides  integer  types  withwidths  of  8,  16,  32,  or  64  bits,  no  padding  bits,  and  (for  the  signed  types)  that  have  atwo’scomplement representation, it shall define the corresponding typedef names.

They are in a seperate header and not in the default set of types because 7.18.2 specifies

2 Types are defined in the following categories:—integer types having certain exact widths;

Though if highlighting them is undesired I'll gladly remove it

I actually prefer the version without the fixed width integer definitions please. For the rest I am fine with your proposition.

force pushed a version without the fixed with integers

Thank you, Jan.
Can I ask you to make the same kind of changes in the file language_cpp.lua in the franko/lite-plugins repository ?


Fix annotated tag support at HEAD

https://github.com/slsa-framework/slsa-verifier/issues/193
Currently, we exit early out of the verification when verifying annotated tags for less than version 1.3 OR HEAD
Fix, so we verify at HEAD

Fixed by https://github.com/slsa-framework/example-package/commit/e3df3310e6132df232d54955e17f0b38f3ba6689
Filed this issue in case we see any problems.
cc @laurentsimon


Data updates slower than in the Victron app device list

Hi,
More a question than an issue – in the first screen of the Victron Android app ("Device list"), the overview values that are displayed without connecting to a device seem to update a lot quicker than this library receives updates.  It's maybe once a second in the app, whereas the victron-ble library seems to receive updated values a lot slower, and it seems to vary by device – I have an Orion Smart, SmartSolar and SmartShunt – it's about every 10s for the Orion Smart and the SmartSolar, and many 10s of seconds for the SmartShunt.  Is that to be expected?  Does the app do something to increase the broadcast update rate even before connecting to a specific device?
Thanks,
Rob.

I too have exact same issue with a SmartSolar I'm seeing updates at about 10s too. I'm not sure how to resolve it here as I ended up writing my own script using bluepy instead of bleak so can answer the question:

Does the app do something to increase the broadcast update rate even before connecting to a specific device?

No. The advertising data is frequent, I can detect it at a rate of 1s without having to ask for faster data. I do have to interrupt the scanner and start it again once I get the data to avoid waiting for the scanner timeout to restart.
Maybe something similar needs to be done here.
I'd much prefer to use this app as its much cleaner than my hacked together script!

I found the source of the problem here: https://github.com/keshavdv/victron-ble/blob/main/victron_ble/scanner.py#L34
By removing the use of the _seen_data buffer I'm now getting updates every second or so, and they're not duplicated values either.  The problem with this code is that it's only looking for duplicated keys and is ignoring the fact that the values may have changed.

Ah, sorry, it's not quite as simple as that.  I had to do that AND call stop() then start() inside the callback, similar to what bobemoe described above.  I forgot I'd put those two lines of code in there.

Hi Rob,
I've experienced the same problem with my SmartShunt 500. Program is running pretty well, but BLE data is only updated every 11 seconds. I tried to copy your solution, but it didn't work out, interval is still unchanged. Where exactly did you place the stop() and start() code? Can you post that part of your code?
😊🙏

Where exactly did you place the stop() and start() code? Can you post that part of your code? 😊🙏

What I should have done was fork the repo, apply my changes, rebuild the package and install it.  What I actually did was edit the Python package in-situ.  I'm a bad person.
On my Pi, in /usr/local/lib/python3.9/dist-packages/victron_ble, in pycache, I did sudo rm *.pyc, and then I edited scanner.py, in BaseScanner, in _detection_callback:
        #if not data or not data.startswith(b"\x10") or data in self._seen_data:
        if not data or not data.startswith(b"\x10"):
            return

And then in my script, which uses the library, in class Scanner(BaseScanner), in the callback, which in my case unpacks the data and then rebroadcasts it to an MQTT server, I added stop() and start():
    def callback(self, ble_device: BLEDevice, raw_data: bytes):
        try:
            logger.info(f"Received data from {ble_device.address.lower()}: {raw_data.hex()}")
            try:
                device = self.get_device(ble_device, raw_data)
            except AdvertisementKeyMissingError:
                return
            except UnknownDeviceError as e:
                logger.error(e)
                return
            parsed = device.parse(raw_data)

            asyncio.ensure_future(super().stop())
            asyncio.ensure_future(super().start())

            asyncio.ensure_future(self.client.publish("victron/" + ble_device.address, payload=json.dumps(parsed, cls=DeviceDataEncoder)))

        except MqttError as error:
            logger.error(f'MqttError "{error}". Restarting...')
            sys.exit(1)
        except:
            traceback.print_exception(*sys.exc_info())
            logger.error('Restarting...')
            sys.exit(1)

Sorry that's a bit hand-wavey – I hope it helps.

Yes, that definitely help, thanks for your quick reply! Now I am down to an interval of about one second. 😃
Indeed, I also decided to change scanner.py directly. I even made a copy of it a module in my project. As my BLE connection is running in a dedicated thread, I had to add some code to realize the data handover from async function to thread. 🙂


Allow the Loki swarming session for day-of-learning

Which issue this PR addresses:

Allows the Loki team to swarm today on updates to the CI pipeline via a new "trunk" branch for this purpose (allows /azp run ci on this alternative branch)
What this PR does / why we need it:

Test plan for issue:

Is there any documentation that needs to be updated for this PR?

How do you know this will function as expected in production?

/azp run ci


Support clipboard copy on macOS

macOS has pbcopy for clipboard copying,
so I've added condition to switch command to copy to clipboard.

Oops, this kinda slipped by me: we should also update the docs, to reflect optional requirements.
I was about to do this and was wondering: is pbcopy preinstalled on macOS, or does it have to be installed separately?

pbcopy is shipped by default with macOS. no additional installation
required.


a slider to control pitch_coarse of a clip?

hi, i'm wondering how i would solve this issue - i'm trying to set up a slider on TouchOSC that would send out the /live/clip/set/pitch_coarse 0 0 x message with x being replaced by slider, but i can't seem to figure it out.

it seems that this is not the right format, so what am i doing wrong

it's sending
01:43:04.295 | SEND       | ENDPOINT(<IP_ADDRESS>:11000) ADDRESS(/live/clip/set/pitch_coarse 0 0 ) FLOAT(0.9986782)

but nothing seems to be happening. ableton is listening to 11000.

yep the solution was to change float to integer.
and to use float for mixer volume.
integer for clip transpose.


Integration error: whatsapp - Integration 'whatsapp' not found.

I get this message after installing and adding whatsapp: in the configuration.yaml
Configuration Warning
Integration error: whatsapp - Integration 'whatsapp' not found.
What can be the problem ?

Hello,
I have the same error.
I added whatsapp: in configuration.yaml file as required.

I had the same issue when i've installed it, but i've ignored it, config the addon and after i've restarted the host, after restart i had no errors, maybe it helps


Could not load file or assembly 'Microsoft.Build, Version=<IP_ADDRESS>'

As I have described here I'm having errors when trying to run omnisharp-roslyn on my project. Here is the log file:
omnisharp-roslyn.log
It has been 'anonymized'. I hope it is fine. Also, error messages are in french. I don't know how I can change them, sorry.
The project failing to load is configured for the .NET framework 4.8. When running, the following:
& "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\gacutil.exe" /l Microsoft.Build.Framework

I am getting the following result:
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.0
Copyright (c) Microsoft Corporation. Tous droits réservés.

Global Assembly Cache contient les assemblys suivants :
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Nombre d'éléments = 4

The assembly should be there no? I may have also run:
& "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\gacutil.exe" /i "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin\Microsoft.Build.Framework.dll"

However, it did not change anything.
I ran the following inside the directory containing the csproj of the project I'm trying to open and got:
SDK .NET (refl?tant tous les fichiers global.json)?:
 Version:   5.0.301
 Commit:    ef17233f86

Environnement d'ex?cution?:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\5.0.301\

Host (useful for support):
  Version: 5.0.7
  Commit:  556582d964

.NET SDKs installed:
  2.1.524 [C:\Program Files\dotnet\sdk]
  3.1.300 [C:\Program Files\dotnet\sdk]
  3.1.410 [C:\Program Files\dotnet\sdk]
  5.0.301 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.All 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.28 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.WindowsDesktop.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 3.1.16 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
  Microsoft.WindowsDesktop.App 5.0.7 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download

I hope we can help me debug this.
Also
I have tried a few steps mentioned on my omnisharp-vim ticket.
I'm not sure if I'm on the right track or what I'm missing. I would really appreciate help on this.

A relevant detail I got from the OmniSharp log is that you appear to have Visual Studio 2019 installed, which I would have expected to take care of all msbuild requirements

Can you share the repro project?

A relevant detail I got from the OmniSharp log is that you appear to have Visual Studio 2019 installed, which I would have expected to take care of all msbuild requirements

Yes and I have no issue with building the project with Visual Studio 2019.
I must say that the project does have particular setup with some dlls found in some custom directories. Tell me if there's anything I can do to provide more information...

Can you share the repro project?

I'm sorry, I can't. Unfortunately, the project is proprietary.

I see that omnisharp lists places where it finds MSBuild DLLs:
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator
        Located 2 MSBuild instance(s)
            1: Visual Studio Professional 2019 16.6.30128.74 - "C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Current\Bin"
            2: StandAlone 16.11.0 - "C:\Users\sdesaulniers\AppData\Local\omnisharp-vim\omnisharp-roslyn\.msbuild\Current\Bin"

Is it possible to give omnisharp a list of directory where it can look for DLLs ? I have a bunch of places where the file may be so if I could add directories for omnisharp to look for, then it could may be fix my issue?

@sim590 you'll get a lot more detail about what omnisharp-roslyn is doing, and where it's currently looking for DLLs, if you enable debug logging. Do this by passing the --loglevel debug flag to the server, or from omnisharp-vim with this setting:
let g:OmniSharp_loglevel = 'debug'

As for configuring DLL locations, the various omnisharp-roslyn configuration options are described in this wiki article: Configuration Options. However, as far as I know these options are for locating MSBuild and associated runtime/sdk DLLs, and not for project references. @filipw may be able to confirm whether this is correct.

I've searched for <IP_ADDRESS> in the following folder:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild

I put the results in this file: msbuild-<IP_ADDRESS>-references.txt
Is there something that comes out of the ordinary? May be I have some settings that omnisharp-roslyn picks up here while I wouldn't want it for compiling my project.
I got some info from my coworkers that we don't really use specifically Microsoft.Build.Framework <IP_ADDRESS>. We shouldn't need it specifically from what I understand, so it seems like there's a setting that omnisharp-roslyn picks up and makes it use <IP_ADDRESS> for some reason, but I'm not sure what.
I have upgraded Visual Studio 2019 and I don't have it listing the assembly version <IP_ADDRESS> anymore:
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.0
Copyright (c) Microsoft Corporation. Tous droits r?serv?s.

Global Assembly Cache contient les assemblys suivants?:
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL
  Microsoft.Build.Framework, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL

Nombre d'?l?ments = 3

I'm not sure if it's worth something to bring that up, but in any case.

I have found that Visual Studio config files have some relative paths for referencing Microsoft.Build DLLs:

I suspect that this does play nice with Omnisharp or Omnisharp on WSL2. I currently use @nickspoons' suggestion for making Omnisharp-vim work under WSL2:
https://github.com/OmniSharp/omnisharp-vim/issues/706#issuecomment-882047918
@nickspoons: could the working directory be altered at some point for Omnisharp (or one of its subprocess) so that this could happen?

May be the following is more relevant: