Supabase-Kubernetes Roadmap: Feature Prioritization and Enhancements

This project is in its early stages. Let's use this issue to brainstorm and outline the essential components of our Supabase-Kubernetes Helm chart. Here's what we can discuss:

Must-have components: Which Supabase services are non-negotiable for the next release?
Configuration flexibility: What key parameters should users be able to customize during deployment?
Basic architecture: Outline a preliminary structure for the chart's resources and dependencies. (biname, other postgres charts...)

Additionally, we'd love your input on:

Propose new features: What functionalities would you like to see included in the chart?
Testing: How can we collaboratively test the chart during development?
Chart release methods: What are the preferred methods for releasing new versions of the chart?

@arpagon Thanks for the PR #48 merge. It is a long-needed update for this chart. As for what we can do for the future roadmap of this chart, I'd think we can tackle these:

[ ] Short-term goals:

[ ] Supports existing secret reference
[ ] Add Helm release CI/CD
[ ] Add core Supabase testing CI/CD

[ ] Long-term goals:

[ ] QoL improvements (consolidated env, ports etc.)
[ ] Add support for multi-node deployments
[ ] Enable SSL support for Supabase PostgreSQL
[ ] Tighter container security context (non-root, read-only FS etc.)
[ ] Supports more ingress classes
[ ] Supports more k8s environments

As for QoL improvements, we need to decide whether we should use better/reusable charts or improve upon existing YAML topology as pointed out by @AntonOfTheWoods. This could very well determine the path that this chart will move forward. As for my opinion, we should stick with the current implementation and improve it over time, as we aren't deploying each of the Supabase services separately, like what other chart maintainers are doing. We can steal take inspiration from their code and implement a similar system into ours.

@drpsyko101  I think that is a great checklist, however I would challenge the multi-node placement. That should be prioritised first and should be done before any other work is really even planned because otherwise the chart is only able to deploy toy deployments.
Kubernetes introduces a massive amount of complexity over single-node systems like plain compose but it brings phenomenal benefits - mainly because you can scale from a single node on a dev or CI/CD box to 1000-node clusters with relative ease. That is precisely what helm charts help you do in an elegant and maintainable way. That also brings in significant complexity over compose though...
I think it is very important to make it clear whether this chart is meant to be for (hobbyist/dev) single-node (minikube, microk8s) clusters or whether it will be a chart usable for large-scale, high-performance clusters. The current postgresql defaults to a deployment that doesn't have any sort of persistence. That means if you stop-restart the cluster the data disappears. This is exactly the sort of thing that defaults to something sane with charts like bitnami (or the operators you mention). Writing charts that scale and do what reasonably sized deployments need them to takes a lot of time, effort, and expertise and reinventing the wheel needs to be done only if you know you have the time and expertise to do better! :-)

@AntonOfTheWoods I understand your concerns about putting the multi-node support in the short term goals. But scaling up services other than vector also mandates high-availability support. This is especially difficult to set postgres and storage/minio to StatefulSet due to their complex replication setup, hence placing them in the long term goals.
However, it is a different story if the user uses external HA postgres and minio. Then it is viable to set vector to use DaemonSet setup as you've mentioned above. From what I can see, there shouldn't be many changes to other resources to do so.

As a consumer of this setup (specifically the revision that @drpsyko101 recently contributed) I would reckon that the setup that Supabase provide (docker-compose based) and which has been replicated for cloud providers like Digital Ocean fill the hobby/small segment requirements quite well. As to Kubernetes setup, I would venture to assume that nobody is going to use anything in production that has Postgres as fundamental requirements and does not provide HA variant as the general target. Even out DevOps team was ok with single-node for initial trial, but flagged lack of HA Postgres as essentially compliance killer that is going to prevent the setup from ever being production grade approved and used beyond the scope of POC/MVP development. Helm charts is what our dev team uses so no complains there. Just my 2 cents, and thank you for all your continuous contributions and amazing work! You all rock!

You are definitely right. We use Supabase in production, self-hosted, on k8s. I think (and I am guessing) that the intent of the chart writers was not that people would use that PG instance provided, but that users (like us) would drop in our appropriate PG solution as necessary.
Now, that was not very easy, and I think you have a point that could be made much, much easier. It was a lot of chart surgery for us to drop in StackGres in lieu.
We are going to refactor our changes with some lessons learned and will PR them back at some point.

As a consumer of this setup (specifically the revision that @drpsyko101 recently contributed) I would reckon that the setup that Supabase provide (docker-compose based) and which has been replicated for cloud providers like Digital Ocean fill the hobby/small segment requirements quite well. As to Kubernetes setup, I would venture to assume that nobody is going to use anything in production that has Postgres as fundamental requirements and does not provide HA variant as the general target. Even out DevOps team was ok with single-node for initial trial, but flagged lack of HA Postgres as essentially compliance killer that is going to prevent the setup from ever being production grade approved and used beyond the scope of POC/MVP development. Helm charts is what our dev team uses so no complains there. Just my 2 cents, and thank you for all your continuous contributions and amazing work! You all rock!

@AntonOfTheWoods I understand your concerns about putting the multi-node support in the short term goals. But scaling up services other than vector also mandates high-availability support. This is especially difficult to set postgres and storage/minio to StatefulSet due to their complex replication setup, hence placing them in the long term goals.
However, it is a different story if the user uses external HA postgres and minio. Then it is viable to set vector to use DaemonSet setup as you've mentioned above. From what I can see, there shouldn't be many changes to other resources to do so.

I think you are over-complicating things. HA doesn't have a specific definition that means anything useful. Something that calls a support engineer who then clicks a button that reloads from a backup on a new server is "HA" in many organisations. "Highly" can mean any number of 9s and you can take any number of factors into account - or not. How many separate network providers do you need before you consider your setup "HA"?

Now, that was not very easy, and I think you have a point that could be made much, much easier. It was a lot of chart surgery for us to drop in StackGres in lieu.

This is why I think it's just silly not to use bitnami where it makes sense. They have an excellent and very widely used system for making this very easy, including with proper secrets management. Their system has templates and formalisms for doing all this that could simply be copy/pasted. While they do have an "HA" version of a postgres chart, I didn't have much success with it but once you use their abstractions, it is very clear to everyone (who has very likely seen/used a bitnami chart before) how to swap out without having to spend a few hours making sure you are changing the right things in the right places.

As for the overall chart syntax, it can be slowly improved over time. Making several breaking changes without any care for the existing users is bad for the community, no?

I personally think that delivering a db module that is based on a deployment and has autoscaling clearly available in the template and values - even though it what would happen if autoscaling did kick in - is very much "without any care for the existing users".
In any case, I have been working on extending the bitnami supabase chart (recently updated with recent images for the supported modules) with the missing modules and it looks like it is going to be successful. That's the beauty of open source!

This is exactly why it takes time to implement multi-node support.

And exactly why I am going to put my trust in bitnami. Honestly, there are so many horrible bugs in this chart it is a danger to the community. Unless you there is a massive "THIS IS NOT MULTI-NODE COMPATIBLE, AND YOU CAN'T USE THE PROVIDED postgresql OR minio" at the top of the readme it's going to waste many people's time. Anyone who wants a single-node option would be a fool not to simply use the upstream-provided compose!

Please consider having an OCI helm chart. And create an early version of the early adoption users.

@AntonOfTheWoods I think we aren't on the same page here. Both of us want the chart to be multi-node compliant. But as I've said above, I'm okay starting with external db & S3 for multi-node deployment. As the chart progresses, we can then implement our own HA solutions to fit the needs of some users who require self-contained charts.

Honestly, there are so many horrible bugs in this chart it is a danger to the community.

Not gonna deny this, it is no different from vanilla helm create. I sincerely hope more PR will be added to address that without many breaking changes.
We're still in version 0.1. There is a lot of room for improvement to make this chart better. Your contribution is very much appreciated!

The good news is that with Supabase going GA bitnami updated their supabase helm charts (this was done just 4 days ago).

If anyone is interested in a bitnami-oriented take on all this, have a look at https://github.com/supafull/helm-charts/ . It still has a lot of rough edges (and not everything has been tested, like the imgproxy, etc.) but it has mostly the same level of feature support as this chart now does, but it uses bitnami charts where possible, and the remaining stuff (analytics, functions and imgproxy) was heavily inspired by the bitnami way. That means it:

uses the bitnami supabase chart as a dependency for the main features
uses the bitnami minio chart as a dependency for the in-cluster s3-compatible storage
uses the bitnami postgresql chart to install a completely separate postgres instance for the analyticsdb (because spraying a firehose of logs at your main DB is just silly...)
uses the upstream vector chart. This chart is not very well written (though written by the datadog guys by the looks of it...) but it at least uses a daemonset for the agent. It doesn't currently allow for their more advanced architectures but the agent-only setup should be a good start.

There isn't a lot of documentation yet but I'm going to be putting it through it's paces for a demo/example project using react-admin + electric-sql + supabase (before trying to migrate another real project to this), and (after my upcoming 5-day May-day break) will be making sure it all works and giving it a damned good documenting (though I might not bother with testing AWS S3 or Google BigQuery unless I get some stars!).

You are definitely right. We use Supabase in production, self-hosted, on k8s. I think (and I am guessing) that the intent of the chart writers was not that people would use that PG instance provided, but that users (like us) would drop in our appropriate PG solution as necessary.
Now, that was not very easy, and I think you have a point that could be made much, much easier. It was a lot of chart surgery for us to drop in StackGres in lieu.

Hi, it has been a long while since I gave up on running supabase in k8s in production.
I want to revisit it for a project I am working on, in particular I am very interested in how to setup StackGres as the postgres database for supabase. @24601 you had mentioned above that you had this working are were thinking of sharing. It would really help if you have anything to share.
I'd be happy to run through it all and pull out whatever we can contribute here, to give us a decent option for a compatible external database for this chart with full instructions.


fix Fix union rewrite by materialized view regression test instability

Proposed changes
When union rewrite by materialized view, the final plan chosen by CBO is instability.
So the regression test only check mv is rewritten successful or not, doesn't check is chosen by CBO or not.
Optimize to make sure chosen by CBO would be anther pr to fix this thoroughly。

run buildall


Upgrade to Ignition Fortress

New feature implementation
Implemented feature
Closes #69, migrating to Ignition Fortress.
Implementation description
Together with bumping dependencies on CMakeLists and package.xml, we can use a new utility function to enable components which allows us to remove a lot of boilerplate component creation code resulting in a hundred or so lines of code being removed.
Note that this PR will make the binary ros_ign available in Galactic incompatible with rmf_simulation since the ros_ign package in galactic supports Edifice while the ros_ign in Rolling (and future Humble) will support Fortress.
Hence users who wish to use Ignition Fortress with Galactic should switch to build ros_ign from source

Thanks for handling the migration! I've been running some tests and have been unable to get loop requests to run for more than 1 loop. I tried using both the RMF panel and dashboard to issue the request, Could you help take a look into that, just in case it is happening only on my end?

I can reproduce the issue with loop requests with more than one loop not happening, it seems once the first loop is finished the robot doesn't receive a new path request so my guess is that the robot's state estimation by the fleet adapter puts it in some state where it doesn't detect the robot's first loop as completed, hence doesn't issue the followup loop request.
It's tricky since really 90% of the logic between Gazebo and Ignition happens in a common source so there should really not be such an issue.
I see this behavior in main also so I guess it's not necessarily related to this PR? But I agree it's quite a deal breaker, will look into it.

Could you perhaps start a PR to add ros_ign to rmf/rmf.repos as well? Might be a good idea to have that merged in first before this migration.

Done https://github.com/open-rmf/rmf/pull/144

I see this behavior in main also so I guess it's not necessarily related to this PR? But I agree it's quite a deal breaker, will look into it.
Yup, as long as we know that it is not related to this PR we can just start an issue. I can spend a little bit more time to diagnose it.

Per DM, after the lift plugin segfault is fixed, this should be good to merge.

Per DM, after the lift plugin segfault is fixed, this should be good to merge.

Should be good now https://github.com/open-rmf/rmf_simulation/pull/70/commits/254d720375f175b5debf3cda4a2bfc389c7893bb


when i try to click on a hack it just says add a keybind, also startpause switcher doesn't work  [Bug]

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
What steps did you do to get this result?
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.

i know its not my mouse because my mouse works properly outside of geometry dash

Do you perhaps have "Swap Mouse Buttons" enabled? This could be the reason why it works that way, because it checks for the physical left button, and can lead to issues if you have them swapped.

no

o no apparently i do, i didn't even turn that on


Pass encoding_errors setting to hiredis (>=1.0.0)

Fixes #1161
Pull Request check-list
Please make sure to review and check all of these items:

[X] Does $ python setup.py test pass with this change (including linting)?
[X] Does travis tests pass with this change (enable it first in your forked repo and wait for the travis build to finish)? Link
[X] Is the new or changed code fully tested?
[X] (N/A) Is a documentation update included (if this change modifies existing APIs, or introduces new ones)?

NOTE: these things are not required to open a PR and can be done afterwards / while the PR is open.
Description of change
Behaviour of encoding_errors varies depending on whether hiredis is present or not (#1161)
This PR:

Adds tests for decode_responses=True with encoding_errors='ignore' and encoding_errors='replace'
Passes the relevant option to hiredis-py, if the version is 1.0.0+

NOTE: the new tests will likely fail if an older version of hiredis-py is installed.  I would argue that these tests should fail: if you install an older version of hiredis and set decode_responses=True then you get bad behaviour (specifically, non-decodable UTF-8 data was being returned as bytes instead of str). The failing test cases will accurately reflect this problem.

@candlerb Thanks for putting this together! I've been meaning to do it since hiredis-py 1.0 was released.


Query of an array does not seem to work

Hello everybody,
when I am trying to query an array of SKUs, it does not work.
This is my array:
onready var googleSkuArray = ["tailskin1","tailskin2","tailskin3"]
This is how I am trying to query the SKUs:
	func _on_connected():
		print ("Connection successful")
		payment.querySkuDetails([googleSkuArray], "inapp")`

This is my code for a completed query:
	func _on_product_details_query_completed(sku_details):`
		print ("SKU QUERY SUCCESSFUL")
		for available_sku in sku_details:
			var sku_id = available_sku["id"]
			print ("available sku = ", sku_id)
			print(available_sku)

The "SKU QUERY SUCCESSFUL" gets printed, but nothing else. If I then try to buy an item with:
payment.purchase(tailskinx)
It does not work, nothing happens. If I query only one item with:
payment.querySkuDetails([tailskinx], "inapp")
... everything works fine.
According to the docs (https://docs.godotengine.org/en/stable/tutorials/platform/android/android_in_app_purchases.html), it should be possible to query an array of strings.
Am I doing something wrong? Or is this a bug? I would appreciate any help!

You do ([googleSkuArray], "inapp") but googleSkuArray is ["tailskin1","tailskin2","tailskin3"]
so you end up with
([["tailskin1","tailskin2","tailskin3"]], "inapp") - thats one array too much.
As it's already an array, just (googleSkuArray, "inapp") should work.

Hello Niano,
yes, that was the problem. I am dumb.
Thank you very much <3


example

Fixes: #35.
☁  lints [example] pub global run pana
INFO       Running `/Applications/Tools/dart-sdk/bin/dart --version`...
INFO       Running `flutter --no-version-check --version --machine`...
WARNING    pana might update or modify files in `.`.
           Analysis will begin in 15 seconds, hit CTRL+C to abort it.
           To remove this message, use `--no-warning`.
INFO       Running `/Applications/Tools/dart-sdk/bin/dart pub upgrade --verbose`...
INFO       Analyzing package...
INFO       Running `/Applications/Tools/dart-sdk/bin/dart pub get`...
INFO       Running `/Applications/Tools/dart-sdk/bin/dart pub outdated --json --up-to-date --no-dev-dependencies --no-dependency-overrides`...

## ✓ Follow Dart file conventions (20 / 20)
### [*] 10/10 points: Provide a valid `pubspec.yaml`

### [*] 5/5 points: Provide a valid `README.md`

### [*] 5/5 points: Provide a valid `CHANGELOG.md`

## ✓ Provide documentation (10 / 10)
### [*] 10/10 points: Package has an example

* Found example at: `example/README.md`

## ✓ Support multiple platforms (20 / 20)
### [*] 20/20 points: Supports 2 of 2 possible platforms (**native**, **js**)

## ✓ Pass static analysis (30 / 30)
### [*] 30/30 points: code has no errors, warnings, lints, or formatting issues

## ✓ Support up-to-date dependencies (20 / 20)
### [*] 10/10 points: All of the package dependencies are supported in the latest version

No dependencies.

To reproduce run `dart pub outdated --no-dev-dependencies --up-to-date --no-dependency-overrides`.

### [*] 10/10 points: Package supports latest stable Dart and Flutter SDKs

## ✓ Support sound null safety (20 / 20)
### [*] 20/20 points: Package and dependencies are fully migrated to null safety!

Points: 120/120.

/cc @devoncarew @mit-mit

Do we want to include and sample dart code which gets linted?

Not sure...  If you have concrete ideas, feel free to follow-up with another PR?


Advertising service UUID not actually being advertised

It seems advertising service UUIDs are not correctly being advertised, even though the log indicates it is.
This is the output from the advertising call:
startAdvertising:SOMEBOX #212222 serviceUUIDs:(     "445B9FFB-348F-4E1B-A417-3559B8138390" )
But when I detect it via e.g. nRF Connect on an Android, or Bluecap on iOS, the advertised service IDs turns out to be an empty array. I'm digging some more into it, but it becomes rather problematic.

I'm having the same problem.  I'm using the echo example.
The console output is:
 peripheralManagerDidAddService: <CBMutableService: 0x102a22680 Primary = YES, UUID = EC00, Included Services = (null), Characteristics = (
    "<CBMutableCharacteristic: 0x102a23f10 UUID = EC0E, Value = (null), Properties = 0x1A, Permissions = 0x3, Descriptors = (\n), SubscribedCentrals = (\n)>"
)> (null)

But then LightBlue has my mac with no services advertised.

When I go deeper on my mac, the service doesn't show up under the advertisement info.

Even though the service shows up in the list of services.

@aaronrogers Advertised services and actual services does not necessarily correspond, and it sounds like your problem is a separate one in terms of actual services.

I just encountered this same issue, and threw up a PR that fixes the issue for me. LMK if you think this looks good or want any changes. https://github.com/notjosh/bleno-mac/pull/7

@ankidave I just checked our your branch and it fixes the issues. Thanks for providing the fix!
This issue is resolved by PR #7


Focus on Github issues resolving, instead of usual changes to typescript and Jupiter notebooks [focus on real issues first]

It's been months, and most updates seem to focus on accessibility, Python, and TypeScript fixes. While these are important, we feel that user feedback has not been prioritized.
Here are some key issues that need attention:
Customer Feedback: Please actively seek and act on feedback from users. Understanding what customers need will lead to more meaningful updates.
Contextual Assistance: Many users want better contextual support, similar to what’s offered by tools like Claude. Adding this would significantly improve workflow efficiency.
Flutter/Dart Enhancements: Proper improvements and enhancements for Flutter/Dart are long overdue. Given the growing popularity of these technologies, it’s crucial to focus on supporting developers using them.
UI Animations and Transitions: UI transitions and animations in VS Code could be more fluid and modern. Enhancing these would improve the overall user experience.
Audio Cues: Audio cues have stopped working altogether, affecting usability. Please look into fixing this functionality.
Settings UI: The current settings UI is not user-friendly. A more intuitive and responsive design is necessary to help users navigate options more efficiently.

Please either comment on existing issues that cover these topics or create new issues that map to these concerns. We want 1 problem per issue so that we can handle them rather than having everything in one big issue.


Support rbenv-default-gems

Automatically install often used gems (ex. bundler) every time after rbenv install
cf. https://github.com/sstephenson/rbenv-default-gems
Example
# node.yml
rbenv-default-gems:
  default-gems:
    - bundler
    - bcat ~>0.6
    - rails --pre
  revision: ead67889c91c53ad967f85f5a89d986fdb98f6fb

rbenv-default-gems looks good! (I didn't know the plugin.)
Thank you for adding a nice feature :+1:

Released as v0.2.1 :gem:

:+1: :+1: :+1: :+1:


[BUG] Display webhook error logs when Rancher prov test

Describe the bug

Currently, when Rancher fails to fully start during the provisioning test you see a spam of unhelpful messages that say
Error from server (NotFound): deployments.apps "rancher-webhook" not found
Error from server (NotFound): deployments.apps "rancher-webhook" not found
Error from server (NotFound): deployments.apps "rancher-webhook" not found
Error from server (NotFound): deployments.apps "rancher-webhook" not found
Error from server (NotFound): deployments.apps "rancher-webhook" not found

To Reproduce
Push a PR for ranchers that can not finish starting up.
Result
unhelpful messages are spammed
Expected Result

Provide a way to obtain information about why Rancher hasn't started.
Have CI prints a better message about what it is waiting on since it causes users to think there is a problem with the webhook.

Additional context

One option would be if the script is killed, use a trap in bash and print the /tmp/rancher.log

https://github.com/rancher/rancher/pull/41403 Updates the test to no longer print logs and fails after 5 minutes


We need a logged-in landing page

IDEA
Have a few sections like:

Most liked drinks (show 5)
Most viewed drinks (show 5)
Popular drinks with Vodka (show 5)
Popular drinks with Whiskey (show 5)
Popular drinks with Gin (show 5)
Popular drinks with Rum (show 5)
Top Margaritas (show 5)
Featured drink (pick a few drinks and create/add detailed content so it feels fleshed out. Popular drinks such as Bloody Merry, Pina Colada, Mai Thai, etc.)

I'll do research so we can artificially (read: accurately) inflate things like "Likes", "Views", etc based on what is popular throughout the web to get the ball rolling (I'll also grab shutterstock images).
@entrity Could you commit a page where I can start templating this and I'll have it ready for you to drop in the backend codez within a day or two.

commit 94ea19f6a23458e0ea6349f0827a4e5d6496e696
Date:   Wed Aug 26 10:33:31 2015 -0700
Add a logged-in landing page. Resolves #79 (github)

See app/views/home/signed_in_home.html.erb

@entrity Grab my commit and start plugging in the sections (ignore hero, that I'll do manually).  I think you should randomly inflate every drink with likes between 1-10 and for the following manually inflate so they take corresponding positions.  Can that be done?
(linked to corresponding tipsy page) [drink code]
Most liked

[Mojito ] (http://2034b877.ngrok.com/recipe/11273-mojito) [11273]
[Manhattan] (http://2034b877.ngrok.com/recipe/829-manhattan-cocktail) [829]
[Old Fashioned] (http://2034b877.ngrok.com/recipe/11021-old-fashioned) [11021]
[Cosmopolitan] (http://2034b877.ngrok.com/recipe/4903-cosmopolitan-cocktail) [4903]
[Bloody Mary] (http://2034b877.ngrok.com/recipe/3979-bloody-mary) [3979]

Popular drinks with Gin

[Gin & Tonic] (http://2034b877.ngrok.com/recipe/5458-gin-and-tonic) [5458]
[Tom Collins] (http://2034b877.ngrok.com/recipe/3499-tom-collins) [3499]
[Gimlet] (http://2034b877.ngrok.com/recipe/9220-gimlet) [9220]
[Gin Rickey] (http://2034b877.ngrok.com/recipe/3040-gin-rickey) [3040]
[Long Island Iced Tea] (http://2034b877.ngrok.com/recipe/7915-long-island-iced-tea) [7915]

Top Margaritas

[Strawberry Margarita] (http://2034b877.ngrok.com/recipe/12075-strawberry-margarita) [12075]
[Watermelon Margarita] (http://2034b877.ngrok.com/recipe/11600-watermelon-margarita) [11600]
[Mango Margarita] (http://2034b877.ngrok.com/recipe/4708-mango-margarita) [4708]
[Chili Margarita] (http://2034b877.ngrok.com/recipe/10223-chili-margarita) [10223]
[The Perfect Margarita #2] (http://2034b877.ngrok.com/recipe/181-the-perfect-margarita-2) [181]

Popular drinks with Vodka

[Moscow Mule] (http://2034b877.ngrok.com/recipe/4108-moscow-mule) [4108]
[Screwdriver] (http://2034b877.ngrok.com/recipe/2480-screwdriver) [2480]
[Black Russian] (http://2034b877.ngrok.com/recipe/8151-black-russian) [8151]
[White Russian] (http://2034b877.ngrok.com/recipe/3959-white-russian) [3959]
[Sea Breeze] (http://2034b877.ngrok.com/recipe/1373-sea-breeze) [1373]

@sirtastic : The random inflation sounds like we're trying to pull the wool over the eyes of the users. You can guess my feelings on that.
I'll see if I can get the other stuff plugged in this weekend, though.

@entrity We are talking like counts between 1-10 which in the end hardly effects anything but will give the idea the site is actually active which is very important.
I read an article about a year ago a guy wrote who was making several million a year on advertising revenue from niche forums he started.  One was for motorcycle enthusiasts, another some sport.  He noticed no one wanted to partake in his sites because there was no activity. What is the point of liking something no one will see? Writing a comment in a wasteland? Contributing content to a dead site? No one wants to waste time.   His solution? Create a bunch of accounts and start asking/answering his own questions. Make it look alive. He started several forums this way (~6 years ago) and do to the niche they did well with advertisers in that niche.
We are building a similar community and our community will benefit from appearing somewhat active. Randomly changing likes between 1-10 on drinks will be incredibly harmless.  With traffic they will equalize to natural levels quickly.

@sirtastic : I don't know if the following has factored in to your opinion, but if the users show up to a site with zero (or almost zero) comments, descriptions, instructions, or photos but lots and lots of likes, then a horde of them, perhaps the majority of them, will see what's going on and recognize it as a manipulation technique.
On the other hand, there's also an opposite phenomenon: people like to have an influence, and they know that they can make a mark on a community by being among the earliest participants. (Witness the now-universally-banned phenomenon of 'f!rst p0st's.)
Anyway, these aren't the reasons for my opinion. So if we're still deadlocked, maybe we need to poll Lockhart.
Re. Lockhart, since we aren't making any money yet, I suppose we need to give him a share of the company in exchange for his marketing work. Do you have any thoughts about how big his contributions and remunerations should be? I had in mind between 10 and 20 percent, but I admit that I have little sense of how the marketing and networking will take place.

@entrity This is not really worth arguing. We aren't talking about doing something that will have any lasting effect on the site. We are talking about randomizing things a tad so we don't have a ton of "0"s everywhere.  Browse linkedin for a minute and notice the articles people spam/share to the wall. Many of which will have many shares or likes but zero comments. Reddit posts typically get 30-50+ likes in my experience before receiving comments.

Plugged in home page.
If you want to bring up the manual data change again, let's talk over the phone.
commit 2addb1caa9500d69d1e806e1d26c4cc41759dd93
Date:   Sun Aug 30 10:44:38 2015 -0700
Plug in authenticated home page drinks. Closes #79 (github)

@entrity Realized this doesn't need to be a "logged in" landing page. This can be (and should) be viewable by anyone.   Can we make it available at the URL path tipsyology.com/discover

Will address this weekend.

commit 6e4d1447cb12cb609cb0e5e91d2cd1d00436921f
Date:   Sun Sep 6 13:02:13 2015 -0700
Make discover (home) page accessible for non-authenticated users. Closes #79 (github)


Make fastboot guard

I implemented a simple fastboot guard so that the fastboot server can start and is not crashing while booting. I tried to implement a fixed base on the following discussions: ember-fastboot/ember-cli-fastboot#105 and plusacht/ember-bootstrap-datetimepicker#75

Thanks for this! Could you help me understand how to verify the issue so I can understand the fix? I've been thinking about fastboot lately, so this is a great way to get in :)

When I started my app with ember fastboot, I got the following error:
TypeError: Cannot read property 'pointerEnabled' of undefined
    at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:135:1
    at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:26:1
    at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:29:1
    at Sandbox.VMSandbox.eval (.../node_modules/ember-fastboot-server/lib/sandboxes/vm.js:14:14)
    at new EmberApp (.../node_modules/ember-fastboot-server/lib/ember-app.js:41:11)
    at new FastBootServer (.../node_modules/ember-fastboot-server/lib/server.js:33:14)
    at .../node_modules/ember-cli-fastboot/lib/commands/fastboot.js:32:22
    at lib$rsvp$$internal$$tryCatch (.../node_modules/rsvp/dist/rsvp.js:1036:16)
    at lib$rsvp$$internal$$invokeCallback (.../node_modules/rsvp/dist/rsvp.js:1048:17)
    at lib$rsvp$$internal$$publish (.../node_modules/rsvp/dist/rsvp.js:1019:11)
    at lib$rsvp$asap$$flush (.../node_modules/rsvp/dist/rsvp.js:1198:9)
    at _combinedTickCallback (node.js:370:9)
    at process._tickCallback (node.js:401:11)

This basically means that nouislider.js uses some functionality which is not available on server side rendering. My fix just excludes all libraries which are not available in fastboot mode. Maybe you could write some polyfills but for our app it was/is sufficient to just exclude things which do not work on the server.
Does this make sense?

Makes perfect sense! Will have to see how it can be added to the tests as
well.
On Mon, 09 May 2016 at 12:37 PM tschoartschi<EMAIL_ADDRESS>wrote:

When I started my app with ember fastboot, I got the following error:
TypeError: Cannot read property 'pointerEnabled' of undefined
at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:135:1
at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:26:1
at .../fastboot-dist/fastboot/bower_components/nouislider/distribute/nouislider.js:29:1
at Sandbox.VMSandbox.eval (.../node_modules/ember-fastboot-server/lib/sandboxes/vm.js:14:14)
at new EmberApp (.../node_modules/ember-fastboot-server/lib/ember-app.js:41:11)
at new FastBootServer (.../node_modules/ember-fastboot-server/lib/server.js:33:14)
at .../node_modules/ember-cli-fastboot/lib/commands/fastboot.js:32:22
at lib$rsvp$$internal$$tryCatch (.../node_modules/rsvp/dist/rsvp.js:1036:16)
at lib$rsvp$$internal$$invokeCallback (.../node_modules/rsvp/dist/rsvp.js:1048:17)
at lib$rsvp$$internal$$publish (.../node_modules/rsvp/dist/rsvp.js:1019:11)
at lib$rsvp$asap$$flush (.../node_modules/rsvp/dist/rsvp.js:1198:9)
at _combinedTickCallback (node.js:370:9)
at process._tickCallback (node.js:401:11)
This basically means that nouislider.js uses some functionality which is
not available on server side rendering. My fix just excludes all libraries
which are not available in fastboot mode. Maybe you could write some
polyfills but for our app it was/is sufficient to just exclude things which
do not work on the server.
Does this make sense?
—
You are receiving this because you commented.
Reply to this email directly or view it on GitHub
https://github.com/kennethkalmer/ember-cli-nouislider/pull/26#issuecomment-217831396

--
Kenneth Kalmer
@kennethkalmer
http://www.opensourcery.co.za

@kennethkalmer I accidentally put the fastboot guard into the wrong file. With my latest commit I switched the guard to index.js. If you have any questions let me know

Any update on this?

Thanks for this and sorry for letting it sit. Will prepare a patch release shortly

I just released 0.10.0, could you please let me know if there are any regressions?


Vickel: Watch vasily[\W_]*+mesheryakov(?!.com(?<=vasily-mesheryakov.com))

Vickel requests the watch of the watch_keyword vasily[\W_]*+mesheryakov(?!\.com(?<=vasily-mesheryakov\.com)). See the MS search here and the Stack Exchange search in text, in URLs, and in code.

vasily[\W_]*+mesheryakov(?!\.com(?<=vasily-mesheryakov\.com)) has been seen in 1 true positive, 0 false positives, and 0 NAAs.

Approved by Jeff Schaller in Charcoal HQ


improv(core): Allow skipping of backreferences

CAP-8795
Will include Loom in our private repo on the accompanying PR.
This PR allows us to ignore $ characters in autocomplete regex's. It also addresses a regression when upgrading to 0.1.12.

I notated the main code changes. Everything else is distribution code.

@kbiedrzycki i'm only about 60% sure actually. there might be a config change that would generate them locally on install. it's not published to npm, so it behaves differently. that being said, I wasn't planning on PR-ing this back to the main repo, given the regression.
think it's worth spending some more time researching?


Incorrect translation of literal constants used as optional parameter values (when constants are defined in a separate file)

What You Are Seeing?
When executing a Cake script that includes a custom add-in, the following error is shown:
Compiling build script...
Error: Cake.Core.CakeException: Error(s) occurred when compiling build script:
(2955,122): error CS1009: Unrecognized escape sequence
at Cake.Scripting.Roslyn.RoslynScriptSession.Execute(Script script)
at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments)
at Cake.Commands.BuildCommand.Execute(CakeOptions options)
at Cake.CakeApplication.Run(CakeOptions options)
at Cake.Program.Main()
What is Expected?
The compilation and execution of the build script.
What version of Cake are you using?
I have seen this error with versions 0.29.0, 0.33.0 and 0.35.0
Are you running on a 32 or 64 bit system?
I am running a 64-bit system.
What environment are you running on?  Windows? Linux? Mac?
The environment we are running on, is a Windows environment.
Are you running on a CI Server?  If so, which one?
The build is both failing on a local machine, as well as on our TeamCity build server.
Additional troubleshooting information
After cloning the Cake github repository, I was able to take a look at the build script that was executed. (Having this in a file for diagnostic purposes would be extremely helpful ;))
This pointed me to a method in our add-in that contained the following signature:
Class A:
[CakeMethodAlias]
public static void DoSomething(this ICakeContext context, string value = Constants.DefaultValue) { ... }
Class B ('Constants'):
public const string DefaultValue = @".\Output";
In the script this got translated to:
[CakeMethodAlias]
public static void DoSomething(this ICakeContext context, string value = ".\Output") { ... }
Note the absence of the literal character '@'.
I managed to work-around this problem by using either of the following implementations in the add-in:
a)
Class A:
[CakeMethodAlias]
public static void DoSomething(this ICakeContext context, string value = default(string))
{
value = value ?? Constants.DefaultValue;
...
}
Class B ('Constants'):
public const string DefaultValue = @".\Output";
b)
Class A:
private const string DefaultValue = @".\Output";
[CakeMethodAlias]
public static void DoSomething(this ICakeContext context, string value = DefaultValue) { ... }

Ah so, okay, apparently I haven't tested option B.
What I did test was:
Class A:
private const string DefaultValue = @".\Output";
[CakeMethodAlias]
public static void DoSomething(this ICakeContext context, string value = default(string))
{
value = value ?? DefaultValue;
...
}


merge into hast-to-hyperscript, leveraging h2ml ?

h2ml is one of several projects that generate HTML strings from the hyperscript syntax. I particularly like this one because it complies with h2spec.

One of the cool things about this projects is that it supports lots of settings, useful for prettyfying and minification (rehype-minify, rehype-format), and that project doesn't support this, right?
I like the spec though, and would love to make h support it!

fair point!

I looked again at h2ml and it’s a nice project, it works well in the browser where space is a concern, but there’s a lot of ways HAST is better for its goals, namely being valid and optionally outputting tiny HTML.

h2ml can generate invalid HTML (no entity support)
h2ml doesn’t support comments or doctypes
h2ml can generate bloated HTML, hast-util-to-html can generate tiny HTML

...there’s definitely room for a tiny version of hast-util-to-html in the ecosystem that looks more like h2ml, but there’s also room for this project itself!


[FEATURE] Expose Playwright async/await flavor

I need to run aiohttp server and use playwright in tests at the same time.
Am I right that pytest-playwright right now can't help me with that?
It provides fixtures only for sync API. But I need async API.
So I have to do something like that.
from aiohttp import web
from playwright.async_api import async_playwright

async def index_html(request):
    return web.Response(body="Hello world", content_type="text/html")

async def test_without_page_fixture_passes(aiohttp_server):
    app = web.Application()
    app.router.add_get("/", index_html)
    server = await aiohttp_server(app)
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        context = await browser.new_context()
        page = await context.new_page()
        await page.goto(str(server.make_url("/")))
        assert await page.text_content("body") == "Hello world"

Exactly, currently the pytest plugin does only provide the sync APIs. So you need to launch browser etc. yourself, something similar to https://github.com/microsoft/playwright-python/blob/master/tests/async/conftest.py
Shall I rename this issue title into a feature request for providing also the async flavour?

Thanks.

Shall I rename this issue title into a feature request for providing also the async flavor?

Sure, go ahead.

Exactly, currently the pytest plugin does only provide the sync APIs. So you need to launch browser etc. yourself, something similar to https://github.com/microsoft/playwright-python/blob/master/tests/async/conftest.py
Shall I rename this issue title into a feature request for providing also the async flavor?

@mxschmitt I'm on Playwright v1.17 and I did try to copy-paste all the fixtures in the file you pointed here (except the utils), but then I got:
E       fixture 'launch_arguments' not found
>       available fixtures: _verify_url, base_url, browser, browser_channel, browser_context_args, browser_factory, browser_name, browser_type, browser_type_launch_args, cache, capfd, capfdbinary, caplog, capsys, capsysbinary, context, context_factory, delete_output_dir, device, doctest_namespace, event_loop, is_chromium, is_firefox, is_webkit, launch_browser, monkeypatch, page, password, playwright, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, report_name, selectors, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory, username
>       use 'pytest --fixtures [testpath]' for help on them.

I quickly fixed it by changing launch_arguments to browser_type_launch_args, but then again, I got:
playwright = <async_generator object playwright at 0x111459d40>, browser_name = 'chromium'

    @pytest.fixture(scope="session")
    def browser_type(playwright, browser_name: str):
        if browser_name == "chromium":
>           return playwright.chromium
E           AttributeError: 'async_generator' object has no attribute 'chromium'

conftest.py:20: AttributeError

I'm pretty new to Python and pytest but I guess async_generator of playwright_object instead of playwright_object itself being "injected" to browser_type – any pointer on how I should remedy this? And is this async gonna be planned to be supported in the end? 😅  Thank you.

@dwiyatci why do you prefer async over sync? Understanding this use-case for the testing scenario would us help to prioritize it.

@mxschmitt I would like to implement a custom wait_for_network_settled function like this (https://github.com/microsoft/playwright/issues/7856#issuecomment-928074716), and I believe it'd be much easier if I could have asyncio in place.

@mxschmitt: I want to use this plugin together with aiohttp-pytest, because my project is based on aiohttp. Thats the reason why @maratori and i prefer (in this case) async over sync.

any updates for this feature?

It is very odd that there are async/sync versions of Playwright Python but the integration with pytest only supports sync. If the primary purpose of Playwright is to write tests, but the async version cannot be used with the dominant test framework, then what is the async version's purpose? If the async version is intended for applications other than testing, then this is still odd as we'd likely want to use pytest to test that code.
On a more pragmatic level, as more and more applications are written using async libraries, more and more tests will need to be async. Also, having async tests allows us to use some cleaner semantics for things like processes that happen in parallel.
There's also the issue (https://github.com/microsoft/playwright-python/issues/1339#issuecomment-1355470204) I ran into that we can't even mix async/sync tests in the same test suite and use playwright-pytest.
@mxschmitt, do you have pointers on how hard this would be/what would need to be done?

@nathanielobrown I totally agree that providing an async layer would be cool! The reason why we didn't do it yet was that its more idiomatic to write tests in sync mode (debugging, you don't need to install other pytest plugins, REPL just works etc).
Regarding how hard it is to implement, I think it hardly depends on the question how much code we want to duplicate. In general the pytest-playwright plugin is not a lot of code, to provide an async version, we could in theory just copy it and use the async version of Playwright and it should just work™ . Something where I'm not sure about is if we need a dedicated plugin (PIP package) for the async version or if we can internally detect somehow if its async or sync and then do conditional logic. This requires some investigation.
(happy to accept patches for it, just not something we prioritise, since not a lot of users have requested it so far.)

Hey guys!
I made a plugin https://github.com/m9810223/playwright-async-pytest that support async playwright for my projects.
It refers to original plugin, welcome to use it if you need!

Waiting for the async feature in pytest!

Hey!
What is the status of the feature?

We also need this feature to fully adopt playwright in our integration tests.

Please prioritize higher to implement the python - Playwright with async.

While we prepare things for releasing it as a separate package, here are instructions to install it from source for now, curious to hear your thoughts!

virtualenv env && source env/bin/activate
pip install -e "git+https://github.com/microsoft/playwright-pytest#egg=pytest-playwright-asyncio&subdirectory=pytest-playwright-asyncio"
playwright install
Create test_foo.py

import pytest

@pytest.mark.asyncio(loop_scope="session")
async def test_foo(page):
    await page.goto("https://github.com")

That's great news! 🎉
@nathanielobrown
I later modified https://github.com/m9810223/playwright-async-pytest to use anyio for the following reasons:

I prefer not to add @pytest.mark.asyncio to every async test, although I'm not debating which approach is better.
Using anyio also allows compatibility with Python's built-in asyncio.

ref: https://github.com/m9810223/playwright-async-pytest/issues/8

I'm curious to what the community currently is mostly using when testing with Pytest. I tried to find anyio in this survey but didn't see any mentions. I understand the benefit of not having to wrap them into custom fixtures / mark them.
I think the mark issue is solved by this - thats what projects are usually using nowadays afaik.

Using anyio also allows compatibility with Python's built-in asyncio.

Do you mind elaborating on that?

I tried the instructions from https://github.com/microsoft/playwright-pytest/issues/74#issuecomment-2476207495 just now, and as soon as a test requests the page fixture, pytest reports the following fixture error:
ScopeMismatch: You tried to access the function scoped fixture event_loop with a session scoped request object. Requesting fixture stack:
venv13/src/pytest-playwright-asyncio/pytest-playwright-asyncio/pytest_playwright_asyncio/pytest_playwright.py:263:  def browser(launch_browser: Callable[[], Awaitable[playwright.async_api._generated.Browser]]) -> AsyncGenerator[playwright.async_api._generated.Browser, NoneType]
venv13/src/pytest-playwright-asyncio/pytest-playwright-asyncio/pytest_playwright_asyncio/pytest_playwright.py:250:  def launch_browser(browser_type_launch_args: Dict, browser_type: playwright.async_api._generated.BrowserType) -> Callable[..., Awaitable[playwright.async_api._generated.Browser]]
venv13/src/pytest-playwright-asyncio/pytest-playwright-asyncio/pytest_playwright_asyncio/pytest_playwright.py:245:  def browser_type(playwright: playwright.async_api._generated.Playwright, browser_name: str) -> playwright.async_api._generated.BrowserType
venv13/src/pytest-playwright-asyncio/pytest-playwright-asyncio/pytest_playwright_asyncio/pytest_playwright.py:238:  def playwright() -> AsyncGenerator[playwright.async_api._generated.Playwright, NoneType]
Requested fixture:
venv13/lib/python3.13/site-packages/pytest_asyncio/plugin.py:1024:  def event_loop(request: _pytest.fixtures.FixtureRequest) -> Iterator[asyncio.events.AbstractEventLoop]

Would a file-wide marker or doing it in conftest be fine for you or do you prefer asyncio_mode=auto?

What I don't want is to have to decorate every other asynchronous test method in my codebase. That's what pytest provides these configuration settings for. What I would not mind doing, is adding extra decorators to those few Playwright tests (they are a minority in my code base, so adding extras is manageable). Also, if playwright-pytest(-asyncio) does not play well with pytest's built-in configuration, then that's a pretty damning first impression if enabling playwright-pytest-asyncio causes every other non-Playwright test to fail. Something that is ideally avoided. E.g. it would look better if the Playwright tests fail (because that's literally what a developer would be in the process of setting up) than to make it look like the setup broke existing code (which would be much more confusing, and potentially harder to work around).

I'm curious why it works for you with asyncio_default_fixture_loop_scope=function I was under impression that we need "session".

I'm not sure what you mean by "it" in this question. Having a function-scoped event loop is the default in pytest-asyncio as it provides the most isolation between tests, so out of all the options it's the one most likely to work. However, it does not work with pytest-playwright-asyncio.
I was unable to find where Playwright's Pytest fixtures are defined. Could you point me in the right direction?

Also, if playwright-pytest(-asyncio) does not play well with pytest's built-in configuration, then that's a pretty damning first impression if enabling playwright-pytest-asyncio causes every other non-Playwright test to fail. Something that is ideally avoided. E.g. it would look better if the Playwright tests fail (because that's literally what a developer would be in the process of setting up) than to make it look like the setup broke existing code (which would be much more confusing, and potentially harder to work around).

Definitely! Thats why we didn't release it yet. One thing to note is that the pytest-asyncio default mode is strict - so I think we should aim to support both, auto and strict.

I'm not sure what you mean by "it" in this question. Having a function-scoped event loop is the default in pytest-asyncio as it provides the most isolation between tests, so out of all the options it's the one most likely to work. However, it does not work with pytest-playwright-asyncio.

Playwright would like to re-use the Playwright instance, so we need a loop which is session wide - I think there is no way around that. Either via setting it globally via the asyncio_default_fixture_loop_scope setting or the other variants (pytest_collection_modifyitems or pytestmark).

I was unable to find where Playwright's Pytest fixtures are defined. Could you point me in the right direction?

pytest-playwright-asyncio fixtures are defined here: https://github.com/microsoft/playwright-pytest/blob/main/pytest-playwright-asyncio/pytest_playwright_asyncio/pytest_playwright.py

While we prepare things for releasing it as a separate package, here are instructions to install it from source for now, curious to hear your thoughts!

virtualenv env && source env/bin/activate
pip install -e "git+https://github.com/microsoft/playwright-pytest#egg=pytest-playwright-asyncio&subdirectory=pytest-playwright-asyncio"
playwright install
Create test_foo.py

import pytest
@pytest.mark.asyncio(loop_scope="session")
async def test_foo(page):
await page.goto("https://github.com")
I saw that https://github.com/m9810223/playwright-async-pytest is based on anyio, not sure whats the standard nowadays.

I use poetry and start own async pytest-playwright, so based on your suggestions I provide steps we test the approach:

remove old sync-based plugin pytest-playwright
install async plugin poetry add "git+https://github.com/microsoft/playwright-pytest#subdirectory=pytest-playwright-asyncio"
run a tests (specify a dir to avoid interference with ./src) poetry run pytest /test
That works! Thx. But how I can handle semver in the future? I found https://pypi.org/project/pytest-playwright-asyncio/ will you push updates to?

We published pytest-playwright-asyncio as v0.6.1:
PyPi: https://pypi.org/project/pytest-playwright-asyncio/
Conda: https://anaconda.org/Microsoft/pytest-playwright-asyncio

Thank you all for making this work! I am about to merge the PR that implements all this in my own project. Being able to use Python instead of the JS/TS with Playwright's own test runner saves a lot of code duplication and makes writing tests a lot easier.
I did run into the problem that if run as part of the main pytest test suite of ~4500 tests, these Playwright tests would hang indefinitely. I did not manage to trace the source of the problem (it could be an event loop issue). However, I worked around it by running the Playwright tests separately from the main suite. There are many ways to do this, but I opted to organize my Playwright tests in a separate root test directory, but inherit from the main test suite's pytest configuration (conftest). See https://github.com/bartfeenstra/betty/pull/2185/files. I hope that this comment may save people with similar issues some time in the future.

I also migrated to playwright-pytest-asyncio successfully, thanks for the release !
For anyone also running into tests hanging indefinitely:  apparently we really have to put all tests in the same loop.
As far as I understand, this is at least because Playwright's Browser is a session-wide fixture that tries to access the event loop... but setting asyncio_default_fixture_loop_scope = "session" was not enough.


flink cdc可不可以支持，配置从最早或者最新的地方开始消费数据——postgresql

Search before asking

[X] I searched in the issues and found nothing similar.

Flink version
1.17.0
Flink CDC version
2.3.0
Database and its version
postgresql
Minimal reproduce step
设置snapshotMode: never后
每次启动提示一下
Read xlogStart at 'LSN{61A/9824DB78}' from transaction '9086176'
No previous LSN found in Kafka, streaming from the latest xlogpos or flushed LSN...
于是每次启动都从日志开始的地方读取，为什么会找不到LSN呢
What did you expect to see?
postgresql中没有schema_only这个选项，该如何实现呢
What did you see instead?
MySQL中指定snapshotMode: schema_only可以实现
Anything else?
No response
Are you willing to submit a PR?

[X] I'm willing to submit a PR!

Are you using the incremental snapshot mode? if sure, you can " 'scan.startup.mode' = 'latest-offset'"  to verify whether it meets your needs.

Thank you for your reply, but it did not solve my problem
//1.创建执行环境
        Configuration configuration = new Configuration();
        configuration.setBoolean("scan.incremental.snapshot.enabled",true);
        configuration.setString("scan.startup.mode","latest-offset");
        configuration.setInteger(WebOptions.PORT, flinkConfig.getUiPort());
        StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(
                configuration);

After I configure it this way, it still generates a snapshot when it starts for the first time

Theoretically, this startup mode will not execute snapshots. I suggest using sql to do a verification.

Theoretically, this startup mode will not execute snapshots. I suggest using sql to do a verification.

Do you know how slots are automatically deleted when the spring boot project is stopped? Currently, deleting slots is a feasible method.

Theoretically, this startup mode will not execute snapshots. I suggest using sql to do a verification.

Do you know how slots are automatically deleted when the spring boot project is stopped? Currently, deleting slots is a feasible method.

I haven't used flink in spring boot.

Considering collaboration with developers around the world, please re-create your issue in English on Apache Jira under project Flink with component tag 'Flink CDC'. Thanks.
为了便于各个国家的开发者合作，请用英文在 Apache Jira 的 Flink项目下重新提交问题，同时将 issue 的 Component 标注为 Flink CDC。谢谢。


Add Toggle option to Cancel Flight Inertia

Added option (disabled by default) to cancel out Flight inertia for all boots. Biggest driving factor was the annoyance at the minimum number of blocks I could move, on the minimum boosted speed (25%) for Nano voidwalker being 2 entire blocks. Quite inconvenient IMO.
As for the naming convention, I feel it's always very awkward to name a variable that "disables" something if true, so I went with the "cancel" label everywhere since it 'cancels out' the flight inertia. Open to refactoring the name if there is a strong preference for another labeling.
Comes with Keybind to toggle the feature on/off, as well as a Config option to disable the feature altogether. (Toggle disabled by default, Config option enabled by default).
Code copied directly from Draconic Evolutions implementation, so the behavior should match Draconic chestplate's no-inertia feature exactly.
Tested in Singleplayer. Tested feature itself, tested Toggle, and tested setting Config value to false (disabling feature) and all work as expected. When config is false on server it reports this in the Ack packet and displays a message to the user letting them know the feature is disabled.

Update: The version in this PR (with config value enabled naturally) is now up on my private server running GTNH 2.6.1. Working as expected.

Give me a bit and I'll review m, just woke up

The logic seems fine, just want these changed to remain stylistic of the rest of the mod.

@Alastors i try to build it before but when i update emt and thaumic energistics to latest tags it not work

@Dream-Master Oof god you sure are right, I will have to update literally every Thaumic boots derivation

Gimme a couple hours and I'll get on it, I need to update their code anyway

@Alastors i pushed it so we can see if it build or not


Examples segfault (Linux / mesa / amdgpu)

I'm still trying to run this library
I am not able to run any of the examples, they fail with SEGV
My gpu:
Devices:
========
GPU0:
        apiVersion         = 4202627 (1.2.131)
        driverVersion      = 83894273 (0x5002001)
        vendorID           = 0x1002
        deviceID           = 0x67df
        deviceType         = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
        deviceName         = AMD RADV POLARIS10 (ACO)
        driverID           = DRIVER_ID_MESA_RADV
        driverName         = radv
        driverInfo         = Mesa 20.2.1 (ACO)
        conformanceVersion = <IP_ADDRESS>

Gdb points here: https://github.com/EthicalML/vulkan-kompute/blob/7b9f84f0abf1156fd2806957012093b19e126e22/single_include/kompute/Kompute.hpp#L1845
Apparently with a nvidia gpu it works, with the same aur package I made before
Steps to reproduce:
cd /tmp
git clone https://github.com/EthicalML/vulkan-kompute.git
cd vulkan-kompute/examples/array_multiplication/
cmake -Bbuild
make -C build -j12
build/kompute_array_mult

log: (I may have configured the logging library wrong?)
> ./kompute_array_mult
DEBUG: Kompute Manager creating instance
DEBUG: Kompute Manager Instance Created
DEBUG: Kompute Manager creating Device
INFO: Using physical device index {} found {}
DEBUG: Kompute Manager device created
DEBUG: Kompute Manager compute queue obtained
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1488] Kompute Manager createInitTensor triggered
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1490] Kompute Manager creating new tensor shared ptr
DEBUG: Kompute Tensor destructor started. Type: {}
DEBUG: Kompute Tensor destructor success
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1365] Kompute Manager evalOp Default triggered
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1334] Kompute Manager evalOp triggered
DEBUG: Kompute Manager creating Sequence object
DEBUG: Kompute Manager createManagedSequence with sequenceName: {} and queueIndex: {}
DEBUG: Kompute Sequence Constructor with existing device & queue
DEBUG: Kompute Sequence creating command pool
DEBUG: Kompute Sequence Command Pool Created
DEBUG: Kompute Sequence creating command buffer
DEBUG: Kompute Sequence Command Buffer Created
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1339] Kompute Manager evalOp running sequence BEGIN
DEBUG: Kompute sequence called BEGIN
INFO: Kompute Sequence command recording BEGIN
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1342] Kompute Manager evalOp running sequence RECORD
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1120] Kompute Sequence record function started
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1128] Kompute Sequence creating OpBase derived class instance
DEBUG: Compute OpBase constructor with params
DEBUG: Kompute OpTensorCreate constructor with params
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1139] Kompute Sequence running init on OpBase derived class instance
DEBUG: Kompute OpTensorCreate init called
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor local mapping tensor data to host buffer
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1143] Kompute Sequence running record on OpBase derived class instance
DEBUG: Kompute OpTensorCreate record called
DEBUG: Kompute Tensor recordCopyFrom called
DEBUG: Kompute Tensor copying data size {}.
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1345] Kompute Manager evalOp running sequence END
DEBUG: Kompute Sequence calling END
INFO: Kompute Sequence command recording END
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1348] Kompute Manager evalOp running sequence EVAL
DEBUG: Kompute sequence EVAL BEGIN
DEBUG: Kompute OpTensorCreate preEval called
DEBUG: Kompute sequence submitting command buffer into compute queue
DEBUG: Kompute OpTensorCreate postEval called
DEBUG: Kompute sequence EVAL SUCCESS
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1351] Kompute Manager evalOp running sequence SUCCESS
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1488] Kompute Manager createInitTensor triggered
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1490] Kompute Manager creating new tensor shared ptr
DEBUG: Kompute Tensor destructor started. Type: {}
DEBUG: Kompute Tensor destructor success
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1365] Kompute Manager evalOp Default triggered
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1334] Kompute Manager evalOp triggered
DEBUG: Kompute Manager creating Sequence object
DEBUG: Kompute Manager createManagedSequence with sequenceName: {} and queueIndex: {}
DEBUG: Kompute Sequence Constructor with existing device & queue
DEBUG: Kompute Sequence creating command pool
DEBUG: Kompute Sequence Command Pool Created
DEBUG: Kompute Sequence creating command buffer
DEBUG: Kompute Sequence Command Buffer Created
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1339] Kompute Manager evalOp running sequence BEGIN
DEBUG: Kompute sequence called BEGIN
INFO: Kompute Sequence command recording BEGIN
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1342] Kompute Manager evalOp running sequence RECORD
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1120] Kompute Sequence record function started
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1128] Kompute Sequence creating OpBase derived class instance
DEBUG: Compute OpBase constructor with params
DEBUG: Kompute OpTensorCreate constructor with params
[2020-11-01 21:19:14.167] [debug] [Kompute.hpp:1139] Kompute Sequence running init on OpBase derived class instance
DEBUG: Kompute OpTensorCreate init called
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor local mapping tensor data to host buffer
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1143] Kompute Sequence running record on OpBase derived class instance
DEBUG: Kompute OpTensorCreate record called
DEBUG: Kompute Tensor recordCopyFrom called
DEBUG: Kompute Tensor copying data size {}.
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1345] Kompute Manager evalOp running sequence END
DEBUG: Kompute Sequence calling END
INFO: Kompute Sequence command recording END
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1348] Kompute Manager evalOp running sequence EVAL
DEBUG: Kompute sequence EVAL BEGIN
DEBUG: Kompute OpTensorCreate preEval called
DEBUG: Kompute sequence submitting command buffer into compute queue
DEBUG: Kompute OpTensorCreate postEval called
DEBUG: Kompute sequence EVAL SUCCESS
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1351] Kompute Manager evalOp running sequence SUCCESS
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1488] Kompute Manager createInitTensor triggered
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1490] Kompute Manager creating new tensor shared ptr
DEBUG: Kompute Tensor destructor started. Type: {}
DEBUG: Kompute Tensor destructor success
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1365] Kompute Manager evalOp Default triggered
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1334] Kompute Manager evalOp triggered
DEBUG: Kompute Manager creating Sequence object
DEBUG: Kompute Manager createManagedSequence with sequenceName: {} and queueIndex: {}
DEBUG: Kompute Sequence Constructor with existing device & queue
DEBUG: Kompute Sequence creating command pool
DEBUG: Kompute Sequence Command Pool Created
DEBUG: Kompute Sequence creating command buffer
DEBUG: Kompute Sequence Command Buffer Created
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1339] Kompute Manager evalOp running sequence BEGIN
DEBUG: Kompute sequence called BEGIN
INFO: Kompute Sequence command recording BEGIN
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1342] Kompute Manager evalOp running sequence RECORD
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1120] Kompute Sequence record function started
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1128] Kompute Sequence creating OpBase derived class instance
DEBUG: Compute OpBase constructor with params
DEBUG: Kompute OpTensorCreate constructor with params
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1139] Kompute Sequence running init on OpBase derived class instance
DEBUG: Kompute OpTensorCreate init called
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor running init with Vulkan params and num data elementS: {}
DEBUG: Kompute Tensor creating buffer
DEBUG: Kompute Tensor creating buffer with memory size: {}, and usage flags: {}
DEBUG: Kompute Tensor buffer created now creating memory
DEBUG: Kompute Tensor allocating memory index: {}, size {}, flags: {}
DEBUG: Kompute Tensor buffer & memory creation successful
DEBUG: Kompute Tensor local mapping tensor data to host buffer
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1143] Kompute Sequence running record on OpBase derived class instance
DEBUG: Kompute OpTensorCreate record called
DEBUG: Kompute Tensor recordCopyFrom called
DEBUG: Kompute Tensor copying data size {}.
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1345] Kompute Manager evalOp running sequence END
DEBUG: Kompute Sequence calling END
INFO: Kompute Sequence command recording END
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1348] Kompute Manager evalOp running sequence EVAL
DEBUG: Kompute sequence EVAL BEGIN
DEBUG: Kompute OpTensorCreate preEval called
DEBUG: Kompute sequence submitting command buffer into compute queue
DEBUG: Kompute OpTensorCreate postEval called
DEBUG: Kompute sequence EVAL SUCCESS
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1351] Kompute Manager evalOp running sequence SUCCESS
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1365] Kompute Manager evalOp Default triggered
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1334] Kompute Manager evalOp triggered
DEBUG: Kompute Manager creating Sequence object
DEBUG: Kompute Manager createManagedSequence with sequenceName: {} and queueIndex: {}
DEBUG: Kompute Sequence Constructor with existing device & queue
DEBUG: Kompute Sequence creating command pool
DEBUG: Kompute Sequence Command Pool Created
DEBUG: Kompute Sequence creating command buffer
DEBUG: Kompute Sequence Command Buffer Created
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1339] Kompute Manager evalOp running sequence BEGIN
DEBUG: Kompute sequence called BEGIN
INFO: Kompute Sequence command recording BEGIN
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1342] Kompute Manager evalOp running sequence RECORD
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1120] Kompute Sequence record function started
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1128] Kompute Sequence creating OpBase derived class instance
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:913] Compute OpBase constructor with params
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1767] Kompute OpAlgoBase constructor with params numTensors: 3
[2020-11-01 21:19:14.168] [info] [Kompute.hpp:1782] Kompute OpAlgoBase dispatch size X: 3, Y: 1, Z: 1
DEBUG: Kompute Algorithm Constructor with device
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1811] Kompute OpAlgoBase shaderFilePath constructo with shader raw data length: 479
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1139] Kompute Sequence running init on OpBase derived class instance
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1826] Kompute OpAlgoBase init called
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1839] Kompute OpAlgoBase fetching spirv data
[2020-11-01 21:19:14.168] [warning] [Kompute.hpp:1884] Kompute OpAlgoBase Running shaders directly from spirv file
[2020-11-01 21:19:14.168] [debug] [Kompute.hpp:1843] Kompute OpAlgoBase Initialising algorithm component
DEBUG: Kompute Algorithm init started
DEBUG: Kompute Algorithm createParameters started
DEBUG: Kompute Algorithm creating descriptor pool
DEBUG: Kompute Algorithm creating descriptor set layout
DEBUG: Kompute Algorithm allocating descriptor sets
DEBUG: Kompute Algorithm updating descriptor sets
DEBUG: Kompue Algorithm successfully run init
DEBUG: Kompute Algorithm createShaderModule started
DEBUG: Kompute Algorithm Creating shader module. ShaderFileSize: {}
DEBUG: Kompute Algorithm create shader module success
DEBUG: Kompute Algorithm calling create Pipeline
AddressSanitizer:DEADLYSIGNAL
=================================================================
==243214==ERROR: AddressSanitizer: SEGV on unknown address 0x0000000000c8 (pc 0x7f7a9e84b1c5 bp 0x60700000c1f0 sp 0x7fff80d84550 T0)
==243214==The signal is caused by a READ memory access.
==243214==Hint: address points to the zero page.
    #0 0x7f7a9e84b1c5  (/usr/lib/libvulkan_radeon.so+0x3741c5)
    #1 0x7f7a9e6081af  (/usr/lib/libvulkan_radeon.so+0x1311af)
    #2 0x7f7a9e5f561c  (/usr/lib/libvulkan_radeon.so+0x11e61c)
    #3 0x7f7a9e5fe184  (/usr/lib/libvulkan_radeon.so+0x127184)
    #4 0x7f7a9e5fe593  (/usr/lib/libvulkan_radeon.so+0x127593)
    #5 0x557d878de759 in kp::Algorithm::createPipeline(std::vector<unsigned int, std::allocator<unsigned int> >) (/home/kezi/Progetti/vulkan-kompute/examples/build-array_multiplication-Desktop-Debug/kompute_array_mult+0x37759)
    #6 0x557d878df6ab in kp::Algorithm::init(std::vector<char, std::allocator<char> > const&, std::vector<std::shared_ptr<kp::Tensor>, std::allocator<std::shared_ptr<kp::Tensor> > >) (/home/kezi/Progetti/vulkan-kompute/examples/build-array_multiplication-Desktop-Debug/kompute_array_mult+0x386ab)
    #7 0x557d878c0c03 in kp::OpAlgoBase<0u, 0u, 0u>::init() /usr/local/include/kompute/Kompute.hpp:1845
    #8 0x557d878d6b80 in bool kp::Sequence::record<kp::OpAlgoBase<0u, 0u, 0u>, std::vector<char, std::allocator<char> > >(std::vector<std::shared_ptr<kp::Tensor>, std::allocator<std::shared_ptr<kp::Tensor> > >, std::vector<char, std::allocator<char> >&&) /usr/local/include/kompute/Kompute.hpp:1141
    #9 0x557d878d88f6 in void kp::Manager::evalOp<kp::OpAlgoBase<0u, 0u, 0u>, std::vector<char, std::allocator<char> > >(std::vector<std::shared_ptr<kp::Tensor>, std::allocator<std::shared_ptr<kp::Tensor> > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<char, std::allocator<char> >&&) /usr/local/include/kompute/Kompute.hpp:1343
    #10 0x557d878da889 in void kp::Manager::evalOpDefault<kp::OpAlgoBase<0u, 0u, 0u>, std::vector<char, std::allocator<char> > >(std::vector<std::shared_ptr<kp::Tensor>, std::allocator<std::shared_ptr<kp::Tensor> > >, std::vector<char, std::allocator<char> >&&) /usr/local/include/kompute/Kompute.hpp:1367
    #11 0x557d878b6f4f in main /home/kezi/Progetti/vulkan-kompute/examples/array_multiplication/src/Main.cpp:40
    #12 0x7f7aa22d0151 in __libc_start_main (/usr/lib/libc.so.6+0x28151)
    #13 0x557d878b626d in _start (/home/kezi/Progetti/vulkan-kompute/examples/build-array_multiplication-Desktop-Debug/kompute_array_mult+0xf26d)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/usr/lib/libvulkan_radeon.so+0x3741c5)
==243214==ABORTING

Thank you for the update @Kezii - just to make sure I understand your issue, you are saying that you have been able to confirm that it works with NVIDIA graphics cad but not with AMD?
In the example looking at the logs it seems that it fails when calling the createPipeline - this coudl be debugged in various ways. Initially it would be good to understand if the erro may be coming due to the format of the shader. Could you try the example using the SPIR-V bytes instead of the string?

More specifically, this would be reading from the shader header files for the shaderopmult.hpp converted using the Kompute shader-to-cpp-header script, which would be similar to how the android example provides the option to load the shader:
https://github.com/EthicalML/vulkan-kompute/blob/9babbc54ee96af1495b59c50f2d9116e75e51f4c/examples/android/android-simple/app/src/main/cpp/KomputeModelML.cpp#L69

you are saying that you have been able to confirm that it works with NVIDIA graphics cad but not with AMD?

Yes, I told a friend with my same OS and a nvidia card and it worked for him, not really sure about the conditions since I do not have control on his pc (though he used my same aur package)
I tested on another pc with an intel igpu and it segfaults too

Could you try the example using the SPIR-V bytes instead of the string?

I tried your code on the last comment and it worked!
I'll take some time to figure out what happened, since, as you can imagine, this is the first time I got the library to work
Thanks for the quick reply

Awesome! Thank you for confirming @Kezii - I have noticed that only a few devices support provisioning of shaders in their raw string format. I do suspect this is less due to the graphics card itself, as normally the compilation of shaders from raw stirng into SPIR-V bytes would be done by a library like shaderc, so I suspect it's more due to relevant dependencies like shaderc not being available.
I will open an issue in the Vulkan forums to find more about this, and will track it via #85
Thank you very much for rerporting this tho, in regards to your points about the example, I will update the example to have the same macro guard so it actually loads the shader from the spir-v format by default, so it's more robust.

have noticed that only a few devices support provisioning of shaders in their raw string format.

Yeah I'm surprised that this worked, I was assuming that it was compiling the shaders under the hood (like rust's vulkano library)
Indeed if I point the shader to the .comp file it segfaults, but if I compile the shader and put the path of the .v file it works perfectly
Thanks for addressing this issue


Various fixes in code generation

What?
Code Generation fixes

[x] Fix generation of extension code
[x] Fix wrong default values
[x] Fix public imports
[x] Fix Proto3 optional support
[x] Fix additional properties required for Proto3 optional fields
[x] Fix the generation of Descriptor.fs in Protobuf.FSharp by adding missing properties

Added a test suite

[x]  Generate F# code from test protos
[x]  Generate C# code from test protos
[ ]  Add conformance tests that make sure that the F# and C# can interop

Updated Protobuf.FSharp
This was required because we needed to regenerate the Descriptor.fs for Proto3 optional support

@Arshia001 This PR got a bit bigger since I decided to fix various issues with the code generation.
Also working on adding some tests.

Wow, good job! Reviewing all of this will take some time though. Are you done yet, or are there more changes coming?

@Arshia001 The interop comment is not about using the C# libraries in the generated code. I'm going to add some basic tests where I serialize some protos with both the F# and the C# code to make sure that we are not messing up the serialization.

That's a great idea.

@Arshia001 This is ready for review. I have not added any conformance tests but I added a test for #6

Thanks for tackling, looks like it was a lot of work.
Should there be a new package for FSharp.Api.CommonProtos to parallel the C# version (Google.Api.CommonProtos) to hold the extensions? Then they would not have to be supplied separately for the tests.

@brian-scb It could be published as an separate package, but I'll let @Arshia001 decide. If we decide to do that we should add that in another PR

Will this PR also take care of using C# generated protos as imports in F# generated protos?
e.g. in Proto.Actor, we have the PID message which is a special Proto.Actor message.
For us to be able to use this, it would have to be possible to import that PID type in the protos and then have the generated F# code reference that C# protobuf code.
Is that part of the plan/roadmap?

@rogeralsing No, interop between the code generators is not a supported scenario; unless you have a reasonable suggestion on how it can be done.

Will this PR also take care of using C# generated protos as imports in F# generated protos?
e.g. in Proto.Actor, we have the PID message which is a special Proto.Actor message.
For us to be able to use this, it would have to be possible to import that PID type in the protos and then have the generated F# code reference that C# protobuf code.
Is that part of the plan/roadmap?

@rogeralsing Can you clarify how you do this in your current setup? Imports are generally declared in the .proto files and then you would generate F# code for all the files that are referenced.
E.g.
pid.proto
message Pid {
    int Id = 1;
}

other.proto
import pid.proto

message UsingPid {
    Pid pid = 1;
}

You would then just run the C#/F# code generator for both the pid.proto and the other.proto and they should be wire compatible with each other.

If we take this example:
https://github.com/AsynkronIT/protoactor-dotnet/blob/dev/examples/Chat/Messages/Chat.proto#L4
Here we reference some core proto.actor messages in a custom user proto file.
The generated C# output, will use the messages defined in the core proto.actor nuget. not regenerate the referenced protos.

The PID type there is the real PID type from Proto.Actor itself.

Currently the only way to support this would be to have separate package for Proto.Actor.Protos.CSharp and Proto.Actor.Protos.FSharp and the users of Proto.Actor would have to reference either depending on if they were using F# or C#

@rogeralsing see the discussion here: https://github.com/Arshia001/FSharp.GrpcCodeGenerator/issues/6#issuecomment-870876195

Ah ok, then it's a no-go for us as the PID (and other) types are part of the core of Proto.Actor itself, and cannot be re-implemented elsewhere.
In our case, we would have needed something that generates the same kind of output as the C# generator, but with F# specific types. while still using the same type of referencing strategies.

@rogeralsing since you're already using C# generated code in the base library, you can always use the C# version of the code generator. You can create a C# library and reference that from your F# code.

Hi @Arshia001 and @purkhusid,
Any timeline for when this might get reviewed/merged? Or perhaps a test nuget repository? Reason I ask is because I'd like to try to get this to work with proto-actor.
Thank you!

@purkhusid is it safe to assume the changes in this PR were also in #12, and have been merged in #16?

Yup, I'll close this one. Thanks for taking you time to review the changes!


Get your flask app running locally on your machine using the instructions below

Both team members completed this step successfully


Dapp lib optimize ckb tx relayer

ckb_tx_relay: support unlock multiple burn transactions.
eth_indexer: support a transaction to resolve multiple unlock events.

Codecov Report

Merging #221 (0ef8839) into dapp-lib (d3e1cbe) will increase coverage by 12.47%.
The diff coverage is 74.28%.

@@              Coverage Diff              @@
##           dapp-lib     #221       +/-   ##
=============================================
+ Coverage     22.47%   34.94%   +12.47%
=============================================
  Files            21       36       +15
  Lines          4298     5205      +907
=============================================
+ Hits            966     1819      +853
- Misses         3332     3386       +54

Impacted Files
Coverage Δ

ckb-contracts/contracts-helper/src/chain.rs
0.00% <0.00%> (ø)

ckb-contracts/tests/src/lib.rs
0.00% <ø> (ø)

ckb-contracts/tests/src/utils/case_builder.rs
0.00% <0.00%> (ø)

ckb-contracts/types/src/eth_lock_event.rs
97.61% <ø> (+1.61%)
:arrow_up:

...b-contracts/types/src/generated/eth_header_cell.rs
2.87% <45.55%> (-12.46%)
:arrow_down:

ckb-contracts/types/src/generated/witness.rs
40.04% <55.00%> (+3.98%)
:arrow_up:

...ts/lib/eth-recipient-typescript-lib/src/adapter.rs
72.50% <71.42%> (+72.50%)
:arrow_up:

ckb-contracts/types/src/hasher.rs
81.81% <81.81%> (ø)

ckb-contracts/eth-spv-lib/src/ethspv.rs
38.04% <100.00%> (ø)

...racts/lib/eth-bridge-lockscript-lib/src/actions.rs
100.00% <100.00%> (+10.48%)
:arrow_up:

... and 39 more

Continue to review full report at Codecov.

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


Multiselect value attribute not working properly

I have found strange behaviour when creating multi select component with value or changing it's value from javascript. If I use attribute value, value is set, but none of selected pills are created. I'm 100% sure, that value exists in dropdown. Same is true for when setting value from javascript ({!"v.value"}.
It only works when using externalValueChange(string) call. Would be nice to be able to set value via attribute on init :)

You should, indeed, be able to set the value on init. I am able to do that in our testing environment by simply setting v.value on the strike_multiSelectPicklist component. Per the component's logic, the value will be set at the doneRendering stage of the Lightning rendering lifecycle. After that you will need to call the externalValueChange method to update the value. Keep in mind that the value attribute for this component is a semi-colon separated string that coincides with the value attributes of the corresponding strike_option components. I hope this helps.

Yes, but value isn't set on init, when assigning value inside html like this:
<c:strike_multiSelectPicklist label="Report Category (Send reports by Email)" value="{!v.selectedEmployee.employee.Report_category__c}">                             <aura:iteration items="{!v.report_category}" var="rc">                                 <c:strike_option label="{!rc.label}" value="{!rc.id}"/>                             </aura:iteration>                         </c:strike_multiSelectPicklist>
value is set behind, but no pills are selected.

So, I used your code above as a template and implemented it like this:
<aura:attribute name="strikeOptions" type="Object[]"/>
	<aura:attribute name="initialValue" type="String"/>

	<aura:handler name="init" value="{!this}" action="{!c.onInit}"/>

	<c:strike_multiSelectPicklist label="Report Category (Send reports by Email)" value="{!v.initialValue}">
		<aura:iteration items="{!v.strikeOptions}" var="rc">
			<c:strike_option label="{!rc.label}" value="{!rc.id}"/>
		</aura:iteration>
	</c:strike_multiSelectPicklist>

Controller:
onInit : function(component, event, helper) {
    	var strikeOptionValues = [
    	{
    		label: 'lable1',
    		id: '1'
    	},
    	{
    		label: 'label2',
    		id: '2'
    	},
    	{
    		label: 'label3',
    		id: '3'
    	}
    	];
    	component.set('v.strikeOptions', strikeOptionValues);
    	component.set('v.initialValue', '2');
    }

And it initialized it as expected on init:

So, I'm not sure where yours is failing. Are you using the most up to date version of the component? If so, I guess I would need to see what is in your {!v.selectedEmployee.employee.Report_category__c} and {!v.report_category}

Here are the values (logged from js console):
Report_category__c: "SI;HR;BA"
report_category: Array (5)
0 {id: "KMAG", label: "KMAG"}
1 {id: "SI", label: "SI"}
2 {id: "HR", label: "HR"}
3 {id: "BA", label: "BA"}
4 {id: "RS", label: "RS"}
I fixed the issue to fill with calling externalValueChange after component finishes loading for now.

I'm not sure why it isn't working for you but as long as your work around is working I guess just keep at it.


Can't Get Items

Hello Guys,
probably I'm doing something wrong
On this part
val files = Tablefile
I got error: could not find implicit value for evidence parameter of type org.scanamo.DynamoFormat[scanamo.file]
and on this
Scanamo.exec(client)(operations)
I got this error:
value exec is not a member of object org.scanamo.Scanamo
Could you help me?
Thank you

Try Scanamo(client).exec(operations) (yes, sadly the documentation is outdated)


Fix HMC bug

I fixed two bugs:

HMC will initialize the step size regardless of adapt_step_size. So the initial step size given by the user is useless even if adapt_step_size=None.
HMC will accept moves that lead to nan log_prob.

Both are fixed now. HMC should be more robust to nan value now. The only two scenario that HMC will give nan are

The initial state is nan
A state that has non-nan probability but the state itself is nan.

@cjf00000 Do you see my comments?


Allow plugins to defined additional diagnostic notes for errors from plugin generated file

This change is

I'd like to enable plugins to define additional diagnostic notes that should be attached to each diagnostic located in a plugin generated file.
This may be used for instance to mimic Rust's notes in diagnostics raised in code produced by procedural macros.
error: struct literal body without path
 --> src/lib.rs:3:1
  |
3 | #[attribute_macro]
  | ^^^^^^^^^^^^^^^^^^
  |
  = note: this error originates in the attribute macro `attribute_macro` (in Nightly builds, run with -Z macro-backtrace for more info)

Previously, mkaput (Marek Kaput) wrote…
why not add notes to PluginDiagnostics and then convert that into DiagnosticEntry.notes ?

@mkaput PluginDiagnostics only is not enough. PluginDiagnostics are ones returned from the plugin in the diagnostics field of the PluginResult. I want to be able to define additional info for all diagnostics raised for the fails I produce - i.e. syntax, semantic, etc.

PluginDiagnostics into DiagnosticsEntry

But I want to also show this notes, for types of Diagnostics that I believe are never PluginDiagnostic - like SemanticDiagnostics raised in the virtual files.

Previously, maciektr (maciektr) wrote…

PluginDiagnostics into DiagnosticsEntry

But I want to also show this notes, for types of Diagnostics that I believe are never PluginDiagnostic - like SemanticDiagnostics raised in the virtual files.

Please correct me if I am wrong :thinking:

crates/cairo-lang-compiler/src/diagnostics.rs line 174 at r3 (raw file):
Previously, orizi wrote…
a diagnostics that you got from a file - may have been created by code generated from file A - by plugin B - when mapped back - maybe the note should be added there.
(and if there were several layers - maybe more so)

Oh, but my understanding was that the DiagnosticLocation always points to the original location, and only user_location (https://github.com/starkware-libs/cairo/blob/484222eebaf9411562dcd9079a3e93d3c9789ff4/crates/cairo-lang-diagnostics/src/diagnostics.rs#L69) is translated :thinking: (and used for formatting https://github.com/starkware-libs/cairo/blob/484222eebaf9411562dcd9079a3e93d3c9789ff4/crates/cairo-lang-diagnostics/src/diagnostics.rs#L93)
Is this not true?

crates/cairo-lang-compiler/src/diagnostics.rs line 174 at r3 (raw file):
Previously, orizi wrote…
so you would add only the note only from the last file in the chain - my question is - what about the previous notes?
original code A - generated code B - caused an additional generated code C.
if you have diagnostics on C - you would only get notes of C and not of B as well.

Oh, I understand now, completely agree, thank you!

crates/cairo-lang-diagnostics/src/diagnostics.rs line 79 at r5 (raw file):
Previously, orizi wrote…
doc.

Done.

crates/cairo-lang-compiler/src/diagnostics.rs line 174 at r3 (raw file):
Previously, orizi wrote…
is this still required now?
i'm assuming you are already getting the diagnostics past remappings.

I am getting them in format_with_severity, where I translate the location. If you have a better place for this, please let me know :pray:

crates/cairo-lang-compiler/src/diagnostics.rs line 174 at r3 (raw file):
Previously, maciektr (maciektr) wrote…
I am getting them in format_with_severity, where I translate the location. If you have a better place for this, please let me know :pray:

(TEntry::DbType may not have this query, as it's only FilesGroup)


link libpulse-simple against libpulse to make apulse work for Unreal Engine 4 games

Without this dlopen("libpulse-simple.so.0") will fail if the process
hasn't already loaded libpulse.so.0.

Looks good. Thanks!
I've also linked libpulse-mainloop-glib with libpulse.


Add decompression error handling for failure responses

Summary
Add decompression error handling for failure responses https://github.com/ClickHouse/clickhouse-js/issues/363
Checklist
Delete items not relevant to your PR:

[ ] Unit and integration tests covering the common scenarios were added
[ ] A human-readable description of the changes was provided to include in CHANGELOG
[ ] For significant changes, documentation in https://github.com/ClickHouse/clickhouse-docs was updated with further explanations or tutorials

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

Can you please sign the CLA?

Closing this in favor of https://github.com/ClickHouse/clickhouse-js/pull/366


Reduce data copy and use unsafe rows

Build against Scala 2.10 finished with failure

Build against Scala 2.11 finished with failure

Since Cassandra java driver row is converted to spark types, using InternalRow can reduce the double copy/converting, my only concern is https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/sources/interfaces.scala#L222.  Can we add a per table setting to allow use to choose InternalRow implementation or public API row implementation?


browser addon: start an isolated browser attached to the proxy

A simple addon that starts an instance of Chrome attached to the current
proxy. The instance is isolated in its own user data directory, and addons are
turned off.
Future work:

I wasn't able to test the Windows executable path - a Windows dev should
confirm this for us.
In future it would be nice to support other browsers like Firefox.

Looks great! I'll check Windows tomorrow morning. 👍


Handle multiple host:port in the JDBC connection string

Discussed in https://github.com/ing-bank/cassandra-jdbc-wrapper/discussions/40

Originally posted by stefanofornari November 13, 2023
Hello, it is mentioned several time the connection string is something like:
jdbc:cassandra://host1--host2--host3:9042/keyspace
What if nodes have different ports? can the below be used?
jdbc:cassandra://host1:port1--host2:port2--host3:port3/keyspace

Do you think it is a candidate for next release? If you give me some directions I can maybe help (integration test aside :) )

@maximevw Suggestion:
Instead of:
jdbc:cassandra://host1:port1--host2:port2--host3:port3/keyspace
how about keeping the host:port convention standard, and allowing the other hosts to be specified in connection properties - for example:
jdbc:cassandra://host1:port1/keyspace?hosts=host2:port2--host3:port3

Alternatively, on the line of @sualeh's comment:
jdbc:cassandra://host1:port1;host2:port2;host3:port3.../keyspace

Thank you both @stefanofornari and @sualeh for your sugggestions.
I prefer the syntax originally suggested: jdbc:cassandra://host1:port1--host2:port2.../keyspace.
Why?
For now, keeping the separator "--" originally used will avoid to introduce a breaking change for users already using the syntax "host1--host2:port". Using "," or ";" as separator could be a good idea too, but I suggest to keep the current syntax, at least for short term.
Separating the additional contact points in a dedicated parameter could be a solution, but it splits the information in two places and IMHO, it makes it less readable. Moreover, it doesn't make sense to separate a particular contact point from the others (given how Cassandra works). I prefer to keep them together. Also, I remembered, for example, the syntax used by PostgreSQL JDBC driver for fail-over is: "host:port, host:port, ..." (see connection fail-over documentation). Note, other drivers do the same, like multiple hosts with MySQL. Consequently, I think it's better to keep all the hosts at the same place in the URL.

@maximevw Thanks for the links. There seems to be some precedent for doing it the way you suggest that I was not aware of. I guess we should think of this as a connection string, rather than as a "connection URL" as JDBC tries to think of it.

Implemented as discussed, by commit https://github.com/ing-bank/cassandra-jdbc-wrapper/commit/553010a3c4b4a4c54146b85db61ee3bb77dc0e0a.
Documentation updated here with examples of valid JDBC URLs: JDBC wrapper usage
This feature will be available in the next release (4.11.0).
Thanks again @stefanofornari for pointing out this particular case.

Great job! Well, thanks to you for such good piece of software and to promptly address issues!


RuntimeError

RuntimeError                              Traceback (most recent call last)
 in
9 # Ready to roll!
10
---> 11 backprop.visualize(owl, target_class, guided=True)
~\Downloads\flashtorch-master\flashtorch\saliency\backprop.py in visualize(self, input_, target_class, guided, use_gpu, figsize, cmap, alpha, return_output)
180             # (title, [(image1, cmap, alpha), (image2, cmap, alpha)])
181             ('Input image',
--> 182              [(format_for_plotting(denormalize(input_)), None, None)]),
183             ('Gradients across RGB channels',
184              [(format_for_plotting(standardize_and_clip(gradients)),
~\Downloads\flashtorch-master\flashtorch\utils_init_.py in denormalize(tensor)
117
118     for channel, mean, std in zip(denormalized[0], means, stds):
--> 119         channel.mul_(std).add_(mean)
120
121     return denormalized
RuntimeError: Output 0 of UnbindBackward is a view and is being modified inplace. This view is the output of a function that returns multiple views. Such functions do not allow the output views to be modified inplace. You should replace the inplace operation by an out-of-place one.

@MisaOgura Is There any update version for this problem? or any suggest workround?
I also facing this issue, when using pytorch1.8.1 with gpu cuda111 and also tried without the gpu, but still no luck
thanks