Faraday request with middleware instrumentation enabled throws an error

NoMethodError while sending queue: undefined method each' for #<String:0x007f818a392b10> /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/middleware/delete_blanks.rb:6:in call'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/middleware/chain.rb:81:in block in invoke' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/middleware/chain.rb:84:in call'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/middleware/chain.rb:84:in invoke' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/post_processor.rb:13:in block (2 levels) in post_processed_queue!'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/post_processor.rb:12:in each' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/post_processor.rb:12:in block in post_processed_queue!'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/post_processor.rb:11:in map' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator/post_processor.rb:11:in post_processed_queue!'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/aggregator.rb:42:in post_processed_queue!' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/agent.rb:115:in send_queue'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/agent.rb:42:in block (2 levels) in start_thread' /Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/agent.rb:40:in loop'
/Users/dev/.rvm/gems/ruby-2.2.0@influitive/gems/appsignal-0.11.8/lib/appsignal/agent.rb:40:in `block in start_thread'
Here is a code to make a http request using Faraday. if you have fa.use :instrumentation enabled, it will throw the above error.
     Faraday.new(options) do |fa|
        fa.use :instrumentation

        # Note the current Faraday (0.8.7) doesn't support options on retry (such as exceptions)
        # wait for the upgrade...
        fa.request :retry#, exceptions: [Faraday::Error::ConnectionFailed, Errno::ETIMEDOUT, Timeout::Error, Faraday::Error::TimeoutError]
        fa.request :url_encoded
        fa.request :json

        fa.response :json, content_type: /\bjson$/
        fa.adapter :net_http
      end

The payload is a string-ified Faraday object, whereas AppSignal expects the payload to a Hash

Could you tell me what the payload of the event is in this case? If it's private e-mail is good too.

#<Faraday::Env @method=:post @body="{"token":""}" @url=#URI::HTTP******* @request=#<Faraday::RequestOptions (empty)> @request_headers={"Accept"=>"application/json", "User-Agent"=>"Faraday v0.9.1", "Authorization"=>"Basic==", "Content-Length"=>"0"} @ssl=#<Faraday::SSLOptions (empty)> @response=#<Faraday::Response:0x007fb76384aef0 @on_complete_callbacks=[], @env=#<Faraday::Env @method=:post @body={"token"=>"******"} @url=#<URI::HTTP *> @request=#<Faraday::RequestOptions (empty)> @request_headers={"Accept"=>"application/json", "User-Agent"=>"Faraday v0.9.1", "Authorization"=>"Basic==", "Content-Length"=>"0"} @ssl=#<Faraday::SSLOptions (empty)> @response_headers={"x-frame-options"=>"SAMEORIGIN", "x-xss-protection"=>"1; mode=block", "x-content-type-options"=>"nosniff", "content-type"=>"application/json; charset=utf-8", "etag"=>"W/"e5eaf6e5f234f1080ef3dcd39e57f8e4"", "cache-control"=>"max-age=0, private, must-revalidate", "x-request-id"=>"60c6a22e-bb34-4a24-b468-6eff217a9748", "x-runtime"=>"0.016484", "server"=>"WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)", "date"=>"Tue, 14 Apr 2015 18:41:06 GMT", "content-length"=>"52", "connection"=>"close"} @status=200>> @response_headers={"x-frame-options"=>"SAMEORIGIN", "x-xss-protection"=>"1; mode=block", "x-content-type-options"=>"nosniff", "content-type"=>"application/json; charset=utf-8", "etag"=>"W/"e5eaf6e5f234f1080ef3dcd39e57f8e4"", "cache-control"=>"max-age=0, private, must-revalidate", "x-request-id"=>"60c6a22e-bb34-4a24-b468-6eff217a9748", "x-runtime"=>"0.016484", "server"=>"WEBrick/1.3.1 (Ruby/2.2.0/2014-12-25)", "date"=>"Tue, 14 Apr 2015 18:41:06 GMT", "content-length"=>"52", "connection"=>"close"} @status=200>

Closing this one, we have a support thread running.


update graph.go

What problem does this PR solve?
update graph.go
What is changed and how does it work?
update graph.go
Check List
Tests

Unit test

Code changes

Has Go code change

Side effects

NO

Related changes

NO

Does this PR introduce a user-facing change?:

NONE

Close


PyPI install errors

Hi @ercangunbilek,
thanks for the report!
Do you have the OS and the Python Version you are using?
Best
Cedric

!pip uninstall torch
!pip install torch==1.12.0

Hi @ercangunbilek,
this issue is solved within v0.0.14.
Best
Cedric


opam: 2.1.1 -> 2.1.2

Motivation for this change
https://github.com/ocaml/opam/releases/tag/2.1.2
Things done

Built on platform(s)

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

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

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

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

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

[x] Fits CONTRIBUTING.md.

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

3 packages built:

dune-release
opam
opam-installer


Native browser support for Linear Algebra Library or ML

Hi, I am from the browser world. I've been looking at the different libraries implementing ML on the web. This is the first one that have found its way to get GPU support. Have you encountered things you don't have support for yet?

When comparing to other BLAS implementations, there are definitely features that aren't supported. This library focuses, primarily, on the intersection of those operations which are the most compute intensive and the most useful in modern machine learning.
The second of these criteria is somewhat subjective. So, I'm open to suggestions on which to do next!


Wait until weaviate is ready

Close https://github.com/weaviate/weaviate-python-client/issues/212.
The Client now automatically waits for weaviate to start for a given time until it times out.

Codecov Report
Base: 96.35% // Head: 95.75% // Decreases project coverage by -0.61% :warning:

Coverage data is based on head (42a6fb9) compared to base (7a512ea).
Patch coverage: 72.41% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #217      +/-   ##
==========================================
- Coverage   96.35%   95.75%   -0.61%
==========================================
  Files          60       60
  Lines        7081     7109      +28
==========================================
- Hits         6823     6807      -16
- Misses        258      302      +44

Flag
Coverage Δ

unittests
95.75% <72.41%> (-0.61%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

test/connection/test_connection.py
91.89% <ø> (ø)

weaviate/client.py
98.30% <ø> (ø)

weaviate/wcs/crud_wcs.py
98.50% <ø> (ø)

integration/test_authentication.py
64.42% <69.23%> (-31.19%)
:arrow_down:

weaviate/connect/connection.py
91.37% <73.33%> (-2.34%)
:arrow_down:

test/test_client.py
100.00% <100.00%> (ø)

weaviate/warnings.py
87.09% <0.00%> (-9.68%)
:arrow_down:

weaviate/connect/authentication.py
89.83% <0.00%> (-5.09%)
:arrow_down:

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

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

I tried implementing the requested changes.

Done.


There is no way to read data already base64 encoded from vault

Describe the bug
The plugin seems to always encode the data read from vault when specified in the data key, because according to the specification that's how the data should be passed into the secret (reference). To pass string data without encoding, the secret accepts a stringData key which the plugin does not encode and pass as-is. The problem then is that there is no way to read data already encoded in base64 from vault, because if we use stringData Kubernetes expects it to not be encoded, and if we use data the plugin encodes the already encoded data that is read from vault, resulting in invalid "double" base64 encoded data inside the secret in Kubernetes.
To Reproduce

Add some base64 encoded data/string in a vault path
Reference that secret using the data key in the secret
Get the secret object as yaml from k8s and check that the data key contains double encoded data, i.e. the secret is not valid.

Expected behavior
I expect the key data to accept already encoded data from vault. I understand that this might cause confusion to users, but IMHO it seems correct to assume that if we are reading non-encoded data from vault, we should use the key stringData?
Additional context
Maybe this was a conscious UX decision, as the users will reference string secrets in vault and want them encoded into the data key inside the secret in vault. Perhaps we can have a flag to run the plugin in a special mode that expects already base64 encoded data when its provided in the key data, therefore not encoding the values read from vault (already encoded) ?

 The plugin assumes that all data is stored in Vault in plain-text, nothing base64'd. So for your case that's a problem. We can probably accommodate this use-case via a command line flag or some other configuration option.

but IMHO it seems correct to assume that if we are reading non-encoded data from vault, we should use the key stringData?

Technically this all up to how the YAML is written. If the YAML says this:
data:
  THING: <thing>

then the plugin will base64 the Vault data before replacing the placeholder. But if it says:
stringData:
   THING: <thing>

it will replace the placeholder with the data from Vault as-is. So the plugin shouldn't make any assumptions at all here.
Anyway, we'll keep you updated on this and fix this sometime in the near future - feel free to leave additional feedback if you have any. I think your suggestion is pretty solid as-is.
Thanks for the feedback!

@jkayani I should Thank everyone for the wonderful work.
We are expecting something similar. Describing few challenges as per my understanding and testing.
Tested the for both use cases,
          THING: <mykey>

The plugin does replace data key from Vault as-is ( but, Ref: then the plugin will base64 the Vault data before replacing the placeholder..). In our case, not the correct behaviour then.
and
          THING: <mykey>

Expected stringData inside the key should replace value from Vault as-is which is not working.
Configured yaml file looks as below:
apiVersion: v1
kind: Secret
metadata:
  name: example-secret
  annotations:
    avp_path: <kv/data/secret-folder>
type: Opaque
data:
  MyKey: <MyKey>

Thoughts on this.
Expecting a new Feature or an Existing Options are not Aware
The plugin works perfectly fine with the plain text stored in Vault get's the value back in to the secret. Is there a way we can decode values present in a Vault secret path are encoded in the base64 format at the secret end. This helps us to store certificate formats such as .crt, .pem etc...

Store certificates in base64 encoded format in Vault secret path and values are decoded when retrieves it from Vault server. Just to give an example. Same is achieved using Consul Template to render the Vault secret with side car container Vault k8s auth method.

Ex: ```{{with secret "secret/example"}} MyKey = {{.Data.data.MyKeyCerts | base64Decode}}{{end}}
So, is there any way we can decode base64 format data before it replaces the placeholder with the actual value --> something like "".

After some discussion, what @jkayani and I are thinking is to remove the base64 encoding that happens on the fly and make assumptions that if you want to store base64d values in Vault you can use data and if you want to store plain text in Vault you would then use stringData.
This way the plugin isn't responsible for any transformation of data in flight.
@sam-sla what are your thoughts on that?

Thanks @werne2j and @jkayani for again having such a quick look at this :) And like @adit0012m said, thank you for the wonderful work you guys have been putting into this!
It looks like Adit has the same expectations as I did regarding passing a secret already base64 encoded into the data key. Our use case was also a certificate, more concretely a certificate bundle as a binary file that has to be base64 encoded in vault, and we couldn't get it to work with the plugin unfortunately.
I think it would be clear and well within reason to adopt the proposed changes! The plugin would not do any transformation and the users would be responsible to either pass data from vault already encoded into data, or as plain text into stringData. A clear description in the documentation shouldn't leave any doubts, but existing users would face breaking changes when upgrading a version of the plugin.

Changes now available in https://github.com/IBM/argocd-vault-plugin/releases/tag/v0.6.0

Thanks a lot!


Minecraft Bot conflicts with other bots

For some reason, Minecraft Bot conflicted with The0Show's Utilities' help menu.
This could be due to both bots using the same help menu library.

after playing around with bot bots, it seems that they are conflicting with each other. The0Show's Utilities just crashed trying to edit Minecraft Bot's message. i'll report this to the WOKCommand devs and hopefully it can be fixed

update 2: it seems like it has already been reported, and has been an issue for some time. i'm going to be closing this issue, since it doesn't have anything to do with the bot

will be fixed in v3.0.0, since we'll be moving to a new command handler


Custom methods support

fixes #398

Retry DeepCode

Hey @liyasthomas,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 2afa2440-16a6-11ea-93d3-257117e2c129

Hey @liyasthomas,
Something went wrong with the build.
TravisCI finished with status errored, which means the build failed because of something unrelated to the tests, such as a problem with a dependency or the build process itself.
View build log
TravisBuddy Request Identifier: 1a627b80-16a8-11ea-93d3-257117e2c129

Hey @liyasthomas,
Your changes look good to me!
View build log
TravisBuddy Request Identifier: 22f5df30-16b2-11ea-93d3-257117e2c129


A walkthrough would be marvelous

Thank you so much for sharing this project.
Using the README, I was able to telnet in, but neither setting DEP 114a 0 or sending a BREAK seems to trigger a login prompt.
It would be really awesome if you were to capture a walkthrough of the set as a text file.

I was able to get the login prompt following the directions.  A walkthrough might still be nice, though.

What did you do differently that allowed you to get logged in?
If you let me know I'll try to improve the documentation.
There are three things in the kit to help one log on.  The README, the
cpcpdoc.txt file and a page in the WSLubunto WIKI page.
I hesitate to add another but I would appreciate comments about where
these three documents are lacking.
Thanks for having a go at CP-V.
Ken

dfnr2 @.***>
October 4, 2022 at 3:13 PM
I was able to get the login prompt following the directions. A
walkthrough might still be nice, though.
—
Reply to this email directly, view it on GitHub
https://github.com/kenrector/sigma-cpv-kit/issues/3#issuecomment-1267637197,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACMB5AVODVYKFXVUOQ6TTATWBSTXVANCNFSM6AAAAAAQ4YR5EA.
You are receiving this because you are subscribed to this
thread.Message ID:
@.***>
dfnr2 @.***>
October 4, 2022 at 10:02 AM
Thank you so much for sharing this project.
Using the README, I was able to telnet in, but neither setting DEP
114a 0 or sending a BREAK seems to trigger a login prompt.
It would be really awesome if you were to capture a walkthrough of the
set as a text file.
—
Reply to this email directly, view it on GitHub
https://github.com/kenrector/sigma-cpv-kit/issues/3, or unsubscribe
https://github.com/notifications/unsubscribe-auth/ACMB5AWRNARTEMTWCCC5UN3WBRPJZANCNFSM6AAAAAAQ4YR5EA.
You are receiving this because you are subscribed to this
thread.Message ID: @.***>

The WSLubuntu WIKI page walkthrough is perfect.  Any chance of adding that to the repo?

I believe the WIKI page is part of the repository.
I believe that what you did differently to get logged on was explained in another issue.


If a cell ends with ; , and the rest of the notebook obeys the black formatter, then black will keep outputting 1

e.g.
plt.plot();

nbqa black notebook.ipynb will keep trying to remove the trailing semicolon, nbqa will keep reinstating it, and nbqa black will never return 0

I think the solution should be to remove semicolons just before applying a third-party tool - we keep track of where they were anyway so we can put them back in if necessary.
This also makes it unnecessary to ignore the trailing semicolon error from flake8

This would normally be a patch release, but seeing as #302 is nearly in I think it makes sense to include it in the 0.3.0 release


Created the Janitor feature

Whats changed

Created a background service Janitor to clean and close rooms every 1 hour
Created a custom buttom with a debounce
Added serilog and log in the principal parts
Fixed toaster
Added interface to some services
Added tests to the new feature
Fixed a visual bug in the background image
Added a button with the copy room url

Eu acabei esquecendo Faruk, foi mal


Is it possible to do transliteration? If yes, how?

Have a look at this npm library for transliteration
https://www.npmjs.com/package/google-transliterate.
As far as this library is concerned
When it will not be able to find the meaning of word and perform a translation, this will transliteration

Thank you, is there a python equivalent of the library you gave me?

you can try this out
https://pypi.org/project/transliterate/

That one doesn't support Arabic, it's okay I'll use the nodejs one you gave me thanks so much.


Layout of TokenScript window in higher resolution screen

The TokenScript Viewer came out to be unreadable in Surface book.

SUbmitted through PR


Update README.md with State-of-the-Art Badge

Including a SoTA badge for this implementation that highlights the performance of the paper, and allows people to compare to alternative methods.

Thanks!


Fix code scanning alert - Full server-side request forgery

Tracking issue for:

[ ] https://github.com/Levi-Hutchins/Catch-A-Phish/security/code-scanning/1

resolved


Added tags to api resource

I took a look at this, but I ran into some small issues when trying to deploy the Api. I dug into them, and it was just some small stuff so I went ahead and made the changes to make it deploy.
Besides those small things, it looks really good!


Suggestion: foreground image instead of color (transparency gradient?)

I think it would be awesome to set a visualizer up so you have, for instance, a nighttime scene as the background image, but a daytime version of the same shot comes in in the shape of a wave. This would be especially cool if you can use a gradient of  transparency. I've done a mockup: https://media.discordapp.net/attachments/419703257355517967/1137820343323594813/image.png This depicts a background image with an altered version of itself used as a foreground image. It is also set to use a gradient between fully transparent at the base and fully opaque at the tips.

This will probably do to 2023.8.2/2023.9.0 because this will require to change renderer a lot.


Remove ProcessException.Handler.THROW

That was a bad API choice.

Actually... Maybe it would be better to keep it, but only throw if the exception is coming from an OutputFeed...


Precompiled faild.

Hello! When I follow the instructions, every works fine. But in “using AutomotivePOMDPs" , I have encountered the following error.  I reinstall the environment, change the Project.toml ' compat as the documentation in Project, there is no effect. How should I do?

┌ Info: Precompiling AutomotivePOMDPs [dca8afc0-c686-11e8-0934-712707da73aa]
└ @ Base loading.jl:1273
WARNING: Method definition set_source_rgba(Cairo.CairoContext, ColorTypes.RGB{T} where T<:Union{AbstractFloat, FixedPointNumbers.FixedPoint{T, f} where f where T<:Integer}) in module AutoViz at /home/ehtan/.julia/packages/AutoViz/YY1TN/src/rendermodels.jl:926 overwritten in module AutomotiveVisualization at /home/ehtan/.julia/packages/AutomotiveVisualization/7D1sT/src/render_instructions.jl:23.
** incremental compilation may be fatally broken for this module **
WARNING: Method definition set_source_rgba(Cairo.CairoContext, ColorTypes.TransparentColor{C, T, N} where N where T where C<:(ColorTypes.Color{T, N} where N where T)) in module AutoViz at /home/ehtan/.julia/packages/AutoViz/YY1TN/src/rendermodels.jl:939 overwritten in module AutomotiveVisualization at /home/ehtan/.julia/packages/AutomotiveVisualization/7D1sT/src/render_instructions.jl:36.
** incremental compilation may be fatally broken for this module **
WARNING: Method definition set_source_rgba(Cairo.CairoContext, ColorTypes.Colorant{T, N} where N where T, ColorTypes.Colorant{T, N} where N where T, Real) in module AutoViz at /home/ehtan/.julia/packages/AutoViz/YY1TN/src/rendermodels.jl:948 overwritten in module AutomotiveVisualization at /home/ehtan/.julia/packages/AutomotiveVisualization/7D1sT/src/render_instructions.jl:45.
** incremental compilation may be fatally broken for this module **
ERROR: LoadError: LoadError: UndefVarError: n_observations not defined
Stacktrace:
[1] getproperty(::Module, ::Symbol) at ./Base.jl:13
[2] top-level scope at /home/ehtan/.julia/packages/AutomotivePOMDPs/0vhkx/src/explicit_pomdps/single_crosswalk/spaces.jl:100
[3] include at ./boot.jl:328 [inlined]
[4] include_relative(::Module, ::String) at ./loading.jl:1105
[5] include at ./Base.jl:31 [inlined]
[6] include(::String) at /home/ehtan/.julia/packages/AutomotivePOMDPs/0vhkx/src/AutomotivePOMDPs.jl:1
[7] top-level scope at /home/ehtan/.julia/packages/AutomotivePOMDPs/0vhkx/src/AutomotivePOMDPs.jl:164
[8] include at ./boot.jl:328 [inlined]
[9] include_relative(::Module, ::String) at ./loading.jl:1105
[10] include(::Module, ::String) at ./Base.jl:31
[11] top-level scope at none:2
[12] eval at ./boot.jl:330 [inlined]
[13] eval(::Expr) at ./client.jl:425
[14] top-level scope at ./none:3
in expression starting at /home/ehtan/.julia/packages/AutomotivePOMDPs/0vhkx/src/explicit_pomdps/single_crosswalk/spaces.jl:100
in expression starting at /home/ehtan/.julia/packages/AutomotivePOMDPs/0vhkx/src/AutomotivePOMDPs.jl:164

Which version of julia are you using?
These packages have not been updated in a while, julia 1.3 should work though.

Which version of julia are you using?
These packages have not been updated in a while, julia 1.3 should work though.

Initially, I installed a new version 1.6.1.  When the problem occur, I reinstalled the 1.3.1 version. Still this problem.
And other packages work fine. Only this package compiles always failed.

And I tried it a few times, I can't figure out.  I don't know where the problem is, thanks for your help.

I can try to reproduce and troubleshoot but I have limited time to spend on this.
Note that the stable version of the simulator (without the POMDP formulation), is AutomotiveSimulator.jl and AutomotiveVisualization.jl
https://github.com/sisl/AutomotiveSimulator.jl

I can try to reproduce and troubleshoot but I have limited time to spend on this.
Note that the stable version of the simulator (without the POMDP formulation), is AutomotiveSimulator.jl and AutomotiveVisualization.jl
https://github.com/sisl/AutomotiveSimulator.jl

Thank you for your patience. I will try.


compile error=>cannot resolved java.time._

@pzz2011, this is likely because you are compiling with a Java version that's earlier than Java 8.


Capture not expanding when element uses CSS "zoom"

I have a tool using HTML 2 Canvas which also utilizes CSS "zoom" to allow for larger areas to be drawn/printed - however for some reason the capture area of HTML 2 Canvas does not change when zooming out in the div.
You can test this for yourself here: http://www.thermmark.co.uk/planner (Zoom out 1-2 levels and draw a grid in the main area - the capture area for HTML 2 Canvas keeps to a very small area
Is there a possible fix/change for this?

I have this issue too.
I was wondering about whether it should remove the zoom property on the element first, then scale it down the appropriate amount within the canvas. Potentially this would make a good option as you may want the canvas image to be the same size of the rendered 'zoomed' version of the content.
Certain elements seem to be totally missed out of an element with the zoom property.

Made a quick JSFiddle to showcase this issue. http://jsfiddle.net/50pm7p2w/2/

Updated example for 1.0.0 http://jsfiddle.net/50pm7p2w/24/

how to scale canvas.. i got only blurry canvas.. How can i overcome this? is there any syntax in html2canvas for getting higher resolution?

When zooming a webpage and using html2canvas to capture that webpage, html2canvas doesn't capture the webpage appropriately. The captured contents are skewed compared to the zoomed in webpage. Has there been any progress with this issue?


total volume and included volume seem to large to make sense

I have the ONE subscription
according to telenet if my onpeak usage goes above 3TB i will be restricted
https://www2.telenet.be/content/www-telenet-be/nl/klantenservice/wat-is-telenet-netwerkbeheer.html
according to the collected date this is many times higher
so to calculate the percentage an other value needs to be used at this moment it says 0 percent while it should be approx 0.7 percent
Last update
January 13, 2023 at 8:31:20 AM
Used percentage
0
Included volume
10.485.759.959.105.536
Extended volume
0
Total volume
9.999.999.961
Wifree usage
0
Includedvolume usage
—
Extendedvolume usage
—
Peak usage
21.189.694
Offpeak usage
11.864.558
Period start
December 26, 2022 at 12:00:00 AM
Period end
January 25, 2023 at 12:00:00 AM
Period days left
13
Period used percentage
57

I have a round on the total percentage used, so 0,7 becomes 0. Will try if extra decimals can be added.

round above 0,5 will result in 1 no?
and the value total volume is like 9,5 TB
so i dont know really

will add for now a round on two decimals, will see if that helps.
Not sure why there is such a large 'included_volume' value of<PHONE_NUMBER>9105536. This leads to the large total volume of<PHONE_NUMBER> GB.

the issue is still present now i just get 0,0%
i think telenet put such a large volume because its an ''unlimited'' package but after 3TB it will be throttled.
in the product spec https://api.prd.telenet.be/omapi/public/product/43602
they have some info about it
service_category_limit":{"unit":"GB","value":"3072"}

Is this the case for all subscriptions having a distinction between peak and offpeak usage?
I don't see any info related to the service_category_limit in the current webservices used, but if always applicable, I could hard code this limit and align the % usage based on this... Or I can ask user input on their throttle limit during setup of the integration.

nevermind, I read the details on https://www2.telenet.be/content/www-telenet-be/nl/klantenservice/wat-is-telenet-netwerkbeheer.html
I'll further look into this

According to the information i can find on the first url https://www2.telenet.be/content/www-telenet-be/nl/klantenservice/wat-is-telenet-netwerkbeheer.html
There are some packages that have a limit of 750gb peak usage and the rest that have a limit of 3tb peak usage

the issue is still present now i just get 0,0%
i think telenet put such a large volume because its an ''unlimited'' package but after 3TB it will be throttled.
in the product spec https://api.prd.telenet.be/omapi/public/product/43602
they have some info about it
service_category_limit":{"unit":"GB","value":"3072"}

This product spec url do you have something that looks the same for your subscription?, Maybe you could fetch the date from that url if that's feasible

indeed :)
was just reading through it too.
while reading, I realized it might also be interesting to have a separate sensor indicating if peak is currently on or not. Might be useful for usage in other automations, eg to pause some network activity till peak is off. Will see if I can include these details per product type and base the max peak volume based on the product type too.

true, didn't realize the relation with the product ID which I do get from current webservice feedback. thanks, will take it up soon...


feat: SECOPS-2525 - add semgrep job

Motivation / Implements
This PR adds or updates the necessary configuration to enable Semgrep to run on PRs on this repo. The Apollo Security team uses Semgrep to test our source for potential security vulnerabilities.
Once this is accepted and merged, the Security team plans to make a passing Semgrep check a requirement for PRs to merge into this repo. This will prevent net-new severe issues from being introduced. The job proposed by this PR runs in a diff-aware mode, so it will only run Semgrep on the files that have changed in a given PR.
In the event that a severe issue is detected on a PR, the CI job will add a comment to the PR associated with the detection to provide instructions on how to properly resolve the detection. The comment added to PRs will also include instructions on how to get further support if needed.
If maintainers reviewing this PR have questions, please reach out in the #security channel in Slack or contact Matt Peake directly at<EMAIL_ADDRESS>Existing Findings
Semgrep does not currently detect any severe issues in this repo.
Changed

Added .circleci/config.yml to include appropriate configuration to enable Semgrep as a CI check.
Updated SecOps orb to latest version
Updated the configuration of the Semgrep job to fail CI runs if severe findings found

This is a template repo, we shouldn't add any Apollo-specific CI.


Add note about passkeys

#155  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Update package to support Laravel 5.6

Update Travis conf to add tests for version 7.1 and 7.2 of PHP
Update README
Update Laravel version in composer conf
Update PHPUnit in composer conf to support 6.5 and 7.0

OK... Relying on the security package. Guess they both need to be updated at the same time.

V5.0 has now been released.


ding-dong-bot.js can't be started with wechaty-puppet-mock

Important：Please file the issue follow the template, or we won't help you to solve the problem.

0. Report Issue Guide

Please run the following command and check whether the problem has been fixed：

rm -rf package-lock.json
rm -rf node_modules
npm install

Not fixed.

Please search in FAQ List first, and make sure your problem has not been solved before.

Done.

Please search in the issue first, and make sure your problem had not been reported before

Done.
1. Versions

What is your wechaty version?
What is your wechaty-puppet-XXX（padchat/puppeteer/） version?

npm ls wechaty wechaty-puppet wechaty-puppet-mock wechaty-puppet-padplus
<EMAIL_ADDRESS>/path/to/wechaty-examples
├─┬<EMAIL_ADDRESS>│ └── UNMET PEER DEPENDENCY<EMAIL_ADDRESS>deduped
├── UNMET PEER DEPENDENCY<EMAIL_ADDRESS>├──<EMAIL_ADDRESS>└─┬<EMAIL_ADDRESS>  └─┬<EMAIL_ADDRESS>    └──<EMAIL_ADDRESS>

Which puppet are you using for wechaty? (padchat/puppeteer/padpro/...)

Distributor ID:	Ubuntu
Description:	Ubuntu 20.04 LTS
Release:	20.04
Codename:	focal

2. Describe the bug
ding-dong-bot.js can't be started with wechaty-puppet-mock
3. To Reproduce
Steps to reproduce the behavior:

remove require('./.util/helper') line from ding-dong-bot.js

under wechaty-getting-started, run
WECHATY_PUPPET=wechaty-puppet-mock WECHATY_LOG=silly node examples/ding-dong-bot.js

4. Expected behavior
Received mock messages continuously.
5. Actual behavior
Mock messages not received.
6. Full Output Logs

Show Logs

$ WECHATY_PUPPET=wechaty-puppet-mock WECHATY_LOG=silly node examples/ding-dong-bot.js
19:43:45 SILL Puppet Config: WECHATY_LOG set level to silly
19:43:45 INFO Config registering process.on("unhandledRejection") for development/debug
19:43:45 VERB Config constructor()
19:43:46 VERB Wechaty constructor()
19:43:46 VERB StateSwitch constructor(Wechaty, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
19:43:46 VERB StateSwitch constructor(WechatyReady, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
19:43:46 VERB Wechaty on(scan, listener) registered
19:43:46 VERB Wechaty on(login, listener) registered
19:43:46 VERB Wechaty on(logout, listener) registered
19:43:46 VERB Wechaty on(message, listener) registered
19:43:46 VERB Wechaty <wechaty-puppet-mock>(ding-dong-bot) start() v0.41.17 is starting...
19:43:46 VERB Wechaty id: ckeovwwjo0000vefu2rmm1lwz
19:43:46 SILL StateSwitch <Wechaty> on() is false
19:43:46 SILL StateSwitch <WechatyReady> off() is true
19:43:46 VERB StateSwitch <WechatyReady> off(true) <- (true)
19:43:46 SILL StateSwitch <Wechaty> on() is false
19:43:46 VERB StateSwitch <Wechaty> on(pending) <- (false)
19:43:46 VERB MemoryCard constructor("ding-dong-bot")
19:43:46 VERB MemoryCard getStorage() for storage type: N/A
19:43:46 VERB getStorage name: ding-dong-bot, options: {"type":"file"}
19:43:46 VERB StorageFile constructor(ding-dong-bot, ...)
19:43:46 VERB StorageBackend constructor(ding-dong-bot, { type: file })
19:43:46 VERB MemoryCard load() from storage: StorageFile</path/to/wechaty-getting-started/ding-dong-bot.memory-card.json>
19:43:46 VERB StorageFile load() from /path/to/wechaty-getting-started/ding-dong-bot.memory-card.json
19:43:46 VERB Wechaty initPuppet()
19:43:46 VERB MemoryCard multiplex(puppet)
19:43:46 VERB MemoryCard static multiplex(MemoryCard<ding-dong-bot>, puppet)
19:43:46 VERB MemoryCard constructor({"name":"ding-dong-bot","multiplex":{"name":"puppet","parent":{"options":{"name":"ding-dong-bot"},"name":"ding-dong-bot","payload":{"\rpuppet\nPUPPET_PUPPETEER":[{"name":"mm_lang","value":"en","domain":".wx.qq.com","path":"/","expires":1586873706,"size":9,"httpOnly":false,"secure":true,"session":false},{"name":"MM_WX_NOTIFY_STATE","value":"1","domain":"wx.qq.com","path":"/","expires":-1,"size":19,"httpOnly":false,"secure":false,"session":true},{"name":"MM_WX_SOUND_STATE","value":"1","domain":"wx.qq.com","path":"/","expires":-1,"size":18,"httpOnly":false,"secure":false,"session":true}]},"multiplexNameList":[],"storage":{"name":"ding-dong-bot","options":{"type":"file"},"absFileName":"/path/to/wechaty-getting-started/ding-dong-bot.memory-card.json"}}}})
19:43:46 VERB PuppetManager resolve({puppet: wechaty-puppet-mock, puppetOptions: undefined})
19:43:46 VERB PuppetManager resolveName(wechaty-puppet-mock)
19:43:46 VERB PuppetManager checkModule(wechaty-puppet-mock)
19:43:46 SILL PuppetManager checkModule() wechaty-puppet-mock installed version 0.22.31 satisfied range ^0.22.3
19:43:46 VERB Puppet constructor({}) #0
19:43:46 VERB StateSwitch constructor(PuppetMock, "{"log":{"enableTimestamp":true,"logLevel":5,"prefixFilter":{}}}")
19:43:46 VERB MemoryCard constructor(undefined)
19:43:46 VERB MemoryCard getStorage() for storage type: N/A
19:43:46 VERB MemoryCard load() from storage: N/A
19:43:46 VERB MemoryCard load() no storage
19:43:46 VERB Puppet constructor() watchdog timeout set to 60 seconds
19:43:46 VERB HotImport callerResolve(., /path/to/wechaty-getting-started/node_modules/wechaty-puppet/dist/src/puppet.js)
19:43:46 SILL HotImport callerResolve() callsites() file=/path/to/wechaty-getting-started/node_modules/hot-import/dist/src/hot-import.js, type=Object
19:43:46 SILL HotImport callerResolve() callsites() file=/path/to/wechaty-getting-started/node_modules/wechaty-puppet/dist/src/puppet.js, type=null
19:43:46 SILL HotImport callerResolve() callsites() file=/path/to/wechaty-getting-started/node_modules/wechaty/node_modules/wechaty-puppet-mock/dist/src/puppet-mock.js, type=null
19:43:46 SILL HotImport callerResolve() callerFile=/path/to/wechaty-getting-started/node_modules/wechaty/node_modules/wechaty-puppet-mock/dist/src/puppet-mock.js
19:43:46 VERB Puppet constructor() childClassPath=/path/to/wechaty-getting-started/node_modules/wechaty/node_modules/wechaty-puppet-mock/dist/src
19:43:46 VERB PuppetMock constructor()
19:43:46 VERB PuppetMock constructor() creating the default mocker
19:43:46 VERB Mocker constructor()
19:43:46 SILL MockAccessory <MockContact> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
19:43:46 SILL MockAccessory <MockMessage> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
19:43:46 SILL MockAccessory <MockRoom> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
19:43:46 VERB Puppet constructor() memory.load() done
19:43:46 VERB Puppet setMemory()
19:43:46 VERB Wechaty initPuppetEventBridge(Puppet#0<PuppetMock>(ding-dong-bot))
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(friendship) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(login) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(logout) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(message) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(room-invite) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(room-join) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(room-leave) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(room-topic) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(scan) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(dong) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(error) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(heartbeat) (listenerCount:1) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(ready) (listenerCount:0) registering...
19:43:46 VERB Wechaty initPuppetEventBridge() puppet.on(reset) (listenerCount:1) registering...
19:43:46 VERB Wechaty initAccessory(Puppet#0<PuppetMock>(ding-dong-bot))
19:43:46 SILL Accessory <Contact> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <ContactSelf> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Friendship> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Image> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Message> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Room> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <RoomInvitation> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Tag> static set wechaty = "Wechaty#ckeovwwjo0000vefu2rmm1lwz<>(ding-dong-bot)"
19:43:46 SILL Accessory <Contact> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <ContactSelf> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <Friendship> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <Image> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <Message> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <Room> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <RoomInvitation> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 SILL Accessory <Tag> static set puppet = "Puppet#0<PuppetMock>(ding-dong-bot)"
19:43:46 VERB PuppetMock start()
19:43:46 SILL StateSwitch <PuppetMock> on() is false
19:43:46 SILL StateSwitch <PuppetMock> on() is false
19:43:46 VERB StateSwitch <PuppetMock> on(pending) <- (false)
19:43:46 SILL StateSwitch <PuppetMock> on() is pending
19:43:46 VERB StateSwitch <PuppetMock> on(true) <- (pending)
19:43:46 VERB Wechaty on(heartbeat, listener) registered
19:43:46 SILL StateSwitch <Wechaty> on() is pending
19:43:46 VERB StateSwitch <Wechaty> on(true) <- (pending)
19:43:46 INFO StarterBot Starter Bot Started.
19:43:46 VERB Mocker start()
19:43:46 SILL MockAccessory <MockContact> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
19:43:46 SILL MockAccessory <MockMessage> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
19:43:46 SILL MockAccessory <MockRoom> static set mocker = "Mocker<ckeovwwrw0000vefufra2fyd4>"
^C

7. Additional context
N.A.
[bug]

The wechaty-puppet-mock now will not emit any message any more by default.
You need to specify an Environment for our mocking if you want the mocking environment to interact with your bot.
See: https://github.com/wechaty/wechaty-puppet-mock#mocker--environment

OK. Thanks.
So, how to make use of the wechaty-puppet-mock now?
Looking from the source, it seems to me that I need to launch a "Mocker & Environment" instant first, then start the "Puppet Mock" instant, as my normal client, is it? Apart from SimpleEnvironment(), what else Environment() can we choose?
Also, can we still change the puppet on the fly from out side as it used to be?
I.e., previously it was only a matter of switching to WECHATY_PUPPET=wechaty-puppet-mock from ipad or puppeteer, to start
node examples/ding-dong-bot.js
without changing/touch the script at all. Can we still do that now? Thx!

Bump, Can we still do that now? Thx!

Also, can we still change the puppet on the fly from outside as it used to be?

Currently, we can only change puppet to wechaty-puppet-mock on the fly from outside, but if you want to emit auto-generated messages, it can not be set on the fly yet. (PR will be welcome!)
We can start to receive the auto-generated message from puppet mock by the following code:
import {
  PuppetMock,
  Mocker,
  SimpleEnvironment,
}                     from 'wechaty-puppet-mock'

const mocker = new Mocker()
mocker.use(SimpleEnvironment())

const puppet = new PuppetMock({ mocker })
const wechaty = new Wechaty({ puppet })

wechaty.start()

// The Mocker will start perform the SimpleEnvironment...


High GPU when leaving Deck view - Application becomes unresponsive for several seconds

Hello!
Description
When you leave a Deck view the GPU Process is rising up to 99% and the application becomes unresponsive for several seconds.

We get a console warning: "luma: Device pixel ratio clamped":

The Performance devtool looks like this:

and

Repro Steps
I have created a similar example: https://angular-deck-issue.stackblitz.io
For instance, when you close deck view with "Hide Map" button, the application becomes unresponsive for several seconds and during that time you are unable to interact with the input element.
Environment:
Framework Version:

deck.gl:7.3.3
mapbox-gl: 1.5.0

Browser Version:

Chrome 77.0.3865.90 (64-bit)

OS:

Ubuntu 18.04.2

Fix
I managed to bypass the problem by manually defining the canvas dimensions and setting them to null when Angular destroys the component:
 ngOnDestroy() {
    const canvas = <HTMLCanvasElement>document.getElementById('deckgl-overlay');
    canvas.width = null;
    canvas.height = null;
}
I am not sure if this is the best approach, but it seems to work for now!

We don’t have an official Angular integration. Can you check when deck.finalize() is called in this process?

Bug seems related to #3728. SetDevicePixelRatio causes high CPU here as well.

Is there a minimal app we can debug and test with?

Is there a minimal app we can debug and test with?

Yes!
https://stackblitz.com/edit/angular-deck-issue

Problem seem to related to clientWidth and clientHeight of canvas are not set, working on a fix ...

@GiorgosXonikis , can you you confirm if this problem goes away if you explicitly set useDevicePixels prop to false on Deck ?

@GiorgosXonikis , we are seeing canvas.clientWidth and canvas.clientHeight both set to 0 when this issue happens, as @Pessimistress mentioned can you check deck.finalize() is called when Deck element or its parents are detached ? I am assuming it is not called, and when you do so, this problem shouldn't happen.

@GiorgosXonikis More context: the default width and height of Deck are 100%, so it will try to resize the drawing buffer to canvas client dimensions on each frame. The attempt to resize leads to unintended consequences if the canvas is detached from the document. I'm not familiar with Angular, in React we call deck.finalize() before the component is unmounted: https://github.com/uber/deck.gl/blob/master/modules/react/src/deckgl.js#L101

@GiorgosXonikis , can you you confirm if this problem goes away if you explicitly set useDevicePixels prop to false on Deck ?

Yes, I set  it worked!


Added Kheyti Inc.

Added Indian start up Kheyti to Vegetation, Agriculture & Food.

Hey @NehaTirumalasetti, thank you for your contribution!
Could you move your entry so that entries in that section will be in alphabetical order?

Done, Can you check?
Sorry but I'm not well versed with Github, Should I make a new pull request?


Feature request: Categories for Aliases.

I would like to see "categories" in the Aliases GUI as there is for firewall Rules.

Would you mind describing the desired functionality? There is not enough information here to design or implement something and that way it’s hard to assess required work, impact and usefulness. Thanks.

My use case for this is as follows.
I am using the URL table for IPs for my clients OPNsense boxes. I will manage just 1 table for IP’s (say, similar to bogon IPs) I will also have a individual client URL tables which I update at one site. So everything is one place.
I would like to see a Port(s) Table to be the same, so I can update a single file and it will be downloaded and updated on ALL client firewalls.
Example.
Client A has a PBX system
I have several PBX URL Table(s) for known External PBX IP addresses,
If they change PBX systems, I just change the URL in the Alias definition on their OPNSense.
( I know there Is only 1 IP, but for a different scenario there may lots)
So to recap, I will manage ONE file with required ports and share it with many clients using a URL Table(ports)
Thanks
The Sage !!
P.S.
It is sort of like DNS where it is easier to understand and remember English Names than IP addresses. Other authorised users can login and will be able to see what is happening easier.
From: Franco Fichtner<EMAIL_ADDRESS>Sent: Monday, 31 December 2018 7:56 PM
To: opnsense/core<EMAIL_ADDRESS>Cc: Dave Clist<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [opnsense/core] Feature request: Categories for Aliases. (#3083)
Would you mind describing the desired functionality? There is not enough information here to design or implement something and that way it’s hard to assess required work, impact and usefulness. Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/opnsense/core/issues/3083#issuecomment-450621884, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AboTksDximKGhIlW2PiwsEU6rdne-ITuks5u-dEwgaJpZM4ZlQkQ.

This is my original plan, which led me to the feature request, as I was going to use the API to

FLUSH the table
Then re add the updated IP’s, Ports

2 things happened,

FLUSH API did not seem to work, It also didn’t work by going to Diag., pfTables. ->flush.
If FLUSH did work, adding a IP address to an empty Alias work error out as (can’t find post right now)  someelse mentioned. It does work if there is already one in there.

That’s when I had the great idea to use URL tables (IP) and found Ports wasn’t an option yet.
Which led to the Feature request. I assume, as the FIREWALL API is still in development, a feature request will be premature.
The Sage !!
From: Franco Fichtner<EMAIL_ADDRESS>Sent: Monday, 31 December 2018 7:56 PM
To: opnsense/core<EMAIL_ADDRESS>Cc: Dave Clist<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [opnsense/core] Feature request: Categories for Aliases. (#3083)
Would you mind describing the desired functionality? There is not enough information here to design or implement something and that way it’s hard to assess required work, impact and usefulness. Thanks.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/opnsense/core/issues/3083#issuecomment-450621884, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AboTksDximKGhIlW2PiwsEU6rdne-ITuks5u-dEwgaJpZM4ZlQkQ.

This issue has been automatically timed-out (after 180 days of inactivity).
For more information about the policies for this repository,
please read https://github.com/opnsense/core/blob/master/CONTRIBUTING.md for further details.
If someone wants to step up and work on this issue,
just let us know, so we can reopen the issue and assign an owner to it.


about memory manage, alloc_cb and write_cb

My program recorded some logs, I noticed some times that write_cb callback function not very timely, I mean it is not malloc-free-malloc-free repeats, it is malloc-malloc-malloc and after a while free-free-free. sorry for my poor English, I hope I have made it clear.
// just write to an other stream immediately,
// for memory-constrained systems memory usage is not optimal
void read_cb(uv_stream_t *stream, ssize_t nread, const uv_buf_t *buf) {
    ...
    write_req_t *write_req = uv_malloc(sizeof (write_req_t));
    write_req->buf = uv_buf_init(buf->base, (unsigned int)nread);
    uv_check(uv_write(&write_req->req, other_stream, &write_req->buf, 1, write_cb));
    ...
}

void write_cb(uv_write_t *req, int status) {
    write_req_t *write_req = (write_req_t *)req;
    uv_free(write_req->buf.base);
    uv_free(write_req);
}

You seem to be writing a proxy-like application.  If you cannot write as fast as you read then this will happen, you need to deal with the backpreassure.  Writes are queued in libuv if writing inline doesn't work.  If you don't want to queue writes you can use uv_try_write to attempt to make a write inline.
PS: Please use the mailing list for questions, we use the GH bug tracker for issues and feature requests, thanks!


Investigate making containerd an official scalability CRI recommendation

We've got a lot of premises that containerd performance is better comparing to docker. E.g.

Pod throughput
Docker
http://perf-dash.k8s.io/#/?jobname=docker-node-throughput&metriccategoryname=E2E&metricname=PodStartup&Metric=pod_startup

Containerd
http://perf-dash.k8s.io/#/?jobname=containerd-node-throughput&metriccategoryname=E2E&metricname=PodStartup&Metric=pod_startup

Recent findings when working on merging density test into load test - https://github.com/kubernetes/perf-tests/issues/1007

We should investigate it more thoroughly, e.g. see what would be the impact of switching our scale tests to containerd. If those experiments turn out successful, we should consider making containerd an official SIG Scalability recommendation.

/assign @jprzychodzen

/remove-lifecycle rotten
We're still working on that

/remove-lifecycle stale

/remove-lifecycle stale
That kind-of already happened, because we updated the default in startup scripts.
We should just clean up stuff a bit (our test configs - containerd is already a default) and then update the documentation.

/remove-lifecycle stale
That kind-of already happened, because we updated the default in startup scripts.
We should just clean up stuff a bit (our test configs - containerd is already a default) and then update the documentation.

Pending items

Remove containerd specific present preset-e2e-scalability-containerd. It can be removed when branch 1.20 will be removed from supported branches. It will be about ~8 months from now.
Update sig-scalability documentation. Expalining ContainerD vs Docker around https://github.com/kubernetes/community/tree/master/sig-scalability should cover this.

/remove-lifecycle stale

FIxed.


Follower Reads: one-sentence description could be easier to parse

I had a very hard time understanding the lede from Follower Reads, particularly the latter clause after "at the expense":

To reduce latency for read queries, you can use the follower reads feature, which lets the closest replica serve the read request at the expense of only not guaranteeing that data is up to date.

I think the lede is a bit confusing and might not highlight the feature's benefits as much as we would like.
Later on the page this sentence made much more sense to me:

In widely distributed deployments, using follower reads can reduce the latency of read operations (which can also increase throughput) by letting the replica closest to the gateway serve the request, instead of forcing the gateway to communicate with the leaseholder, which could be geographically distant.

Scope:

Rewrite lede
Possibly also do other stuff too, IDK

cc @awoods187 FYI

heavy +1 on this

Closing this, since this phrasing no longer exists in the latest versions of the Follower Reads docs


Windows Support

Note: I will clean up the commits once it's mostly working
This crate is quite close to supporting Windows. The crates will already build without issue. Things to do:

[x] Add the directory that clang_rt.asan_dynamic-x86_64.dll is in to $PATH of the fuzzer process

With this change it is possible to run the fuzzers too.
This directory is not on PATH by default, so the binary cannot load the DLL when run. It is recommended to add it to PATH before running the binary. It somewhere like
C:\Program Files (x86)\Microsoft Visual Studio\[MSVC VERSION]\BuildTools\VC\Tools\MSVC\[RT VERSION]\bin\Hostx64\x64
asan is fairly new to MSVC so it will only exist on versions newer than 2019.
This DLL resides in the same directory as link.exe & cl.exe so the most accurate way to obtain it is to do the same process rustc does to get the location of link.exe. This ensures that the runtime & msvc version matches the one used to compile the binary.
Note: this is required for sanitizers = none as well. Windows does not support any other sanitizers at this time.

[ ] Fix-up tests so that they pass on Windows too

There are errors that are *nix specific that need to be fixed up. It is mainly fixing str paths that will be displayed incorrectly on Windows.

[x] init_twice

[x] add_twice

[x] build_dev

[x] build_all

[x] build_one

[x] run_a_few_inputs

[x] run_alt_corpus

[ ] run_diagnostic_contains_fuzz_dir

[x] run_one_input

[ ] run_without_sanitizer_with_crash

[ ] run_with_crash

[ ] run_with_coverage

[ ] tmin

[x] Ensure child processes are always terminated

The win32 Job Objects API is what is needed for this. Essentially, get its info, set the info so that it has JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE set.

[ ] Ensure the fuzzer runs?

For some reason on my work computer the fuzzer just hangs when it opens, not doing anything. At home it seems to work as expected. I'm not sure why.

Looks like every thread it hanging out in `NtWaitForAlertByThreadId`. IDK what that means.

(lldb) thread backtrace all
* thread #7
  * frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb6471c clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_RtlAllocateHeap + 444
    frame #10: 0x00007ffe84ea4cdf ntdll.dll`RtlLoadString + 4511
    frame #11: 0x00007ffe84ea4b2d ntdll.dll`RtlLoadString + 4077
    frame #12: 0x00007ffe84e677a7 ntdll.dll`LdrShutdownThread + 855
    frame #13: 0x00007ffe84ec60a4 ntdll.dll`LdrInitializeThunk + 1156
    frame #14: 0x00007ffe84ec5c83 ntdll.dll`LdrInitializeThunk + 99
    frame #15: 0x00007ffe84ec5c2e ntdll.dll`LdrInitializeThunk + 14
  thread #2
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb63bec clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_LocalAlloc + 284
    frame #10: 0x00007ffe790a98cd TmUmEvt64.dll
    frame #11: 0x00007ffe790aa607 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 1143
    frame #12: 0x00007ffe790a99c1 TmUmEvt64.dll
    frame #13: 0x0000000076a29694 tmmon64.dll
    frame #14: 0x0000000076a4cd32 tmmon64.dll
    frame #15: 0x0000000076a4d077 tmmon64.dll
    frame #16: 0x0000000076973c39 tmmon64.dll
    frame #17: 0x00007ffe84e9ec5e ntdll.dll`RtlExitUserThread + 46
    frame #18: 0x00007ffe84e9dd28 ntdll.dll`TpReleaseCleanupGroupMembers + 4200
    frame #19: 0x00007ffe848f7374 kernel32.dll`BaseThreadInitThunk + 20
    frame #20: 0x00007ffe84e9cc91 ntdll.dll`RtlUserThreadStart + 33
  thread #1
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb3e853 clang_rt.asan_dynamic-x86_64.dll`__asan_new_array + 211
    frame #10: 0x00007ff6a232ffb2 fuzz_target_1.exe`LLVMFuzzerRunDriver + 198482
    frame #11: 0x00007ff6a22e43c2 fuzz_target_1.exe`__sanitizer_weak_hook_strstr + 64546
    frame #12: 0x00007ff6a22e63af fuzz_target_1.exe`__sanitizer_weak_hook_strstr + 72719
    frame #13: 0x00007ff6a22e4bd0 fuzz_target_1.exe`__sanitizer_weak_hook_strstr + 66608
    frame #14: 0x00007ff6a22f928e fuzz_target_1.exe`LLVMFuzzerMutate + 44510
    frame #15: 0x00007ff6a22ccb23 fuzz_target_1.exe`main + 35
    frame #16: 0x00007ff6a23308b8 fuzz_target_1.exe`LLVMFuzzerRunDriver + 200792
    frame #17: 0x00007ffe848f7374 kernel32.dll`BaseThreadInitThunk + 20
    frame #18: 0x00007ffe84e9cc91 ntdll.dll`RtlUserThreadStart + 33
  thread #6
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb6471c clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_RtlAllocateHeap + 444
    frame #10: 0x00007ffe84ea4cdf ntdll.dll`RtlLoadString + 4511
    frame #11: 0x00007ffe84ea4b2d ntdll.dll`RtlLoadString + 4077
    frame #12: 0x00007ffe84e677a7 ntdll.dll`LdrShutdownThread + 855
    frame #13: 0x00007ffe84ec60a4 ntdll.dll`LdrInitializeThunk + 1156
    frame #14: 0x00007ffe84ec5c83 ntdll.dll`LdrInitializeThunk + 99
    frame #15: 0x00007ffe84ec5c2e ntdll.dll`LdrInitializeThunk + 14
  thread #4
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb63bec clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_LocalAlloc + 284
    frame #10: 0x00007ffe790a98cd TmUmEvt64.dll
    frame #11: 0x00007ffe790aa607 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 1143
    frame #12: 0x00007ffe790a99c1 TmUmEvt64.dll
    frame #13: 0x0000000076a29694 tmmon64.dll
    frame #14: 0x0000000076a4cd32 tmmon64.dll
    frame #15: 0x0000000076a4d077 tmmon64.dll
    frame #16: 0x0000000076973c39 tmmon64.dll
    frame #17: 0x00007ffe84e9ec5e ntdll.dll`RtlExitUserThread + 46
    frame #18: 0x00007ffe84e9dd28 ntdll.dll`TpReleaseCleanupGroupMembers + 4200
    frame #19: 0x00007ffe848f7374 kernel32.dll`BaseThreadInitThunk + 20
    frame #20: 0x00007ffe84e9cc91 ntdll.dll`RtlUserThreadStart + 33
  thread #5
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb6471c clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_RtlAllocateHeap + 444
    frame #10: 0x00007ffe790fd6b4 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 341284
    frame #11: 0x00007ffe790e12a3 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 225555
    frame #12: 0x00007ffe790b570f TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 46463
    frame #13: 0x00007ffe790b25e3 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 33875
    frame #14: 0x00007ffe790b36c8 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 38200
    frame #15: 0x00007ffe790b4049 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 40633
    frame #16: 0x00007ffe7901e1e8 TmUmEvt64.dll
    frame #17: 0x00007ffe79020357 TmUmEvt64.dll
    frame #18: 0x00007ffe7902030d TmUmEvt64.dll
    frame #19: 0x00007ffe7902146b TmUmEvt64.dll
    frame #20: 0x00007ffe7905e90c TmUmEvt64.dll
    frame #21: 0x00007ffe7905f30c TmUmEvt64.dll
    frame #22: 0x00007ffe790a09a3 TmUmEvt64.dll
    frame #23: 0x00000000769713c6 tmmon64.dll
    frame #24: 0x0000000076a4cdd2 tmmon64.dll
    frame #25: 0x0000000076a4d077 tmmon64.dll
    frame #26: 0x0000000076972fa5 tmmon64.dll
    frame #27: 0x00007ffe84e6354a ntdll.dll`RtlAddRefActivationContext + 138
    frame #28: 0x00007ffe84e62252 ntdll.dll`TpIsTimerSet + 594
    frame #29: 0x00007ffe84e60921 ntdll.dll`RtlIsProcessorFeaturePresent + 177
    frame #30: 0x00007ffe84e5fb05 ntdll.dll`TpAllocWork + 2085
    frame #31: 0x00007ffe84e64bcf ntdll.dll`RtlIsCriticalSectionLockedByThread + 831
    frame #32: 0x00007ffe84eb1253 ntdll.dll`RtlUnlockHeap + 6211
    frame #33: 0x00007ffe84eb0f80 ntdll.dll`RtlUnlockHeap + 5488
    frame #34: 0x00007ffe84eb021f ntdll.dll`RtlUnlockHeap + 2063
    frame #35: 0x00007ffe84e6fb53 ntdll.dll`RtlGetFullPathName_UstrEx + 8899
    frame #36: 0x00007ffe84e673e4 ntdll.dll`RtlDosPathNameToNtPathName_U + 212
    frame #37: 0x00007ffe84e66af4 ntdll.dll`LdrLoadDll + 228
    frame #38: 0x00000000769733c4 tmmon64.dll
    frame #39: 0x00007ffe825a2612 KernelBase.dll`LoadLibraryExW + 354
    frame #40: 0x00007ffe8296c050 ucrtbase.dll`__stdio_common_vfwprintf + 1264
    frame #41: 0x00007ffe8297357b ucrtbase.dll`_o__difftime64 + 203
    frame #42: 0x00007ffe82971be4 ucrtbase.dll`_configthreadlocale + 196
    frame #43: 0x00007ffdecb748ff clang_rt.asan_dynamic-x86_64.dll`__asan_default_suppressions__dll + 4879
    frame #44: 0x00007ffe848f7374 kernel32.dll`BaseThreadInitThunk + 20
    frame #45: 0x00007ffe84e9cc91 ntdll.dll`RtlUserThreadStart + 33
  thread #3
    frame #0: 0x00007ffe84ef0f94 ntdll.dll`NtWaitForAlertByThreadId + 20
    frame #1: 0x00007ffe84e83270 ntdll.dll`RtlLookupFunctionEntry + 1680
    frame #2: 0x00007ffe84ea2bb1 ntdll.dll`RtlWalkFrameChain + 1169
    frame #3: 0x00007ffe84ea28ba ntdll.dll`RtlWalkFrameChain + 410
    frame #4: 0x00007ffe84ea274a ntdll.dll`RtlWalkFrameChain + 42
    frame #5: 0x00007ffe84ea26e2 ntdll.dll`RtlCaptureStackBackTrace + 66
    frame #6: 0x00007ffdecb3749c clang_rt.asan_dynamic-x86_64.dll`__sanitizer_symbolize_pc + 16732
    frame #7: 0x00007ffdecb33202 clang_rt.asan_dynamic-x86_64.dll`__sanitizer_dump_trace_pc_guard_coverage + 11650
    frame #8: 0x00007ffdecb72c33 clang_rt.asan_dynamic-x86_64.dll`__asan_version_mismatch_check_v8 + 1651
    frame #9: 0x00007ffdecb63bec clang_rt.asan_dynamic-x86_64.dll`__asan_wrap_LocalAlloc + 284
    frame #10: 0x00007ffe790a98cd TmUmEvt64.dll
    frame #11: 0x00007ffe790aa607 TmUmEvt64.dll`void TmmonDestoryAddonObject(void) + 1143
    frame #12: 0x00007ffe790a99c1 TmUmEvt64.dll
    frame #13: 0x0000000076a29694 tmmon64.dll
    frame #14: 0x0000000076a4cd32 tmmon64.dll
    frame #15: 0x0000000076a4d077 tmmon64.dll
    frame #16: 0x0000000076973c39 tmmon64.dll
    frame #17: 0x00007ffe84e9ec5e ntdll.dll`RtlExitUserThread + 46
    frame #18: 0x00007ffe84e9dd28 ntdll.dll`TpReleaseCleanupGroupMembers + 4200
    frame #19: 0x00007ffe848f7374 kernel32.dll`BaseThreadInitThunk + 20
    frame #20: 0x00007ffe84e9cc91 ntdll.dll`RtlUserThreadStart + 33

Nice! Does cargo fuzz run my-fuzzer --sanitizer=none already work, if this is just about getting asan linked in?

I added a function for setting up a Windows JobObject so that all child processes are cleaned up when cargo-fuzz is terminated.

Nice! Does cargo fuzz run my-fuzzer --sanitizer=none already work, if this is just about getting asan linked in?

Hmm trying it with --sanitizers=none results in a build failure of the fuzz project.
PS C:\Users\rsmyth\Documents\test_project> ..\..\cargo-fuzz\target\debug\cargo-fuzz.exe run fuzz_target_1 --sanitizer=none
warning: test_project-fuzz v0.0.0 (C:\Users\rsmyth\Documents\test_project\fuzz) ignoring invalid dependency `test_project` which is missing a lib target
   Compiling once_cell v1.19.0
   Compiling arbitrary v1.3.2
   Compiling libfuzzer-sys v0.4.7
   Compiling test_project-fuzz v0.0.0 (C:\Users\rsmyth\Documents\test_project\fuzz)
error: linking with `link.exe` failed: exit code: 1120
  |
  = note: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.40.33807\\bin\\HostX64\\x64\\link.exe" "/NOLOGO" "C:\\Users\\rsmyth\\AppData\\Local\\Temp\\rustc6xktQl\\symbols.o" "C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\target\\x86_64-pc-windows-msvc\\release\\deps\\fuzz_target_1.fuzz_target_1.11e554e2e5471688-cgu.0.rcgu.o" "/LIBPATH:C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\target\\x86_64-pc-windows-msvc\\release\\deps" "/LIBPATH:C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\target\\release\\deps" "/LIBPATH:C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\target\\x86_64-pc-windows-msvc\\release\\build\\libfuzzer-sys-0db93598c93951c8\\out" "/LIBPATH:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "C:\\Users\\rsmyth\\AppData\\Local\\Temp\\rustc6xktQl\\liblibfuzzer_sys-8d7934011650b828.rlib" "C:\\Users\\rsmyth\\AppData\\Local\\Temp\\rustc6xktQl\\libstd-cef76c2685dfb4ca.rlib" "C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins-a6954cc40265b962.rlib" "kernel32.lib" "advapi32.lib" "ntdll.lib" "userenv.lib" "ws2_32.lib" "kernel32.lib" "kernel32.lib" "/defaultlib:msvcrt" "/NXCOMPAT" "/LIBPATH:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" "/OUT:C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\target\\x86_64-pc-windows-msvc\\release\\deps\\fuzz_target_1.exe" "/DEBUG" "/PDBALTPATH:%_PDB%" "/NATVIS:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\intrinsic.natvis" "/NATVIS:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\liballoc.natvis" "/NATVIS:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libcore.natvis" "/NATVIS:C:\\Users\\rsmyth\\.rustup\\toolchains\\nightly-x86_64-pc-windows-msvc\\lib\\rustlib\\etc\\libstd.natvis" "/include:main"
  = note:    Creating library C:\Users\rsmyth\Documents\test_project\fuzz\target\x86_64-pc-windows-msvc\release\deps\fuzz_target_1.lib and object C:\Users\rsmyth\Documents\test_project\fuzz\target\x86_64-pc-windows-msvc\release\deps\fuzz_target_1.exp
          fuzz_target_1.fuzz_target_1.11e554e2e5471688-cgu.0.rcgu.o : error LNK2019: unresolved external symbol __start___sancov_cntrs referenced in function sancov.module_ctor_8bit_counters
          fuzz_target_1.fuzz_target_1.11e554e2e5471688-cgu.0.rcgu.o : error LNK2019: unresolved external symbol __stop___sancov_cntrs referenced in function sancov.module_ctor_8bit_counters
          fuzz_target_1.fuzz_target_1.11e554e2e5471688-cgu.0.rcgu.o : error LNK2019: unresolved external symbol __start___sancov_pcs referenced in function sancov.module_ctor_8bit_counters
          fuzz_target_1.fuzz_target_1.11e554e2e5471688-cgu.0.rcgu.o : error LNK2019: unresolved external symbol __stop___sancov_pcs referenced in function sancov.module_ctor_8bit_counters
          C:\Users\rsmyth\Documents\test_project\fuzz\target\x86_64-pc-windows-msvc\release\deps\fuzz_target_1.exe : fatal error LNK1120: 4 unresolved externals

error: could not compile `test_project-fuzz` (bin "fuzz_target_1") due to 1 previous error
Error: failed to build fuzz script: "cargo" "build" "--manifest-path" "C:\\Users\\rsmyth\\Documents\\test_project\\fuzz\\Cargo.toml" "--target" "x86_64-pc-windows-msvc" "--release" "--config" "profile.release.debug=true" "--bin" "fuzz_target_1"

Where the test project is just an empty Rust template with an empty fuzzer.

I did a dumpbin, and it looks like it requires some of the symbols the asan DLL provides. So on Windows it unconditionally needs to be linked with `-Zsanitizer=address

Wow this library desperately needs golden file testing. The weird and(predicates::str::contains()) testing is extremely verbose and tedious. Plus when something is wrong, it just spews garbage out and is near impossible to tell what is wrong.


Implement search api for packages

Implement /packages route that takes a package name in query params (packages? search=request) that returns list of all packages as a result of npm search
The json response should include relevant details like name description versions etc

I will pick this up. Can you assign this to me ?


The like button is not working properly if Someone can like post multiple times

What would you like to share?
Once can like their or others post infinte times so that like feature is not making sense
I can solve it under gssoc 23
Additional information
No response

I want to work on this issue

Hi can you elaborate the condition or steps to reproduce this issue?

@narayan954  I can solve this issue would you please assign me this issue

@narayan954 I can solve this issue would you please assign me this issue

Show me a proof where this issue exists, I can find this issue

Oh now it is fixed i will close my request


Add Divize: HTML/CSS Challenges

Thank you for opening a pull request to tiny-teachers.dev ❤
Before you submit your PR, please take a look at the contributing guidelines. :)
To make it easier for us to review and merge your PR, please make sure …

[x] you only add one (!) new teacher per pull request.
[x] you have checked if an open PR already exists.
[x] the submitted website is focused on a single, development related issue.
[x] the desc field includes an "actionable sentence" (e.g. "Learn about CSS flexbox" or "Learn how to design well.").

Thank you! 🙇♂

Looks great. Thank you!


Add key storage details when using a browser

Web Crypto API defines a safe method of storing key's in a browser. This could be a useful addition for static agents that are built in browser.
https://www.w3.org/TR/WebCryptoAPI/#concepts-key-storage

I totally agree but I'm not sure we'll ever use this library in the browser; maybe we should get an RFC going that outlines static agents and key storage best practices.

I agree with @dbluhm. This is really great for js based static agents, but this agent (in python) won't ever be used that way.


Attempt to determine task name from taskRef or labels

Fixes
https://issues.redhat.com/browse/RHTAPBUGS-432

Description
If task name is not in a taskRuns's taskRef.name, try to determine it from metadata.labels or taskRef.params.

Type of change

[ ] Feature
[x] Bugfix
[ ] Code style update (formatting, renaming)
[ ] Refactoring (no functional changes, no api changes)
[ ] Build related changes
[ ] Documentation content changes
[ ] Other (please describe):

Screen shots / Gifs for design review
(No design changes)

Browser conformance:

[ ] Chrome
[x] Firefox
[ ] Safari
[ ] Edge

/cc @karthikjeeyar

/approve
/lgtm

/retest


Fix issues reported by Coverity

More information is in each separate commit message.

The c9s build issue is caused by vendor/github.com/containers/libtrust/ec_key_openssl.go:23:15: undefined: ecdsa.HashSign and should be resolved when a new version of the golang package gets to c9s repos.
F37 failures in CI are caused by our CI using old repo snapshots and installing old podman but new containers-common which results in crun not being installed as a dependency.

Updated terraform SHA to fix Fedora-37 ostree issues and rebased on main


[Bug]: The first synchronization of library metadata will not take effect, but it will take effect the second time

ODC version
odc430
OB version

What happened?

What did you expect to happen?
The first synchronization of library metadata takes effect
How can we reproduce it (as minimally and precisely as possible)?
Synchronize library metadata
Anything else we need to know?
No response

I cannot understand what you want to explain!

Fixed In Commit a380e82977f3e873950e15cc9d885026b7e4d8b2
------
畅晚
Fri Jun 7 16:21:43 2024 +0800

pass


feature: support load balancers and other proxies between syncer and kcp server

Feature Description
Today the kubectl kubestellar syncer-gen plugin extracts from its given kube client config a subset and puts that into the configuration for the syncer.  Today this plugin is usually invoked with the kube client config generated by kcp start.
What the syncer needs is that the server field in the cluster entries in the kubeconfig has a protocol://host:port/path/prefix that the syncer can use to make web requests to, and the server's X.509 certificate that the syncer gets when opening the TLS connection (protocol is going to be https unless ...?) passes the usual checks against that host.
For any given proxy, there is a critical choice to make: does it terminate the TLS connections or pass them through?  If the proxy terminates the TLS connections from the client then the proxy must open new connections to the server AND use the "impersonation" feature in the Kubernetes API machinery, which requires the proxy to be authorized to do those impersonations.  If the proxy does not terminate the connections then the client must set the TLS Server Name Indication as needed to help the proxy steer the request appropriately --- if there is a steering question.  This in turn raises questions about DNS configuration and client configuration.
Proposed Solution
Document and advertise ways to get this doc for various use cases.  Add supporting automation as appropriate.
Want to contribute?

[ ] I would like to work on this issue.

Additional Context
No response

FYI, following are the relevant command line flags for the kube-apiserver in release 1.24.  See https://v1-24.docs.kubernetes.io/docs/reference/command-line-tools-reference/kube-apiserver/ for full details.

--advertise-address string.  IP address, defaults to bind-address.
--bind-address string.  Default: <IP_ADDRESS> for the binding, default address going into the certificate is the one on the default route.
--external-hostname string
--permit-address-sharing
--permit-port-sharing
--secure-port int     Default: 6443
--service-account-jwks-uri string
--strict-transport-security-directives strings
--tls-cert-file string
--tls-private-key-file string
--tls-sni-cert-key string

Now that we are talking about TLS certificates, this is entangled with issue #711 .

In kcp v0.11.0, I found the following among kcp start options.

--bind-address ip
--external-hostname string
--permit-address-sharing
--permit-port-sharing
--secure-port int
--service-account-jwks-uri string
--strict-transport-security-directives strings
--tls-cert-file string
--tls-private-key-file string
--tls-sni-cert-key namedCertKey

I did NOT find the following.

--advertise-address

I tested kcp v0.11.0 and found that when I
kcp start --external-hostname nope.nope.nope

then .kcp/admin.kubeconfig has "nope.nope.nope" as the hostname in the server fields in the "clusters".

Most techniques that install Kubernetes create the apiserver's certificate and key rather than use the one that the apiserver would generate by default.  We can take a hint.

I am super interested in this also in how it affects re-connection by the workload execution cluster.
If hostnames could be configured as opposed to IP address, would this give us a path towards allowing kubestellar to restart and permit reconnection from a syncer already running on a workload execution cluster?

There is some work in community for a similar use case: https://www.vcluster.com/docs/operator/external-access

Experimentation with kcp v0.11.0 shows that --external-hostname will affect the server URLs in the generated kubeconfig file but will not affect the server socket's IP address nor the X.509 certificate that the server generates for itself if it is not given one to use.
The server can be given the certificate and private key with command line flags.

BTW, part of this is #801

Do we need to support scenarios in which the KubeStellar controllers can not open TCP connections to the IP address that the kcp server does, or would if we chose to direct it so, bind to?

FYI, ObjectMeta.SelfLink has been obsolete for a while --- so we do not have to worry about that.

Can we organize the consumers into just the two equivalence classes, supporting proxies between the general processes and the central ones but not elsewhere?

Central processes: the kcp server, the central KubeStellar controllers, and the kubestellar command.
General processes: the syncers and the higher level clients.

Based on review of the planned deployment and usage pattern for MCAD+KubeStellar, I think we agreed on the following.
We organize the kcp clients into just the following two categories, supporting proxies between the external processes and the central ones but not elsewhere.

Central processes: the kcp server, the central KubeStellar controllers, the kubestellar command; some syncers and some higher level clients may also be in this category.
External processes: the remaining syncers and higher level clients.

The external processes get a different kubeconfig file than the internal processes.
In the server URLs in the kubeconfig used by external processes, the hostname is a domain name. This domain name is known by the deployer of the KubeStellar platform included in the configuration of the kcp server so that this domain name is among the Subject Alternative Names in the server's TLS server certificate.

/priority critical-urgent

Yes, this is a high priority that impacts multiple clients and partners. Please proceed with priority to resolve this.

@MikeSpreitzer @pdettori (cc @clubanderson)
Given my simple deployment below of kubestellar in k8s which bind kcp to the container port 6443
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubestellar-server
  namespace: kubestellar
spec:
  selector:
    matchLabels:
      app: kubestellar-server
  replicas: 1
  template:
    metadata:
      labels:
        app: kubestellar-server
    spec:
      volumes:
      - name: kubestellar-pv
        persistentVolumeClaim:
          claimName: kubestellar-pvc
      containers:
      - name: kubestellar-server
        image: quay.io/kubestellar/kubestellar:stable
        volumeMounts:
        - name: kubestellar-pv
          mountPath: "/.kcp"
          readOnly: false

I can make kcp available to external clusters using the public ip of the host with the simple
kubectl port-forward -n kubestellar pod/$(kubectl get pod -n kubestellar --selector=app=kubestellar-server -o jsonpath={.items[0].metadata.name}) 6443:6443 --address='<IP_ADDRESS>'

Can you help me figure out a specific yaml that would either

do the exact equivalent of port-forward above

or

create an ingress that works for kind/oc/k8s in general

I have been struggling with this for a while and could not find a solution myself

@MikeSpreitzer @pdettori  (cc @dumb0002) please help
I have been working on the TLS a bit... hopefully in the right direction
I need a way for the kubestellar pod to generate/get TLS for a ENV KUBESTELLAR_ULR  that will be passed to the pod during creation.
Step 1: I created a kind cluster and installed cert-manager:
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install \
  cert-manager jetstack/cert-manager \
  --namespace cert-manager \
  --create-namespace \
  --version v1.12.0 \
  --set installCRDs=true

Step 2: I used the following YAML to create an issuer and request a certificate which should create a secret mounted in the pod in /tls (note that I'm currently trying to statically specify my host ip address 9.2.x.y but in the future it would be an env variable):
---
apiVersion: v1
kind: Namespace
metadata:
  name: kubestellar
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: kubestellar-pvc
  namespace: kubestellar
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 1Mi
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: kubestellar-issuer
  namespace: kubestellar
spec:
  acme:
    # The ACME server URL staging
    server: https://acme-staging-v02.api.letsencrypt.org/directory
    # The ACME server URL production
    # server: https://acme-v02.api.letsencrypt.org/directory
    # Email address used for ACME registration
    email<EMAIL_ADDRESS>    # Name of a secret used to store the ACME account private key
    privateKeySecretRef:
      name: kubestellar-privatekey
    # Enable the HTTP-01 challenge provider
    solvers:
      - http01:
          ingress:
            ingressClassName: nginx
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: kubestellar-cert
  namespace: kubestellar
spec:
  dnsNames:
    - 9.2.x.y
  secretName: kubestellar-tls-cert
  issuerRef:
    name: kubestellar-issuer
    kind: Issuer
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubestellar-server
  namespace: kubestellar
spec:
  selector:
    matchLabels:
      app: kubestellar-server
  replicas: 1
  template:
    metadata:
      labels:
        app: kubestellar-server
    spec:
      volumes:
      - name: kubestellar-pv
        persistentVolumeClaim:
          claimName: kubestellar-pvc
      - name: tls
        secret:
          secretName: kubestellar-privatekey
          optional: true
      containers:
      - name: kubestellar-server
        image: quay.io/kubestellar/kubestellar:stable
        volumeMounts:
        - name: kubestellar-pv
          mountPath: "/.kcp"
          readOnly: false
        - name: tls
          mountPath: "/tls"
          readOnly: true

I was expecting a secret kubestellar-cert* but I got a kubestellar-privatekey is this correct or am I doing something wrong:
$ k get secrets -A
NAMESPACE      NAME                                 TYPE                            DATA   AGE
cert-manager   cert-manager-webhook-ca              Opaque                          3      57m
cert-manager   sh.helm.release.v1.cert-manager.v1   helm.sh/release.v1              1      57m
kube-system    bootstrap-token-abcdef               bootstrap.kubernetes.io/token   6      58m
kubestellar    kubestellar-privatekey               Opaque                          1      8m56s

The mounted secret has a tls.key:
$ cat /tls/tls.key
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA4rhyTAYElrQ83Ms6b1z90uzxMhr8MCJoG+GtKElV4cIQcOab
...
rDVPVgXLhRtV/NzByUpSgbIY1h9hBKCuTHzlVX0gPd2F+WfU/NYk
-----END RSA PRIVATE KEY-----

Can you help figure out if this is the correct way to create a secret to be used for kcp
I'm unsure how to use this with kcp start... should I use it with --tls-private-key-file?

Yes, I can help with defining an Ingress object.  Also, I think @pdettori and @ezrasilvera are known to be able to do this.  It is widely practiced in the world at large.
I have been focusing lately on the issue of how to get the kcp server to serve (i.e., put in its ServerHello message in the TLS handshake) a certificate that works together with the way that the client opens the TLS connection to the server.
FYI, I found the datatype declaration for the contents of a kubeconfig file.  You can see it in https://github.com/kubernetes/client-go/blob/master/tools/clientcmd/api/types.go .
At https://github.com/kubernetes/client-go/blob/v0.24.3/tools/clientcmd/api/types.go#L75 you can see that these config files can specify the SNI.
At https://github.com/kubernetes/client-go/blob/v0.24.3/tools/clientcmd/api/types.go#L78 you see that these config files can suppress the client's verification of the server.  But I think we should not rely on that.

BTW, I think that the current title and problem statement of this issue may be a bit off; we also want to cover the use case where some clients connect to the kcp server using a domain name for it even when there is no proxy involved.

I have started drafting a solution to the problem along the lines outlined in https://github.com/kubestellar/kubestellar/issues/788#issuecomment-1641011449 .  At the highest level it involves two scripts that would be called before and after launching kcp, for example as in the entry.sh of #764 .
The script https://github.com/MikeSpreitzer/kcp-edge-mc/blob/add-sni-gen/scripts/kubestellar-ensure-kcp-server-creds is called before launching the kcp server, and the script is told the domain name that the external clients will use to connect to the kcp server.  This script creates or re-uses an existing pair of server cert and private key, in which the cert has one SubjectAlternativeName (holding the given domain name).  Following is how I invoked it in my testing and examined its output.  For testing I made a local bridge and put an entry in /etc/hosts associating the bridge's IP address with the domain name yep.yep.
bash-5.2$ eval pieces=($(scripts/kubestellar-ensure-kcp-server-creds yep.yep))
Re-using PKI at /Users/mspreitz/go/src/github.com/kubestellar/kubestellar/pki
Re-using CA at /Users/mspreitz/go/src/github.com/kubestellar/kubestellar/pki/private/ca.key
Accepting existing credentials

bash-5.2$ echo ${pieces[0]}
/Users/mspreitz/go/src/github.com/kubestellar/kubestellar/pki/ca.crt

bash-5.2$ echo ${pieces[1]}
/Users/mspreitz/go/src/github.com/kubestellar/kubestellar/pki/issued/kcp-server.crt

bash-5.2$ echo ${pieces[2]}
/Users/mspreitz/go/src/github.com/kubestellar/kubestellar/pki/private/kcp-server.key

That script prints to stdout one line that bash parses as three words, absolute pathnames of files needed later.  This script uses a PKI and CA at $PWD/pki, creating them if they are not already there.
When launching the kcp server, give it the --tls-sni-cert-key flag, with a value combining the server cert filename and key filename.  Following is how I launched the kcp server in a test.
bash-5.2$ kcp start --tls-sni-cert-key ${pieces[1]},${pieces[2]} &> /tmp/kcp.log &
[1] 66974

The other high-level script is https://github.com/MikeSpreitzer/kcp-edge-mc/blob/add-sni-gen/scripts/wait-and-switch-domain .  It waits for the kcp server to enter regular service, then produces the modified kubeconfig file for external clients to use.  Because it reads the original kubeconfig, it is important to complete this step before launching other steps that would modify that file.  Following is my invocation when testing.
bash-5.2$ scripts/wait-and-switch-domain .kcp admin.kubeconfig root yep.yep 6443 ${pieces[1]}

The modified kubeconfig gets stored at a newly created (if it does not already exist) directory named .kcp-$domain, for the given $domain name, and has the same base name as the original.  Following is a use of it in my test.
bash-5.2$ KUBECONFIG=.kcp-yep.yep/admin.kubeconfig kubectl ws .
Current workspace is "root".

@francostellari is attempting to incorporate tls config into a new PR

addressed in https://github.com/kubestellar/kubestellar/pull/863


Update for fields subset

In my API I want to do a PATCH request. So I need to be able to do an update just for few fields.
For now the generate update method allow only the update all at once.

Can you specify? In the UpdateRequest, you can just specify a single field to update and there others are left untouched.

Ho you're right I didn't test it and just by the look of the code I was thinking everything was override.  But I just tested and you're right only was it specified is changed. But that's trigger another problem, how can I set a field back to null ?

And also foreign keys are still mandatory on the generated code:
@MappableClass()
class SupplierUpdateRequest {
  SupplierUpdateRequest(
      {required this.id,
      required this.shopId,
      this.fullName,
      this.email,
      this.iban,
      this.accountName,
      this.phoneNumber,
      this.isEnabled,
      this.lastMod,
      this.added});
  int id;
  int shopId;
  String? fullName;
  String? email;
  String? iban;
  String? accountName;
  String? phoneNumber;
  bool? isEnabled;
  DateTime? lastMod;
  DateTime? added;
}

Ho you're right I didn't test it and just by the look of the code I was thinking everything was override.  But I just tested and you're right only was it specified is changed. But that's trigger another problem, how can I set a field back to null ?

Oh right, I didn't thought of that. Ok thats a problem.

And also foreign keys are still mandatory on the generated code:
@MappableClass()
class SupplierUpdateRequest {
  SupplierUpdateRequest(
      {required this.id,
      required this.shopId,
      this.fullName,
      this.email,
      this.iban,
      this.accountName,
      this.phoneNumber,
      this.isEnabled,
      this.lastMod,
      this.added});
  int id;
  int shopId;
  String? fullName;
  String? email;
  String? iban;
  String? accountName;
  String? phoneNumber;
  bool? isEnabled;
  DateTime? lastMod;
  DateTime? added;
}

That's a bug, what does the Supplier model and the Shop model look like?

Look like this:

@Model(
  tableName: 'suppliers_supplier',
  insertRequestAnnotation: MappableClass(),
  updateRequestAnnotation: MappableClass(),
  views: [
    View('Complete', [Field.view('shop', as: 'Abstract')], MappableClass()),
  ],
)
abstract class Supplier {
  /// A unique identifier corresponding to this item.

  @PrimaryKey()
  @AutoIncrement()
  int? id;

  String get name;

  int? get industryId;

  DateTime get added;
}

@jaumard
I added a fix for the required foreign keys.
For setting columns to null through update requests please file a new issue.
This feature actually is really tricky. I haven't found a way to do it yet, since in sql there is no way smart to represent both 'keep this column untouched' and 'set this column to null' since we only have null as a value we can inject. We would need some extra value for each column (e.g. bool) to encode that information in sql.


Issue with ES6 and nonew

The docs state:

This option prohibits the use of constructor functions for side-effects. Some people like to call constructor functions without assigning its result to any variable:
new MyConstructor();
There is no advantage in this approach over simply calling MyConstructor since the object that the operator new creates isn't used anywhere so you should generally avoid constructors like this one.

This is not correct when using ES6 classes, which cannot be instantiated without new.  Is there a possibility of updating this rule to detect a class (in the same module) and ignore the rule for this case?

It's hard for a static analysis tool to even figure out if what you're trying to construct is a class or not --- there would definitely be false positives, which isn't ideal.
Why not just not use "nonew" when dealing with ES6 code?

Also, there has been some discussion about making classes callable by some mechanism --- @rwaldron might know if there was any more about that last week.

It's hard for a static analysis tool to even figure out if what you're trying to construct is a class or not --- there would definitely be false positives, which isn't ideal.

I agree that that's why I said "in the same module".  Obviously if you are looking at one file at a time, it would be very hard, if not impossible to to determine a function vs a class.

Why not just not use "nonew" when dealing with ES6 code?

That's my solution for now.  I agree that at least a doc update is needed.

This feature has previously been requested in gh-2579 and since implemented in
gh-2623. You'll note that the pull request has not been merged, largely for
the reason that @caitp described. If you feel that a warning that is only
occasionally reported is better than no warning at all, please feel free to
weigh in on that pull request.
Since this feature request has changed to a documentation issue, I've updated
the issue title to make the new intent a little more clear.

Also, there has been some discussion about making classes callable by some
mechanism --- @rwaldron might know if there was any more about that last
week.

There was more discussion! That proposal was withdrawn in favor of an approach
that uses the "decorators" proposal:
https://github.com/tc39/ecma262/blob/643a7ff106e3a1fd879e88b53675047502343f51/withdrawn-proposals.md


Custom namespaces for multitenant storages

Previously, the Datastore storage factory limited usage of custom datastore namespaces to single-tenant storages, since the multitenancy mechanism is implemented via the Datastore namespaces.
However, this approach is not good enough anymore, since InboxStorage is always multitenant, effectively making it impossible to use custom namespaces at
In this PR we provide a workaround for this issue. Now, multitenant storages may be created with a custom namespace. In this case, the provided namespace is used as a prefix for the tenant-based namespace.
The resulting Datastore namespace has the following format:
<custom-namespace>.<tenant-ID-based-namespace>.

@armiol, PTAL.