Support NIP-26 in matchFilter

matchFilter fails for delegated events, by returning false when an author field is set in the filter but a delegate sends the event instead of the author in question proper.
This PR fixes this by including the delegate's pubkey in matchFilter's checks if one such delegate is found.
Additionally:

updated yarn
fixed linting issues
added tests for the new behavior

Very useful PR, otherwise NIP26 is being blocked.

Sorry about this, but I don't like NIP-26 and I think it should be expunged out of the earth. I didn't even know we still had NIP-26 support in this library. It should probably be removed.

NIP-46 is a better solution to the problem.

NIP-46 is a better solution to the problem.

Insofar as it allows us to sign a delegation, sure; otherwise, it falls short on our offline setting :(

What is your project? Why does it need to be offline? It's hard to imagine, because in that scenario I assume you have access to the private key and can simply just sign events.

Nostr doesn't have to support all the use cases possible and imaginable. Life is full of tradeoffs, unfortunately.

What is your project? Why does it need to be offline? It's hard to imagine, because in that scenario I assume you have access to the private key and can simply just sign events.

We are the developers of LaWallet, a NOSTR-backed custodial wallet targeted towards grassroots federations.
We support the usage of BoltCard-compatible NTAG-424 NFC cards, these cards are not capable of performing asymmetric crypto, but are capable of doing MAC and AES.
On the backend, we ask the user for a delegation so that when the card is correctly validated, we can move funds in the end user's name.
All of this is communicated via NOSTR in order to provide for publicly verifiable transactions and an audit trail.
Since the card itself has no power to sign, we need a delegation stored in the backend in order for the transaction to go through.
I'm sure there are other ways of doing the same thing, but this is the one we consider to be the most "transparent".

Nostr doesn't have to support all the use cases possible and imaginable. Life is full of tradeoffs, unfortunately.

I 100% agree in this regard, but we're not asking NOSTR to support all possible use cases.
NIP-26 is not only part of the standard, but is actually part of nostr-tools already.
What's the point of having a standard if we're not willing to adhere to it?
Not only that, NIP-26 is correctly handled in at least one relay (nostream returns events signed by a delegate when asking for events authored by the delegator), and is inconsistently thrown away by nostr-tools.
We're not expecting NOSTR to handle every possible use case, but NIP-26 was a great idea, albeit a bit simplistic, and could do with an extension, instead of an outright de facto deprecation.

NIP-26 is not only part of the standard, but is actually part of nostr-tools already.

Done, not anymore: 867aa11d126a924e615e32871700d66b0f02e241

What's the point of having a standard if we're not willing to adhere to it?

NIP-26 was a mistake. I supported it at the time, I thought it would be a good idea. I was wrong, but we don't have to continue committing the same mistake after we find out that it was a mistake. I will open a PR to the NIPs repo to unrecommend it and eventually delete it if possible.

NIP-26 was a mistake. I supported it at the time, I thought it would be a good idea. I was wrong, but we don't have to continue committing the same mistake after we find out that it was a mistake. I will open a PR to the NIPs repo to unrecommend it and eventually delete it if possible.

I don't think it was a mistake per se, I really see the usefulness of if, but the spec does require some love.
What alternative for NIP-26's use case is there? The ones mentioned above fall short for NIP'26's application area (ie. offline delegations).

For example, if I understood it correctly (I probably didn't), you can just create new "custodial" keypairs for each users in your database and associate those in the background with the sovereign user keys and be done with it.

You did understand correctly :)
We can indeed do that, but "reifying" it as a proper NOSTR protocol element that relays can understand is the superior option in our opinion.

What alternative for NIP-26's use case is there? The ones mentioned above fall short for NIP'26's application area (ie. offline delegations).

There is NIP-46 and not much more. Offline is out-of-scope, I think. Must be done by ad-hoc solutions like the one I suggested above for your specific use case.

We can indeed do that, but "reifying" it as a proper NOSTR protocol element that relays can understand is the superior option in our opinion.

I think you gain nothing by using a standard if you can't interoperate.

I'll close this because I've deleted NIP-26 from this library, so there is no point. But we can continue the discussion if you want (until you finally realize I am right -- haha).


charmcraft clean in cleanup_model

I'm not sure if this is a problem on the side of the charmcraft, but many times
I've found myself in a situation where the integration test doesn't work and
it's because of a broken container that charmcraft uses to build a charm.
The error in such a situation is often not obvious and setting log-level to
debug do not provide much information, as charmcraft is not running without
--verbose flag.
The solution could be to add the charmcraft clean run in the _clean_model
function.
Manually running charmcraft clean is not always noticeable, as in many
projects pytest-operator is used to build test charms whose source code is
either in the sub-directory of integration tests 1 or clone from git
repository.

Example bash and after running charmcraft clean it works again.


fix(interactive): Support shortestpath in Cypher Queries

What do these changes do?
as titled.

Related issue number

Fixes

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

Project coverage is 34.33%. Comparing base (0052971) to head (c7c7cd2).
Report is 1 commits behind head on main.

Additional details and impacted files

@@           Coverage Diff           @@
##             main    #4295   +/-   ##
=======================================
  Coverage   34.33%   34.33%
=======================================
  Files         126      126
  Lines       13235    13235
=======================================
  Hits         4544     4544
  Misses       8691     8691

Continue to review full report in Codecov by Sentry.

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


Update K8up chart to v3.0.1

Update to https://github.com/k8up-io/k8up/releases/tag/k8up-3.0.1

Regession: Adds RBAC permission for events.

Checklist

[x] PR contains a single logical change (to build a better changelog).
[x] Update the documentation.
[x] Categorize the PR by setting a good title and adding one of the labels:
bug, enhancement, documentation, change, breaking, dependency
as they show up in the changelog.
[x] Link this PR to related issues or PRs.

LGTM 👍🏻


Blender 2.80/2.81 compatibility

Hi.
Do you plan to release an updated version of Object Shake, to make it compatible with Blender 2.80/2.81 ?
Thank you

I cross my fingers, hoping to see a version compatible with Blender 3.0 🤞


Add API and DB monitoring services in the backend

We need to add some off-the-shelf tools into our workflow that can help us monitor API response times and DB load. The first step will be to identify the tools that can help us easily monitor system health. If you have any suggestions for the tools, please mention them.

@mfugate1 Do you have any insights?

I'm not familiar with anything other than New Relic, but I'm guessing you're probably looking for free/cheap tools, and New Relic is anything but that.
I'd think the monitoring available in AWS would be sufficient for showing DB load, although it would be tough to correlate performance there with response times.
For simple system health, you could create a dashboard in Cloudwatch

@mfugate1  Yes NewRelic is costly! as in alternative you can check [Elastic APM](https://www.elastic.co/guide/en/apm/agent/index.html). Integration in Node JS is very easy and it will allow you to add profiling the way you want for the app! You will be able to get API response times and query response times!
AWS also gives you x-ray-trace to profile your APIs.

@nirmalpatel is your team still looking for these tools? We think AWS can provide most/all of what is needed.

@amurphy-cl we are not looking into this right now. If we are getting this data from AWS by default, we can close this issue for now.


Update dependencies and workflows

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

Project coverage is 100.00%. Comparing base (ada0c63) to head (0f141ec).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #69   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           11        11
  Lines          368       368
  Branches        44        44
=========================================
  Hits           368       368

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


Method not working in select expressions

Hi , I have a serious problem with 2.1.9 .
I guess there is a sql parsing  bug in this release, that returns some missing in functionalities
for example :
select '1'.asLong() + 1  as newID from E
returns nothing in GratefulDeadConcerts DB .
or when i working  on Link .include() method nothing returns .
is there any idea ?

Dear @luigidellaquila, @lvca
i have a urgently question  :
is this  select '1'.asLong() + 1 as newID from E true ? i'm confused now . the returns value is wrong or this code have problem ?
please help me .

did you try using 'eval' function

Hi @saeedtabrizi
It seems to be a bug, I'll check it asap
Thanks
Luigi

Hi @luigidellaquila, @lvca
In my case i have a Class that contains EmpID as string value type .
---------------Employee ---------------------------------
|EmpID|Name____|
|'001'|'saeed'|
|'002'|'ali'|
|'003'|'majid'|
|'004'|'ahmad'____|
I  want to query the largest string value. for example  select max(EmpID) from Employee must returns '004' value so this part is ok .
But i want to evaluate returned value as a long and increment it, then format to '000' style string .
Can i write select max(EmpID).asLong()+1 from Employee and this query returns '005' ?
As i said the above query returns nothing actually .
how can do that and when this bug would be fixed ?
Thanks
Saeed

It sounds like you are trying to create an auto-increment for the ids . Is this correct? If it is, is there a reason why you just don't use a regular sequence?
http://orientdb.com/docs/2.2/Sequences-and-auto-increment.html
Scott

Hi @smolinari
Thanks for your solution .
the sequence is ideal for other case  except my problem  exactly .
in the fact i have some user that needs to have separate sequence for generate new ID  .
i tried to using sequences  but more complexity happened in my app that i leave this solution .
After all , i have a problem with sql function now really .
Thanks
Saeed Tabrizi

in the fact i have some user that needs to have separate sequence for generate new ID

How many users? Are you running some sort of a multi-tenant system?
Scott

@smolinari
Yes , we working to develop cloud services for our customers .
Saeed

Ok. I've also been looking at the possibilities with ODB and multi-tenancy and we will be going with dedicated databases for bigger customers. On the other hand, smaller customers and the sandboxes and demo environments will be using a hybrid system, where we'll included multiple tenants per database. However, we will still be dedicating the classes to each customer, so sequences can be used. In other words, customer data will never "intermingle" with any other customer data in any single class.
Scott

@smolinari Thanks for your guides .
so recommended solution for bigger customer in cloud environment is separating the databases in OrientDB.
A painful issue in this solution is maintenance
Thanks
Saeed Tabrizi

I am not sure what you mean. The maintenance is at server level, not at database level. Or do you mean schema updating as maintenance?
Scott

actually database level maintenance like the schema updating , migration or etc operations .

Yes. This is where I believe going "no sql" or rather schemaless wins out. If you you leave the schema at application level, you shouldn't need to worry about schema at the database level. I know there are also pros and cons to this, but it is how we are planning to make the database per tenant infrastructure work. Also, our "core" system will have very little in the form of its own schema. The rest will be customer defined schema, and also a reason why we need the separation.
Scott

@smolinari
Thanks for your guides and notes .
Saeed Tabrizi

Hi @saeedtabrizi
There are two problems in this issue:

the "1".asLong() that does not work
the 1 + 1 in projections, that is not supported in current release

I consider this issue related to the first one, for the second one I'm afraid you have to wait for next releases (it's already tracked in the roadmap together with rewriting of the executor).
Thanks
Luigi

Hi @saeedtabrizi
I just pushed a fix for the method invocation issue.
Now the following works fine:
select '1'.asLong() as newID from E

The fix will be available in next 2.2.1
Thanks
Luigi


Bulk edit, fixing column header missing #13 32122

Docs Build status updates of commit a8abac0:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

docs/web-service-reference/data.md
:white_check_mark:Succeeded
View

docs/web-service-reference/editallowed.md
:white_check_mark:Succeeded
View

docs/web-service-reference/getimitemlistresponse.md
:white_check_mark:Succeeded
View

docs/web-service-reference/getmessagetrackingreport.md
:white_check_mark:Succeeded
View

docs/web-service-reference/hasirm.md
:white_check_mark:Succeeded
View

docs/web-service-reference/haspicture.md
:white_check_mark:Succeeded
View

docs/web-service-reference/invalidrecipient.md
:white_check_mark:Succeeded
View

docs/web-service-reference/isassignmenteditable.md
:white_check_mark:Succeeded
View

docs/web-service-reference/optionalattendees.md
:white_check_mark:Succeeded
View

docs/web-service-reference/personname.md
:white_check_mark:Succeeded
View

docs/web-service-reference/reminderisset.md
:white_check_mark:Succeeded
View

docs/web-service-reference/remindertype.md
:white_check_mark:Succeeded
View

docs/web-service-reference/searchmailboxesresult.md
:white_check_mark:Succeeded
View

docs/web-service-reference/sendingas.md
:white_check_mark:Succeeded
View

docs/web-service-reference/serverreplywithmessage.md
:white_check_mark:Succeeded
View

docs/web-service-reference/setuseroofsettingsrequest.md
:white_check_mark:Succeeded
View

docs/web-service-reference/sortby.md
:white_check_mark:Succeeded
View

docs/web-service-reference/starttimezone.md
:white_check_mark:Succeeded
View

docs/web-service-reference/subscriberesponse.md
:white_check_mark:Succeeded
View

docs/web-service-reference/suggestion.md
:white_check_mark:Succeeded
View

docs/web-service-reference/syncfolderitemsresponse.md
:white_check_mark:Succeeded
View

docs/web-service-reference/taskstring.md
:white_check_mark:Succeeded
View

docs/web-service-reference/token-clientaccesstokentype.md
:white_check_mark:Succeeded
View

docs/web-service-reference/token.md
:white_check_mark:Succeeded
View

docs/web-service-reference/tokenrequest.md
:white_check_mark:Succeeded
View

docs/web-service-reference/ttl.md
:white_check_mark:Succeeded
View

docs/web-service-reference/updatedelegate.md
:white_check_mark:Succeeded
View

docs/web-service-reference/votingoptiondata.md
:white_check_mark:Succeeded
View

docs/web-service-reference/webclienteditformquerystring.md
:white_check_mark:Succeeded
View

docs/web-service-reference/xmldata.md
:white_check_mark:Succeeded
View

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


Cannot set the background

Hi,
I cannot set the background, it's a bit strange only I can set either bg1.png or bg.jpg. Every other filename or image is not seen.
For example:
[slide style="background-image:url('/img/sunset.jpg')"]

It's a bit strange, is as if images were hardcoded... am I doing wrong?
Thanks in advance

nevermind, I was putting directory in a wrong path :(


No binaries when untar on lambda

When the code runs on a Lambda there are no binaries extracted. What I mean by that is that the /tmp/git/usr/bin directory exists, but it's empty.
I have no idea why the untar doesn't work :/ My goal is to get git running on a lambda, if you have any other solution I would be very thankful :)

Sorry for the delay @mnapoli - I have no idea why this would happen.
This library is just a tiny wrapper around the git build from https://github.com/lambci/lambci/tree/master/vendor, and I'm not actually using it myself any more, since I'm not working on any Lambda projects. I'm struggling to imagine what might be going wrong though, the extraction code is very simple: https://github.com/pimterry/lambda-git/blob/master/index.js#L25-L27. You've clearly started extracting (because usr/bin exists), but something in that process has failed.
There was a new release recently - can you reproduce this with both versions 0.1.0 and 0.1.1? If you're using 0.1.1, does the promise returned resolve successfully?

OK I'm very sorry, this is the kind of embarrassing issue you open when you're completely lost if front of a problem, blaming someone else, but actually… I think something went wrong with the first extraction (for some reason). Then the lambda instance was reused and the git directory was still there, my script would avoid extracting the archive again and I was looking at the same directory every time…
And of course I forgot to come back here and close this issue :)
Anyway thanks for this repository, it was helpful!


scripts/dts: Remove unused variables and imports

Discovered with pylint3.
Use the placeholder name _ for unproblematic unused variables. It's
what I'm used to, and pylint knows not to flag it.
Also improve the naming a bit in devicetree.py. If a key/value is known
to be a specific thing (like a node), then it's helpful to call it that
instead of something generic like "value".

(Removed an unused sys import in extract_dts_includes.py too.)

Codecov Report

Merging #14687 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #14687   +/-   ##
=======================================
  Coverage   51.97%   51.97%
=======================================
  Files         309      309
  Lines       45582    45582
  Branches    10555    10555
=======================================
  Hits        23691    23691
  Misses      17082    17082
  Partials     4809     4809

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 3dea408...9d7028c. Read the comment docs.


In the GatewayConnection use a default localhost url if you is not provided

In nearly all cases the url in the Gateway connection will be https://localhost:8443/restman. Make this the default if a url is not set.

I thought that https://localhost:8443/restman is already the default from CAGatewayExport#setDefaults(GatewayConnectionProperties)

@kazvictor I tested here and Yves is correct, if not set the default is used, so I think this is not necessary.

you are right, it is! Closing this issue.


Fix: Enhance default interface detection logic

Solution:

Updated 'LookupDefaultIfaceName' to support additional naming conventions such as 'ens[0-9]+.*' and 'eth[0-9]+'.

Related Issue:
Fixes the error: 'cannot lookup default host interface, please manually specify it via --calico-host-interface'.
#322
Test plan:

Tested with interfaces named 'ens162', 'ens192', 'eth0', and 'lo'.
"

 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.Vincent Quanwei Huang (PSP) seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi, thank you for your contribution!
LGTM, I'll run test first, it will get merged when all tests passed.


Default kernel type is IPython

In the dropdown box on the top right, the only kernel type available is IPython (Python 2). Also, the syntax highlighting in code cells is python, not Julia. ;)

Closing this, as the current solution is good/stable enough.


Failed to provision learning pathways sharepoint template.

Cannot provision try two times even with different URL and it fails.
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Details (please complete the following information):

PnP Correlation ID: d4ec0d14-80cc-4126-ac8b-0153a4c6c3ee
Reference Template: [please provide the URL of the template in the Look book site. It should be something like: https://lookbook.microsoft.com/details/ learning pathways
Primary language of the target tenant: [provide the LCID of the primary language of the target tenant]
Are you using a Tenant Global Admin account to provision the template: Yes

Additional context
Add any other context about the problem here.

Hi,
Thanks for using the Look Book site. We've recently seen some provisioning processes failing during the creation of the navigation nodes. We're investigating the issue and we will eventually fix it, in case it depends on our codebase. Stay tuned. Thanks for your cooperation.

HI Thank you very much for your feedback.
Now how will I receive an update?
Best Regards, Met vriendelijke groet, Saludo Kordial.
Luis Enrique Lorenzo Garcia.
From: Paolo @.>
Sent: Monday, May 3, 2021 4:58 AM
To: @.>
Cc: @.>; @.>
Subject: Re: [SharePoint/sp-provisioning-service] Failed to provision learning pathways sharepoint template. (#493)
Hi,
Thanks for using the Look Book site. We've recently seen some provisioning processes failing during the creation of the navigation nodes. We're investigating the issue and we will eventually fix it, in case it depends on our codebase. Stay tuned. Thanks for your cooperation.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/SharePoint/sp-provisioning-service/issues/493#issuecomment-831124145, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AOXYMXXTCHPZNTLDVZ7F323TLZQUJANCNFSM4355SLOA.

Hi,
Thanks for your patience. We've just updated the provisioning service with several fixes. Hopefully, this one is now solved or at least mitigated. Please try again and let us know in case of any further issues. Thanks for your cooperation.


Too many open issues and under-discussion label

This came up when in #63465 I read: "I left it open with that tag [under-discussion] so interested people can keep commenting." from @roblourens.
Too many issues
I do not spend a lot of time on Visual Studio code 's issue page. Initially I found pretty daunting seeing almost 4,500 open issues.
I was unsure if posting an issue would receive any attention or change anything.
It is also time consuming to find if an issue was already reported. When you find it and it is still open after more than a year, you wonder what the status is and if it is worthwhile to write anything.
In general, I think the first impression is either "they do not maintain the issues here" or "they do not listen here". It takes a little bit to find out that there are both false.
I would suggest being a "little" more aggressive in closing issues. I do not like when they force you to close issues for some policy or fake metrics. But if there are really 4,000+ relevant issue, VS Code needs  more engineers to solve these issues ;-)
under-discussion label
It look like that at the moment the under-discussion label is used to bring to the surface some issues that are worth to be discussed.
I thought the label was for an "internal" purposes. If you use this label to bring to the surface some issues to prioritize based on people reactions, I think it would be better to make sure that it is clear what it stand for and channel people to "issues with the label under-discussion" in some way.

First about #63465 - You'll get a better response if you open smaller issues directed toward specific suggestions. It's hard to handle an issue that encapsulates a list of general issues. It got some attention and good discussion right away, and I didn't have time to write a response, so I left it alone to see if it got more community responses. I try not to leave issues for that long without a response, but again, it's easier when they are more focused.
Regarding issue management, we do put a lot of effort into maintaining a "manageable" set of high quality issues. We triage every incoming issue, end up closing most of them as dupes, not actionable, etc, and periodically we sweep the entire set to close anything which isn't realistically going to happen in the next 6 to 12 months. So any issue that's still open, even if it looks stale, has been reviewed and kept.
If you want to read more, there are some docs about our process here: https://github.com/Microsoft/vscode/wiki/Issue-Tracking and here: https://github.com/Microsoft/vscode/wiki/Issue-Grooming


Fix version info in rlgl.h

Doing the binding for 5.0, I noticed this seems to not have been changed.
Most of the .h files don't follow the release versions, so I'm not 100% sure if this is correct...

@schveiguy Actually rlgl versioning was not originally intended to be aligned with raylib... but considering the coupling with raylib, it's probably a good idea to keep them aligned.


Kafka Connect Module Output

Apart from the fact that this is a very great feature and makes life much easier, the output is unfortunately often not very helpful. You get a 400 return when deploying n connectors, no matter if the JDBC password in one connector is not correct or if the format of another connector is not suitable. At least this is my impression so far. I haven't had time to look into the code in more detail, but maybe someone can answer the question, if this is due to the Connector API, or if this could be improved in the module?

@Fobhep Thanks for the question.  Where do you get the 400 errror, do you mean after Connect restarts and the health check runs?
If so, the health check simply checks to see if we can query the list of Connectors from the Connect API.  So if it ends in 400, this means that Connect has failed to start for some reason.
Can you confirm where you are receiving the 400 error?
Thanks

The error happens when running the kafka-connector deployment task and Ansible returns either
Request timed out or Bad Request
After digging in the logs I then managed to find Exceptions indicating that eg the password for one connector was wrong.

@Fobhep Are you able to share which connectors you tried deploying and which one has the misconfiguration?  We want to reproduce this in house.
We think it maybe an issue in the python library, whereby if a new connector fails it doesn't return the error code from the API, where as if an existing connector update fails it does.

@JumaX In that particular customer scenarion it was JDBC connectors only

Another thing I noticed only now:
Sometimes I get a
"HTTP Error: 409 Conflict", but the module itself is saying "changed: true" .
Now I am aware that the REST API may return 409 upon POSTing while a rebalance is in action.
But shouldn't the module still fail if a POST job was not done?
Or does 409 mean, the POST was done, but there was a Rebalane at the same time going on?

I am also noticing ssl errors whenever kafka_connect_ssl_enabled: true
Which could be tracked in a separate issue

Anything new here? This REST API for adding connectors seems to have its own mind. Just added a set of 6 jdbc oracle connectors to it (3source, 3sink).
First time i got a 400 bad request, and nothing was configured... ok
Retry with the exact same config. Now 1 of 6 is deployed, still got a 400 bad request....

This was added as a contribution from the community, I've spoken with the author and he is making it a priority to review this, this week.

@Fobhep @JumaX Resuming work on this issue now, sorry for the late reply. I'll rewrite the error management so that we get an explicit message/result for each connector.
I'll also see if there's a way to wait for a rebalance to finish. The 409 is indeed the response we get when there's a rebalance, which is why initially I did not treat it as an error, but it's true it masks an error if there's one, which is unfortunate.

Quick update: I have completely rewritten the error management and I have added a status check on the tasks of connectors, which means that if a connector fails to initialize, it will be detected and returned as an error. Preparing a PR now.

@ldom any status updates about this?

@jamuska PR is there but has not been merged yet (https://github.com/confluentinc/cp-ansible/pull/490). I guess Justin is waiting for the molecule tests. I'll work on them this week.

@ldom @jamuska Correct, we are waiting on the molecule tests.  Let me know if I can be of assistance @ldom.

Thank you @ldom  for your help and contribution! :)
we have now added molecule scenarios on top of this PR + fixed some known issues in kafka_connectors module to support ssl_enabled=true.
Here's the merged PR https://github.com/confluentinc/cp-ansible/pull/1296, changes should be available in upcoming q1 patch release. Closing this one.


Steam: The object reference was not set to an object instance

When I try to get the ulocked achievements from Steam games, the following error is logged:
The object reference was not set to an object instance. (Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.)
Consequently, the available achievements are downloaded, but it fails to get the unlocked achievements (no unlocked achievements are shown for any game).
This happens with version 3.1.6 (but I had troubles already before).
Interesting detail: I also started playing a new game recently. For that, unlocking achievements worked fine. It does not for all the games I started playing a while ago. I now reinstalled Successstory freshly, and it also stopped working for the new game: achievements unlocked previously are no longer unlocked, and achievements unlocked freshly don't get unlocked in Successstroy anymore, either.
Full error log from extensions.log:
07-01 17:10:42.201|INFO |SuccessStory#PluginDatabaseObject4:Used SuccessStory.Clients.SteamAchievements for Trailmakers - b4c90ec9-5012-4c53-8126-790577087ed9
07-01 17:10:42.201|INFO |SuccessStory#SteamAchievements:GetAchievements() - IsLocal : False, IsManual : False, HasApiKey: True, SteamIsPrivate: False
07-01 17:10:42.672|INFO |SuccessStory#SteamAchievements:SteamApi.GetAchievements()
07-01 17:10:55.430|INFO |SuccessStory#PluginDatabaseObject4:Find 22 achievements find for Trailmakers - b4c90ec9-5012-4c53-8126-790577087ed9 07-01 17:10:55.450|INFO |SuccessStory#PluginDatabaseObject4:Used SuccessStory.Clients.SteamAchievements for Gods Against Machines Demo - 0f91a595-2c48-49a5-b35b-f49850810326
07-01 17:10:55.450|INFO |SuccessStory#SteamAchievements:GetAchievements() - IsLocal : False, IsManual : False, HasApiKey: True, SteamIsPrivate: False
07-01 17:10:55.817|ERROR|SuccessStory#Common:Error on GetAchievements()|G:\GitHub\Lacro59\playnite-successstory-plugin\source\playnite-plugincommon\CommonPluginsStores\Steam\SteamApi.cs|412
System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei CommonPluginsStores.Steam.SteamApi.GetAchievements(String Id, AccountInfos accountInfos) in G:\GitHub\Lacro59\playnite-successstory-plugin\source\playnite-plugincommon\CommonPluginsStores\Steam\SteamApi.cs:Zeile 412.`

Can you try with the latest version?

It works!  😀 👍 Thank you!!

for me this issue occured with latest version. so, I'm using 3.1.5 version

Can you try this?
https://github.com/Lacro59/playnite-successstory-plugin/issues/479#issuecomment-2191342743

@Lacro59 it's working. no issue now


Example: Add slack - post message template

@menski Please check-out the connector template I've created (https://github.com/bpmn-io/bpmn-js-connectors-extension/pull/37/commits/1ccbeefdfc81f28180abfb61400ad77c1a25751c) and see if that makes sense (more or less).


Trader Joe assets push network name out of box on trade modal on asset page

Overview
When selecting a trade joe asset on the asset page, the network name is too long for the box
References and additional details

Acceptance Criteria
Network name should fit in box
Need By Date
No response
Screenshots/Mockups
No response
Ownership

[X] If my bounty needs engineering or needs product I have added the respective labels on the right
[X] As the sponsor of this bounty I will review the changes in a preview environment (ops/product) or review the PR (engineering)

Estimated effort
No response
Sponsor / Stakeholder
No response
Bounty Hunters

Join our discord
Include an expected timeline for you to complete work in the work plan when you apply for this bounty!
Please refer to this link for some basic info
Please do not start work on this issue until you are approved in Gitcoin.

@shapeshift/product could you please help us with this? I don't want to take a decision on my own as we have multiple solutions

@shapeshift/product could you please help us with this? I don't want to take a decision on my own as we have multiple solutions

@NeOMakinG We can either truncate the text inside the network selector, or wrap the network selector below the asset. I'd have to see how either of those look though.

Set max length to truncate and provide tooltip to show full name for both asset name and chain


Custom Site doesn't wrok

Describe the bug
The custom Site tab doesn't do anything
To Reproduce
Steps to reproduce the behavior:

Go to 'Custom Site'
Put in 'literally any URL'
Click on 'Set URL'
Nothing Happens
See error

Expected behavior
I expect the site to actually show up when I click the button.
Desktop (please complete the following information):

ChromOS
Chrome
130.0.6723.126

Thanks for telling me, Its fixed now.


[DROOLS-1452] remove no longer needed exclusion

sisu-guice was replaced directly by the standard guice,
which no longer depends on sisu-guava
Depends on https://github.com/droolsjbpm/droolsjbpm-build-bootstrap/pull/401

The same change already done as https://github.com/droolsjbpm/drools-wb/commit/65e242fd9bc7c5955f8d993f92318a4cc4141c3e.


haproxy "sram is not available" uses wrong colout for orange bar

It is based on the former style header and footer.
https://github.com/SURFscz/SRAM-deploy/blob/main/roles/lb_haproxy/templates/error_sram_down.html.j2

Where is the new style header and footer?

From the normal SBS UI.

Sorry, but that's not the standard footer. :)
This is, but hide the language chooser if it doesn't work.

https://github.com/SURFscz/SRAM-deploy/pull/512

@FlorisFokkinga


Is it possible to set min and max value for range ?

Check out the readme. Min and max are set when you create the slider


Rigid transform with public rotation (and rotation center) and translation

So far there is no way to access the rotation center used in a rigid transformation. This makes the parameters of a rotation meaningless (cf Issue #83). This fix resolve this issue.
Furthermore, by exposing rotation and translations in the Rigid Transform we make it possible to access their parameters individually.

Looks good :) Thanks


Caching loaded template lines to improve performance

Added PR to original fork, but seems like nobody updates it there, so decides create also here, as it's the base for Sourcery at the end
Currently, Stencil load and parse template file for each new output file generation,
this improve help to reduce repetitive logic and significantly improve performance (on 30-50%)

@art-divin

Thank you @pavel-trafimuk for your contribution 🤝
indeed, Stencil did not get a release yet, but maintainer supports PRs there consistently, just takes a week or two for an approval / merge. I'll have a look at your change in a bit, and run UTs against your PR for Sourcery to make sure it'd stay work.


How can subcommands automatically use the same version as the parent command?

Hi there.
I am writing an app of a form like:
let args = App::new("blast")
                   .version("1.2.3")
                   .subcommand(SubCommand::with_name("status").help("help str"))
                   .get_matches();

And it appears blast status -h will suggest -V as a flag for blast status, but if you actually try this, it will just print the version as an empty string. I'm not sure if it necessarily needs to inherit from the app version, but it looks a little weird listing it in the subcommand's help if it is not set.
I am using:

clap = "2.1.2"
rustc 1.6.0 (c30b771ad 2016-01-19)

(Btw, other than this slight quirk, this library is fantastic. Thanks for your hard work.)

By default subcommands don't inherit the version of the parent command, this allows them to be developed as a separate program entirely (should that ever be required).
You can, however, tell clap to simply propagate the version of the parent down through all child subcommands if you'd like them to all have the same version.
To do this, you use the AppSettings::GlobalVersion enum variant along with the App::setting method.
let args = App::new("blast")
                   .setting(AppSettings::GlobalVersion) // all subcommands have version "1.2.3" now
                   .version("1.2.3")
                   .subcommand(SubCommand::with_name("status").help("help str"))
                   .get_matches();

Ah, I see. That's one useful solution.
Alternatively though; is there a way to remove the version from showing up in subcommand help?
./blast -h and ./blast status -h will suggest looking at version even if the app was missing a .version() call. That is still misleading, and pollutes the help of small subcommands with few flags.

@clux  Sorry, my free time has been non-existent lately!
Yes, you can use the AppSettings::VersionlessSubcommands enum variant to remove the version flag entirely.

Ooh, perfect. Thank you very much. I had entirely missed the documentation of that enum. Lots of useful stuff in there! I will close this now as it works perfectly.

:+1:


Changed the map and reduce function to work with XmlRpcWorkflowManger

Please do check once,I will remove unused methods in the next commit

Also adde rest api on proteus to request a dynamicworkflow execution with tasks
A post request on http://localhost:8080/proteus/workflowservice/dynamic
with {taskIds:["urn:drat:MimePartitioner"]} will return ok
and anything goes wrong with an exception message please do check that once as well

@ahmedifhaam please document the above on the wiki with respect to the new API you added.

@chrismattmann It's done

LGTM!


Search folder only feature

Request a new feature to search folder only. When hit  in search view, it will move the cursor to that folder.
And an improvement request: for current search, it also show folders. If hit  on the folder node, it would be great if the cursor move to that folder node.  Thanks.

I think it would be a good idea to have a folder search vs a file search, as you would usually know which one you are searching for. There are two ways to do this:

Have three separate commands with separate mappings, one for folder search, one for file search, and one for both.
Add a special syntax to the single search prompt that distinguishes, like starting a search with d: or f:
Add a toggle command with instructions in the header to switch between the different modes in the middle of a search.

Anyone have any opinion on the best option?

I vote the first one as the best option.

This is in main right now and I'll probably release it to v2.x tonight. If you get a chance, please try it out and let me know if you see any issues with the new command. Here is the updated documentation:
FILTER                                                        *neo-tree-filter*

NOTE: All of the below commands are affected by the `find_by_full_path_words`
option:
>
    require("neo-tree").setup({
      filesystem = {
        find_by_full_path_words = false,
      }
    })
<
`false` means it only searches the tail of a path and is the default.
`true` will change the filter into a full path search with space as an implicit
`".*"`, so `fi init` will match: `./sources/filesystem/init.lua`

/ = fuzzy_finder:           Filter the tree recursively, searching for
                            files and folders that contain the specified term as
                            you type. This will use fd if it is installed, or
                            find, or which if you are on Windows.

                            As of v1.28, this acts like a fuzzy finder,
                            meaning that pressing up/down while the filter
                            window is open will move the cursor up and down in
                            the tree, and pressing `<enter>` will open that
                            item and clear the filter. Any other method of
                            closing the filter window will also clear the
                            filter.

D = fuzzy_finder_directory: Like fuzzy_finder above, but only shows directories.
                            Pressing <enter> on a directory will clear the
                            search and set the focus on that directory.
                            Requires `fd` or `find` to be installed~

f = filter_on_submit:       Same as above, but does not search until you hit
                            enter. Useful if filter_as_you_type is too slow.
                            Also useful if you want to leave the tree
                            filtered.

<C-x> = clear_filter:       Removes the filter.

I'm not seeing this behavior, it always focuses the node I was on in the search when I hit enter. Maybe I am just not doing exactly what you are doing, or maybe our settings are changing the result. Can you share your neo-tree config and provide more details on what does and does not work?

The folders and files are:
├───folder1
│          │   a.txt
│          └───subfolder
└───folder2
│   b.txt
└───subfolder
Search "sub", and ctrl+n navigate to second subfolder, press <enter>, focus one is b.txt which should be the second subfolder node.

If I open all the folder before the search:

when press enter on the second subfolder when search "sub", the focus one is folder2:

if you cannot reproduce it, I'll share the config. Thanks.

That works fine for me. Can you share your config?

some log messages:
[TRACE 7/6/2022 6:41:20 AM] ...ck\packer\opt\neo-tree.nvim/lua/neo-tree/ui/renderer.lua:861: Force open folders
[DEBUG 7/6/2022 6:41:20 AM] ...ck\packer\opt\neo-tree.nvim/lua/neo-tree/ui/renderer.lua:587: Setting expanded nodes
[DEBUG 7/6/2022 6:41:20 AM] ...ck\packer\opt\neo-tree.nvim/lua/neo-tree/ui/renderer.lua:508: Restoring position to node_id: C:\Users\john\source\repos\test\folder2\subfolder\
[DEBUG 7/6/2022 6:41:20 AM] ...ck\packer\opt\neo-tree.nvim/lua/neo-tree/ui/renderer.lua:329: focus_node cannot find node with id  C:\Users\john\source\repos\test\folder2\subfolder\
[TRACE 7/6/2022 6:41:20 AM] ...k\packer\opt\neo-tree.nvim/lua/neo-tree/events/queue.lua:213: Firing event:  after_render  with args:  {
  async_directory_scan = "auto",
  bind_to_cwd = true,
  bufnr = 3,
  commands = {
    add = <function 1>,
    add_directory = <function 2>,
    clear_filter = <function 3>,
    close_all_nodes = <f...
[DEBUG 7/6/2022 6:41:20 AM] ...ck\packer\opt\neo-tree.nvim/lua/neo-tree/ui/renderer.lua:329: focus_node cannot find node with id  C:\Users\john\source\repos\test\folder2\subfolder\

AHA! I see what the problem is. I have to remove the slash from the end of the folder when translating from search results to the normal browse results, but I forgot to do this in a way that supports windows. I'll fix this tonight.

It should work now, can you pull the latest and give it a try?

@cseickel Thank you! Works well now.


Would it be possible to update the toolchain?

I really like this. It works as easy as described. Thank you for sharing this project.
I would like to use more modern extensions in code editors like rust-analyzer for this. Unfortunately I now get red highlights in the main function.

This didn't seem to happen if I were to remove the rust-toolchain file and change the edition to 2021 in the Cargo.toml, but then I get a warning

and later a panic with the message: thread 'main' panicked at 'unknown name section chunk type: 7'
I think this is a good project and it deserves an update. I am however not familiar with updating toolchains, so I might not be able to do it myself.

There was this problem apparently mentioned already in the past !25
I am not sure whether to keep this open or not. Is this maybe more of an issue for the screeps-game-api and cargo-screeps

There is an issue in the api to move to wasm bindgen which is supposed to fix a lot of such problems


feat: fetch provision-oauth2 client secret from the vault

What this PR changes/adds
Fetches the client secret from the vault instead of getting it from the data address in provision-oauth2 extension.
Deprecates the old behavior.
Why it does that
secrets should be shared offline
Further notes

Linked Issue(s)
Closes #2409
Checklist

[x] added appropriate tests?
[x] performed checkstyle check locally?
[x] added/updated copyright headers?
[x] documented public classes/methods?
[x] added/updated relevant documentation?
[x] assigned appropriate label? (exclude from changelog with label no-changelog)
[x] formatted title correctly? (take a look at the CONTRIBUTING and Etiquette for pull requests for details)

Codecov Report
Base: 64.56% // Head: 64.59% // Increases project coverage by +0.03% :tada:

Coverage data is based on head (8980a67) compared to base (cc5b348).
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2410      +/-   ##
==========================================
+ Coverage   64.56%   64.59%   +0.03%
==========================================
  Files         844      844
  Lines       17474    17490      +16
  Branches     1055     1056       +1
==========================================
+ Hits        11282    11298      +16
  Misses       5755     5755
  Partials      437      437

Impacted Files
Coverage Δ

...vision/oauth2/Oauth2CredentialsRequestFactory.java
100.00% <100.00%> (ø)

...r/provision/oauth2/Oauth2DataAddressValidator.java
100.00% <100.00%> (ø)

...tor/provision/oauth2/Oauth2ProvisionExtension.java
100.00% <100.00%> (ø)

...tor/provision/oauth2/Oauth2ResourceDefinition.java
94.11% <100.00%> (+0.36%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


feat: Emit WorkflowNodeRunning Event

Signed-off-by: Kenny Trytek<EMAIL_ADDRESS>Checklist

[ ] My organization is added to USERS.md.
[X] I am committing on my own time.

Feature Request
This pull request adds a Running event to WorkflowNode execution, outlined in https://github.com/argoproj/argo-workflows/issues/5320.
Testing This Change
Besides the updated unit and functional tests, I ran this change locally with Argo Events installed and a sensor and trigger set up to deliver webhooks to another locally-running server.
Below is a running log of my testing steps as I iterated on this change. Discrete thoughts/iterations are separated by a horizontal line.

Running the hello-world example, I have so far not seen any WorkflowNodeRunning event anywhere. I'm not sure why this is the case, but I will continue to look and see what I am missing. I thought writing to woc.eventRecorder would be sufficient to create these events, but maybe there is another step that I am not aware of.

Running this example from the operator_test.go, I get a different result locally than in the test.
Workflow:
metadata:
  name: steps-events
spec:
  entrypoint: main
  templates:
    - name: main
      steps:
        - - name: a
            template: whalesay
    - name: whalesay
      container:
        image: docker/whalesay:latest

Test result in operator_test.go:
"Normal WorkflowRunning Workflow Running",
"Normal WorkflowNodeRunning Running node steps-events",
"Normal WorkflowNodeRunning Running node steps-events[0]",
"Normal WorkflowNodeRunning Running node steps-events[0].a",
"Normal WorkflowNodeSucceeded Succeeded node steps-events[0].a",
"Normal WorkflowNodeSucceeded Succeeded node steps-events[0]",
"Normal WorkflowNodeSucceeded Succeeded node steps-events",
"Normal WorkflowSucceeded Workflow completed",

Local result from argo submit of that workflow with an Argo Events sensor:
"Normal WorkflowRunning Workflow Running",
"Normal WorkflowNodeRunning Running node steps-events",
"Normal WorkflowNodeRunning Running node steps-events[0]",
"Normal WorkflowNodeSucceeded Succeeded node steps-events[0].a",
"Normal WorkflowNodeSucceeded Succeeded node steps-events[0]",
"Normal WorkflowNodeSucceeded Succeeded node steps-events",
"Normal WorkflowSucceeded Workflow completed",

Note that "Normal WorkflowNodeRunning Running node steps-events[0].a" is missing. I will continue to investigate why this occurs.

Simplifying this test, I see the same results.
Workflow:
metadata:
  name: no-dag-or-steps
spec:
  entrypoint: whalesay
  templates:
  - name: whalesay
    container:
      image: docker/whalesay:latest
      command: [cowsay]
      args: ["hello world"]

operator_test.go result:
"Normal WorkflowRunning Workflow Running",
"Normal WorkflowNodeRunning Running node no-dag-or-steps",
"Normal WorkflowNodeSucceeded Succeeded node no-dag-or-steps",
"Normal WorkflowSucceeded Workflow completed",

Local Argo result:
"Normal WorkflowRunning Workflow Running",
"Normal WorkflowNodeSucceeded Succeeded node no-dag-or-steps",
"Normal WorkflowSucceeded Workflow completed",

Okay, found it. It's this case where the node completes very quickly and is never registered as "running."
https://github.com/argoproj/argo-workflows/blob/d964fe4484c6ad4a313deb9994288d402a543018/workflow/controller/operator.go#L1598
Now to decide how to handle it. Should Argo always emit a WorkflowNodeRunning event in the case the node ran to completion, even if the event is artificial? I think it should, so that the events emitted are predictable and not susceptible to race conditions.

Okay, force-pushed my changes since this PR is still in draft.
Latest results running this workflow:
metadata:
  name: no-dag-or-steps
spec:
  entrypoint: whalesay
  templates:
  - name: whalesay
    container:
      image: docker/whalesay:latest
      command: [cowsay]
      args: ["hello world"]

With an Argo event source configured to send events to a locally-running web server, I get these results:
Headers:
{
  "x-argo-event-id": "65316463366232612d613536632d346433362d393232632d633734356233333865663832",
  "x-argo-event-time": "2021-03-30T02:52:28Z",
  "x-argo-event-type": "ADD"
}
Body:
{
  "message": "Workflow Running",
  "reason": "WorkflowRunning",
  "workflow": {
    "api_version": "argoproj.io/v1alpha1",
    "kind": "Workflow",
    "name": "no-dag-or-steps-8ssqw",
    "namespace": "argo",
    "resource_version": "2605483",
    "uid": "140ccd92-5481-4c5d-846b-3177464e4aea"
  }
}
INFO:     <IP_ADDRESS>:0 - "POST /api/v1/webhooks/echo HTTP/1.1" 200 OK
Headers:
{
  "x-argo-event-id": "65353539303135612d326337312d343133352d626632322d306630653338373831326666",
  "x-argo-event-time": "2021-03-30T02:52:36Z",
  "x-argo-event-type": "ADD"
}
Body:
{
  "message": "Running node no-dag-or-steps-8ssqw",
  "reason": "WorkflowNodeRunning",
  "workflow": {
    "api_version": "argoproj.io/v1alpha1",
    "kind": "Workflow",
    "name": "no-dag-or-steps-8ssqw",
    "namespace": "argo",
    "resource_version": "2605505",
    "uid": "140ccd92-5481-4c5d-846b-3177464e4aea"
  }
}
INFO:     <IP_ADDRESS>:0 - "POST /api/v1/webhooks/echo HTTP/1.1" 200 OK
Headers:
{
  "x-argo-event-id": "65393466646131652d366330312d343532652d626539612d613063333232336439613030",
  "x-argo-event-time": "2021-03-30T02:52:36Z",
  "x-argo-event-type": "ADD"
}
Body:
{
  "message": "Succeeded node no-dag-or-steps-8ssqw",
  "reason": "WorkflowNodeSucceeded",
  "workflow": {
    "api_version": "argoproj.io/v1alpha1",
    "kind": "Workflow",
    "name": "no-dag-or-steps-8ssqw",
    "namespace": "argo",
    "resource_version": "2605505",
    "uid": "140ccd92-5481-4c5d-846b-3177464e4aea"
  }
}
INFO:     <IP_ADDRESS>:0 - "POST /api/v1/webhooks/echo HTTP/1.1" 200 OK
Headers:
{
  "x-argo-event-id": "31623137393064652d623162332d343633382d383332652d313735633330613464363062",
  "x-argo-event-time": "2021-03-30T02:52:36Z",
  "x-argo-event-type": "ADD"
}
Body:
{
  "message": "Workflow completed",
  "reason": "WorkflowSucceeded",
  "workflow": {
    "api_version": "argoproj.io/v1alpha1",
    "kind": "Workflow",
    "name": "no-dag-or-steps-8ssqw",
    "namespace": "argo",
    "resource_version": "2605505",
    "uid": "140ccd92-5481-4c5d-846b-3177464e4aea"
  }
}
INFO:     <IP_ADDRESS>:0 - "POST /api/v1/webhooks/echo HTTP/1.1" 200 OK

The results here are exactly what was expected: WorkflowRunning, WorkflowNodeRunning, WorkflowNodeSucceeded, WorkflowSucceeded.
✅

@alexec:
What about comparing woc.orig to woc.wf at the end of persistUpdates?

Hmm, that does look like a potentially interesting approach. I'll take a look tonight and see if I can make that work. My initial thought is if it does work, then we won't need node event logic anywhere else, but I may be misunderstanding what persistUpdates does.

@alexec, I have updated the implementation to do all WorkflowNode* event creation from persistUpdates. This solution is much easier to reason about, but has a side-effect that event order is unpredictable for workflow nodes that succeed quickly. This is reflected in the unit test change from assert.Equal to assert.ElementsMatch.
I don't think this is a problem, as event consumers must assume that the order may not be totally deterministic (and Argo or Kubernetes don't make any guarantees along those lines).

Shoot, that functional test failure looks related to these changes. I'll have to take another look on Friday.

Running those tests locally succeeded. Closing/reopening to try again.

Functional test failed in a timeout waiting for events, probably waiting for the WorkflowNode* events.

Implemented your suggestions locally, but it appears the functional test has revealed a real problem:
 controller | E0404 22:14:20.698833   72079 event.go:329] Could not construct reference to: '&v1alpha1.Workflow{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"hello-world-krr5q", GenerateName:"hello-world-",

<snip>

, ArtifactRepositoryRef:(*v1alpha1.ArtifactRepositoryRefStatus)(0xc0005df740)}}' due to: 'no kind is registered for the type v1alpha1.Workflow in scheme "pkg/runtime/scheme.go:101"'. Will not report event: 'Normal' 'WorkflowNodeRunning' 'Running node hello-world-krr5q'

Still trying to find a solution to that issue...

I checkout out your code changes and found the failed unit tests passes locally. I would sync with master and retry.

Rebased onto latest master, but still see the same error running the functional test:
Will not report event: 'Warning' 'WorkflowNodeFailed' 'Failed node failed-step-event-d5v8q: Error (exit code 1)'

Full error output in the controller logs

    controller | E0413 14:24:48.448861   45882 event.go:329] Could not construct reference to: '&v1alpha1.Workflow{TypeMeta:v1.TypeMeta{Kind:"", APIVersion:""}, ObjectMeta:v1.ObjectMeta{Name:"failed-step-event-d5v8q", GenerateName:"failed-step-event-", Namespace:"argo", SelfLink:"/apis/argoproj.io/v1alpha1/namespaces/argo/workflows/failed-step-event-d5v8q", UID:"210a6616-076b-4a0e-b1e0-ec2a8206a18f", ResourceVersion:"2956085", Generation:5, CreationTimestamp:v1.Time{Time:time.Time{wall:0x0, ext:63753938653, loc:(*time.Location)(0x3a31a60)}}, DeletionTimestamp:(*v1.Time)(nil), DeletionGracePeriodSeconds:(*int64)(nil), Labels:map[string]string{"workflows.argoproj.io/completed":"true", "workflows.argoproj.io/phase":"Failed", "workflows.argoproj.io/test":"true"}, Annotations:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers:[]string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry{v1.ManagedFieldsEntry{Manager:"___TestEventOnNodeFail_in_github_com_argoproj_argo_workflows_v3_test_e2e.test", Operation:"Update", APIVersion:"argoproj.io/v1alpha1", Time:(*v1.Time)(0xc000f137a0), FieldsType:"FieldsV1", FieldsV1:(*v1.FieldsV1)(0xc000f13780)}, v1.ManagedFieldsEntry{Manager:"workflow-controller", Operation:"Update", APIVersion:"argoproj.io/v1alpha1", Time:(*v1.Time)(0xc000f137e0), FieldsType:"FieldsV1", FieldsV1:(*v1.FieldsV1)(0xc000f137c0)}}}, Spec:v1alpha1.WorkflowSpec{Templates:[]v1alpha1.Template{v1alpha1.Template{Name:"exit", Inputs:v1alpha1.Inputs{Parameters:[]v1alpha1.Parameter(nil), Artifacts:v1alpha1.Artifacts(nil)}, Outputs:v1alpha1.Outputs{Parameters:[]v1alpha1.Parameter(nil), Artifacts:v1alpha1.Artifacts(nil), Result:(*string)(nil), ExitCode:(*string)(nil)}, NodeSelector:map[string]string(nil), Affinity:(*v1.Affinity)(nil), Metadata:v1alpha1.Metadata{Annotations:map[string]string(nil), Labels:map[string]string(nil)}, Daemon:(*bool)(nil), Steps:[]v1alpha1.ParallelSteps(nil), Container:(*v1.Container)(0xc000ffedc0), ContainerSet:(*v1alpha1.ContainerSetTemplate)(nil), Script:(*v1alpha1.ScriptTemplate)(nil), Resource:(*v1alpha1.ResourceTemplate)(nil), DAG:(*v1alpha1.DAGTemplate)(nil), Suspend:(*v1alpha1.SuspendTemplate)(nil), Data:(*v1alpha1.Data)(nil), Volumes:[]v1.Volume(nil), InitContainers:[]v1alpha1.UserContainer(nil), Sidecars:[]v1alpha1.UserContainer(nil), ArchiveLocation:(*v1alpha1.ArtifactLocation)(nil), ActiveDeadlineSeconds:(*intstr.IntOrString)(nil), RetryStrategy:(*v1alpha1.RetryStrategy)(nil), Parallelism:(*int64)(nil), FailFast:(*bool)(nil), Tolerations:[]v1.Toleration(nil), SchedulerName:"", PriorityClassName:"", Priority:(*int32)(nil), ServiceAccountName:"", AutomountServiceAccountToken:(*bool)(nil), Executor:(*v1alpha1.ExecutorConfig)(nil), HostAliases:[]v1.HostAlias(nil), SecurityContext:(*v1.PodSecurityContext)(nil), PodSpecPatch:"", Metrics:(*v1alpha1.Metrics)(nil), Synchronization:(*v1alpha1.Synchronization)(nil), Memoize:(*v1alpha1.Memoize)(nil), Timeout:""}}, Entrypoint:"exit", Arguments:v1alpha1.Arguments{Parameters:[]v1alpha1.Parameter(nil), Artifacts:v1alpha1.Artifacts(nil)}, ServiceAccountName:"", AutomountServiceAccountToken:(*bool)(nil), Executor:(*v1alpha1.ExecutorConfig)(nil), Volumes:[]v1.Volume(nil), VolumeClaimTemplates:[]v1.PersistentVolumeClaim(nil), Parallelism:(*int64)(nil), ArtifactRepositoryRef:(*v1alpha1.ArtifactRepositoryRef)(nil), Suspend:(*bool)(nil), NodeSelector:map[string]string(nil), Affinity:(*v1.Affinity)(nil), Tolerations:[]v1.Toleration(nil), ImagePullSecrets:[]v1.LocalObjectReference(nil), HostNetwork:(*bool)(nil), DNSPolicy:(*v1.DNSPolicy)(nil), DNSConfig:(*v1.PodDNSConfig)(nil), OnExit:"", TTLStrategy:(*v1alpha1.TTLStrategy)(0xc000f13840), ActiveDeadlineSeconds:(*int64)(0xc000ff2e80), Priority:(*int32)(nil), SchedulerName:"", PodGC:(*v1alpha1.PodGC)(nil), PodPriorityClassName:"", PodPriority:(*int32)(nil), HostAliases:[]v1.HostAlias(nil), SecurityContext:(*v1.PodSecurityContext)(nil), PodSpecPatch:"terminationGracePeriodSeconds: 3\n", PodDisruptionBudget:(*v1beta1.PodDisruptionBudgetSpec)(nil), Metrics:(*v1alpha1.Metrics)(nil), Shutdown:"", WorkflowTemplateRef:(*v1alpha1.WorkflowTemplateRef)(nil), Synchronization:(*v1alpha1.Synchronization)(nil), VolumeClaimGC:(*v1alpha1.VolumeClaimGC)(nil), RetryStrategy:(*v1alpha1.RetryStrategy)(nil), PodMetadata:(*v1alpha1.Metadata)(nil), TemplateDefaults:(*v1alpha1.Template)(nil)}, Status:v1alpha1.WorkflowStatus{Phase:"Failed", StartedAt:v1.Time{Time:time.Time{wall:0x0, ext:63753938653, loc:(*time.Location)(0x3a31a60)}}, FinishedAt:v1.Time{Time:time.Time{wall:0x0, ext:63753938688, loc:(*time.Location)(0x3a31a60)}}, EstimatedDuration:0, Progress:"1/1", Message:"Error (exit code 1)", CompressedNodes:"", Nodes:v1alpha1.Nodes{"failed-step-event-d5v8q":v1alpha1.NodeStatus{ID:"failed-step-event-d5v8q", Name:"failed-step-event-d5v8q", DisplayName:"failed-step-event-d5v8q", Type:"Pod", TemplateName:"exit", TemplateRef:(*v1alpha1.TemplateRef)(nil), TemplateScope:"local/failed-step-event-d5v8q", Phase:"Failed", BoundaryID:"", Message:"Error (exit code 1)", StartedAt:v1.Time{Time:time.Time{wall:0x0, ext:63753938653, loc:(*time.Location)(0x3a31a60)}}, FinishedAt:v1.Time{Time:time.Time{wall:0x0, ext:63753938687, loc:(*time.Location)(0x3a31a60)}}, EstimatedDuration:0, Progress:"1/1", ResourcesDuration:v1alpha1.ResourcesDuration{"cpu":33, "memory":21}, PodIP:"", Daemoned:(*bool)(nil), Inputs:(*v1alpha1.Inputs)(nil), Outputs:(*v1alpha1.Outputs)(0xc00091e8c0), Children:[]string(nil), OutboundNodes:[]string(nil), HostNodeName:"docker-desktop", MemoizationStatus:(*v1alpha1.MemoizationStatus)(nil), SynchronizationStatus:(*v1alpha1.NodeSynchronizationStatus)(nil)}}, OffloadNodeStatusVersion:"", StoredTemplates:map[string]v1alpha1.Template(nil), PersistentVolumeClaims:[]v1.Volume(nil), Outputs:(*v1alpha1.Outputs)(nil), Conditions:v1alpha1.Conditions{v1alpha1.Condition{Type:"PodRunning", Status:"False", Message:""}, v1alpha1.Condition{Type:"Completed", Status:"True", Message:""}}, ResourcesDuration:v1alpha1.ResourcesDuration{"cpu":33, "memory":21}, StoredWorkflowSpec:(*v1alpha1.WorkflowSpec)(nil), Synchronization:(*v1alpha1.SynchronizationStatus)(nil), ArtifactRepositoryRef:(*v1alpha1.ArtifactRepositoryRefStatus)(0xc00091f0c0)}}' due to: 'no kind is registered for the type v1alpha1.Workflow in scheme "pkg/runtime/scheme.go:101"'. Will not report event: 'Warning' 'WorkflowNodeFailed' 'Failed node failed-step-event-d5v8q: Error (exit code 1)'

@alexec This is ready for review whenever you are available.

@kennytrytek  I have installed Argo version 3.0.7 but I still don't see WorkflowNodeRunning event, is it expected?

@Sushant20, I believe it was released in Argo 3.1.0. I know it's mentioned in the v3.0.3 cherry-pick, but that is not accurate.


Code

It's been two months and the code still hasn't been released...

The code has been uploaded last month


How to use this solver to solve general optimization problem?

Hi
This work looks excellent.
But how to use this to solve a general optimzaiton instead of training a neural network?
For example how to use this solver to solve a problem like Chained Rosenbrock function which people do in levmar ？

I think I may know how. Maybe just define my own nn module like in this page. It not really need to be a neural network.
https://pytorch.org/tutorials/beginner/examples_nn/polynomial_module.html

Hi @NengQian, you’re on the right track. You can create a custom torch.nn.Module in which you define the trainable parameters in the __init__ method and specify how they’re used in the forward method to produce the outputs.
In the example below, the forward method returns the values before they’re squared and summed, allowing the MSE loss to take care of those operations. I set y_dummy to zero because the MSE loss effectively computes $(outputs - 0)^2$ in this context.
This is the equation I’ve been using (though I’m not entirely sure it’s exactly what you need):
$$
f(\mathbf{x}) = \sum_{i=1}^{n-1} \left[ 100 \cdot \left( x_{i+1} - x_i^2 \right)^2 + \left( x_i - 1 \right)^2 \right]
$$
Below is a possible implementation. I’ve defined a dummy dataset because my fit function expects one by default, but you could remove it if you write your own custom training loop.
# %%
# !%reload_ext autoreload
# !%autoreload 2

import time

import torch
import torch.nn as nn
import torch_levenberg_marquardt as tlm
from torch.utils.data import TensorDataset

# Set PyTorch to use high precision for matrix multiplication
torch.set_float32_matmul_precision('high')

# Detect CUDA device for acceleration
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(f'Using device: {device}')

# %%
# Define the Chained Rosenbrock model
class ChainedRosenbrock(nn.Module):
    def __init__(self, n: int) -> None:
        super().__init__()
        self.x = nn.Parameter(torch.randn(n))

    def forward(self, _=None) -> torch.Tensor:
        differences = self.x[1:] - self.x[:-1] ** 2
        deviations = self.x[:-1] - 1
        return torch.cat((differences, deviations))

# %%
# Create a dummy dataset
n = 5  # Dimension of x
target_size = 2 * (n - 1)

# Dummy 'input' for DataLoader (unused by the model)
x_dummy = torch.zeros(target_size, dtype=torch.float32).unsqueeze(0).to(device)

# Zero vector used as target for the MSE Loss
y_target = torch.zeros(target_size, dtype=torch.float32).unsqueeze(0).to(device)

dataset = TensorDataset(x_dummy, y_target)
train_loader = tlm.utils.FastDataLoader(
    dataset=dataset,
    batch_size=1,
    shuffle=False,
    device=device,
)

# %%
# Define two models: one for Adam, one for LM
model = ChainedRosenbrock(n).to(device)
model_lm = ChainedRosenbrock(n).to(device)

num_parameters = sum(p.numel() for p in model.parameters() if p.requires_grad)
print(f'Number of trainable parameters: {num_parameters}')

module = tlm.training.OptimizerModule(
    model=model,
    optimizer=torch.optim.Adam(model.parameters(), lr=0.1),
    loss_fn=nn.MSELoss(),
)

module_lm = tlm.training.LevenbergMarquardtModule(
    model=model_lm,
    loss_fn=tlm.loss.MSELoss(),
    learning_rate=0.1,
    attempts_per_step=10,
    solve_method='qr',
    damping_strategy=tlm.damping.StandardDampingStrategy(damping_mode='adaptive'),
)

# %%
# Train model
print('Training with Adam optimizer...')
t1_start = time.perf_counter()
tlm.utils.fit(module, train_loader, epochs=200)
t1_stop = time.perf_counter()
print(f'Training (Adam) completed. Elapsed time: {t1_stop - t1_start:.2f} seconds\n')

print('Training with Levenberg-Marquardt...')
t2_start = time.perf_counter()
tlm.utils.fit(module_lm, train_loader, epochs=200)
t2_stop = time.perf_counter()
print(f'Training (LM) completed. Elapsed time: {t2_stop - t2_start:.2f} seconds\n')

I’m not certain this is fully correct, but it should give you a good starting point. Also, if you don’t mind, could you provide some examples of plots that might be useful for visualizing the results of this problem? I’m not familiar with it, but it could be useful to add an notebook in the examples folder for this problem.

Hi @fabiodimarco . Thanks for your reply! This is very helpful.
I can run the script now.
To be honset, I am also not familiar with this problem. The reason I asked about this problem is because before I was using the levmar cpp lib to solve my optimization problem, and the  Chained Rosenbrock function is a benchmark problem (check here).
Thus I actually want to evaluate your implementation versus the levmar lib.
But ye, let me first try more with your implementataion, and then see what I can help you.


Modular Neural Network Design

ML - Algorithm

[x] I have not used any Machine Learning Libraries in my code
[ ] This ML Algorithm is not available in the repository currently.
[x] If it is, My ML Algorithm is implemented in a different method.
[x] I have starred this repository

Information

ML Algorithm Name: Modular Neural Network Design

Language: Python

Go ahead

NumPy is permitted, correct? I don't have to code matrix functions?
I did it in JavaScript awhile ago and I had to make all the functions from scratch.

Numpy is cool


Lost coins after updating to hotfix

Hi, Lost about 4000 coins when I updated. I have attached the debug log for you to see.
Thanks for any help.
debug.zip

Sure,
But I remember seeing over 8000 coins on that machine and when I updated it
was 4000 odd less. I don't recall the exact numbers.
Inwish I had taken screenshots so you could see.
Would the wallet. DAT files help? I guess it was on the wrong chain because
it was turning he coins around very fast.
Nick
On 31 Jan 2018 11:24 PM, "DisasterFaster"<EMAIL_ADDRESS>wrote:
The block reward is 120 coins so 4000 coins would not be a total amount
representing a quantity of 120 coin blocks. A review of your submitted log
shows that there were 2 mined blocks which would be a total of 240 coins
and the details are below:
2018-01-30 08:10:24 ROIcoinMiner: proof-of-work found
2018-01-30 13:10:17 ROIcoinMiner: proof-of-work found
If you could please supply a good ROI coin wallet address from a wallet
that is the most recent version and also fully synchronized and matching
our official block explorer... I will send you 240 replacement coins.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ROIcoin/ROIcoin/issues/34#issuecomment-361965673, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AiUTus58cpCMhvK8XJtKcoG4GtCyoUfpks5tQIWSgaJpZM4RzYGN
.

Hi,
Sorry for the delay - the address is RHKatB47HNKLHF9nsyYfT3rMDZTWozCFQz
On another note I am really interested in hosting a pool on our server - I
am running UBUNTU server 14.04. Do you have a set of instructions for
getting it up and running? I am already running a Dash p2pool (
http://<IP_ADDRESS>:7903/static/) and I would like to try and help this
project if I can.
Nick
On Wed, Jan 31, 2018 at 11:24 PM, DisasterFaster<EMAIL_ADDRESS>wrote:

The block reward is 120 coins so 4000 coins would not be a total amount
representing a quantity of 120 coin blocks. A review of your submitted log
shows that there were 2 mined blocks which would be a total of 240 coins
and the details are below:
2018-01-30 08:10:24 ROIcoinMiner: proof-of-work found
2018-01-30 13:10:17 ROIcoinMiner: proof-of-work found
If you could please supply a good ROI coin wallet address from a wallet
that is the most recent version and also fully synchronized and matching
our official block explorer... I will send you 240 replacement coins.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ROIcoin/ROIcoin/issues/34#issuecomment-361965673, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AiUTus58cpCMhvK8XJtKcoG4GtCyoUfpks5tQIWSgaJpZM4RzYGN
.


os: Process.Exited returns false after exiting on signal

Please answer these questions before submitting your issue. Thanks!
What version of Go are you using (go version)?
go version go1.7.5 linux/amd64
What operating system and processor architecture are you using (go env)?
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/bombela/u/go"
GORACE=""
GOROOT="/home/bombela/u/go/go1.7.5"
GOTOOLDIR="/home/bombela/u/go/go1.7.5/pkg/tool/linux_amd64"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build016673509=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
What did you do?
package main

import (
	"fmt"
	"os"
	"os/exec"
	"syscall"
	"time"
)

func main() {
	cmd := exec.Command("sleep", "10")
	if err := cmd.Start(); err != nil {
		panic(err)
	}
	time.Sleep(time.Second * 2)
	cmd.Process.Signal(os.Interrupt)
	err := cmd.Wait()
	fmt.Println(err) // prints signal interrupt error
	fmt.Printf("ProcessState: Exited=%v, Success=%v\n", cmd.ProcessState.Exited(),
		cmd.ProcessState.Success()) // Exited should be true.
	waitstatus := cmd.ProcessState.Sys().(syscall.WaitStatus)
	fmt.Printf("WaitStatus:   Exited=%v, Signaled=%v\n",
		waitstatus.Exited(), waitstatus.Signaled())
}

What did you expect to see?
$ go run main.go
signal: interrupt
ProcessState: Exited=true, Success=false
WaitStatus:   Exited=false, Signaled=true

What did you see instead?
$ go run main.go
signal: interrupt
ProcessState: Exited=false, Success=false # I expect exited == true here,
WaitStatus:   Exited=false, Signaled=true    # and here

It looks like Exited() returns true only if the process exited via exit(), not when it exited via signal. It could be that Exited() should return true on signal.
Casting to syscall.WaitStatus allows to check for both Exited() and Signaled(), making it possible to know if the process is running or not. It seems to be impossible to know if the process is still running via the Command abstraction.
Naive suggestion: maybe a IsRunning() should be provided on Command.

I'm not sure we can change Exited now.
Perhaps we should simply add Signaled.

This needs to be a formal proposal (https://golang.org/s/proposal) before we can move forward.


adding conditional addition of global pull secret to EDIT environment variable

Signed-off-by: Nathan Weatherly<EMAIL_ADDRESS>This is in response to the following bug: https://github.com/stolostron/backlog/issues/22164
The change is only to the chart regeneration script. After this change is merged, the chart regeneration action needs to run.
This should not merge before the corresponding upstream change made to accept the new argument.
PR for the upstream change here: https://github.com/open-cluster-management-io/managed-serviceaccount/pull/40/files
The resulting argument yaml looks like this:
      containers:
      - args:
{{- if .Values.global.pullSecret }}
        - --agent-image-pull-secret={{ .Values.global.pullSecret }}
{{- end }}
        - --leader-elect=true
        - --agent-image-name={{ .Values.global.imageOverrides.managed_serviceaccount }}
        - --agent-install-all=false
        - --feature-gates=EphemeralIdentity=true

This is a draft and requires further testing.

If this is going to update the chart I'd like those changes to be included in the PR so it is atomic

Can do-- I only ask that we run the git action after we merge <whatever we're going to merge> to make sure the action that I ran locally lines up with what github expects.

Related slack conversation: https://coreos.slack.com/archives/C02K4843LMQ/p1651758804837399
Goal: Add global pull secret to deployment's env variable (but only for managed serviceaccount chart)

/assign @TheRealHaoLiu

@TheRealHaoLiu although we hit that bug around secret mis-typing, the environment i spun up w/ this code proved that the image pull secret is at least passed to the managed service account as an environment variable. Reckon we can merge this now, then continue testing?

green path tested
when global pull secret is set the env var is correctly injected into the deployment
managed-serviceaccount-e2e passed on non-OCP cluster (kind)

negative test-case passed
when image pull secret is not set (and proxyConfigs not set) the container deploy successfully without env var


brew install is not working

I ran the command:
brew tap devinci-code/tap

and it ran successfully.
The next command gives me an error:
--- ~ » brew install ahoy
Error: undefined method `desc' for Formulary::Formulae::Ahoy:Class
Please report this bug:
    https://git.io/brew-troubleshooting
/usr/local/Library/Taps/devinci-code/homebrew-tap/ahoy.rb:2:in `<class:Ahoy>'
/usr/local/Library/Taps/devinci-code/homebrew-tap/ahoy.rb:1:in `load_file'
/usr/local/Library/Homebrew/formulary.rb:92:in `module_eval'
/usr/local/Library/Homebrew/formulary.rb:92:in `load_file'
/usr/local/Library/Homebrew/formulary.rb:82:in `klass'
/usr/local/Library/Homebrew/formulary.rb:71:in `get_formula'
/usr/local/Library/Homebrew/formulary.rb:200:in `factory'
/usr/local/Library/Homebrew/extend/ARGV.rb:16:in `block in formulae'
/usr/local/Library/Homebrew/extend/ARGV.rb:16:in `map'
/usr/local/Library/Homebrew/extend/ARGV.rb:16:in `formulae'
/usr/local/Library/Homebrew/cmd/install.rb:41:in `install'
/usr/local/Library/brew.rb:140:in `<main>'

huh, we just set this up for 2 new developers on a few different OSX versions and it worked fine for them.
What version of homebrew and ruby are you running?


BCL API review: Figure out a notification story for Configuration (or decide we won't have it for this release)

One of the important takeaways from the meeting detailed at https://github.com/dotnet/apireviews/tree/master/2015-06-30-configuration is that the IConfiguration.Reload() method would be much more useful if one could subscribe to changes, e.g. it is not very useful to be able to change the configuration at runtime if any components that have already read from configuration don't get the new values without having to rewire the whole application.
Addressing this needs design and might not fit in the release.

cc @lodejard

FYI this looks like a dupe https://github.com/aspnet/Configuration/issues/6

@HaoK thanks! Closing and dupe. Will add a comment on #6 to explain why we still believe it belongs in the backlog.


Finding URL with browser already running

Anh Long - Thanks to you I have successfully converted my codes to work with Edge IE mode.  Unfortunately, good thing does not last long because the website that I interacted with no longer support IE mode.  I am looking into using CDP.
From your and PerditionC examples, it seems CDP is unable to manipulate webpage that already launched.  That is, the examples always show that the browser needs to be closed before you can start a new session.  Each time I tried to set the cleanActiveSession:=False, it gave me an error.  Is it true that that we cannot manipulate the existing webpage (i.e. finding URL) if the (chrome) browser is already running when using CDP?  Could you explain why if this is the case?

It depends on how the browser was started.  Currently in VBA the best means to communicate with the browser is through file handle based I/O where we spawn the browser with it's default (stdin/stdput, ...) handles are opened to a handle that VBA can do nonblocking I/O with.  There is no other way to create this communication channel other than spawning the browser as a child process, hence the need to be the one to launch the browser.  Now VBA can also talk to the browser through websockets.  This is how it is usually done from other languages and will allow talking to an existing browser session assuming it was started with the commands to listen on a websocket.  I do not believe you can tell an existing browser process to start listening so it must be done when initially launched - though I may be mistaken on this.  However, using websockets in VBA causes lockups while waiting for the browser as the current implementation uses a Windows API which does not support nonblocking I/O.  That is the VBA runtime blocks when checking for messages from the browser which in turn causes the hosting application like Excel to appear unresponsive.

Thank you Kenneth @PerditionC for the very helpful and thorough reply as well as your framework with a lot of examples in it. I really appreciate it. @YN32 this is a known setback but comes with an easy work around: as long as user initializes the browser with CDP framework, it can be re attached later on. Correct me if I am wrong but I think this is a commonly shared difficulty with chromium browser. Even with Selenium, we are not able to automate a session not started by Selenium.

Thank you both - K. PerditionC and A. Long!  Regarding PerdictionC's comment, I will stick with the CDP framework instead of websockets since the chance of Excel to be unresponsive is high.
Regarding A. Long's comments, you stated that it can be reattached later on...is this mean, the trick is to save the serialized string to cell(1,1) as in one of your example?  If so, here is the issue:  Users perform data entry and run reports throughout the day using website "A".  The website "A" logs out within 10 minutes if users do not interact with the site.    I have not tried it yet but assume that the serialized string in cell(1,1) will no longer be valid because the page change to "your session has been logged out."  Please assist if there is another way to reattached the site without shutting down chrome.

@YN32 Kenneth was actually explaining how the CDP Framework works with the Chromium engine. For the issue of the target web application logging out once in a while, usually it does not close the entire browser window. Hence you can still make use of the browser window to essentially open the same web application link to load it up again. The serialized string pertains to the entire browser window, not just the tab the browser is operating. Hope that shall help you get an idea on how to manage it!

@YN32 first you need to inspect the HTML to identify what exactly that popup is. If it is an iframe, you will have to use an iframe-related JS method to interact with the elements inside that frame. If the interaction opens the link to another tab then you can apply the example in the demo to manage the new tab with CDP automation as well.


Add enums from sheets

Some enumerations are stored in the Google Sheets document itself. This PR adds those enumerations to the YAML model.

This PR has now been merged into PR #48, closing.


fix(sqllab): Replace stringified 'null' schema column values with NULL

SUMMARY
I'm not sure exactly when this came about, though I believe the issue has been resolved recently (albeit not being able to identify the relevant PR(s)), but it seems at some stage we were stringifying an undefined (NULL) schema in SQL Lab as "null" in both the query and saved_query tables resulting in some undesirable user behavior.
This PR includes a migration which simply replaces the null string with NULL, i.e., undefined.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TESTING INSTRUCTIONS
CI and ran the upgrade/downgrade manually.  Also ran the bench-marking  script (thanks @betodealmeida) which produced the following results:
Migration for 1000+ entities took: 0.42 seconds

Results:

Current: 0.50 s
10+: 0.35 s
100+: 0.35 s
1000+: 0.42 s

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Required feature flags:
[ ] Changes UI
[x] Includes DB Migration (follow approval process in SIP-59)

[x] Migration is atomic, supports rollback & is backwards-compatible
[x] Confirm DB migration upgrade and downgrade tested
[x] Runtime estimates and downtime expectations provided

[ ] Introduces new feature or API
[ ] Removes existing feature or API

@etr2460 I've addressed your comment.


Improve Go implementation

I have two suggestions regarding to the Go implementation:

Use int32 and not int, since Go use int64 for 64-bit GOARCHes
Use native println instead of importing fmt package for printing

@drorafek have you tried any of this ?
I tried 1. and I have not seen a great speed up.
I am guessing that the performance issue we are hitting into is that GO GC compiler does not support TCO.

https://github.com/golang/go/issues/22624
https://medium.com/@felipedutratine/iterative-vs-recursive-vs-tail-recursive-in-golang-c196ca5fd489

Benchmarking the optimised version GO show that we spend a bit less that 60 in the splitBinary function.

What about memory footprint? my guess is that it should use half of the memory for holding the numbers... but maybe I'm wrong
And the reason I suggested 2. was to reduce the binary size.

This didn't improve performance at all (neither RAM usage nor execution time). The only effect I see is that it made the code less readable due to explicit int32(...) typing.
This dropped the binary size from 1.2MB to 0.7MB! I will apply the change.

Well, after digging into println vs fmt.Println:

Thus, they [print and println] are useful to developers, because they lack dependencies (being built into the compiler), but not in production code. It also important to note that print and println report to stderr, not stdout.
The family provided by fmt, however, are built to be in production code. They report predictably to stdout, unless otherwise specified. They are more versatile (fmt.Fprint* can report to any io.Writer, such as os.Stdout, os.Stderr, or even a net.Conn type.) and are not implementation specific.

Thus, I won't apply the change since it will be inconsistent with other implementations.

it will be inconsistent with other implementations

D and Pascal uses writeln.
Nim uses stdout.write.

@data-man All the implementations use stdout, so Go should also output to stdout, but println outputs to stderr.


Replace goin5minutes url with working one

https://www.goin5minutes.com doesn't work, but https://goin5minutes.com does, so replaced all references

@arschles mind reviewing at some point? Thanks!

Thanks @RichardoC ! I think the www no longer works now that the site runs on cloudflare pages.


Add an external pressure in Fi and/or Gadget2

I would like to include an external pressure to stabilize a cloud of SPH particles. For this I am trying to modify the momentum equation in Fi and also in Gadget2, in analogy to the method described by Clark et al. 2011 (https://ui.adsabs.harvard.edu/abs/2011ApJ...727..110C/abstract)

I guess I should modify the file "entdot.f90" in Fi, or the file "hydra.c" in Gadget2, but I don't know which units to use.
Say that I want to include Pext=1 g cm^-1 s^-2. Which number should I write in those files?
Thanks

That's going to depend on the unit system used by the code, which in general is some dimensionless system (I think). The converter you pass when initializing Fi or Gadget is what handles the conversion from units in amuse to whatever the SPH code uses. If you want to implement this with a fixed unit system, you have to figure out the exact unit system and the conversion between the two systems.
A more elegant solution would be to add the external pressure as a parameter in the interface. In that case the unit conversion can be handled by amuse. You would have to add a way to pass the parameter from the interface.c or interface.F90 to the relevant routine in the code. You can study those files and interface.py to see how to set up that you can set it as a parameter. There are also some tutorials on interface building in the amuse documentation.
Another thought I had is that this might be good place to use Bridge, because the external pressure results in a velocity kick. However, it does use the smoothing kernel to determine the direction of the acceleration this pressure causes, so it's not straight forward to get the direction.

@MJCWilhelm Many thanks for your answer. Before attempting the more elegant solution I want to try
the simplest (at least for me) method, using always the same converter in my python script. So the
question is, how is this conversion between the two systems made? where can I find that information?

I'm not entirely sure. The code release papers would be a good place to start, and maybe some early SPH review papers. And maybe @ipelupessy could comment on this, as the developer of Fi?

@MJCWilhelm  after many attempts I think I've figured out this issue. I might try the more elegant solution in the future.
Many thanks for your help!


multiple migration directories support

Hi. I develop my Laravel app using packages so they are located in different folders. Now it's impossible to load migrations from every package like standart laravel migrations can (only app-wise folder). MigrationStorage uses only one path from config. Is it possible somehow to add this path to an array by default and have some (facades?) method to call in package service provider for adding any custom folders to this array? Generates to one default folder, reads from multiple.

Hey, it is somehow complicated due to the current package architecture. Maybe you can have some post-install-cmd composer script, which would copy migration files from all your directories to a single folder configured in elastic.migrations.storage_directory? This would be a much simpler solution.

Thanks, i'll try


Dg update appendix

Updated DG, particularly for:

NFRs
Glossary
Manual testing for all commands

Also made changes to:

Fix index.md image bug
Remove destroying of object in find sequence diagram
Random UG & DG changes

If there are any NFRs or Glossary terms or manual test instructions that you think should be added, please review and comment. I think it still is rather lacking.

Codecov Report

Merging #260 (6340094) into master (97e4e86) will not change coverage.
The diff coverage is n/a.

:exclamation: Current head 6340094 differs from pull request most recent head 88a3083. Consider uploading reports for the commit 88a3083 to get more accurate results

@@            Coverage Diff            @@
##             master     #260   +/-   ##
=========================================
  Coverage     65.21%   65.21%
  Complexity      604      604
=========================================
  Files            93       93
  Lines          2199     2199
  Branches        271      271
=========================================
  Hits           1434     1434
  Misses          687      687
  Partials         78       78

Impacted Files
Coverage Δ

...rc/main/java/coydir/logic/commands/AddCommand.java
100.00% <ø> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


[SUPPORT] Unable to read Hudi MOR data set in a test on 0.8

Describe the problem you faced
This is the same issue as https://github.com/apache/hudi/issues/2566#issuecomment-821583643 in 0.8, seems like the latest version did not fix the issue (unless I'm doing something wrong here).
To Reproduce
I was able to reproduce this issue with the Dockerfile below, building with docker build -f hudi.Dockerfile -t test_hudi . and running py.test -s --verbose test_hudi.py in the container.
Steps to reproduce the behavior:
Dockerfile:
# NB: We use this base image for leveraging Docker support on EMR 6.x
FROM amazoncorretto:8

RUN yum -y update
RUN yum -y install yum-utils
RUN yum -y groupinstall development

RUN yum -y install python3 python3-dev python3-pip python3-virtualenv
RUN yum -y install lzo-devel lzo

ENV PYSPARK_DRIVER_PYTHON python3
ENV PYSPARK_PYTHON python3

RUN ln -sf /usr/bin/python3 /usr/bin/python & \
    ln -sf /usr/bin/pip3 /usr/bin/pip

RUN pip install pyspark==3.0.0
RUN pip install pytest==6.1.1
COPY ./test_hudi.py .

# RUN py.test -s --verbose test_hudi.py

test_hudi.py
import pytest
from pyspark import SparkConf
from pyspark import SparkContext
from pyspark.sql import SparkSession

from pyspark.sql import Row

def test_hudi(tmp_path):
    SparkContext.getOrCreate(
        conf=SparkConf()
        .setAppName("testing")
        .setMaster("local[6]")
        .set(
            "spark.jars.packages",
            "org.apache.hudi:hudi-spark-bundle_2.12:0.8.0,org.apache.spark:spark-avro_2.12:3.0.0,org.apache.spark:spark-sql_2.12:3.0.0",
        )
        .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
        .set("spark.sql.hive.convertMetastoreParquet", "false")
    )
    spark = SparkSession.builder.getOrCreate()

    hudi_options = {
        "hoodie.table.name": "test",
        "hoodie.datasource.write.recordkey.field": "id",
        "hoodie.datasource.write.keygenerator.class": "org.apache.hudi.keygen.ComplexKeyGenerator",
        "hoodie.datasource.write.partitionpath.field": "year,month,day",
        "hoodie.datasource.write.table.name": "test",
        "hoodie.datasource.write.table.type": "MERGE_ON_READ",
        "hoodie.datasource.write.operation": "upsert",
        "hoodie.datasource.write.precombine.field": "ts",
    }
    df = spark.createDataFrame(
        [
            Row(id=1, year=2020, month=7, day=5, ts=1),
        ]
    )
    df.write.format("hudi").options(**hudi_options).mode("append").save(str(tmp_path))
    read_df = spark.read.format("parquet").load(str(tmp_path) + "/*/*/*")
    # This works
    print(read_df.collect())

    read_df = spark.read.format("hudi").load(str(tmp_path) + "/*/*/*")
    # This does not
    print(read_df.collect())

Expected behavior
The test above works. See https://issues.apache.org/jira/browse/HUDI-1568
Additional context
See https://issues.apache.org/jira/browse/HUDI-1568
Stacktrace
Same as https://github.com/apache/hudi/issues/2566#issue-805978132

@nsivabalan Can you see if this is still an issue ?

Ah that worked, thank you @nsivabalan !


update storage-capacity.md to adapt to the latest version

[zh] update content/zh/docs/concepts/storage/storage-capacity.md to adapt to the latest version.

@CKchen0726 We are trying to coordinate the sync work here.
Would you like sign on a few items rather than propose many small PRs?

@CKchen0726 We are trying to coordinate the sync work here.
Would you like sign on a few items rather than propose many small PRs?

Of course, I get it. I look up the materials in the morning and found there is some difference between en/zh docs, so I conveniently propose this pr


[stress testing] Create CI pipeline for stress-cluster related changes

It should check at least these three things:

az bicep build -f main.bicep - Is the cluster deployment config valid
helm upgrade --dry-run for the stress infrastructure
helm upgrade --dry-run for the stress test examples

It might be a good idea to also add a DryRun parameter to the deploy-stress-tests.ps1 script, then instead of copying over the helm upgrade commands for the examples we could just run the script in dry run mode.

After talking with @benbp , we'll also want to have a "live" run where it actually does the deploy to check for things like being able to deploy to multiple regions, etc...


useObservable does not work with prefilled arrays.

Following does not work:
// contents of data
const data = [{id: 'Test1', data: 'test1'}];

const Test = ({data}) => {
    const arr = useObservable(data);

   const handleClick = () => {
       arr.push({id: 'Test', data: 'test'});
   };

   return (
       <>
           <button onClick={handleClick}>add</button>

{JSON.stringify(arr.get(), null, 4)}

       </>
   );
}

an click on the button gives this error:
"Uncaught TypeError: Cannot read properties of undefined (reading 'get')
at updateNodes (index.mjs?8ffd:528:1)
at setKey (index.mjs?8ffd:819:1)
at set (index.mjs?8ffd:756:1)
at Proxy.eval (index.mjs?8ffd:655:1)
at eval (index.tsx?83a8:42:22)
at commitHookEffectListMount (react-dom.development.js?ac89:23150:1)
at commitPassiveMountOnFiber (react-dom.development.js?ac89:24926:1)
at commitPassiveMountEffects_complete (react-dom.development.js?ac89:24891:1)
at commitPassiveMountEffects_begin (react-dom.development.js?ac89:24878:1)
at commitPassiveMountEffects (react-dom.development.js?ac89:24866:1)
at flushPassiveEffectsImpl (react-dom.development.js?ac89:27039:1)
at flushPassiveEffects (react-dom.development.js?ac89:26984:1)
at commitRootImpl (react-dom.development.js?ac89:26935:1)
at commitRoot (react-dom.development.js?ac89:26682:1)
at performSyncWorkOnRoot (react-dom.development.js?ac89:26117:1)
at flushSyncCallbacks (react-dom.development.js?ac89:12042:1)
at flushSync (react-dom.development.js?ac89:26201:1)
at scheduleRefresh (react-dom.development.js?ac89:27795:1)
at renderer.scheduleRefresh (react_devtools_backend.js:6514:16)
at eval (react-refresh-runtime.development.js?7e84:265:1)
at Set.forEach ()
at Object.performReactRefresh (react-refresh-runtime.development.js?7e84:254:1)
at eval (helpers.js?403c:124:1)"
if i use it like this everything works:
const Test = ({data}) => {
    const arr = useObservable([]);

   arr.set(data);

   const handleClick = () => {
       arr.push({id: 'Test', data: 'test'});
   };

   return (
       <>
           <button onClick={handleClick}>add</button>

{JSON.stringify(arr.get(), null, 4)}

       </>
   );
}

Thanks! Fixed in 0.21.3