github_repository_collaborator broken since v2.8.0

Since github provider v2.8.0 the github_repository_collaborator resource is broken.
It fails with User <username> is already a collaborator. In v2.7.0 this worked as expected.
Terraform Version
v0.12.25
Affected Resource(s)

github_repository_collaborator

Terraform Configuration Files
resource "github_repository" "my_repo" {
  name        = "my_repo"
  private     = true
  description = ""
}

resource "github_repository_collaborator" "user_foobar" {
  repository  = github_repository.my_repo.name
  username   = "foobar"
  permission = "pull"
}

Panic Output
Expected Behavior
What should have happened?
The collaborator should be added to the repository and the resource should be in the state.
Actual Behavior
What actually happened?
The collaborator gets added to the repository with the correct permissions,
but terraform fails with this error and the resource is not in the state.
Error: User foobar is already a collaborator

  on test.tf line 7, in resource "github_repository_collaborator" "user_foobar":
  7: resource "github_repository_collaborator" "user_foobar" {

Steps to Reproduce
Please list the steps required to reproduce the issue, for example:

terraform apply

Important Factoids
References

hi @tpatzig, thank you for writing up this issue!
so I'm able to reproduce this with the latest release of the provider (and not in 2.7.0 as suggested) but only if the collaborator in question is also the owner/admin in the repository being created. what's the relationship of the collaborator to the repository in your case?

Experimentation confirms identical API calls between the two versions.  More 👀 welcome though in case I missed something:
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: ---[ REQUEST ]---------------------------------------
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: PUT /repos/terraformtesting/collaboration/collaborators/jcudit HTTP/1.1
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Host: api.github.com
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: User-Agent: go-github
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Content-Length: 22
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Accept: application/vnd.github.v3+json
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Content-Type: application/json
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Accept-Encoding: gzip
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4:
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: {
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4:  "permission": "pull"
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: }
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4:
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: -----------------------------------------------------
2020-05-30T09:55:03.036-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: 2020/05/30 09:55:03 [TRACE] Acquiring lock for GitHub API request (%!q(<nil>))
2020-05-30T09:55:03.247-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: 2020/05/30 09:55:03 [TRACE] Releasing lock for GitHub API request (%!q(<nil>))
2020-05-30T09:55:03.247-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: 2020/05/30 09:55:03 [DEBUG] Github API Response Details:
2020-05-30T09:55:03.247-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: ---[ RESPONSE ]--------------------------------------
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: HTTP/1.1 204 No Content
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Content-Length: 0
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Access-Control-Allow-Origin: *
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Content-Security-Policy: default-src 'none'
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Date: Sat, 30 May 2020 13:55:03 GMT
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Server: GitHub.com
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Status: 204 No Content
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: Vary: Accept-Encoding, Accept, X-Requested-With
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Accepted-Oauth-Scopes:
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Content-Type-Options: nosniff
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Frame-Options: deny
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Github-Media-Type: github.v3; format=json
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Github-Request-Id: C931:63D2:16DF73:421DBD:5ED265B7
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Oauth-Scopes: admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, repo, user
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Ratelimit-Limit: 5000
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Ratelimit-Remaining: 4922
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Ratelimit-Reset:<PHONE_NUMBER>
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: X-Xss-Protection: 1; mode=block
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4:
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4:
2020-05-30T09:55:03.248-0400 [DEBUG] plugin.terraform-provider-github_v2.8.0_x4: -----------------------------------------------------

2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: ---[ REQUEST ]---------------------------------------
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: PUT /repos/terraformtesting/collaboration/collaborators/jcudit HTTP/1.1
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Host: api.github.com
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: User-Agent: go-github
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Content-Length: 22
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Accept: application/vnd.github.v3+json
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Content-Type: application/json
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Accept-Encoding: gzip
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4:
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: {
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4:  "permission": "pull"
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: }
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4:
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: -----------------------------------------------------
2020-05-30T09:59:34.263-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: 2020/05/30 09:59:34 [TRACE] Acquiring lock for GitHub API request (%!q(<nil>))
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: 2020/05/30 09:59:34 [TRACE] Releasing lock for GitHub API request (%!q(<nil>))
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: 2020/05/30 09:59:34 [DEBUG] Github API Response Details:
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: ---[ RESPONSE ]--------------------------------------
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: HTTP/1.1 204 No Content
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Content-Length: 0
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Access-Control-Allow-Origin: *
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Access-Control-Expose-Headers: ETag, Link, Location, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval, X-GitHub-Media-Type, Deprecation, Sunset
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Content-Security-Policy: default-src 'none'
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Date: Sat, 30 May 2020 13:59:34 GMT
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Referrer-Policy: origin-when-cross-origin, strict-origin-when-cross-origin
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Server: GitHub.com
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Status: 204 No Content
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: Vary: Accept-Encoding, Accept, X-Requested-With
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Accepted-Oauth-Scopes:
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Content-Type-Options: nosniff
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Frame-Options: deny
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Github-Media-Type: github.v3; format=json
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Github-Request-Id: C9A7:1E8C:2B5799:7953D9:5ED266C6
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Oauth-Scopes: admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook, delete_repo, repo, user
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Ratelimit-Limit: 5000
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Ratelimit-Remaining: 4916
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Ratelimit-Reset:<PHONE_NUMBER>
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: X-Xss-Protection: 1; mode=block
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4:
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4:
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: -----------------------------------------------------
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: 2020/05/30 09:59:34 [DEBUG] Github API Request Details:
2020-05-30T09:59:34.444-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: ---[ REQUEST ]---------------------------------------
2020-05-30T09:59:34.445-0400 [DEBUG] plugin.terraform-provider-github_v2.7.0_x4: GET /repos/terraformtesting/collaboration/invitations?per_page=100 HTTP/1.1

Looks like we released a change in how we interpret a 204 response.  I'm unsure of how to proceed as this is in line with GitHub documentation.
@tpatzig from a user perspective, would you rather we emit a warning in this scenario instead of failing the run with an error?

@jcudit I ran into the same problem under different circumstances over in #480 and I would rather expect a warning than an error. In my case the user was an organizational admin and got admin permissions automatically for the repository (check via the /repos/:owner/:repo/collaborators/:username/permission endpoint). For documentation purposes the admin was also explicitly added to the repositories collaborators where he is an active member.

Hi @anGie44, the collaborator I'm trying to add  is an outside the organization collaborator.
It is not the same admin user I've configured the provider with and the repo is created with.
Hi @jcudit, I do not see, why this should fail or error at all 🤷♂
This outside collaborator is added to that repo for the first time; it is not the owner/admin of that repo. Without that collaborator resource that user would have no permissions on that repo.

@tpatzig by outside does that also mean the user is not part of a team within the org and the org has Base Permissions set to None? I was also able to reproduce this scenario in v2.8.0 and not v2.7.0 by adding a completely new user foobar (outside org and not the user authenticated with the provider) first to a team that lives within an org (org has Base Permissions set to None so private repos are not visible from the new user's perspective even while in the team), and then I attempted to add the new user as a collaborator and got the error Error: User foobar is already a collaborator in v2.8.0

I also did some more testing on this one today. My organization also has Base Permissions set to None and I'm trying to add a user (which is already part of my organization) to a repository with Write permissions. The user gets added, but the apply fails with the error message above. Note that the user is not an organizational administrator.

Yes, with outside collaborator I mean a gh user, that is not part of the organisation (nor in any of the organisations teams) by intention. The Base Permissions of our Org is Read.

I was able to reproduce the issue with
Terraform 0.12.26
provider.github v2.8.1
Test

User is a member of the organization
User was not affiliated with the repo before (the admin was trying to add user to the repo)
During multiple tests, the user was added with "pull", "push", "triage", "maintain", "admin" permissions

Result

In each case the expected permission is set in GitHub. (Good!)
In each case, Terraform reports the "User X is already a collaborator" error. (Bad)

Additional test

I added the user to the repo as a collaborator outside of Terraform
I reran the Terraform code multiple times with different permission set

Additional Result

Terraform reported that the user is already a collaborator (Good!)
GitHub showed that the user permissions changed in line with the Terraform code (Weird/Bad from a Terraform perspective)

My understanding is that GitHub reports back with a 204 to every command and that is considered an error in Terraform: https://github.com/terraform-providers/terraform-provider-github/blob/master/github/resource_github_repository_collaborator.go#L77
I think GitHub never really had any internal errors about the request, it's just that 204 is the default response to any changes.
Troubleshooting details
According to the GitHub API description on adding collaborators, there are two possible responses to the call:

201 (and some content), if an invitation was sent to the invited GitHub user
204 if the user is already a collaborator

What the API documentation fails to mention (at least in my case), is that if a user is a member of my organization, the user will not need an invitation to be added as a collaborator to a repository within the organization.
So, my assumption is that since the user doesn't need an invite, a 201 response would be inappropriate. The only other defined response is 204 and for whatever reason, GitHub API chooses to send that in each OK case. This suspicion is further advanced by the "Remove a repository collaborator" documentation below in the API, which also responds with 204 if the collaborator was successfully removed.
In short: the GitHub API documentation fails to mention that 204 is reported in any regular case.
What's worse, it seems to execute the request properly, before reporting 204, even when the user is really a collaborator on the repo.
Additional note: the call to GitHub AddCollaborator seems fine.
Proposed solution
Assume that 204 == OK. This seems to be a shortcoming of the GitHub API documentation.

In resourceGithubRepositoryCollaboratorCreate, check if the user is already added to the repo as a collaborator, with the correct permission. (With this API call.)
If the user is already added, error out. (As is expected by Terraform for non-managed resources.)
If the user is not added call AddCollaborator.
If the response is not 204 (or 201, I guess, I'm not sure where that's checked), error out. (Opposite of current check.)

Personally, I'd prefer never erring and only giving warnings. If I have a user that has access to the repo already (say through a team), but we want to give this single user (not the whole team) more access, I'd want to be able to do that through the github_repository_collaborator step. So, if the user already has access to the repo but with LESS permissions than the Terraform is trying to add, then the permissions should update to reflect Terraform.

I'm running into this issue now on provider v2.19.

I also have this issue with repo collaborators that are managed by Terraform via this provider.
Applying the plan creates the collaborators on the repo but then causes the errors noted in this issue.
If you then import the resource into the state and rerun the plan the infra is up to date and not changes are detected.
Hopefully this gets fixed soon.

Even though this is now closed with a fix, we are still experiencing the issue with
Terraform version v0.12.25
Provider version 2.9.2
We have to revert to Provider version 2.7.0 to get rid of the error.

Even though this is now closed with a fix, we are still experiencing the issue with
Terraform version v0.12.25
Provider version 2.9.2
We have to revert to Provider version 2.7.0 to get rid of the error.

Hi @victor-wong-dragon, apologies for the confusion! the PR #424, while merged, hasn't released with a recent version of the provider. I just updated the PR with the 3.0.0 milestone link. There are still a couple items in https://github.com/terraform-providers/terraform-provider-github/milestone/12 that are pending before the major release.


SckClientGame_DataArrival doesn't handle TCP_NODELAY / Nagle's algorithm

Sometimes, it happens rarely, but sometimes, in SckClientGame_DataArrival ,  when
GetTheLong(packet(0), packet(1)) + 2
is NOT EQUAL to bytesTotal , the client used http://en.wikipedia.org/wiki/Nagle's_algorithm to try to send several packets at once. the result? the bot may completely ignore certain orders, and not learn correctly from packets, for instance, sometimes during pvp, sometimes i say "exiva 0" so everybody see it, instead of shooting an SD. makes it bloody obvious that im cheating.
i only play tibia 7.6 these days, i don't know if it's an issue with newer client versions,hopefully Cipsoft disabled Nagle's Algorithm sometime after 7.6 (as it shouldn't be on for games where low latency is important), but i don't know.

interestingly, even when disabling Nagle's by default (like this http://www.pcadvisor.co.uk/how-to/internet/3427572/how-reduce-your-latency-in-windows-7/ ), tibia 7.6 still use it... almost as if it's manually enabling it, which would be weird (most program leave it at default)...

Well... in that case this would require to implement a buffer in Blackd Proxy to guarantee 100% sucess when reading commands from client. That would require a lot of time and a lot of tests, specially with critical cases... Sorry, I don't have time for that. But feel free to try doing it if you want. You will find that blackd proxy already manages a buffer for packet bytes received from game server. You could copy the functions and rework them to work in same way with game client. You might also have to do some other minor changes in several points. And of course you would have to do a lot of tests!

i have made a fix. all i have confirmed is that it completely fixes the issue in Tibia 7.6, which is good enough for my personal use. ill give you the code shortly, the logic isn't that hard, and i don't think it'd cause any problems for the newer versions, but i haven't tested. i hope you can do some testing

please let met know if you review it, and if you tested it, and if you found any issues with it


Create dependabot.yml

Allows Dependabot to automatically create pull requests which should resolve any security warnings.
It will pull 2 PR's per day max, for both Composer + NPM packages

Or, perhaps it's just a config change that needs to be made?


Remove background video

The error in the console I mention in the commit doesn't seem to be related to these changes.
Edit: also, this updated some packages
Closes #6

Looks good to me. I checked out the error and that's definitely just syntax of popup.js rather than anything to do with background videos.


Fix filetree metadata in Mongo-BSON and Mongo-Core

To restore Pharo 4 support and have green travis

I learnt we should use Monticello filetree commits (and not iceberg) at least until we convert the project to metadata-less format. Maybe I will add this to readme.


added Profile for : Keshav-Chaudhary

## Description
Added my profile information to the repository.
## Related Issues
#963
## Changes Proposed
Added my profile information to the public/data/Keshav-Chaudhary.json file.
Updated the src/ProfilesList.json file
## Checklist

[✅] I have read and followed the [Contribution Guidelines (https://github.com/shyamtawli/devFind/blob/master/CONTRIBUTING.md).
[✅]  All new and existing tests passed.
[✅]  I have updated the documentation to reflect the changes I've made.
[✅]  My code follows the code style of this project.
[✅]  The title of my pull request is a short description of the requested changes.

Screenshots

## Note to reviewers
Please review and provide feedback. Thank you!

@Keshav-Chaudhary Thank you so much for your contribution! Your efforts are greatly appreciated and will go a long way in improving our project. Please feel free to share it with others and help us grow even further!


python3Packages.web: 0.51 -> 0.61, fix build

Motivation for this change
This would fix the build, if cheroot was about to build
Things done

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

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Replaced by #105198


Opentelemetry for Kogito Workflows

Description
I have created Kogito Workflow which involved AsyncAPI operators using Kafka for publishing and subscribing. I have integrated Opentelemetry following this doc: https://quarkus.io/guides/opentelemetry#cdi
What is happening is, when the workflow transitions from one step to another, the tracing context is not being carried forward and it uses different context at different steps. It would be good to have option to have same tracing context throughout the workflow which makes it easy to track the full execution flow traces using same trace_id.
Implementation ideas
No response

@fjtirado @cristianonicolai

@rand-guy  sorry for the delay on taking a look into this.
The tracing context is not the same one once the workflow is resumed after receiving an event?
Can you provide a simple reproducer to be sure we address the same issue?


#17 use dismissible_page library

can you close this pr and make a new pr to merge into the branch "development" instead? Want to keep the same convention as the website.
Also, when you tap on the image it zooms in, is there a way to display scrollable text under the image instead?


Cross-browser Keyboard tab support

Keyboard tabbing does not work in Firefox, Safari, and Opera on Mac for the single custom select boxes. I am tabbing thru http://ivaynberg.github.com/select2/. It works in Chrome tho.
A possible work around would be make the developer put a z-index on the select box trying to duplicate, then copy the z-index? (http://jamielottering.github.com/DropKick/ does has keyboard tabbing working).
This working in every browser is very important to my client. Keyboard tabbing is very important! (not an enhancement, a requirement, if you are duplicating a select field it should work like a select field imo)
Using FF 12.0, Safari Version 5.1.7 (6534.57.2), Opera v12 on OS X 10.6.8

@hjelmeir @ivaynberg is keyboard tabbing something I have to enable? I'm not able to tab down the dropdown list

@akinhwan This issue was from 7 years ago. I don't even remember making this bug. Please start a new issue.


Create GetPaths operation

This operation would allow users to traverse a Gaffer graph and return the path from each seed to the destination. The path returned should be a list of the Edges traversed (including properties).
The GetPaths operation could simply have a list of GetElements operations. The operation could then be handled by executing a GetElements operation, adding the results to an in memory set, extracting the the vertex at the other end of the edge, then executing the next operation.
After each stage we should remove Edges from the in memory set that are no longer required to reduce the amount of memory used.
After all GetElements operations have been executed we would then need to build up the list of paths.
The return type could be Iterable<Iterable>. For example if you queried for A and B.
[
[A->C, C->D],
[A->C, C-E],
[B->D, D->F]
[B->A, A->C]
]

Depends on #1443.

Looking at the current branch for this, I think more discussion is needed as to what we're trying to achieve and the design.

The operation should not be called Path. It should be called GetPaths and should return Paths.
We need a Path class that can be used to store a path through the graph. A Path is more than just an Iterable of Edges as there is a guarantee that one of the vertices in the next edge is the same as one of the vertices in the current Edge. The Path class should enforce this constraint when it is created.
Are we going to use the MatchedVertex field in a Path to identify which end of the edge was either the seed (if it's the first edge) or appeared in the previous edge (if it's not the first edge)? If so the Path class should enforce this.
What Paths are valid? Is A->B->A valid? Is A->B->A->C valid? Is A->B->A->B valid?
A Path class could include just Edges, or include both Entities and Edges. We should allow the user to decide which they want. This would then mean that the GetPath operation with only 1 hop could return Entitys for the seed vertex, Edges and then Entitys for the destination vertex (currently users have to manually query to find the properties of vertices at the other end of a hop).
Creating multiple GetElements operations as the input to the operation gives maximum flexibility to the user but is complicated if all you want to do is run multiple GetEdges. There could be another operation called GetNHopPaths which did this automatically.

Thanks @gaffer01.

GetPaths is much better - I've update the issue to refer to GetPaths instead of Path.
A Path class is a good idea, if it extended something like ArrayList then we could still process it as a List. The Path class would then just override add and addAll to validate the Path is connected.
Yes we need to use the MatchedVertex to ensure we extract the opposite vertex. I actually added a comment about this a few days ago on the pull request for this issue.
Configuring the operation with a list of GetElements operations means each hop could be down a different Edge group with different filters. So yes, I think all of those paths should be valid.
We had planned to allow Entities and Entity filtering in a future issue, to reduce the complexity of this initial issue. Currently we just validate and say no Entities are allow in the Views.
Agreed it is complex, however the flexibility it is really powerful. Yes, we could extend the GetPaths operation and make simpler versions of it.

Thanks. The other advantage of having a Path object is that it can have methods to return the vertex at "distance" N from the original seed. This avoids the user having to iterate through the list of Edges until N have been consumed and then use MatchedVertex to find the actual distance N vertex.
It might be worth thinking if there is some object that wraps an Iterable of Paths that would support methods like getVerticesAtDistance(n) - that could then be used to return all vertices at distance N from some seeds.

Yes that distance field would be helpful.
The getVerticesAtDistance(n) is something we need to be able to do. However, I had imagined we would use a generic operation to do it, see - #1345.

We should be careful about whether our Path object is actually a trail or a walk: https://en.wikipedia.org/wiki/Path_(graph_theory).
In a directed graph A->B->C there is a path A->B->C but there is no path C<-B<-A. But with the current proposed implementation of this operation, C<-B<-A would be returned as path from the seed C.
We need to:

Be clear about whether we're creating walks, trails, or paths.
Be clear whether we're treating the graph as undirected (so that C-B-A is a valid path in the above example) or respecting the edge directions (so that it isn't a valid path).

Merged into develop.


Feat/lqty migration

Resolve LQTY not taking into account ETH. Also Bailout ETH from current PLQTY strategy

This has been deployed and works. The PLQTY bailout was successful.


Docker compose

This change intrudces a docker-compose file for the quickest way to get the demo app up and running. It works well on Windows using WSL2 and PowerShell, and should work on Linux, though I have not treied it.
The "headers cannot be sent" error has been fixed in disconnect.php and the getConnections() endpoint has been added to the list of supported endpoints.
This demo app woud benefit from tenant connection selection, and scope selection too. Those are features that are relatively new, so I guess this application has not yet caught up. but I can provide another PR if I get those working for my own purposes, if that is helpful.

@judgej - this looks interesting.  Thank you for the PR.  I'll find time next week to review it.

I've got a select for the tenant too, on my local instance, to switch between tenants that are authorised. I can include that in this PR, or probably better to keep it for later (I don't want to put too much in each PR, as it becomes much harder to inspect).

@judgej - tested and works as advertised.
I'll merge this change and then if you want to make a PR for the tenant drop down list I can review that next.


Tree View conflicts with deleting pages

When having Tree View installed, it seems my instance is not deleting pages. Without it, it works.
Instance in docker, tried in online mode
Deleting page from space editor.plug.js:1:10463
Deleting page space.ts:60:14
XHRDELETE
https://sb.domain.com/test music.md
[HTTP/2 500  4ms]

An exception was thrown as a result of invoking function deletePage error: Failed to delete file: editor.plug.js:1:696
Error running command Failed to delete file: editor_ui.tsx:146:28
Flushed widget cache to store

the XHR Delete has the following Response Unregistered syscall clientStore.get

I'm not able to reproduce it in my instance. From the error message, the problem looks to be coming from the editor component. But there was a similar problem with the tree view plug a while back that has since been fixed.

Do you get the delete confirmation modal? Or does it fail before even showing that?
Do you have the latest version of the Tree View plug installed (Ctrl-/, Plugs: Update)?
What version of SilverBullet are you running (Ctrl-/, Help: Version)?
Does it work in sync mode?
Does it work when the tree view plug is installed, but the tree view panel itself is closed?

* Do you get the delete confirmation modal? Or does it fail before even showing that?

Yes.

* Do you have the latest version of the Tree View plug installed (`Ctrl-/`, `Plugs: Update`)?

I guess I had it as i run PLUGS: Update regularly

* What version of SilverBullet are you running (`Ctrl-/`, `Help: Version`)?

0.8.4

* Does it work in sync mode?

I don't recall right now

* Does it work when the tree view plug is installed, but the tree view panel itself is closed?

No, treeview was not open and it was not working
FYI,
I tried to install the plugin again to make more tests but when installing it, my instance stops behaving.
For example: I cannot open the Page/Template picker or the command selection.
I once tried to add the treeview to the sidebar and when pressing the icon it was throwing an error (I couldn't capture the error). After that, my instance was unresponsive and could not do more tests.
Deleting treeview brings back my instance to a normal state

FYI,
I tried to install the plugin again to make more tests but when installing it, my instance stops behaving.
For example: I cannot open the Page/Template picker or the command selection.

I believe this might be related to https://github.com/silverbulletmd/silverbullet/issues/986 @paletochen
It's fixed in 0.8.5

Thanks for the pointer.
I have 0.8.5. I installed again treeview and can confirm that now it doesn't conflict with deleting pages


MSID: 104901 Version: 1 DOI: 10.1101/2<IP_ADDRESS>7468

MSID: 104901
Version: 1
Preprint DOI: https://doi.org/10.1101/2<IP_ADDRESS>7468
Step 1. Awaiting reviews
Editorial to post reviews via hypothesis
Useful links:

DocMap: https://data-hub-api.elifesciences.org/enhanced-preprints/docmaps/v2/by-publisher/elife/get-by-manuscript-id?manuscript_id=104901
New model tracking: https://docs.google.com/spreadsheets/d/1_fHaoOy7hjyocptKtVJRijeNpUY4hBS7Ck_aVmx6ZJk/
Reviews on sciety: https://sciety.org/articles/activity/10.1101/2<IP_ADDRESS>7468

For trouble shooting (e.g. no Docmaps available):

DocMap issue addressing: https://miro.com/app/board/uXjVNCwK6EI=/
Explore DataHub DocMaps API: https://lookerstudio.google.com/reporting/4c2f0368-babb-4beb-b5b3-497e7e7b0f08/page/ejphD
Unmatched submissions and preprints: https://lookerstudio.google.com/u/0/reporting/9f86204f-3bf7-477c-9b18-5c5ef141bf69/page/p_gxi57ha93c
Unmatched manuscripts spreadsheet: https://docs.google.com/spreadsheets/d/15QcK8w-ssB7109RQEDtFpJPZ0J5HTGxoHa_2TtpMBbg/edit#gid=1336081641

Step 2. Preview reviewed preprint
Production QC content ahead of publication
Instructions:

QC preview: https://prod--epp.elifesciences.org/previews/104901v1
Update ticket with any problems (add blocked label)
When QC OK, add QC OK label to ticket and add publication date and time to https://docs.google.com/spreadsheets/d/1amAlKvdLcaDp5W8Z8g77NmkwbMF5n_u89ArSqPMO8jg
Move card to next column
(At end of the day post link in #enhanced-preprint and ask for PDF to be generated)

Useful links:

Preprint DOI :  https://doi.org/10.1101/2<IP_ADDRESS>7468
Confirm reviews returned by EPP: https://prod--epp.elifesciences.org/api/reviewed-preprints/104901/v1/reviews
To update the MECA path in the docmap: https://docs.google.com/spreadsheets/d/1mctCQuNFBjSn97Lihy7_vBO6z7-N-oqyLv4clyi6zHg

Step 3: Awaiting search reindex
This step adds the reviewed preprint to the homepage: https://elifesciences.org
The search reindex is triggered once an hour. We need the reviewed preprint to be indexed as the search application serves the journal homepage.
Useful links:

Jenkins pipeline to reindex search can be triggered sooner or monitored here: https://alfred.elifesciences.org/job/process/job/process-reindex-reviewed-preprints/

Step 4: Published! PDF requested
Waiting for PDF to be generated
Useful links:

PDF tracking: https://docs.google.com/spreadsheets/d/106_XeDjmuBae7gexOTNzg60lapeqjl2aRn9DzupGyS8/

Step 5: Introduce PDF to data folder and git repo
Upload PDF to relevent folder in git repo https://github.com/elifesciences/enhanced-preprints-data/
Step 6: Done!

[ ] Kettle is on!

Hi @fred-atherden the authors have now sent an AR for this so I've just asked Ed Office to add it, please could you wait for this?

Thanks Nicola - too late to pause publication, but we can add it in afterwards

okay, will let you know once it has been added

Thanks @n-adamson, yep - all sorted!
Great - thanks!


Determining Transaction Status

Multi-statement transactions will work correctly only if statements are not rerouted by the routing_rules function to a different server pool mid-transaction.

Would comparing xact_start to query_start be a reliable method to determine if the client is in transaction, or is there some other attribute we can examine, then pass this as a argument to the routing function?  Trying to prevent multi-statement transactions from getting rerouted incorrectly.
From client.c:
        /* remember timestamp of the first query in a transaction */
	if (!client->xact_start) {
		client->pool->stats.xact_count++;
		client->xact_start = client->query_start;
	}

Note how xact_start is<PHONE_NUMBER>947376 on all these commands:
$ tail -f /tmp/pgbouncer.log | grep 'route_client_connection'
2019-11-12 17:46:34.947 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:34.947 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => BEGIN;
2019-11-12 17:46:34.947 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:34.947 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>947376
2019-11-12 17:46:34.948 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:34.948 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => BEGIN;
2019-11-12 17:46:34.948 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:34.948 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>947376
2019-11-12 17:46:35.041 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:35.041 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => SELECT * FROM pgbench_branches LIMIT 11;
2019-11-12 17:46:35.041 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:35.041 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>041918
2019-11-12 17:46:35.124 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:35.124 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => UPDATE pgbench_branches SET bid = bid WHERE bid < 200;
2019-11-12 17:46:35.124 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:35.124 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>124458
2019-11-12 17:46:35.219 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:35.219 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => SELECT * FROM pgbench_branches LIMIT 7;
2019-11-12 17:46:35.219 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:35.219 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>219278
2019-11-12 17:46:35.316 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Username => username
2019-11-12 17:46:35.316 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: Query => COMMIT;
2019-11-12 17:46:35.316 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: xact_start =><PHONE_NUMBER>947376
2019-11-12 17:46:35.316 9587 DEBUG C-0x55dee77e8950: postgres/username@<IP_ADDRESS>:59510 route_client_connection: query_start =><PHONE_NUMBER>316069

That looks like a very promising approach @taspotts - thanks!  It would be great if you want to implement and test this. Pass xact_start to the routing/rewrite functions as an additional arg.  If it works, feel free to send a PR.

C programming is not my forte, so anything I can figure out would be an awful hack at best...  But I can try!  :)
Another thought on this per:  https://www.pgcon.org/2014/schedule/attachments/330_postgres-for-the-wire.pdf
ReadyForQuery - the ReadyForQuery message includes transaction status
'Z' int32 len 'I' or 'T' or 'E'
Current backend transaction status indicator. Possible values are ‘I’ if idle (not in a transaction block); ‘T’ if in a transaction block; or ‘E’ if in a failed transaction block (queries will be rejected until block is ended).
Is this information accessible from the client/pool/link "object"?  I don't even know where to begin looking.  :(

pgbouncer puts the transaction status in client->link->idle_tx. This value is true/1 if the state is either T or E.
I made some modification, so that the parameter is used in the python call: https://github.com/ibot3/pgbouncer-rr-patch/pull/1
However, these changes currently depend on #53. (I also made a python3.7 branch on my fork).

@ibot3 #53 is now merged.  I'd love to see https://github.com/ibot3/pgbouncer-rr-patch/pull/1 (and possibly the other various fixes from https://github.com/athenianco/pgbouncer-rr-patch) merged into here as well, and I'm very curious how you ended up using that change in production -- the idle_tx boolean isn't set until after the transaction is started (so for example BEGIN on a single line doesn't have it), and detecting that seems like it's littered with edge cases.

I currently do not have time or motivation to create a new pull request. However, it's just a few changes that are probably made quickly.
I did some advanced tests with this setup but it did not ended in production. However it may could have worked.
I created a (kind of hacky) python routing script that checks with a regex and the transaction status if the query should be routed to the primary or to the replication servers. I also added a healthcheck, so that queries are only sent to healthy servers.
https://gist.github.com/ibot3/47dcd35065f2aaa15562aae03d6a53cb
Feel free to use it, but I don't know how it would perform in production and with a higher load.

Actually without ibot3#1 I am facing problem with normal select queries also.
With ibot3#1
2024-10-21 22:48:27.871  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:53926 route_client_connection: Username => root
2024-10-21 22:48:27.871  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:53926 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:48:27.871  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:53926 route_client_connection: xact_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.871  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:53926 route_client_connection: query_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.871  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:53926 route_client_connection: in_transaction => 0
2024-10-21 22:48:27.888  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: Username => root
2024-10-21 22:48:27.888  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:48:27.888  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: xact_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.888  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: query_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.888  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: in_transaction => 0
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: Username => root
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: xact_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: query_start =><PHONE_NUMBER>871595
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection:in_transaction value updated to 0 using client->link->idle_tx
2024-10-21 22:48:27.890  [2771888] DEBUG C-0x55696541d640: postgres_read_db/root@[::1]:53926 route_client_connection: in_transaction => 0
2024-10-21 22:48:28.623  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37160 route_client_connection: Username => root
2024-10-21 22:48:28.623  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37160 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:48:28.623  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37160 route_client_connection: xact_start =><PHONE_NUMBER>623006
2024-10-21 22:48:28.623  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37160 route_client_connection: query_start =><PHONE_NUMBER>623006
2024-10-21 22:48:28.623  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37160 route_client_connection: in_transaction => 0
2024-10-21 22:48:29.126  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37162 route_client_connection: Username => root
2024-10-21 22:48:29.126  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37162 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:48:29.126  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37162 route_client_connection: xact_start =><PHONE_NUMBER>126405
2024-10-21 22:48:29.126  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37162 route_client_connection: query_start =><PHONE_NUMBER>126405
2024-10-21 22:48:29.126  [2771888] DEBUG C-0x55696541d640: postgres/root@[::1]:37162 route_client_connection: in_transaction => 0

Without ibot3#1
2024-10-21 22:50:14.800  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43342 route_client_connection: Username => root
2024-10-21 22:50:14.800  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43342 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:14.800  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43342 route_client_connection: xact_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.800  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43342 route_client_connection: query_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.800  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43342 route_client_connection: in_transaction => 0
2024-10-21 22:50:14.817  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43342 route_client_connection: Username => root
2024-10-21 22:50:14.817  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43342 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:14.817  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43342 route_client_connection: xact_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.818  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43342 route_client_connection: query_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.818  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43342 route_client_connection: in_transaction => 1
2024-10-21 22:50:14.821  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: Username => root
2024-10-21 22:50:14.821  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:14.821  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: xact_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.821  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: query_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.822  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: in_transaction => 1
2024-10-21 22:50:14.824  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: Username => root
2024-10-21 22:50:14.824  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:14.824  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: xact_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.824  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: query_start =><PHONE_NUMBER>800673
2024-10-21 22:50:14.824  [2775878] DEBUG C-0x5640fecba640: postgres_write_db/root@[::1]:43342 route_client_connection: in_transaction => 1
2024-10-21 22:50:15.412  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43348 route_client_connection: Username => root
2024-10-21 22:50:15.412  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43348 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:15.412  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43348 route_client_connection: xact_start =><PHONE_NUMBER>412572
2024-10-21 22:50:15.412  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43348 route_client_connection: query_start =><PHONE_NUMBER>412572
2024-10-21 22:50:15.412  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43348 route_client_connection: in_transaction => 0
2024-10-21 22:50:15.416  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43348 route_client_connection: Username => root
2024-10-21 22:50:15.416  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43348 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:15.416  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43348 route_client_connection: xact_start =><PHONE_NUMBER>412572
2024-10-21 22:50:15.416  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43348 route_client_connection: query_start =><PHONE_NUMBER>412572
2024-10-21 22:50:15.416  [2775878] DEBUG C-0x5640fecba640: postgres_read_db/root@[::1]:43348 route_client_connection: in_transaction => 1
2024-10-21 22:50:15.907  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43364 route_client_connection: Username => root
2024-10-21 22:50:15.907  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43364 route_client_connection: Query => select inet_server_addr()
2024-10-21 22:50:15.907  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43364 route_client_connection: xact_start =><PHONE_NUMBER>907496
2024-10-21 22:50:15.907  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43364 route_client_connection: query_start =><PHONE_NUMBER>907496
2024-10-21 22:50:15.907  [2775878] DEBUG C-0x5640fecba640: postgres/root@[::1]:43364 route_client_connection: in_transaction => 0

I have executed simple select query select inet_server_addr()
See that in second log, in_tranaction value is  1, eventhough it is not an explicit transaction.
I am using transaction pool_mode btw. In transaction pool_mode, first 2 queries are redirected to postgres_write_db , and the 3 rd query is redirected to postgres_read_db . While in session pool_mode , all queries are going to postgres_write_db only.
routing_rules.py
def routing_rules(username, query, in_transaction):
	if ("select" in query or "SELECT" in query) and not in_transaction:
		return "postgres_read_db"
	else:
		return "postgres_write_db"

I have attached the whole log files here.
bouncer.bugfix.log
bouncer.def.log
Let me know if more information needed :)


did:key implementation in AFJ

Does AFJ support did:key method?
If it does then what is the best way to implement it and it's documentation?

Yes. You can register it on the dids module on the agent like so.
...
dids: new DidsModule({
      registrars: [new KeyDidRegistrar()],
      resolvers: [new KeyDidResolver()],
    }),
...

So we can build a connection between two people using did:key method?

So we can build a connection between two people using did:key method?

Yes.

Not a DIDComm connection. did:key cannot have a service endpoint, so it can’t be used in a DIDComm connection.


Establish OIDC integration following the design implemented on the PoC

Overview of the Feature Request
The PoC helped us validate the OIDC auth design. The goal now is to carry out the refined and actual implementation. Specifically, in this issue, the goal is to implement the changes related to the SPA.
Link to the PoC: https://github.com/IQSS/dataverse-frontend/pull/516
What kind of user is the feature intended for?
SPA users
What inspired the request?

https://github.com/IQSS/dataverse-frontend/pull/516
Q4 milestone

What existing behavior do you want changed?
None
Any brand-new behavior do you want to add to Dataverse?
OIDC auth
Any open or closed issues related to this feature request?
https://github.com/IQSS/dataverse-frontend/pull/516

Paused until we have more progress in terms of api work.


Move to RSpec tests

Context
The tests are currently written in Minitest. We use RSpec everywhere else.
Change

Port the tests over to RSpec.
Remove Minitest.

Nice work. If we're aligning the gem more with our own standards and conventions compared to the upstream repo from where it was forked should we consider using proper uppercase acronyms for the BAI2 and BAI modules/classnames? We could probably even do it in a way that maintains backwards compatibility if there is an interest in submitting a PR to the upstream project. WDYT?

I don't have strong opinions on inflections. I find them useful for things which end up being rendered in rails views (eg a form builder might apply bai_file.humanize for an input label; configuring an inflection negates the need to set a label kwarg).
Wei seemed to think the upstream project was abandoned (no updates for 2 years, no response to his issue).


Memleak in work ctx allocation

this is only exsits in the most updated master branch caused by #714  (merge nanolib with nanonng)

==214101==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 256 byte(s) in 32 object(s) allocated from:
#0 0x7f3019863867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x55694cad1152 in nni_alloc ../nng/src/platform/posix/posix_alloc.c:20
#2 0x55694caa0a9e in nng_alloc ../nng/src/nng.c:60
#3 0x55694ca8c9bb in alloc_work ../nanomq/apps/broker.c:650
#4 0x55694ca8cab3 in proto_work_init ../nanomq/apps/broker.c:664
#5 0x55694ca8d1b3 in broker ../nanomq/apps/broker.c:841
#6 0x55694ca901ae in broker_start ../nanomq/apps/broker.c:1382
#7 0x55694ca6f530 in main ../nanomq/nanomq.c:214
#8 0x7f301958cfcf in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
Direct leak of 16 byte(s) in 2 object(s) allocated from:
#0 0x7f3019863867 in __interceptor_malloc ../../../../src/libsanitizer/asan/asan_malloc_linux.cpp:145
#1 0x55694cad1152 in nni_alloc ../nng/src/platform/posix/posix_alloc.c:20
#2 0x55694caa0a9e in nng_alloc ../nng/src/nng.c:60
#3 0x55694ca8c9bb in alloc_work ../nanomq/apps/broker.c:650
#4 0x55694ca8cab3 in proto_work_init ../nanomq/apps/broker.c:664
#5 0x55694ca8d480 in broker ../nanomq/apps/broker.c:856
#6 0x55694ca901ae in broker_start ../nanomq/apps/broker.c:1382
#7 0x55694ca6f530 in main ../nanomq/nanomq.c:214
#8 0x7f301958cfcf in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
SUMMARY: AddressSanitizer: 272 byte(s) leaked in 34 allocation(s).


⚠ Bofrost.at has degraded performance

In 95b9ac4, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1164 ms

Resolved: Bofrost.at performance has improved in 4722170 after 6 minutes.


Desktop styles

Closes #33.
The styles for the multiselect fields are not great, but they'll change anyway if we start using react-select.

[ ] I would also add a header for the city filter. Not sure about the styles but it would make the meaning of the first filter crystal clear and probably balance the layout a bit.

I added the height to the city filter. Does it look good on Mac now?

[ ] Blackish color (#333333 or such) would maybe work better for basic text. The primary blue would be good with links.

Yes, now the city filter is better on mac 👍

Changes made.


Show compilation errors

The compilation errors now are shown at the bottom of the window.

This fixes #10


Receiving and playing a MPEG-TS UDP (Legacy) stream from VLC

Hi there, I was hoping to get some advice on how to record and play an MPEG-TS stream received over UDP.
So far, I've mostly followed the example in the Mp3StreamingDemo.  I think the breakdown in my understanding is when, in the demo, they make an HTTP request and are calling GetResponseStream() to get a stream for loading frames.  In my implementation, I'm receiving raw UDP packets and constructing a new MemoryStream with the bytes each time, then loading frames from those.  I get about half a second of garbled noise, and then silence.  Here's my code so far:
    internal class UdpAudioReceiver
    {
        // UDP socket
        private UdpClient _socket;
        private IPEndPoint _udpEndPoint = new(0, 0);
        private readonly UdpState _udpState;

        // MP3 decompressor
        private Mp3WaveFormat? _waveFormat;
        private DmoMp3FrameDecompressor? _decompressor;

        // Provider/player
        private BufferedWaveProvider? _waveProvider;
        private WaveOut? _player = new();

        private struct UdpState
        {
            public UdpClient UdpClient;
            public IPEndPoint IpEndPoint;
        }

        public UdpAudioReceiver(int port)
        {
            this._socket = new(1234, AddressFamily.InterNetwork);
            this._udpState = new UdpState
            {
                IpEndPoint = this._udpEndPoint,
                UdpClient = this._socket
            };
        }

        public void Start()
        {
            this._socket.BeginReceive(this.ReceiveCallback, this._udpState);
        }

        private void ReceiveCallback(IAsyncResult ar)
        {
            var u = ((UdpState)ar.AsyncState).UdpClient;
            var e = ((UdpState)ar.AsyncState).IpEndPoint;

            var receivedBytes = u.EndReceive(ar, ref e);

            var stream = new MemoryStream(receivedBytes);

            Mp3Frame frame;
            try
            {
                frame = Mp3Frame.LoadFromStream(stream);
            }
            catch (Exception)
            {
                this._socket.BeginReceive(this.ReceiveCallback, this._udpState);
                return;
            }

            // Create format and decompressor if we need to
            this._waveFormat ??= new(frame.SampleRate, frame.ChannelMode == ChannelMode.Mono ? 1 : 2, frame.FrameLength,
                frame.BitRate);
            if (this._decompressor == null)
            {
                this._decompressor = new DmoMp3FrameDecompressor(this._waveFormat);
                this._waveProvider = new(this._decompressor.OutputFormat);
                this._waveProvider.BufferDuration = TimeSpan.FromSeconds(1);
                this._waveProvider.DiscardOnBufferOverflow = true;

                this._player = new();
                this._player.Init(this._waveProvider);
            }

            // Decompress frame
            var decompressed = new byte[16384 * 4];
            int decompressedLength;
            try
            {
                decompressedLength = this._decompressor.DecompressFrame(frame, decompressed, 0);
            }
            catch
            {
                decompressedLength = 0;
            }

            if (decompressedLength > 0)
            {
                this._waveProvider!.AddSamples(decompressed, 0, decompressedLength);
            }

            if (this._waveProvider!.BufferedBytes == this._waveProvider.BufferLength)
            {
                this._player!.Play();
            }

            this._socket.BeginReceive(this.ReceiveCallback, this._udpState);
        }

I'm not familiar with UDP sockets, however, I do know that with TCP sockets you need to ensure that all your data is received when calling EndReceive (sometimes calling EndReceive multiple times to get all the data from the winsoc API).
 Eliminating this as a factor will help you isolate whether the problem is down to your code, or NAudio.

I've done a bit more thinking about this. May I ask why you are using UDP over TCP? With UDP you can't guarantee that all your bytes will arrive, An incomplete UDP packet could break playback. Surely it makes much more sense to use TCP?
Also, have you tried your code with a mock implementation of the UDP server, that way you could eliminate your network code being the issue all together.
Kind regards,
Tom

Hey Tom, thanks for your response.  To answer the question as to why UDP: our network topology in this use case involves streaming audio over a one-way RF link to a receiving machine.  Because it's only half-duplex, that eliminates the possibility of any protocols that require a handshake like TCP.  The network is also lossy and prone to dropping/chopping packets, which breaks playback in VLC, our initial solution.  I was hoping that the frame-level control we get with NAudio would let us detect such losses and resume playback when the network stabilizes again.
With the issue I described in my initial comment, I've been streaming UDP over the loopback interface and receiving it with UdpAudioReceiver above.  I can watch new packets being received and decompressed, so I don't believe the network code to be the issue.

Hi Torin,
Have you considered sending a hash or CRC alongside each frame you send? That way you could verify that the data received is valid before passing it to the Mp3Frame object. Any time invalid data was received you could just fill the gap in time with silent audio so that the playback wouldn't stop or glitch.
This is just a random idea, I'm no expert in the library and for all I know there may be a way to do this automatically in NAudio.
Tom.

That's a great idea for data validation once we get this onto our actual network.  But for the time being, I'm using my local machine's loopback interface, and I'm not able to get playback working.  I was hoping to get some help with raw UDP playback on a stable network.

Sorry for the late reply. With apps like this I always recommend first writing code that writes the received (decompressed) audio to a WAV file. Then you can play that WAV file and check your decoding side of the app is working as expected without glitches or garbled audio. Once that's the case, you can then focus on the realtime playback.
One issue I noticed with your code is that you are waiting until the BufferedWaveProvider is full before starting to play. That could result in it needing to throw away audio since other packets might be added. I'd recommend using a longer duration for the BufferedWaveProvider (say 10 seconds), and then starting playback once there is at least 1 second's worth of audio buffered.


Execute Keda on K3D smoke tests on CI

Description
Run smoke test that installs keda module on k3d and verifies Keda CR and Kyma CR status
We have makefile target in hack folder that realises that
cd hack/local
make run

AC

Test should be executed as a pre-submit job with every change in keda-manager
Test should succeed only if Keda and Kyma CRs resolve to Ready state
STRETCH: create the template for the job so that other modules could generate similar smoke test job from it

Reason
We need to have an automated verification if keda can be successfully installed on modular kyma.
Related
Depends on https://github.com/kyma-project/keda-manager/pull/56

Thanks.. it works


Add seccomp stuff for gccgo

Signed-off-by: Christy Perez<EMAIL_ADDRESS>

cool! LGTM

LGTM

Thanks guys!


influxdb: Update influxdb default Unix socket path

This matches the change done in influxdb.
The PR is on its way to the influxdb repo. I'm also not sure how you handle updates for projects' master (f.ex. influxdb or telegraf) as there's no such unversioned directory, so you might want to have one so that these can be staged and then copied into the next released version, or change the PR template in influxdb, as it's recommending to send these doc PRs. :)

Ok, another empty reply just to undo the stale annoyance… this is still relevant.

https://github.com/influxdata/influxdb/pull/10462 closed.


Proposal for Security Best Practices Documentation

Description
This PR introduces a new markdown file, SECURITY_BEST_PRACTICES.md under /docs, dedicated to outlining security best practices for our development teams.
Content Overview

Frontend Security: XSS protection, CSRF protection, data handling and storage, HTTP headers, API security, dependency management, and build & deployment practices.
Backend Security: Authentication, session management, input validation and sanitization, database security, access control, infrastructure, and error handling and logging.
General Security Practices: Code reviews and training, encryption and data protection, access control, compliance and audits.

Fixes #Linkta-87
Type of change
Please delete options that are not relevant.

[x] Documentation update

Request for Feedback
I'm seeking feedback on the following aspects of the document:

Completeness: Are there any critical security best practices missing that should be included?
Accuracy: Does the document accurately describe the best practices?
Clarity and Style: Is the information presented clearly? Is the document easy to read and understand?
Practicality: Are the recommendations practical and feasible to implement in our projects?

Looking forward to your feedback and suggestions to make our security practices more effective.😊

@kinskiwu This looks good but I have one comment.
I think it's good practice to perform input validation and sanitization on both the client and the server. Was this omitted intentionally from frontend in the security document?

@kinskiwu This looks good but I have one comment.
I think it's good practice to perform input validation and sanitization on both the client and the server. Was this omitted intentionally from frontend in the security document?

Good eye. I had it in a previous version but somehow omitted it by accident. I'll update the doc.

Just push some changes to make the doc more readable.🤓

A lot of these were not properly addressed in Codesmith. Make sure you familiarize yourself with them when dealing with security. I would also like to add security for DevOps. Using CI/CD and deploying to Dreamhost will involve using SSH to move files and run scripts. We should ensure that the user that is updating the server does not gain permissions outside the needed scope (Dreamhost already prevents sudo access, but we shouldn't grant extra permissions, e.g. to write to long term storage spaces).

Thanks for the suggestions! I made a new section for DevOps and infrastructure. Let me know what you think.


feat: Upgrade to Rust 1.83.0

Description

fix needless_lifetimes excluding turborepo-lib as code generated by tonic-build are also lint so there is 50+ warnings :(
option_get_or_insert_default is stable
allow zombie_process once as it's buggy
fmt and other fixes

Testing Instructions

Allow CI Workflow Run

[ ] approve CI run for commit: 5e59a158342643859cf7b192d33a5e45dc4ab054

Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer

Allow CI Workflow Run

[ ] approve CI run for commit: 5e59a158342643859cf7b192d33a5e45dc4ab054

Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer


HiDPI position handling on Ubuntu 18.04

Platform:
Ubuntu 18.04 + HiDPI monitor
Architecture:
x86-64
Related:
SR 3-17051327481 (Private)
Description
Screen coordinates are not properly translatable using OpenJDK11 and Ubuntu 18.04 on HiDPI.  This appears to be caused by the need for scaling information when doing absolute window positioning, but the lack of ability of the Java framework to provide this information.
Use-Case
Use coordinates from a web browser (JavaScript) to correctly position a Java element (e.g. on the same screen).
Known Caveats
IE11 and Edge 44 do not expose coordinates.  Chrome, Firefox, Opera and Edge 76 do.
Workaround
Current workaround is to use setLocationRelativeTo(null), which will center it on the main display.
Test results:

jdk8
jdk11
Details

macOS
✅*
✅*
* = Workaround available through platform detection.  Only works (JDK8 and JDK11) if hard-code dpiScale to 1.

Windows
✅
✅*
* = Workaround available through Java version detection.  JDK11 requires dpiScale to be 1, JDK8 works with a calculated dpiScale.

Linux
✅
⛔*
* = No known workaround available.  JDK11 requires dpiScale for this platform for correct positioning, but JDK always returns 1, so it positions it too-high and too-left on HiDPI displays

JavaScript
// Get screen coordinates from JavaScript (useful for positioning something on the same screen that someone is working from)
[(screen.availWidth || screen.width) / 2 + (screen.left || screen.availLeft), (screen.availHeight || screen.height) / 2 + (screen.top || screen.availTop)];

Java
// Position a Java component centered on the same screen as the web browser
Point chromePoint = new Point(2880,520); // <--- ####### Replace with values from JS
JPopupMenu menu = new JPopupMenu();
JMenuItem item = new JMenuItem("Hello World");
item.addActionListener(e -> System.exit(0));
menu.add(item);
menu.pack();

double dpiScale = Toolkit.getDefaultToolkit().getScreenResolution() / 96;
Point javaPoint = new Point((int)(chromePoint.getX() * dpiScale), (int)(chromePoint.getY() * dpiScale));

// Account for own size when centering
javaPoint.translate((int)(-menu.getWidth() / 2.0), (int)(-menu.getHeight() / 2.0));
System.out.println("Point provided by Chrome: " + chromePoint.x + "," + chromePoint.y);
System.out.println("Calculated Java component centered at: " + javaPoint.x + "," + javaPoint.y);

menu.setLocation(javaPoint);
menu.setVisible(true); // <--- This should be centered on the same monitor as the web browser

I've set up the code example on my local Mac OS X (Retina) and can confirm that it works as expected.
Next step is to run an Ubuntu 18.04 under Virtual Box and reproduce the error

Hmm or maybe not - looks like Mac OS X new protections stop VirtualBox from executing - I'll find a new machine to work on.

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8160194 - might be relevant

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8160194 - might be relevant

Agreed but the title is misleading... "User-defined scale" is actually set by default to 200% on Retina on boot (Live CD) or install, so this is broken out-of-the box for HiDPI.  For a bug report to call this "User-defined" implies it's set by preference, but in the case of a 4K display, the system decides a sane default for you.

looks like Mac OS X new protections stop VirtualBox from executing - I'll find a new machine to work on.

Offtopic, but Parallels can run it, and you'll never go back to VirtualBox on MacOS once you use it. ❤ They offer a 14-day trial.

With help from an Eclipse bug report, I've written a small Python program to get the scale factor from Ubuntu...
On Ubuntu 18.04, this gets the scale factor set from System Preferences.  100% returns 1, 200% returns 2.
The bug does warn about compatibility:

The gtk patch uses gdk_monitor_get_scale_factor for GTK >= 3.22 and gdk_screen_get_monitor_scale_factor for older versions [...]

# sudo apt-get install python-gi python3-pyside
from gi.repository import Gdk

display = Gdk.Display.get_default()
monitor = display.get_primary_monitor()
scale_factor = monitor.get_scale_factor()

print scale_factor

I will attempt to produce a JNA (NOT JNI) binding that is capable of this as a workaround.

@tresf Oh nice!  I was still bumbling down the JNI route - JNA - interesting idea.

JNA - interesting idea.

The project we use has JNA as a dependency for other components, so it would serve as a stop-gap until the JDK offers it.

FYI, a downstream workaround using JNA is available here, for anyone that needs it: https://github.com/qzind/tray/commit/7ff0d043117a36218c43e005c6d777123245d08e#diff-1aeef540797c8551c39d0e5bcd12df43
This code is intended to cover compatibility with Gtk2/Gtk3 for detecting the scaling factor.
Worth noting, some other scaling issues with the Java interface are present suggesting that the underlying issue may be that Linux should do this all under the covers.
For example:

When drawing a JTable, the cells are too small and too close to each other.
When sizing a dialog in pixels, the width must also be adjusted to use this scale factor.

... so the issue may be less of the ability to grab scale, but the poor handling of sizing in general on Linux.

@tresf What should we do with this issue? If this is for informational purposes, a blog post would be more appropriate. If it should result in an enhancement request at OpenJDK, you know the drill 😉


content.css

content.css doesn’t exist in the repository but is mentioned in manifest.json.
To get Chrome to load the extension (from source in developer mode), I created a blank (empty) content.css, but then, I think that (the emptiness of content.css) may be why the popup windows in options.html are not positioned properly; they are halfway off the screen so that I can’t see them.
Thanks for being patient with this report, which lacks the git checkout tag that you request in README.md. I am writing from work, where I do not have any git client installed.
Form-O-Fill version 3.2.0
(download as a ZIP file on 12 December 2016)
I'd attach logs, but I can't find the logs, perhaps due to the CSS issue?
I am not very fluent in CSS, or I'd fork, write the CSS, and submit a pull request.
Thank you for publishing Form-O-Fill, and for your attention to this issue.

Hi,
since you load Form-O-Fill in dev mode you must generate the css from the .scss files.
Look in the src/sass directory where you'll find the source files.
Go into your checkout directory (where the gulpfile.js is) and do a gulp sass. After that all should work fine.
Cheers,
Frank

Thanks, Frank. That makes total sense now. Thank you for having patience with my ignorance and haste.
Best,
Liam


https://www.newton.se/

There was a problem with the domain at the school, it should be fixed now!

@J-Reboia Thank you! Yes, I see no problem with the website. Could you please provide us with an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course?

https://www.newton.se/utbildning/systemutvecklare-java/
That's for my current education.
https://www.newton.se/utbildningar/yh-utbildningar/
This link list some other educations.
Den tis 27 apr. 2021 14:25Philip Torchinsky @.***>
skrev:

@J-Reboia https://github.com/J-Reboia Thank you! Yes, I see no problem
with the website. Could you please provide us with an URL of a page on the
official website where the school offers an IT-related long-term (>1 year)
course?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JetBrains/swot/pull/11386#issuecomment-827564996, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AQ2AKNL2QVTGFX3QXEUMQ53TK2UL3ANCNFSM43KEUE2Q
.

@J-Reboia Thank you for the clarification. Pull request merged.


Hono + lucia-auth / luciaAuthCookieMiddleware is broken

Describe the bug
luciaAuthCookieMiddleware deletes http header and return HTML as text.
This bug is specific to hono and does not exist when using hattip which suggest this is a problem in the @universal-middleware/core.
To Reproduce
Steps to reproduce the behavior:
pnpm cli --react --hono --lucia-auth --react-lucia-auth
cd /tmp/bati-app
pnpm install
pnpm run dev

open http://localhost:3000/
Expected behavior
A clear and concise description of what you expected to happen.
See a rendered startpage but get the HTML Code of the startpage
Screenshots

Response Header:
HTTP/1.1 200 OK
cache-control: no-store, max-age=0
content-type: text/plain; charset=UTF-8
Date: Wed, 21 Aug 2024 21:56:18 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Transfer-Encoding: chunked

if you comment out this line app.use(createMiddleware(luciaAuthCookieMiddleware)()); in hono-entry.ts the rendering is working again.
It looks like this is a problem specific with the feature in @universal-middleware/core to manipulate the response object and the wrapper for hono.

Thanks for all the details, I'm on it!


Swift 4.2 branch add davez stringswitch improvements

Some nice improvements from upstream by @davezarzycki! I am cherry-picking this since I want to use StringLiterals with StringSwitches... but evidently this also significantly speeds up string switch.

@swift-ci test and merge

@swift-ci test

Hi @gottesmm – I'd mark this as "reviewed" as a nod to @jrose-apple's proposal to have all changes be reviewed, but I don't think @tkremenek added me to the committer list for swift-llvm and swift-clang when he gave me commit access to a bunch of repositories. Otherwise, thanks for cherry picking this change!

@davezarzycki I am not sure if the process is any different. I would just ask @tkremenek to fix, no?

PS – Don't forget the corresponding clang changes.

@davezarzycki next time you are doing stuff like this, can you state in the commit message the relevant clang change or vis-a-versa. Or at least a message saying there is a clang change.

apple/swift-clang#180
@swift-ci test

Will do

apple/swift-clang#180
@swift-ci test

apple/swift-clang#180
@swift-ci clean test

Looks like there is some weirdness with workspace.

It is failing due to Ninja being already checked out.

apple/swift-clang#180
@swift-ci clean test

apple/swift-clang#180
@swift-ci clean test

I don't think this repo supports clean testing.

apple/swift-clang#180
@swift-ci test

@davezarzycki any thoughts on the linux failure? Is the problem that we are using a global instead of a string literal?

Please don't use a macro. If what's there isn't working, just don't use the same pattern for whatever you want to StringSwitch over.

No, that doesn't make a difference in C++.

What's master-next doing so that this doesn't fail? Dave's changes have been in LLVM for a while now.

Just to satisfy my paranoia, I am going to do another test since I based the clang commit on stable when we did these tests before. There shouldn't be a difference...

apple/swift-clang#180
@swift-ci test

I am trying this on rad-main to find the problem. I also fixed up the branch so that we get the proper cherry-pick -x commits.

Found the problem. There is going to be a swift commit as well ; ).


Add some reference material on golang Context

Both of our Cohort 2 trainees have raised existential questions around Context. We may want to find some useful references or write up some material about this.
We may even want to make a "implement WithTimeout using WithValue" exercise to show that there's no magic here, it's really just a fancy key-value store.
(I've also gone on a tangent around persistent data structures when talking through this, unclear whether that's actually useful/worthwhile :))

The journey I've typically used to explain this is:

We know about dependency injection, when people take dependency injection to extremes they end up with too many parameters, they often extract a context object to contain them all (prompt discussion about global state, about the down-sides of God objects, ...).
Context is a place to shove global-like data that we want to use a lot of places. But we generally shouldn't.
Introduce With-prefixed functions (and maybe contrast with other persistent data structures / builders / ...)
Talk through WithValue with a user ID as an example
Talk through WithTimeout and Done as just a library written using WithValue.

@bazmurphy had also encountered React's Context hooks which implement a similar pattern.

that is a good thought, IMO.
I am sure we must be using timeout somewhere. we certainly have material on the need for timeouts in the primer, don't we?
i think we could probably weave this into at least one of the exercises. maybe with some explicit demos of client cancellation as well, and a description of why that's useful.


RenderGraphConfig is unused

Coming from investigating #112, the thread mentions RenderGraphConfig providing information about the render pass used by egui, but as far as I can tell it's never actually installed into the World or indeed constructed at all.

Hey, thanks for calling this out. I don't have a solution for #112 yet, though I'm happy to merge a PR if someone wants to implement it. For now, I'll just remove the struct to avoid the confusion.

Removed in 0.27


What should we do with Pex?

Really. What should we do?

Remove it in order to make library compatible with mono, .NET Core, etc
Migrate in to VS-2015 IntelliTest
Something else?

It Pex can be replaced with FsCheck which seems to be work on core?

@asd-and-Rizzo , may be you are right. FsCheck is a good candidate for testing framework. Did you know any ways to automate migration from Pex to FsCheck?


Confirm first letter shahmukhi for search input

Don't want to block #152, and I'm sure testing is a long process. See firstLetters function for shahmukhi strings.
Originally posted by @bhajneet in https://github.com/ShabadOS/gurmukhi-utils/pull/152

I wouldn't include shahmukhi in anything at the moment.

Out of scope until shahmukhi knowledge base is improved to provide support


add -cert to set a specific cert in the userCertificate ldap attribute

Add -cert to set a specific cert in the userCertificate ldap attribute:
$ setcert.py -u 'CORP\TEST$' -p 'pass' -t 'TEST$' ldap://<IP_ADDRESS> -q
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[+] Found modification target
DN: CN=TEST,CN=Computers,DC=CORP,DC=LOCAL - STATUS: Read - READ TIME: 2023-10-16T15:50:01.822836
    objectGUID: {<...>}
    objectSid: <...>-1619
    sAMAccountName: TEST$

Load the cert from the file:
$ setcert.py -u 'CORP\TEST$' -p 'pass' -t 'TEST$' ldap://<IP_ADDRESS> -cert TEST.PEM
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[+] Found modification target
[+] Certificate Modified successfully

The cert is loaded:
$ setcert.py -u 'CORP\TEST$' -p 'pass' -t 'TEST$' ldap://<IP_ADDRESS> -q
[-] Connecting to host...
[-] Binding to host
[+] Bind OK
[+] Found modification target
DN: CN=TEST,CN=Computers,DC=CORP,DC=LOCAL - STATUS: Read - READ TIME: 2023-10-16T15:50:01.822836
    objectGUID: {<...>}
    objectSid: <...>-1619
    sAMAccountName: TEST$
    userCertificate: b'0\x82\x02\xea0\x82...

thanks Hugo, nice add!


Possible typo in README

Hi, I'm wondering if this line from the README is a typo: "cas.lua does a Check And Set, this will not add the element if it doesn't already exist".
From reviewing the code, it looks like cas.lua will add the element if it doesn't already exist; or, put differently, it will not add the element if it already exists.
Apologies if my understanding is incorrect.

You are right. I have fixed it. Thanks.


Use gcsfs instead of gsutil for interacting with google cloud storage

We should move to using the gcsfs package for interacting with google cloud storage. This will make generating an asset list from a google cloud storage url more straightforward (see here for current implementation with gsutil). With fsspec (https://filesystem-spec.readthedocs.io/en/latest/intro.html) it should be possible to use the same code for the local and remote filesystems.

Also, the implementation in #27 for generating an asset list from a gcs url does not recurse to "sub-directories" of that url. This could be fixed by using gcsfs and fsspec.


util: use severity levels

Hi!
I hope I didn't miss anything and now we can take advantage of using severity levels?
starting with GUI authentication logging )
Thanks!

@kulikov-a thanks, it was on my list somewhere to look into this. There are probably more spots to inspect at some point, but this is a good starting point.

FWIW, I don’t think a „log_error“ function should be able to change priority of the message. Some log_error calls are warnings or otherwise but in the end touching those lines should be more clear than obfuscating them as log_error($msg, info);

On 23. Jan 2022, at 11:45, Ad Schellevis @.***> wrote:

Merged #5497 into master.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.
You are receiving this because you are subscribed to this thread.

@AdSchellevis Thanks!
@fichtner @AdSchellevis

I don’t think a „log_error“ function should be able to change priority

Can we discuss options then? Maybe it would be more correct to add an additional function (say log_msg()) with the severity arg, then go through all the log_error calls and change it where appropriate?

I agree the naming is indeed a bit unfortunate, but I also don't want to add functions for every level (growing legacy base with limited value). @kulikov-a your suggestion to wrap the current functionality in log_msg() and keep log_error() functionally equal sounds reasonable to me.

@AdSchellevis Great! (actually, i even started with this approach, but then I decided that the less code the better) )
will you revert pr commits or should i start from the current point?

Yes, generic log message function is better is all I’m saying.

@AdSchellevis Great! (actually, i even started with this approach, but then I decided that the less code the better) )
will you revert pr commits or should i start from the current point?

Just stack the change on top, no need to revert the previous code


Support fuzzy search for Patient.name

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).
Fixes #608
Description
Clear and concise code change description.
Alternative(s) considered
Have you considered any alternatives? And if so, why have you chosen the approach in this PR?
Type
Choose one: Feature
Screenshots (if applicable)
Checklist

[ ] I have read and acknowledged the Code of conduct.
[ ] I have read the Contributing page.
[ ] I have signed the Google Individual CLA, or I am covered by my company's Corporate CLA.
[ ] I have discussed my proposed solution with code owners in the linked issue(s) and we have agreed upon the general approach.
[ ] I have run ./gradlew spotlessApply and ./gradlew spotlessCheck to check my code follows the style guide of this project.
[ ] I have run ./gradlew check and ./gradlew connectedCheck to test my changes locally.
[ ] I have built and run the demo app(s) to verify my change fixes the issue and/or does not break the demo app(s).

closing in favour of https://github.com/google/android-fhir/pull/1853


[Shapes] Add Shape.getImage sample

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

File
Status
Preview URL
Details

docs/docs-ref-autogen/excel/excelscript/excelscript.shape.yml
:white_check_mark:Succeeded
View (office-scripts)

docs/sample-scripts/excel-scripts.yaml
:white_check_mark:Succeeded

generate-docs/json/excel/snippets.yaml
:white_check_mark:Succeeded

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


data: queenstack

Fixes Issue

Changes proposed

Check List (Check all the applicable boxes)

[x] My code follows the code style of this project.
[x] My change requires changes to the documentation.
[x] I have updated the documentation accordingly.
[x] All new and existing tests passed.
[x] This PR does not contain plagiarized content.
[x] The title of my pull request is a short description of the requested changes.

Screenshots

Note to reviewers

Thanks for submitting your Pull Request. So that this can be merged the following needs addressing:

Please remove the bracket from the file name data/queenstack.json) to data/queenstack.json

Please address the invalid Json structure mentioned inline above

You may want to check your links

If it is easier for you to create a new Pull Request, then please close this one.
If you do create a new Pull Request you may want to have a look at the Docs: https://linkfree.eddiehub.io/docs

We will fix the invalid file name and invalid json via a temporary branch so that we can merge the Pull Request and you can have your LinkFree Profile.
Great collaboration everyone, thanks for all your help! Any improvements to the profile (such as the ones mentioned above) can come in a new Pull Request.  Here are the Editing Docs should you wish to update your Profile: https://linkfree.eddiehub.io/docs/how-to-guides/editing


omap side car is not deployed by default

The driver API states that omap generator is deployed by default and we need to disable it explicitly but upon deployment, the csi-omap sidecar is not deployed.
Deployment check for omap generator

@rewantsoni did you check it in the cluster, it will be deployed only if the GenerateOMapInfo is set to true in the CR

@Madhu-1 Yes it is deployed when it's set to true. If that is the expected behavior, we should update the description [here](deployed by default) and in the doc as well

yes it the expected behaviour, feel free to send a PR if any updates required in the docs


Can't Pull Docker Image

Can't pull the image
root@docker:/srv/twitch2tuner# docker pull twitch2tuner
Using default tag: latest
Error response from daemon: pull access denied for twitch2tuner, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

Hi @DrDmoney365, sorry about that. The container is now hosted on the GitHub Container Registry, not Docker Hub. Try this command.
docker pull ghcr.io/micahmo/twitch2tuner

I've updated the README to reflect this.

Thank you. That did it!


chore: bump kcl and kpm to latest

1. Does this PR affect any open issues?(Y/N) and add issue references (e.g. "fix #123", "re #123".):

[x] N
[ ] Y

chore: bump kcl and kpm to latest

2. What is the scope of this PR (e.g. component or file name):

go.mod
go.sum

3. Provide a description of the PR(e.g. more details, effects, motivations or doc link):

[ ] Affects user behaviors
[ ] Contains syntax changes
[ ] Contains variable changes
[ ] Contains experimental features
[ ] Performance regression: Consumes more CPU
[ ] Performance regression: Consumes more Memory
[x] Other

4. Are there any breaking changes?(Y/N) and describe the breaking changes(e.g. more details, motivations or doc link):

[x] N
[ ] Y

5. Are there test cases for these changes?(Y/N) select and add more details, references or doc links:

[ ] Unit test
[ ] Integration test
[ ] Benchmark (add benchmark stats below)
[ ] Manual test (add detailed scripts or steps below)
[x] Other

lgtm


Configurable logging

I'm reading a lot of huge files causing logs or the terminal to be cluttered with a lot of useless messages. We should make a global logger for this package pywavefront that can easily be configured at info, warning and error level.
This should not be a difficult task to complete.

#60 is an attempt to add basic logging

#60 merged; thanks for the report!


[Bug Report] Image Uploaded from WYSIWYG Editor Saved as Base64 to Firestore

Hi, recently I found your cms from my friend, and I think this is another great firebase cms. But when I observer how the wysiwyg worked, I found that the image uploaded from there saved as base64 to firestore, not saved in cloud storage.

Thanks for the feedback. It's an issue that we've been trying to ignore at an early stage. We also ran into it, looked at it a bit and decided to work around it until we had fixed some other issues.
There is a workaround for it until we've fixed it:

Manually upload a photo to the gallery
Reference the URL to the newly uploaded photo in WYSIWYG


Missing some gamerules

Reporter: Jerozgen#????

:tada: This issue has been resolved in version 2.0.0 :tada:
The release is available on:

npm package (@latest dist-tag)
Visual Studio Marketplace
GitHub release

Your semantic-release bot :package::rocket:


Bug 1316224 - User can not create projects in any other repository than master

https://github.com/droolsjbpm/guvnor/pull/285
https://github.com/droolsjbpm/kie-wb-common/pull/302
https://github.com/droolsjbpm/drools-wb/pull/143
https://github.com/droolsjbpm/jbpm-console-ng/pull/364
https://github.com/droolsjbpm/optaplanner-wb/pull/46
https://github.com/droolsjbpm/kie-wb-distributions/pull/228

+1 to merge.

master: 9d82077d2a08f8a168c749f0b06938d7e1f08642


Feature request: Make label optional field in Input

When I am not providing label prop to input there is empty label html tag that takes up a space.
Use case where label on top is a problem for me:
Before:

After:

What do you think? I can create PR that will add this feature.

I'm reading from my phone so don't have access to code but...

This is Svelte? It kind of doesn't matter because if we add a prop we/I need to add to other frameworks too.

Are you relying on the placeholders for labeling? I wouldn't recommend it but also don't want AgnosticUI to prohibit you.

Is it throwing an error? I think because we haven't ported Svelte library package to Typescript we aren't. I would anticipate in somewhat near future we will (once typescript port completed).

I think if we offer a workaround for your use case the best way would be:

Keep label as required and add back a label from you application code
add a prop to indicate isLabelVisuallyHidden and sorry but there should be a rather overt comment that this is an escape hatch and you should have a very good reason for visually hiding labels which still affects sighted users, placeholders are not typically sufficient, and that the required label will be available to screen readers but visually hidden
Then we will check for the Boolean property and for that case replace the label with a {theLabelIForgetWhatItsCalled}

That class is an AgnosticUI global and will visually hide and add no padding/margin but will still make the label available to screenreaders and assistive technology.
What do you think of above?
Are you comfortable doing it for multiple frameworks or would you like help? Either way I think we'd just start with one to ensure we're happy with the resulting API
Also does this mean other form fields might require similar treatments?

And I believe the choice inputs do something similar (in terms of using a Boolean) for hiding the fieldset border if an example helps you.
I think the html structure may be affected but I'm sure there will be a way and I'll leave that as an implementation detail you can figure out (but lmk if you get stuck there and I can try to help).
Hopefully these comments give you enough info to get started 👍🏽

@apiotrowski312 Was this something you'll have time to raise a PR for?

Yeah I'm good with that--thanks!

I happened to see a similar issue https://github.com/shoelace-style/shoelace/issues/728
Apparently, the already allow for label omission but the issue reported is to instead use a screen reader only approach so it's still available to screen readers. It's essentially the same strategy I've suggested

#222 fixes this and I added the svelte storybook spec I had asked for on the PR (then elected to just merge and add it in):
[master 1a9981de] Adds InputWithHiddenLabel svelte storybook story. Removes lang=ts in agnostic-svelte package as that will be done in agnostic-svelte-ts

Thanks @apiotrowski312 I appreciated you taking the time to bring the idea to my attention and contribute the PR! Let me know if this gets you unblocked or if you have any other insights as you use AgnosticUI! 🥂


Add zh_CN.lang

part translation text

is it posible for you to do the translation on the 1.8 branch. there are alot more strings added to that version for translating.

oh...are lang files in master branch is old?  Σ(⊙▽⊙"!!

yes, masterbranch is for 1.7.10
i have seperate branches with lots of updates for 1.8+

I have created a pull requests of 1.8 for the language file
and complete of this translation :+1:


Update Matrix and secrets

todo

[x] remove usage of MATRIX_ROOM_ID (switch to matrix)
[x] rename MATRIX_ACCESS_TOKEN into RELEASENOTES_MATRIX_V2_ACCESS_TOKEN
[x] create RELEASENOTES_MATRIX_V2_ACCESS_TOKEN
[x] remove usage of POLKADOT_DEVOPS_MATRIX_ROOM_ID

after merge

[ ] delete secrets

[ ] MATRIX_ROOM_ID
[ ] MATRIX_ACCESS_TOKEN
[ ] POLKADOT_DEVOPS_MATRIX_ROOM_ID

The CI pipeline was cancelled due to failure one of the required jobs.
Job name: cargo-hfuzz
Logs: https://gitlab.parity.io/parity/mirrors/substrate/-/jobs/3267316

bot rebase

bot rebase

bot merge

🙏🙏⛽