Use libcontainer hook for network namespace info passing to libnetwork's sandbox

Use the new hook functionality from runC/libcontainer to perform the setting of the network namespace path into libnetwork's sandbox entity.  This is the final required step to solve the conflict between user namespaces and the (original) libnetwork network namespace setup flow.  See #15187 for more details.
Thanks @mavenugo for the original design.

@LK4D4 @calavera : updated with struct version, PTAL

@estesp overall, LGTM. Let's see if we can have CI checking this soon.

@mavenugo @aboch I think we have a design problem here somewhere with the sandbox/external key setting that needs your help.  Any test doing network namespace sharing (--net=host or --net=<container>) seems to clash and cause:
Error response from daemon: Cannot start container 3074806e3e899967cf1e013ff8474516508f
e64e18b1e00a0eeabc07594da24c: [8] System error: failed to set sandbox key : already assigned

These (netns sharing with host/containers) are functionalities that will be blocked--I believe, at least until there is a known solution--when running with user namespaces, so maybe the external key setting needs to be used only when user namespaces are in use?  Any other solution to this that makes sense?

@estesp Thanks for finding this.
@mavenugo The SetKey() call needs to be made idempotent in case of --net=host and --net=<container>. Sandbox model supports this already.

@estesp
Please find a libnetwork patch here
It would be great if you could run the test on a docker image which include the patch.

@estesp Please hold on applying the patch. More changes coming.

Sure. No problem
Sent from my iPhone

On Sep 15, 2015, at 5:03 PM, aboch<EMAIL_ADDRESS>wrote:
@estesp Please hold on applying the patch. More changes coming.
—
Reply to this email directly or view it on GitHub.

@aboch because the tests were already running when you mentioned further changes were necessary, the general result of the first patch is that it fixes the prior errors on container start, but --net=host actually doesn't seem to work as tests which probe to make sure it is exactly the same netns find that they are different.  Possibly you already know that, but in case it helps..
For example:
docker_cli_run_test.go:2194:
    c.Fatalf("Net namespace different with --net=host %s != %s\n", hostNet, out)
... Error: Net namespace different with --net=host net:[4026532734] != net:[4026532796]

@estesp Yes sorry. The issue you are hitting is most likely related to the fact the first patch was not complete. You can find the complete patch here.

@estesp apologies on the delay. the net-mode=host was partly taken care in my first patch  https://github.com/docker/docker/pull/16305/files#diff-832e27741e70367e5566a720c88b8f32L404 by not using the external-key at all. if external-key is not used for a specific case, libnetwork rollback to the existing behavior. But, the issue that you are seeing is related to the incorrect handling in the native driver. I fixed it via : https://github.com/mavenugo/docker/commit/38931cb81e642498849dbdd42ebc84208bf79769 . This ofcourse requires no additional changes to libnetwork. please use this patch and test it out.

Thanks @mavenugo! Tested locally and --net=host is working perfectly now.  I have updated the PR and am running full tests locally given I don't think janky is back yet..

@estesp pls squash the commits. there is no point having a git history that changes between array to structure :)

@mavenugo I was keeping them separate as that gives you proper attribution for the original idea.. but I'm fine either way

@calavera this is ready for final review.. I have a full (successful) run locally and it looks like we might get a clean Windows run from Jenkins as well

@estesp I understand and appreciate it. am absolutely fine squashing it :)

@cpuguy83 updated; PTAL.  Also squashed commits per @mavenugo

LGTM

All green! Everything bad I said about you, janky, I take it all back :)

LGTM


Performance issues/expectations

Hi!
We're using Spear in production and are noticing that performance might be less than ideal. We're not sure where exactly the problem resides - Spear, EventStoreDB or the network.
Our flow is as follows:

load events from a stream (using SpearClient.stream!)
build the current state from the events
append new events to the same stream (using SpearClient.append)

Our SpearClient module is literally as simple as this:
defmodule SpearClient do
  use Spear.Client, otp_app: :our_app
end

All this takes consistently approx 100-120 ms on production, and almost as much locally. Which seems rather slow.

We have our app deployed on fly.io and the EventStoreDB instance on Event Store Cloud (deployed on Google Cloud in the same geographic region).
Locally EventStoreDB runs via docker compose (in OrbStack).

When isolated to just the Spear calls (no logic of our own), we see the following on localhost:

SpearClient.stream!("stream_with_300_events") |> Enum.into([]) - between 40 and 60 ms
SpearClient.stream!("stream_with_20_events") |> Enum.into([]) - between 20 and 40 ms
`SpearClient.append(new_events, "stream_with_300_events", expect: last_known_revision) - around 10ms
`SpearClient.append(new_events, "stream_with_20_events", expect: last_known_revision) - <5ms

In production append takes typically a bit less than stream! + Enum.into([], but still hovering around 50ms in majority of cases.
As a side note, relatively simple queries to PostgresSQL (deployed on Google Cloud too) only take around 3-5 ms on average.
Would it be possible to confirm that these timings are higher than expected? Anything else we could debug or try to speed it up?
Thanks in advance for any advise!

How difficult would it be to test it using the C# client to have a primary baseline of ESDB itself (to some extent)?

Here's a bit more info from our field testing:

we're now loading events using Spear.read_stream/3 instead of Spear.stream!/4 - this has resulted in approx 3x reduction of the average time to load 1 stream

this difference was not visible locally initially, but is very visible on our production setup
most of the "real" streams we have are rather short (ie typically only one read_stream call, with a reasonable :max_count, is necessary)
we also often read non-existing streams

@the-mikedavis, do you reckon it is possible to have similar performance characteristics between stream! and read_stream?

@the-mikedavis Assuming that both C# and Elixir clients are using the same endpoint (https://developers.eventstore.com/clients/grpc/reading-events.html#reading-from-a-stream) I would expect them to have the same latency.
do you think the C# client reads in a bigger batch by default?

I believe the C# client reads with effectively no limit and it's set rather low in Spear. You can try tuning that option but I don't think it should have an effect since individual read_stream calls are slow. I suspect this might be solved by tuning some options in gen_tcp/ssl or changing the Mint.HTTP2.stream call here to include the full request when possible. I should have some time later this week to test these ideas out

Sorry for the long delay! Things have been hectic lately.
I took a look at those packet captures and looking with a filter of http2.header I'm seeing similar numbers between Elixir and C# between the request and response:

Client
Req (sec)
Res (sec)
Time waiting (msec)

C#
0.015503
0.086402
70.899

Elixir
1.059172
1.093208
34.036

In the C# case the read took twice as long on the server but I see that occasionally happening locally too - it looks like the server has some sort of caching to speed up repeated reads so some take half as much time.
It's still looking to me like this latency is coming from the server and isn't really dependent on the client. Could you post a small reproduction repository or gist of the C# code you used in your test? I don't do much dotnet development so that would make it much easier for me to compare

Sorry for the late reply, @the-mikedavis.
Here's the dotnet code I've used for my timings: dotnet_esdb_timing.zip
It basically does something as simple as this:
var stream_name = "Document:134";

var settings = EventStoreClientSettings.Create("esdb://localhost:2113?tls=false");
var client = new EventStoreClient(settings);

var timer = new Stopwatch();
timer.Start();

var result = client.ReadStreamAsync(
  Direction.Forwards,
  stream_name,
  StreamPosition.Start
);

await foreach (var @event in result) {
  Console.WriteLine(@event.Event.EventType);
}
timer.Stop();

In the attached project this is actually done twice - the first run seems to be always quite slow (cold-start?).

I can reproduce the timing differences. With a similar Elixir script:
Mix.install [{:spear, path: "."}, {:jason, "~> 1.0"}]

{:ok, conn} = Spear.Connection.start_link(connection_string: "esdb://localhost:2113?tls=false")

stream_name = "Document:134"

start1 = :erlang.monotonic_time()
conn
|> Spear.stream!(stream_name, from: :start, direction: :forwards)
|> Enum.each(fn event ->
  IO.puts event.type
end)
end1 = :erlang.monotonic_time()

start2 = :erlang.monotonic_time()
conn
|> Spear.stream!(stream_name, from: :start, direction: :forwards)
|> Enum.each(fn event ->
  IO.puts event.type
end)
end2 = :erlang.monotonic_time()

IO.inspect(:erlang.convert_time_unit(end1 - start1, :native, :microsecond) / 1000, label: "read no. 1")
IO.inspect(:erlang.convert_time_unit(end2 - start2, :native, :microsecond) / 1000, label: "read no. 2")

I see ~90ms for the first read with dotnet and ~2-3ms for the subsequent read. With Spear I see ~130ms for the first read and ~80ms for the second.
I'll push up the change I mentioned earlier:

There is room for a small optimization in stream! to stop requesting from the server when it reads a chunk smaller than the requested chunk size. That would eliminate one extra request most of the time.

which improves the numbers a little: 80ms for the first read and ~25ms for the second.
I took some new packet captures comparing these and the HTTP/2 requests themselves seem very fast - for both Spear and dotnet I see the network request taking not more than 2ms for the second read. So the slow-down must be somewhere in either Mint, gpb or Spear.

I was curious about the chatty WINDOW_UPDATE frames so I took a look into Mint. Mint sends a WINDOW_UPDATE both for the request stream (i.e. the ReadReq) and for the whole connection. That's fine and fits the spec but it sends the WINDOW_UPDATE frames eagerly any time you handle a DATA frame in Mint.HTTP2.stream/2. It can also be wasteful because you might receive a big message with a bunch of DATA frames for the same stream and then a DATA frame or the trailing HEADERs frame with the End Stream flag set. For that case I don't think there's a need to send the WINDOW_UPDATE for the stream, just the connection.
I changed Mint to collect all of the window updates in a single call of Mint.HTTP2.stream/2 (or recv) and send single frames per-stream and one for the connection level: https://github.com/the-mikedavis/mint/commit/c77a13ae07a64680e2a5ac8027c05fced41ac87f. This didn't have any noticeable effect though, nor did commenting out the code to send WINDOW_UPDATE frames entirely. (I thought this might work since the dotnet packet capture contains no WINDOW_UPDATEs.)

Feel free to give #93 a try. This is not a very high priority problem for me so I will probably not look at this again for a little while. If you'd like to dig deeper I can recommend checking out packet captures with Wireshark and creating flamegraphs. Nothing stuck out to me as odd but you can look for yourself. Set up a script that reads from a reasonably long stream, have it print out its PID with System.pid/0 and wait on IO.gets/1, set export ERL_AFLAGS="+JPperf true", run the script and measure the perf data with perf record --pid '<pid of the script>' --freq 999 -g -- sleep 20. Then you can view a flamegraph in something like https://github.com/KDAB/hotspot which can read perf.data files.
It would also be interesting to try this with another HTTP/2 / GRPC client (for example gun, maybe https://github.com/elixir-grpc/grpc), protobuf definitions are here: https://github.com/EventStore/EventStore/blob/0af9906b39c9cd9fc6e301d5c4690b60b2fddcb1/src/Protos/Grpc/streams.proto. Or to eliminate protobuf (de)serialization altogether and try to just get the network request to be as fast as possible, to narrow down what exactly is slow.

Despite what I said above about putting this down for a while, I gave this another look today 😄
Here's a script of what I was thinking about above:
perf_test.exs
Mix.install([:mint, :event_store_db_gpb_protobufs])

defmodule Helper do
  @moduledoc "A module for recursive helper functions"

  def read_until_frame(conn, frame_type, acc \\ []) do
    {:ok, conn, responses} = Mint.HTTP.stream(conn, receive(do: (msg -> msg)))

    case :lists.keyfind(frame_type, 1, responses) do
      false ->
        read_until_frame(conn, frame_type, acc ++ responses)

      _frame ->
        {conn, acc ++ responses}
    end
  end

  def decode_all(data, acc \\ [])

  def decode_all(<<>>, acc), do: :lists.reverse(acc)

  def decode_all(
         <<0::unsigned-integer-8, message_length::unsigned-big-integer-8-unit(4),
           encoded_message::binary-size(message_length), rest::binary>>,
         acc
       ) do
    type = :"event_store.client.streams.ReadResp"
    decoded = :event_store_db_gpb_protobufs_streams.decode_msg(encoded_message, type)
    decode_all(rest, [decoded | acc])
  end
end

time = fn label, fun ->
  IO.write("#{label}: ")
  {time, value} = :timer.tc(fun)
  IO.puts("#{time / 1_000}ms")
  value
end

{:ok, conn} =
  time.("open connection", fn ->
    Mint.HTTP2.connect(
      :http,
      System.get_env("EVENTSTORE_HOST") || "localhost",
      2113,
      []
    )
  end)

conn =
  time.("ping/pong", fn ->
    {:ok, conn, ping_ref} = Mint.HTTP2.ping(conn)
    {conn, [{:pong, ^ping_ref}]} = Helper.read_until_frame(conn, :pong)
    conn
  end)

req_iodata =
  time.("encode message", fn ->
    msg =
      {:"event_store.client.streams.ReadReq",
       {:"event_store.client.streams.ReadReq.Options",
        {:stream,
         {:"event_store.client.streams.ReadReq.Options.StreamOptions",
          {:"event_store.client.StreamIdentifier", "Document:134"},
          {:start, {:"event_store.client.Empty"}}}}, :Forwards, true, {:count, 128},
        {:no_filter, {:"event_store.client.Empty"}},
        {:"event_store.client.streams.ReadReq.Options.UUIDOption",
         {:string, {:"event_store.client.Empty"}}},
        {:"event_store.client.streams.ReadReq.Options.ControlOption", 1}}}

    type = :"event_store.client.streams.ReadReq"
    encoded = :event_store_db_gpb_protobufs_streams.encode_msg(msg, type)
    length = byte_size(encoded)

    [
      <<0::unsigned-integer-8, length::unsigned-big-integer-8-unit(4)>>,
      encoded
    ]
  end)

{conn, request_ref} =
  time.("ReadReq request", fn ->
    headers = [
      {"te", "trailers"},
      {"content-type", "application/grpc+proto"},
      {"grpc-encoding", "identity"},
      {"grpc-accept-encoding", "identity,deflate,gzip"},
      {"accept-encoding", "identity"},
      {"user-agent", "grpc-elixir-spear/0.0.0 (mint 1.3.0; Elixir 1.15.7; OTP 25)"},
      {"authorization", "Basic YWRtaW46Y2hhbmdlaXQ="}
    ]

    {:ok, conn, request_ref} =
      Mint.HTTP2.request(
        conn,
        "POST",
        "/event_store.client.streams.Streams/Read",
        headers,
        :stream
      )

    {conn, request_ref}
  end)

conn =
  time.("ReadReq stream body", fn ->
    {:ok, conn} = Mint.HTTP2.stream_request_body(conn, request_ref, req_iodata)
    {:ok, conn} = Mint.HTTP2.stream_request_body(conn, request_ref, :eof)
    conn
  end)

{conn, responses} =
  time.("ReadReq await responses", fn ->
    Helper.read_until_frame(conn, :done)
  end)

Mint.HTTP2.close(conn)

responses =
  time.("decode response", fn ->
    all_data =
      Enum.reduce(responses, <<>>, fn
        {:data, ^request_ref, data}, acc ->
          acc <> data

        _, acc ->
          acc
      end)

    Helper.decode_all(all_data)
  end)

IO.inspect(responses, limit: 5, label: "events")

So we can time Mint and gpb independently. The results are a little surprising. This is against a stream with 20 events and a local eventstore container running without TLS:
$ elixir perf_test.exs
open connection: 12.558ms
ping/pong: 3.358ms
encode message: 18.89ms
ReadReq request: 12.586ms
ReadReq stream body: 0.013ms
ReadReq await responses: 11.335ms
decode response: 0.048ms
events: [
  "event_store.client.streams.ReadResp": {:event,
   {:"event_store.client.streams.ReadResp.ReadEvent", {...}, ...}},
  "event_store.client.streams.ReadResp": {:event,
   {:"event_store.client.streams.ReadResp.ReadEvent", ...}},
  "event_store.client.streams.ReadResp": {:event, {...}},
  "event_store.client.streams.ReadResp": {:event, ...},
  "event_store.client.streams.ReadResp": {...},
  ...
]

encode message (gpb's encode_msg/2) takes quite a bit longer than I thought it would. The ReadReq request (Mint.HTTP2.request/5) and ReadReq await responses (Mint.HTTP.stream/2) are also fairly slow and could be looked into separately.
I wouldn't be opposed to dropping the dependency on gdb (which we use via event_store_db_gpb_protobufs) in favor of something in-tree if it can boost performance reasonably well. We only handle a few slow-changing protobuf definitions from upstream so we don't necessarily need a general purpose protobuf encoder/decoder. I imagine that this would take a fair amount of work to change though.

@the-mikedavis, thank you for looking into that.
I'm quite surprised with the  ReadReq request and ReadReq await  performance. Surely that isn't because Mint is inherently slow, isn't it?

I took a look into the Mint.HTTP2.request/5 part and there are some easy wins to speed that up: https://github.com/elixir-mint/mint/pull/423
I also looked at splitting the timing up for receive/1 and Mint.HTTP.stream/2:
perf_test.exs
Mix.install([{:mint, path: "~/src/mint"}, :event_store_db_gpb_protobufs])
# Mix.install([:mint, :event_store_db_gpb_protobufs])

defmodule Helper do
  @moduledoc "A module for recursive helper functions"

  def time(label, fun) do
    {time, value} = :timer.tc(fun)
    IO.puts("#{label}: #{time / 1_000}ms")
    value
  end

  def read_until_frame(conn, frame_type, acc \\ []) do
    message = time("\treceive message", fn -> receive(do: (msg -> msg)) end)
    {:ok, conn, responses} = time("\tMint.HTTP.stream/2", fn -> Mint.HTTP.stream(conn, message) end)

    case :lists.keyfind(frame_type, 1, responses) do
      false ->
        read_until_frame(conn, frame_type, acc ++ responses)

      _frame ->
        {conn, acc ++ responses}
    end
  end

  def decode_all(data) do
    decode_all(data, [])
  end

  defp decode_all(<<>>, acc), do: :lists.reverse(acc)

  defp decode_all(
         <<0::unsigned-integer-8, message_length::unsigned-big-integer-8-unit(4),
           encoded_message::binary-size(message_length), rest::binary>>,
         acc
       ) do
    type = :"event_store.client.streams.ReadResp"
    decoded = :event_store_db_gpb_protobufs_streams.decode_msg(encoded_message, type)
    decode_all(rest, [decoded | acc])
  end
end

{:ok, conn} =
  Helper.time("open connection", fn ->
    Mint.HTTP2.connect(
      :http,
      System.get_env("EVENTSTORE_HOST") || "localhost",
      2113,
      []
    )
  end)

conn =
  Helper.time("ping/pong", fn ->
    {:ok, conn, ping_ref} = Mint.HTTP2.ping(conn)
    {conn, [{:pong, ^ping_ref}]} = Helper.read_until_frame(conn, :pong)
    conn
  end)

req_iodata =
  Helper.time("encode message", fn ->
    msg =
      {:"event_store.client.streams.ReadReq",
       {:"event_store.client.streams.ReadReq.Options",
        {:stream,
         {:"event_store.client.streams.ReadReq.Options.StreamOptions",
          {:"event_store.client.StreamIdentifier", "Document:134"},
          {:start, {:"event_store.client.Empty"}}}}, :Forwards, true, {:count, 128},
        {:no_filter, {:"event_store.client.Empty"}},
        {:"event_store.client.streams.ReadReq.Options.UUIDOption",
         {:string, {:"event_store.client.Empty"}}},
        {:"event_store.client.streams.ReadReq.Options.ControlOption", 1}}}

    type = :"event_store.client.streams.ReadReq"
    encoded = :event_store_db_gpb_protobufs_streams.encode_msg(msg, type)
    length = byte_size(encoded)

    [
      <<0::unsigned-integer-8, length::unsigned-big-integer-8-unit(4)>>,
      encoded
    ]
  end)

{conn, request_ref} =
  Helper.time("ReadReq request", fn ->
    headers = [
      {"te", "trailers"},
      {"content-type", "application/grpc+proto"},
      {"grpc-encoding", "identity"},
      {"grpc-accept-encoding", "identity,deflate,gzip"},
      {"accept-encoding", "identity"},
      {"user-agent", "grpc-elixir-spear/0.0.0 (mint 1.3.0; Elixir 1.15.7; OTP 25)"},
      {"authorization", "Basic " <> Base.encode64("admin:changeit")}
    ]

    {:ok, conn, request_ref} =
      Mint.HTTP2.request(
        conn,
        "POST",
        "/event_store.client.streams.Streams/Read",
        headers,
        :stream
      )

    {conn, request_ref}
  end)

conn =
  Helper.time("ReadReq stream body", fn ->
    {:ok, conn} = Mint.HTTP2.stream_request_body(conn, request_ref, req_iodata)
    {:ok, conn} = Mint.HTTP2.stream_request_body(conn, request_ref, :eof)
    conn
  end)

{conn, responses} =
  Helper.time("ReadReq await responses", fn ->
    Helper.read_until_frame(conn, :done)
  end)

Mint.HTTP2.close(conn)

responses =
  Helper.time("decode response", fn ->
    all_data =
      Enum.reduce(responses, <<>>, fn
        {:data, ^request_ref, data}, acc ->
          acc <> data

        _, acc ->
          acc
      end)

    Helper.decode_all(all_data)
  end)

IO.inspect(responses, limit: 5, label: "events")

Results:
open connection: 7.469ms
	receive message: 0.0ms
	Mint.HTTP.stream/2: 2.182ms
	receive message: 0.0ms
	Mint.HTTP.stream/2: 0.005ms
ping/pong: 2.277ms
encode message: 17.555ms
ReadReq request: 2.433ms
ReadReq stream body: 0.016ms
	receive message: 20.523ms
	Mint.HTTP.stream/2: 0.07ms
	receive message: 0.0ms
	Mint.HTTP.stream/2: 0.076ms
	receive message: 0.0ms
	Mint.HTTP.stream/2: 0.015ms
ReadReq await responses: 20.738ms
decode response: 0.047ms
events: [
  "event_store.client.streams.ReadResp": {:event,
   {:"event_store.client.streams.ReadResp.ReadEvent", {...}, ...}},
  "event_store.client.streams.ReadResp": {:event,
   {:"event_store.client.streams.ReadResp.ReadEvent", ...}},
  "event_store.client.streams.ReadResp": {:event, {...}},
  "event_store.client.streams.ReadResp": {:event, ...},
  "event_store.client.streams.ReadResp": {...},
  ...
]

So it looks like the awaiting responses part is dominated by waiting for the message from the gen_tcp process. That would take a lot more digging to figure out but it does seem like a pretty long wait.

@the-mikedavis I think that might be it. Just saw https://brooker.co.za/blog/2024/05/09/nagle.html a couple days ago and thought about NODELAY :)


Feature: Voting needs context

Type of feature
🍕 Feature
Current behavior
When clicking the button there is no context to what and why this exists. My suggestion is to remove the "voting feature" and instead allow users to add items to an insight page.
https://github.com/open-sauced/ai/assets/5713670/7b048e9b-caef-4e38-badc-5a33992697fc
Suggested solution

Voted repos should have a solid or colored check with a circle
Items not voted should have the circle not colored or filled in.
Check should move to the left.
Add the context of votes from the user to the dropdown.

Additional context
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

Contributing Docs

[ ] I agree to follow this project's Contribution Docs

Vote feature also broke alignment on small screens

Closing since we scraped off the Voting feature entirely (for now?).


feat: Add support for Github Enterprise

Closes #125

@yeikel for some reason this doesn't work, I also tried it in another branch and in a private repository, I always get Error: Not Found. E.g. this current PR or this one: https://github.com/ScaCap/action-surefire-report/pull/127
Did you try it with an enterprise base URL?

@yeikel for some reason this doesn't work, I also tried it in another branch and in a private repository, I always get Error: Not Found. E.g. this current PR or this one: #127
Did you try it with an enterprise base URL?

That's strange. In my experience 404 errors in Github tend to be about lack of permissions but in this scenario it could be something else
Yes, I tested it in a private instance of GHE and it is working as expected

Can we try adding debug logs to see what is the url is trying in your test?
See : https://actions-cool.github.io/octokit-rest/guide/12_debug/

I tested the latest conditional logic pushed with 56ed3ba196403f5cd0ead2495fdf17b28719c4c1 both with Github.com: https://github.com/yeikel/action-surefire-report/actions/runs/4153632808/jobs/7185381214 and with a private instance of GHE and that seems to work
I am not entirely sure why setting the github.com API URL directly results in authentication errors though.

Thanks for fixing!

Thank you for reviewing. Please let me know if you have any additional feedback 🚀


Use refs for thenOrRunNow in sockets.

Context https://github.com/cloudflare/workerd/pull/205#discussion_r1046221017.
Just a little cleanup PR, split it off to allow the other to move faster (hopefully).
Test Plan
$ bazel test //src/edgeworker/tests:sockets/sockets-tcp-test.ew-test-bin --config=asan

Can we delete this class and use kj::newPromisedStream() instead?


Launcher failed to start

What you were trying to do
What actually happened
How to reproduce

Step 1
Step 2
Step 3

Log details and game version
Computer details

not enough details


🐞can't run an action because of missing input in another action

Problem

Good: dagger do now checks for missing values before running an action, which saves me time by catching errors early.
Bad: dagger do checks for missing values in all actions, even those I am not currently trying to run.

Additional notes:

Actions can leave incomplete values intentionally. Thanks to the missing value check, this becomes the equivalent of a mandatory command-line parameter. For example dagger do deploy may fail with "please specify a site ID", which can be solved with `dagger do deploy --site MY_ID". However this pattern only works if the checking is limited to only the actions that will be run.

Solution
When checking for missing values, exclude actions that won't be run.
Details
What I did

Setup a new project to reproduce

cd $(mktemp -d)
dagger project init

Add repro config

cat > repro.cue <<-EOF
package main

import (
        "dagger.io/dagger"
        "dagger.io/dagger/core"
)

dagger.#Plan & {
        actions: {
                build: core.#Nop & {
                        input: dagger.#Scratch
                }
                deploy: {
                        site: string
                        command: core.#Nop & {
                                input: dagger.#Scratch
                        }
                }
        }
}
EOF

Install deps

dagger project update

Run build action

dagger do build

What I expected to see
Expected output for step 4:
$ dagger do build
[✔] actions.build                                                                                0.0s

What I see instead
Actual output of step 4:
$ dagger do build
failed to load plan: "actions.deploy.site" is not set:
    ./repro.cue:13:3
    ./repro.cue:14:4

Usage:
  dagger do [flags]

Flags:
      --cache-from stringArray   External cache sources (eg. user/app:cache, type=local,src=path/to/dir)
      --cache-to stringArray     Cache export destinations (eg. user/app:cache, type=local,dest=path/to/dir)
  -h, --help                     help for do
      --no-cache                 Disable caching
  -p, --plan string              Path to plan (defaults to current directory) (default ".")
      --platform string          Set target build platform (requires experimental)
  -w, --with stringArray
Global Flags:
      --experimental        Enable experimental features
      --log-format string   Log format (auto, plain, tty, json) (default "auto")
  -l, --log-level string    Log level (default "info")

Added some context here: https://github.com/dagger/dagger/pull/2372#issuecomment-1113867006
In summary, this is very hard to do.
The whole validation system was a major headache to pull off. It runs off many assumptions. One of those is it must walk the entire tree, top-down.
The "chunks of CUE" that are going to be pulled in to execute a single action are an unknown quantity.
I'm not just talking about "task dependencies", I also mean the bits of CUE that are needed to evaluate an action and might not be part of an action themselves.


RATIS-2064. Bump Netty to 4.1.109

What changes were proposed in this pull request?
Bump Netty to latest (4.1.109 currently).
I had to tweak cipher list in tests to make GrpcSslTest to pass.  It was failing with StacklessSSLHandshakeException: Connection closed while SSL/TLS handshake was in progress due to one of the changes in Netty 4.1.108 related to SSL.
https://issues.apache.org/jira/browse/RATIS-2064
How was this patch tested?
CI:
https://github.com/adoroszlai/ratis-thirdparty/actions/runs/8877229601

Thanks @szetszwo, @SzyWilliam for the review.


Replace usage of deprecated auto_ptr

Since we now require compiler support for C++11, deprecation warnings show up with regards to our usage of auto_ptr. These should be replaced by either std::shared_ptr or std::unique_ptr depending on what was the intended scope of the smart pointer.

All uses of auto_ptr are most likely in my code and the use case is always the one of a unique_ptr mainly within the main source file of command-line tools.


Getting error on "make bootstrap"

Getting below error on "make bootstrap":
`git submodule sync --recursive
Synchronizing submodule url for 'vendor/material-design-icons'
git submodule update --init --recursive || true
git submodule foreach git checkout
Entering 'vendor/material-design-icons'
Copy java secrets over. Fallback to example secrets if they don't exist.
(Skipping secrets.)
cp vendor/native-secrets/android/Secrets.java app/src/main/java/com/kickstarter/libs/utils/Secrets.java
|| cp app/src/main/java/com/kickstarter/libs/utils/Secrets.java.example app/src/main/java/com/kickstarter/libs/utils/Secrets.java
cp: cannot stat ‘vendor/native-secrets/android/Secrets.java’: No such file or directory
cp vendor/native-secrets/ruby/secrets.rb lib/milkrun/secrets.rb || true
cp: cannot stat ‘vendor/native-secrets/ruby/secrets.rb’: No such file or directory
cp vendor/native-secrets/fonts/ss-kickstarter.otf app/src/main/assets/fonts/ss-kickstarter.otf || true
cp: cannot stat ‘vendor/native-secrets/fonts/ss-kickstarter.otf’: No such file or directory
Copy kola configs over. Fallback to examples if they don't exist.
mkdir -p app/src/debug/res/values/
mkdir -p app/src/main/res/values/
cp vendor/native-secrets/android/koala_endpoint_debug.xml app/src/debug/res/values/koala_endpoint.xml
|| cp config/koala_endpoint.xml.example app/src/debug/res/values/koala_endpoint.xml
cp: cannot stat ‘vendor/native-secrets/android/koala_endpoint_debug.xml’: No such file or directory
cp vendor/native-secrets/android/koala_endpoint.xml app/src/main/res/values/koala_endpoint.xml
|| cp config/koala_endpoint.xml.example app/src/main/res/values/koala_endpoint.xml
cp: cannot stat ‘vendor/native-secrets/android/koala_endpoint.xml’: No such file or directory
Copy web client over.
cp -rf vendor/native-secrets/android/WebViewJavascriptInterface.java app/src/main/java/com/kickstarter/libs/WebViewJavascriptInterface.java
|| cp -rf config/WebViewJavascriptInterface.java app/src/main/java/com/kickstarter/libs/WebViewJavascriptInterface.java
cp: cannot stat ‘vendor/native-secrets/android/WebViewJavascriptInterface.java’: No such file or directory
cp -rf vendor/native-secrets/android/KSWebViewClient.java app/src/main/java/com/kickstarter/services/KSWebViewClient.java
|| cp -rf config/KSWebViewClient.java app/src/main/java/com/kickstarter/services/KSWebViewClient.java
cp: cannot stat ‘vendor/native-secrets/android/KSWebViewClient.java’: No such file or directory
mkdir -p app/src/main/assets/www/
cp vendor/native-secrets/android/WebViewJavascript.html app/src/main/assets/www/WebViewJavascript.html || true
cp: cannot stat ‘vendor/native-secrets/android/WebViewJavascript.html’: No such file or directory
./script/bootstrap
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
find: warning: you have specified the -depth option after a non-option argument -name, but options are not positional (-depth affects tests specified before it as well as those specified after it).  Please specify options before other arguments.
find: paths must precede expression: 1
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
E:\android\examples\android-oss\script\bootstrap: line 28: bundle: command not found
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
cp: cannot stat ‘vendor/native-secrets/android/externalMin21Debug/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/externalPre21Debug/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/externalMin21Release/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/externalPre21Release/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/internalMin21Debug/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/internalPre21Debug/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/internalMin21Release/google-services.json’: No such file or directory
cp: cannot stat ‘vendor/native-secrets/android/internalPre21Release/google-services.json’: No such file or directory
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
mv: cannot move ‘/tmp/pidcat’ to ‘/usr/local/bin/pidcat’: No such file or directory
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
E:\android\examples\android-oss\script\bootstrap: line 5: ruby: command not found
make: *** [bootstrap] Error 127
`

Our bootstrap is pretty tightly coupled to the way we work as a team, which means it mostly only supports macOS and requires some things to be installed first like ruby. We don't have any plans to make a more universal bootstrap, so it might require you to perform some of the steps manually in a console.
Sorry about that!
Gonna close for now, but let us know you have more questions...

I have some problem... still  can't solve it.
Wonder if @amitsri20 have solution.


Add onMouseOver Prop to MenubarTrigger for Mouse Hover Menu Expansion

Is your feature request related to a problem? Please describe.
No a bug
Describe the solution you'd like
I am using the MenubarTrigger component in my project and have a requirement to expand the MenubarItem when the mouse hovers over the MenubarTrigger, not just on click.
Currently, the MenubarTrigger component listens for a click event to expand the MenubarItem. I'm interested in having an additional prop, let's call it onMouseOver, that when set to true, enables the MenubarItem to expand when the mouse hovers over the MenubarTrigger.
The expected behavior would look something like this:
<MenubarTrigger
    onMouseOver={true} // new prop
    class="py-2 px-3 outline-none select-none font-semibold leading-none rounded text-grass11 text-[13px] flex items-center justify-between gap-[2px] data-[highlighted]:bg-green4 data-[state=open]:bg-green4"
>
  Edit
</MenubarTrigger>

Describe alternatives you've considered
With this prop set to true, when the mouse hovers over the MenubarTrigger, the MenubarItem would expand as if the MenubarTrigger had been clicked.
This feature would give developers more flexibility when designing their user interface, allowing for either click or hover interactions to expand the menu.
Please let me know if there's any additional information you need for this feature request. I appreciate your consideration.
Additional context
Add any other context or screenshots about the feature request here.

Hi thank you, the Menubar state is able to be controlled, meaning you can control the state manually, and able to put a reactive value to choose which menubar item should be opened however you want. So I think what you can do is, create a function to manage the menubar state and handle it via the hover event:
<script setup>
ref menubarValue = ref('')

function openMenubar(item) {
  menubarValue.value = item
}
</script>

<template>
  <MenubarRoot @mouseout="openMenubar('')">
    <MenubarMenu value="item-1">
      <MenubarTrigger @mouseover="openMenubar('item-1')"></MenubarTrigger>
    </MenubarMenu>
    <MenubarMenu value="item-2">
      <MenubarTrigger @mouseover="openMenubar('item-2')"></MenubarTrigger>
    </MenubarMenu>
  </MenubarRoot>
</template>

lmk is this doesnt work


PowerOn Password and SOS flashlight

Hey, maybe I'm doing something wrong and/or I'm misunderstanding, but I have two problems.

The flashlight in the third mode (third click) should transmit an SOS signal, I think, but unfortunately it transmits 4x short -> 3x long -> 4x short.
Unfortunately, for some reason the poweron password simply disappears from the configuration, even though I set it in the software.  After uploading it to the device, I don't have this password, and after reading the data again, the password is no longer there.

Show a video of the SOS

What version does it show on the radio startup?

IMHO the only issue with SOS is lack of pauses between letters - instead of "tititi tatata titi"  led transmits "titititatatatititi".

There are no pauses, read up on how SOS should be transmitted

Sure, I'm sending it now.  However, when I have recorded it, I noticed that the count of blinks is good, but there is no delay between the "letters".  Overall, this flashlight is not a big deal.

Uploading VID_20231230_154543.mp4…

But still, I still have some problem with PowerOn Password.
Ofc it can be my fault but idk why it doesn't want work.

You didn't send anything. At least tell what firmware you are using. It seems that you are using some old firmware and a one that has no power on password functionality built in.

read up how SOS should be transmitted

Oops, my bad. One must live long to learn...

Well, from about 15 minutes I have "Uploading VID_20231230_154543.mp4…" so maybe it will send in a few years xD
My firmware is EGZUMER v0.21 running on UV-K5(8)

There is no power on password built in the official release. Did you build your own version?

By "official" you mean your official or the manufacturer official?
And no, I didn't build anything own.

You've got your answer then. There also should be no password field in chirp if you download configuration from the radio.

Okay then. Maybe you want to try implementing it? :D The original software allows to enter a password. Obviously, it's not a great security measure, but it limits access to the device a little bit.

And thanks for answers. <3

It is implemented. It is not included. If you want that feature you have to do the build on your own. All you need is in the readme.


The output I get looks very weird to me

Trying prefixspan-0.5.2 with python 3.6.8
I am running prefixspan-cli frequent 5 --closed ids.txt  > seqs.ids
ids.txt:  https://gist.github.com/johann-petrak/9d07e3bacd167639c26defb822dbe6aa
seqs.ids: https://gist.github.com/johann-petrak/7db1b94153816075556798db1d068069
If you look at the line 4 from the bottom, this is "34 1 0 2 : 6" and the next line is
"34 0 2 : 8".
If you look at the input you will notice that "34 0 2" does not occur anywhere in the input, so why is it included in the output with frequency 8?

So I looked over the input you indicated and I found 8 instances of the pattern "34 0 2" :
line 65:     34 1 0 2 8
line 67:     34 1 0 2 9
line 69:     34 1 0 2 3
line 164:   34 1 0 2 8
line 168:   4 34 1 0 2 9
line 174:   4 34 25 0 35 2 3 32 2 8
line 305:   34 1 0 2 8
line 473:   34 71 0 2 3 72 0 25 2 3 27 61
I also found the 6 instances for pattern "34 1 0 2"

Yes, I was initially also confused by this, in any sequential pattern mining algorithm, that the definition of a subsequence works with gaps.
So as @VBota1 said, 34 0 2 is a subsequence of e.g. 34 1 0 2 8, even though it does not appear literally in it, the elements occur in the right order, given gaps with interspersed other items.

Close as it seems already answered. Thanks for explanation.
Please also recheck as I just merged a fix for closed algorithm #14. Thanks.

My expectation would have been that unless the size and number of gaps are specified, no gaps would be allowed. In many situations one just wants proper subsequences without gaps, in other situations e.g. subsequences with at most 1 gap of at most 2 elements etc.
But this algorithm does not seem to have a command line option to control this and I did also not see a mention about what the default settings are.
But clearly id does not make much sense in many applications to allow any number of gaps of any size.

@johann-petrak I suggest you read this survey about sequential pattern mining [Fournier-Viger et al., 2017]. The introduction describes what sequential patterns are in general, and why gap constraints are not universally needed, and there are also short descriptions of the various algorithms and their parameters.
Also the papers of PrefixSpan [Pei et al., 2004], BIDE [Wang et al., 2007] and FEAT [Gao et al., 2008] are of course interesting.
This repository merely provides efficient implementations of these algorithms.


Baseline Testing: Reload Count

Since we need to reload NGINX to apply config updates, come up with some configuration and change it over time. Ensure that next releases doesn't increase the number of observed reloads.

Blocked by #887

We are already checking reloads as a part of our other NFR testing.


Fix #727

Description
Fixes the issue detailed in #727.
This removes the ability to pass a placeholder via config to select elements - the implementation was confusing and semantically it is better to pass an option element. It also removes placeholder choices from the choices list for select multiple elements.
Screenshots (if appropriate)
Types of changes

[ ] Chore (tooling change or documentation change)
[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)

Checklist

[x] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[x] I have updated the documentation accordingly.

@jshjohnson IE is green :tada:
download the puppeteer artifact, inspect and replace it as part of this PR

@jshjohnson IE is green 🎉
download the puppeteer artifact, inspect and replace it as part of this PR

🎉 if you can think of a better solution to https://github.com/jshjohnson/Choices/pull/731/commits/59840d14c694ce93f33d978124eab321e8705763 let me know :D i've run out of free cypress recordings for the month

@jshjohnson IE is green 🎉
download the puppeteer artifact, inspect and replace it as part of this PR

🎉 if you can think of a better solution to 59840d1 let me know :D i've run out of free cypress recordings for the month

Sure: did you apply to https://www.cypress.io/oss-plan/ ?

@jshjohnson So, we are gonna have next major soon? I have a couple of breaking changes in mind...

@jshjohnson So, we are gonna have next major soon? I have a couple of breaking changes in mind...

Unfortunately yes. Feel free!

Sure: did you apply to https://www.cypress.io/oss-plan/ ?

I've applied now 🎈

Sorry guys but the fix made the things even more confusing.
What if I want to be able to select an empty options, in multiple list?
<select multiple>
  <option value="11">Option 1</option>
  <option value="">Option 2</option>
</select>

After the fix <option value="">Option 2</option> will be considered as placeholder that is wrong.
An additionally, when I build the same with AJAX.

What if I want to be able to select an empty options, in multiple list?

Why would you want to do that? That's the equivalent of selecting nothing 🤔

That's the equivalent of selecting nothing

to select a "nothing" ;)
but it not a nothing:
<select multiple>
  <option value="11" selected>Option 1</option>
  <option value="" selected>Option 2</option>
</select>

will give you: ["11", ""] that is a "something"


Molar Concentration Calculator

Enter calculator name -
Molar Concentration Calculator
Describe calculator functionality -
The Molar Concentration Calculator is a chemical tool used to calculate the molar concentration of a solute in a solution. Molar concentration refers to the amount of solute in a solution per unit volume (typically in liters).
Here is a detailed description of the Molar Concentration Calculator:
Input:
Moles of Solute: Enter the number of moles of the solute, representing the amount of solute in the solution.
Volume of Solution: Enter the volume of the solution, usually in liters (L).
Calculation Formula:
The calculation formula for molar concentration (M) is:
Molar Concentration (M) = Moles of Solute / Volume of Solution
Output:
The calculator will provide the result of the molar concentration and display it in moles per liter (mol/L).
When using the Molar Concentration Calculator, the user needs to provide the number of moles of the solute and the volume of the solution. The calculator will perform the calculation based on the input values and provide the result of the molar concentration.
Under which category you wish to place it -

[ ] Computer Science
[ ] Mathematics
[ ] Physics
[x] Chemistry
[ ] Biology
[ ] Art
[ ] Finance
[ ] Scientific
[ ] Health
[ ] Games/Sports
[x] Let project owner decide
[ ] Suggest a new category - (Answer here)

Kindly assign this issue to me

@1520229462,
Abiding by the contribution policy, not more than 2 issues can be assigned at a time.
Kindly comment once the previous issues are merged.

Kindly assign this to me

Hey @Upadhyay-Harshit,
Assigned.
You may contribute your code under the folder path -
calc_for_everything\calculators\src\chemistry\molarConcentrationCalc
Issue completion deadline - 31st Oct 11:00:00 pm IST
NOTE - In case the issue completion deadline is not met, the issue will be assigned to a new participant

kindly assign this to me @SarthakKeshari

@wuhue,
This issue is already assigned. Its Last 3 hours of Hacktoberfest. Kindly take up another issue and create a PR.

@Upadhyay-Harshit ,
Since the issue completion deadline is crossed,
Issue has been unassigned.
Kindly do not create a PR for the issue now.


Update stable version in repo from 0.6.1 to 0.6.2

Think about update stable version to 0.6.2
Version: stable=0.6.1 (106 days old) => latest=0.6.2 (21 days old)
Installs: stable=726 (56.63%), latest=70 (5.46%), total=1282
Click to use developer portal
Click to edit
Do not close this issue manually as a new issue will be created if condition for update still exists.
Please drop a comment if any reason exists which blocks updating to version 0.6.2 at this time.
Note: This is an automatically generated message and not personally authored by bluefox!
@mcm1957 for evidence

This issue seems to be outdated.
This issue suggests to update the stable version of this adapter to 0.6.2 but the current stable version is already 0.6.2.
So this issue should be closed.
@mcm1957 for evidence


Interrupting swipe back animation on Stack view layout

Motivation
Being able to detect and interrupt swipe back animation on Stack navigator
Change
Adding onActionBeforeSwipeBack in navigation config, with the following object:
{ onContinue:() => void, onCancel: () => void }

where onContinue() will continue the swipe back animation and onCancel() will reset back to the original screen.
Example gif

Example code snippet
You can view it here

this won't work in the future when we use reanimated for gestures, i think it's better to use gesturesEnabled and set to false instead. does that handle your use case?

My intention is to show a confirm dialog (like Alert) when the user swipe back. We still wants the user to experience swipe gesture.

would something like this work for you? https://github.com/brentvatne/react-navigation-workshop-examples/blob/d90687777a95599a32e395f9e16aae642f5a8ee5/example/sections/Stack.js#L218-L231

Hi @brentvatne, sorry for getting back to you this late. The snippet you send me doesn't work for my use case. The back action dispatched only after the animation finished. My use case requires interrupting animation before going back.

I have the same need. No need to support the use case if it's not easy, just wanted to chime in.

@jparkrr thank you for the interest. If you want to use the feature, please use this commit https://github.com/hoangpham95/react-navigation/commit/0ff2de6c49167de1d86f48560cada94d609b8c78 , and possibly contribute issues/feedback if you found any bugs.


Could not find package bolt/members

hi,
I have tried to install bolt member on bolt 3.0.11. But i have got error like this...
Could not find package bolt/members at any version for your minimum-stability (stable). Check the package spelling or your minimum-stability
File: /vendor/bolt/bolt/src/Composer/Action/BaseAction.php::198
Thanks.

There is no stable version of Members yet, you will need to lower the stability level in config.yml


chore(package.json): update native and app-scripts

Update app-scripts and native packages

Hello, thanks for opening a PR with us! While we greatly appreciate this pull request, after the update to ionic-angular 3.1.0 this morning and me merging your other PR a second ago I am going to close this PR for now as it is not really needed anymore. Thanks for contributing to Ionic!


Undertow 1.2.4.Final

Linux Build 1748 is now running using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b

Windows Build 1312 is now running using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b

Core - Full Integration Build 904 is now running using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b

Windows Build 1312 outcome was SUCCESS using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b
Summary: Tests passed: 3101, ignored: 66 Build time: 0:20:19

Linux Build 1748 outcome was SUCCESS using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b
Summary: Tests passed: 3101, ignored: 66 Build time: 0:22:28

Core - Full Integration Build 904 outcome was SUCCESS using a merge of c0c9788bdd061c29bb52abd4f6511e85bd2e7b1b
Summary: Tests passed: 2857, ignored: 373 Build time: 0:48:31


Issue45 FAQ Block : Accordian like faq block

Fix #45
🔗 Test URLs:
Before: https://main--caesars--hlxsites.hlx.page/caesars-palace/drafts/jfait/faq
After: https://issue-45-faq-block--caesars--hlxsites.hlx.page/caesars-palace/drafts/jfait/faq
Live Example:  https://www.caesars.com/caesars-palace/things-to-do/garden-of-the-gods-pool-oasis#894cd7a7-8e63-3d2f-9c22-236cb2dcda8e
📝 Description:
FAQ block with css and js (decoration and interactivity to expand and collapse)

Updated linting and vars.
Currently allows for any number of answers to be open (site forces only 1).
Will log issue to revisit the only1


Unable to use USelectMenu in UInput #leading

Environment

Operating System: Darwin
Node Version:     v20.10.0
Nuxt Version:     3.11.2
CLI Version:      3.11.1
Nitro Version:    2.9.6
Package Manager<EMAIL_ADDRESS>Builder:          -
User Config:      devtools, typescript, srcDir, routeRules, runtimeConfig, sourcemap, vite, nitro, components, css, imports, modules, i18n, veeValidate
Runtime Modules<EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS><EMAIL_ADDRESS>Build Modules:    -

Version
v2.15.1
Reproduction
https://stackblitz.com/edit/nuxt-ui-mxbinm?file=app.vue
Description
I'm unable to use a select menu in the leading slot of an input.
E.g a USelectMenu in the #leading of a UInput.
Example usage would be mobile number input with country dropdown in the leading, as shown in the stackblitz.
Thanks!
Additional context
No response
Logs
No response

Why not use a ButtonGroup for this? https://ui.nuxt.com/components/button#group

oh that's just beautiful, I didn't scroll down in the button docs far enough to see that was an option. Thank you so much!


Earth_Guardian game added

PR Description 📜
I have added a game called Earth_Guardian , this is a remake of classic space shooter game. This game offers a very user friendly interface, interesting music and game experience.
Fixes #3191

Mark the task you have completed ✅

[X] I follow CONTRIBUTING GUIDELINE & CODE OF CONDUCT of this project.
[X] I have performed a self-review of my own code or work.
[X] I have commented my code, particularly in hard-to-understand areas.
[X] My changes generates no new warnings.
[X] I have followed proper naming convention showed in CONTRIBUTING GUIDELINE
[X] I have added screenshot for website preview in assets/images
[X] I have added entries for my game in main README.md
[X] I have added README.md in my folder
[X] I have added working video of the game in README.md (optional)
[X

] I have specified the respective issue number for which I have requested the new game.

Add your screenshots(Optional) 📸

Thank you soo much for contributing to our repository 💗

Thank you @Pujan-sarkar ,for creating the PR and contributing to our GameZone 💗
Review team will review the PR and will reach out to you soon! 😇
Make sure that you have marked all the tasks that you are done with ✅.
Thank you for your patience! 😀

@kunjgit  I have added the game in README  file , please check it.

Thank you  @Pujan-sarkar , for your valuable time and contribution in our GameZone 💗.
It’s our GameZone, so Let’s build this GameZone altogether !!🤝
Hoping to see you soon with another PR again 😇
Wishing you all the best for your journey into Open Source🚀


BUG: load css via https

closes #66

Coverage decreased (-0.06%) to 97.176% when pulling e217dc287037932aab7e25a4b5036838a151dd09 on https into 9ce0e7e529fb9a5b008c12077926cb03733f834f on master.

Coverage decreased (-0.06%) to 97.176% when pulling e217dc287037932aab7e25a4b5036838a151dd09 on https into 9ce0e7e529fb9a5b008c12077926cb03733f834f on master.

Coverage decreased (-0.06%) to 97.176% when pulling e217dc287037932aab7e25a4b5036838a151dd09 on https into 9ce0e7e529fb9a5b008c12077926cb03733f834f on master.


Resolves selection of a node after edit in Automate tree

Automate -> Explorer -> Select a Method node -> Configuration -> Edit this Method -> Save changes -> Select another node
Before: couldn't select a node after editing a method
After: can select a node after editing a method
Closes #11301
@miq-bot  add_label ui, bug

@ZitaNemeckova @h-kataria
The editing and switching is better but the Copy Instance is still hanging.

@ZitaNemeckova it looks like code in open_parent_nodes method is causing the screen to hang when Copying an instance.

@ZitaNemeckova @h-kataria
Another issue I have noticed is when you have multiple domains and you try to edit their properties one after the other. The second and third edits show the first domain that the user edited.

@ZitaNemeckova @mkanoor issue reported with copy of instance should be taken care of in https://bugzilla.redhat.com/show_bug.cgi?id=1380485 this PR fixes the originally reported issue in https://github.com/ManageIQ/manageiq/issues/11301

Euwe Backport details:
$ git log
commit 1cf9cd98b072c736e5700c4301e96bb4cdb9da89
Author: Harpreet Kataria<EMAIL_ADDRESS>Date:   Thu Sep 29 14:16:02 2016 -0400

    Merge pull request #11478 from ZitaNemeckova/tree_bug

    Resolves selection of a node after edit in Automate tree
    (cherry picked from commit ea25f0d264c9621831fe2fe0636feb15625fd0fe)


JN-725: editing the nav logo

DESCRIPTION
This enables editing of the nav logo and the primary brand color from the SiteContentEditor

Clicking the "Branding" button pulls up a dialog

This is bare-bones, no error-checking, mainly intended for internal use when setting up a study just so we don't have to go to the database.  I thought about a color picker for brand color, but I'm not sure it would actually be used -- AFAIK all our past customers already had a brand color (or Erin chose one), and so exact typing is strongly preferred to picking.
To make testing easier, I added a link to the participant view from the SiteContentEditor.  If you press it with unsaved changes, an alert pops up letting you know that the preview will not show unsaved changes.

This SiteContent editor is starting to get very noisy, I suspect it doesn't have room for many more controls before it will need some consolidation/rearrangement
TO TEST:  (simple manual steps for confirming core behavior -- used for pre-release checks)

Go to https://localhost:3000/ourhealth/studies/ourheart/env/sandbox/siteContent
click the "Branding" button
edit the primary brand color, updating it to, say, #33bb44
pick a different nav logo image
click 'ok'
save
click the participant view link
confirm the new primary brand color and logo is reflected in the UI

Great catch on the study creation bug -- I wasn't handling initial/current values correctly


Bug: Creating user data failed after LDAP authentication succeed

Environment
Host

item
version

OS
ArchLinux

crowi-plus
2.4.5-RC

node.js
6.12.0

npm
3.10.10

yarn
1.5.1

Using Docker
yes (both)

Using crowi-plus-docker-compose
yes

LDAP Configuration

item
value

Server URL
ldap://ad.domain.local/cn=Users,dc=domain,dc=local

Binding Mode
User Bind

Bind DN
cn={{username}},cn=Users,dc=domain,dc=local

Search Filter
(|(name={{username}})(mail={{username}}))

LDAP(AD)

item
version

OS
ubuntu server 16.04

samba4
Version 4.9.0pre1-GIT-e9d42e5

Client

item
version

OS
Linux

browser
Firefox/Chrome

How to reproduce? (再現手順)

Launch LDAP, crowi-plus
Access and login

What happens? (症状)

Internal Server Error

ValidationError: User validation failed: username: Path `username` is required.
    at MongooseError.ValidationError (/opt/crowi-plus/node_modules/mongoose/lib/error/validation.js:27:11)
    at model.Document.invalidate (/opt/crowi-plus/node_modules/mongoose/lib/document.js:1654:32)
    at /opt/crowi-plus/node_modules/mongoose/lib/document.js:1526:17
    at Immediate.<anonymous> (/opt/crowi-plus/node_modules/mongoose/lib/schematype.js:785:9)
    at runCallback (timers.js:672:20)
    at tryOnImmediate (timers.js:645:5)
    at processImmediate [as _immediateCallback] (timers.js:617:5)

What is the expected result? (期待される動作)

Login

@Mizuho32 Thank you for your report.
I'll try to reproduce.

@Mizuho32
Does the user in LDAP have the uid attribute ?
If not, please set username of Attribute Mapping in /admin/security page.

Anyway, causing 500 is a system bug.
I'll fix it whether you succeed configuring the above or not.

Thanks for your great & quick solution.
It works fine!
やっぱり設定画面はよく見ないとだめですね・・・
ともあれ、ありがとうございます!😄

TODO

[ ] Throw an exception when usernameToBeRegistered is null

https://github.com/weseek/crowi-plus/blob/3dd0a7f7061571a6b3e8f8676a7bb1a3bb45ff12/lib/routes/login-passport.js#L111

[ ] Catch the exception and show error when login

https://github.com/weseek/crowi-plus/blob/3dd0a7f7061571a6b3e8f8676a7bb1a3bb45ff12/lib/routes/login-passport.js#L128

[ ] Set flash message when test ldap credentials

https://github.com/weseek/crowi-plus/blob/3dd0a7f7061571a6b3e8f8676a7bb1a3bb45ff12/lib/routes/login-passport.js#L175

I could not reproduce the bug Creating user data failed after LDAP authentication succeed

I just improved User authentication error handling  that Yuki San mentioned
https://github.com/weseek/growi/issues/314#issuecomment-375633848

I close this issue. Thank you.


Carbon adobe kit - attempting to download throws 404

Detailed description
attempting to download  XD kit throws 404
https://www.carbondesignsystem.com/designing/kits/adobe-xd/#get-the-kit
https://github.com/IBM/design-kit/raw/master/Adobe XD/Carbon Design System - V10 - White (11.01.19).xd

@camilascalzo We've got an update coming out later today for this, we're launching a new way to get the XD kits. It will be up on the same website link.

FYI You can also Download them from this repo directly: https://github.com/IBM/design-kit/tree/master/Adobe XD


Identify  system by other keys when installing grub

https://github.com/kairos-io/kairos-agent/blob/main/pkg/utils/grub.go#L214C40-L214C46
We use the KAIROS_FLAVOR key from os-release to try to identify if the image is an ubuntu one, as under EFI we need a workaround for ubuntu only.
But if we are using a source image for the install that its the upstream image directly, our kairos keys will not be there.
Ideally if the process is correct, the kairos keys should be there, as that means the image went through the kairos factory. But if thats not the case, the install still goes ok but you end up with a non booting system.
We should at least try to use other stuff in the os-release to identify the ubuntu machine (ID or ID_LIKE) to apply the workaround so we dont leave a broken system around.

This done, will be part of 3.2.1
Follow up is https://github.com/kairos-io/kairos/issues/2907

we need a new version of the framework with the agent still, right?

keeping it open until we have a framework image merged into kairos addressing this

on master


[AMHACK] In API Store there is no option to delete or edit a comment added by a subscriber

Description:
API Store there is no option to delete or edit a comment added by a Subscriber
Suggested Labels:
Bug
Suggested Assignees:
Affected Product Version:
APIM WUM Updated - wso2am-<IP_ADDRESS>0585460470
OS, DB, other environment details and versions:
Standalone
DB - H2
Browser - Chrome Version 61.0.3163.100 (Official Build) (64-bit)
JDK - jdk1.8.0_121
Steps to reproduce:
1.Run the APIM 2.1.0 Wum updated pack (wso2am-<IP_ADDRESS>0585460470)
2.Login to the API publisher
3.Create and publish a REST API
4.Login to API store as a subscriber (user type)
5.Select the created API
6. Add a comment from the comments option
7.There is no option to edit or delete the comment [1]
8.Login to the API store as admin
9.Select the previous API and try to delete the comment
10.There is no option to delete
Expected Results
Subscribers should have a option to edit or delete a comment added by them
Admin should have a option to delete a comment added by a subscriber
Actual Results
Subscribers cannot delete a comment added by them
Admin cannot delete a comment added by a subscriber
[1]. comments.png

Related Issues:

This feature is provided with APIM 3.0.0. Refer https://github.com/wso2/carbon-apimgt/pull/6931


Laikad use subsock

Let's add to process replay first with the submaster. Subsockets need some special care in process replay.

@HaraldSchafer want to keep this open?

Don't understand this change, so closing. @adeebshihadeh Feel free to merge if you want to.

Using a submaster can drop messages if the main loop takes too long to process. Specifically dropping a nav message would be annoying. Not sure if this is a problem in practice.

Yeah, we shouldn't really not do this because it's not convenient to test in process replay. I'll reopen and handle making it work in process replay.


translate to chinese

Hi, I have translated this tutorial to chinese,  tutorial #01 - #14 were finished so far.
You can add this link to your repo if you want =)
https://github.com/thrillerist/TensorFlow-Tutorials

Thanks very much, that is amazing!
I have replaced the link to the Chinese translation in README.md because your version is far more complete. I have asked the other author (@naivechen) to please review and contribute to your translations instead. I am sorry that this means some of their work was wasted. It would probably have been better to coordinate the work from the beginning.
I like how you have added 'translated by thrillerist' to the top of each tutorial. I think it is important to give credit to the translator.
Would it be a good idea to also translate the README.md file with the installation instructions etc.?

Thanks man. In fact, he just copy and paste my stuff, we have a conversation yesterday.
I'll translate the README.md file later on.

I noticed he had removed most of the tutorials in the repo and asked why, he said you two had a discussion about 'infringement'. It is impossible for me to judge whether one has copied the other as I don't understand Chinese :-)
I hope people can work together in the future to get the last tutorials translated and reviewed. My goal is to provide tutorials of high quality that will benefit as many people as possible.
Please note that the tutorials are published under the MIT license which also extends to the translations. This means that anyone can use them for anything they want - with only a few conditions (read the license for details). It is of course best to give proper credit to the original author of the tutorials (that is me) and whoever has translated the tutorial. But sometimes I see that people have reused my tutorials without giving me real credit. I can't call the police, so I just take it as a compliment that they found my work so useful that they built on it :-) But giving proper credit is of course the right thing to do.


Cannot configured on Debian 10

Agent Version and Platform
Version of your agent? 2.155.1
OS of the machine running the agent?
Debian 10
Linux local-dev 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19) x86_64 GNU/Linux
Azure DevOps Type and Version
dev.azure.com (formerly visualstudio.com)
https://dev.azure.com/IllawarraTaxiNetwork
What's not working?

Connect:

Enter server URL > https://dev.azure.com/IllawarraTaxiNetwork
Enter authentication type (press enter for PAT) >
Enter personal access token > ****************************************************
No usable version of the libssl was found
./config.sh: line 86:   519 Aborted                 ./bin/Agent.Listener configure "$@"
I also tried to using the dependency install script, here is the output:
hajuuk@local-dev:~/myagent/bin$ sudo ./installdependencies.sh
--------OS Information--------
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
The current OS is Debian based
--------Debian Version--------
10.0
/usr/bin/apt
Hit:1 http://security.debian.org/debian-security buster/updates InRelease
Hit:2 http://ftp.au.debian.org/debian buster InRelease
Hit:3 http://ftp.au.debian.org/debian buster-updates InRelease
Hit:4 https://dl.yarnpkg.com/debian stable InRelease
Hit:5 https://packages.microsoft.com/debian/9/prod stretch InRelease
Hit:6 https://deb.nodesource.com/node_12.x buster InRelease
Reading package lists... Done
Building dependency tree
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree
Reading state information... Done
libkrb5-3 is already the newest version (1.17-3).
libkrb5-3 set to manually installed.
liblttng-ust0 is already the newest version (2.10.3-1).
liblttng-ust0 set to manually installed.
zlib1g is already the newest version (1:1.2.11.dfsg-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libcurl3 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
libcurl4
E: Package 'libcurl3' has no installation candidate
Reading package lists... Done
Building dependency tree
Reading state information... Done
libcurl4 is already the newest version (7.64.0-4).
libcurl4 set to manually installed.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libssl1.0.0 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libssl1.0.0' has no installation candidate
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package libssl1.0.2 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
E: Package 'libssl1.0.2' has no installation candidate
'apt' failed with exit code '0'
Can't install dotnet core dependencies.
You can manually install all required dependencies based on following documentation
https://docs.microsoft.com/en-us/dotnet/core/linux-prerequisites?tabs=netcore2x
Agent and Worker's Diagnostic Logs
Not able to install the agent.

Hi @hajuuk,
Can you try installing OpenSSL 1.1? i.e. apt install libssl1.1, and config the agent again? Let me know the results. If that succeeds, I'll update installdependencies.sh so it installs OpenSSL 1.1 if 1.0.x don't exist.

Actually, the openssl 1.1 is pre-installed.
Here is what i tried.
hajuuk@local-dev:~/myagent$ sudo apt install libssl1.1
Reading package lists... Done
Building dependency tree
Reading state information... Done
libssl1.1 is already the newest version (1.1.1c-1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
hajuuk@local-dev:~/myagent$ openssl version
OpenSSL 1.1.1c  28 May 2019
hajuuk@local-dev:~/myagent$ ./config.sh

End User License Agreements:

Building sources from a TFVC repository requires accepting the Team Explorer Everywhere End User License Agreement. This step is not required for building sources from Git repositories.
A copy of the Team Explorer Everywhere license agreement can be found at:
/home/hajuuk/myagent/externals/tee/license.html
Enter (Y/N) Accept the Team Explorer Everywhere license agreement now? (press enter for N) > Y

Connect:

Enter server URL > https://dev.azure.com/illawarraTaxiNetwork/
Enter authentication type (press enter for PAT) >
Enter personal access token > ****************************************************
No usable version of the libssl was found
./config.sh: line 86:  2401 Aborted                 ./bin/Agent.Listener configure "$@"
hajuuk@local-dev:~/myagent$

Thanks @hajuuk for the confirmation.
I was reading up on dotnet/corefx#33870 and dotnet/corefx#34443, and apparently OpenSSL 1.1 support was added to .NET Core 2.1 at a later patch version (which the agent consumes). I'll try out creating an agent package for you to try on you machine built with an up-to-date .NET Core 2.1.

@hajuuk, can you try out installing this package and try configuring the agent again? Let me know if it works for you.
https://1drv.ms/u/s!AkcNSSfO5EWU203yB2etXzMwZOsU?e=byfT3H
This package was built against the latest LTS version of the .NET Core 2.1 SDK.

Hi @hajuuk,
I checked the official .NET Core 2.1 Linux OS documentation, which indicates they do not support Debian 10. We'll need to wait for the final version of .NET Core 3.0 to be released in order to start offering agent support.
In the meantime, you can run the agent in any of the supported OS from this list.


Welcome contributors to the GUI version of this project

I have been developing a simple GUI tool to work with these scripts for a year. I only could add a simple set of features from this repository. Here is the link to that repository https://github.com/lakinduakash/linux-wifi-hotspot
It is sad to hear that this project is no longer maintained.
@oblique Can I request to add a reference to my repository if you are willing to do so. So that repository also could be updated more frequently. Also, I welcome contributors to add their contributions to that repository also.
Thank you.

I’ve been using this package for years now, I’ll definitely check your tool out. Thank you for making it, and thank you @oblique for this package.

Added to README! I was feeling sad that I lost motivation of maintaining create_ap.
Good luck with your fork @lakinduakash! :slightly_smiling_face:

Don't feel sad @oblique - I use this tool every single day! Thank you for your hard work ❤❤❤

@oblique  Thank you for adding that.


fix: add donation ga and tests

this pr does the followings:

moves GA from the views to a redux saga
adds donation related GA events
adds an integration test to the GA saga

Did we change anything in the logic, or this PR is the same implementation with added tests to resolve the build errors?

Did we change anything in the logic, or this PR is the same implementation with added tests to resolve the build errors?

It is the same logic. the build was a result of a misspelled function name, I believe.
The test checks that when a specific action is fired, GA is called with the right arguments.

Perfect, thanks for confirming. I will do a sanity check and land this.


License and Code Updates

Added MIT license
Replaced the custom detect_hash function with the hashID library
Added Default Common Password Lists

Thank you!


test-branch/execute-job/wrong-commit-sha-on-pr/a69711c3-bb3e-4c57-9cf5-232d8c87d2a5

PR for testing 377d624d1bc3c3f3ba10dc7f8dc05481b44e79d9

/canonical/self-hosted-runners/run-workflows 931ad21dd9ace68aaa0a7d341e94de96ad93fa6b


Using multiple modules in one route

Hi,
This is such a fantastic offering! Thank you for taking the time to do this.
Are you able to assist me with how to use multiple modules in one route?
The current workflow, is create the user, get the client id and then create the service...
The creation of the user is working fully, but I am unsure about the getclientid and service creation.
Any help appreciated!
The code looks like this:
`app.post('/newroute', (req, res) => {
// Set up the module with the config file
// and store it in this variable - can be called anything you want
const addClient = new Clients(config);
// Call the getClients call and store the data in the variable called
addClient
.addClient({
firstname: req.body.firstname,
lastname: req.body.lastname,
email: req.body.email,
address1: req.body.Address1,
address2: req.body.Address2,
city: req.body.City,
state: req.body.State,
postcode: req.body.Postcode,
country: req.body.Country,
phonenumber: req.body.Phone,
notes: 'Created through login',
language: 'english',
skipvalidation: true
})
.then(function (response) {
console.log(response);
const addOrder = new Orders(config);
addOrder.addOrder({
clientid: response.clientid,
pid: 1,
domain: 'nick.com',
paymentmethod: 'none'

})
})
.catch(function (error) {
res.send(error);
});
})`
app.post('/newroute', (req, res) => {
// Set up the module with the config file
// and store it in this variable - can be called anything you want
const addClient = new Clients(config);
// Call the getClients call and store the data in the variable called
addClient
.addClient({
firstname: req.body.firstname,
lastname: req.body.lastname,
email: req.body.email,
address1: req.body.Address1,
address2: req.body.Address2,
city: req.body.City,
state: req.body.State,
postcode: req.body.Postcode,
country: req.body.Country,
phonenumber: req.body.Phone,
notes: 'Created through login',
language: 'english',
skipvalidation: true
})
.then(function (response) {
console.log(response);
  const addOrder = new Orders(config);

  addOrder.addOrder({

    clientid: response.clientid,
    pid: 1,
    domain: 'nick.com',
    paymentmethod: 'none'

  })

})
.catch(function (error) {
  res.send(error);
});

})

Thanks for your help, figured it out in the end :)


Error on RC4 when updating Page Type

On v9 RC 4 I get the following error:

Target class [Concrete\Controller\Dialog\Block\BatchProcessor] does not exist.

Steps to reproduce:

Adding a new Block to the Output of a Page Type
Choose "Setup on Child Pages" in context menu of this block
Choose "Add a new instance ..." and "Yes" (update forked blocks)

I have the a similar problem but took other steps (v9 RC 4).

Added a new block (page attribute page title)
On 'defaults and output' I choose Publish to child Pages
Loading took forever  so I closed the process with the x button.
Some weird behavior and errors on the page (see screenshots)

I think the button you pressed that was on the Defaults and Output page is fully and completely broken. It was accepted from a pull request during the middle of v9 development, but it was never really ready. I've removed that button.
However, the page type defaults from the actual content page itself was also not working (complaining about a missing BatchProcessor class.) I have fixed that error.
Both of these are in https://github.com/concrete5/concrete5/pull/9900 and will be released in the next release candidate.


Kafka commit

Filter code cleaned up also filter_ingest

Tested that failure of dumping batch to Galera means that batch is processed again
Tested that SIGTERM stops ingest+runner and ingest cleanly with no processes left over
Tested that removing lockfile pauses processing, the runners just sleep until lockfile is back
Docopt for arguments to ingest_runner and ingest

Changes to filter look OK, although will probably cause a merge conflict with logging changes.
Don't see any changes to ingest_runner and ingest in this PR. Is this a mistake?

Yes, this branch is filter only so no ingest changes. I very much look forward to using your logging module instead of the existing stuff. Can we modify the new filter code?


Bootstrap 5.1.0 tooltip not refreshing

Using 5.1.0 when I tried to update the title/tooltip, it would updated on loading the page, though afterwards when I updated the title
found this site https://stackoverflow.com/questions/67247233/how-does-the-text-of-the-tooltip-change-when-the-button-is-clicked
I ran their example and noticed 5.0.0-beta3 when I re ran the example with version 5.1.0 it did not update.
source tested<EMAIL_ADDRESS>source tested<EMAIL_ADDRESS>

Hello @lopey66 , you can refer to #34842 for details. Note down that it is working for 5.1.1 but it is a trick we are not include in BS documentation, and probably is going to be eliminated in favor of a more official way


"Export" button is on top of the "Settings" button

Hey
When I try to go to ChatGPT setting, the "Export" button is on top of the "Settings" button, blocking me from clicking on it

I'm not sure if I'm the only one with that issue ? since it something really annoying but nobody talk about it here...

Hi, may I know your browser and it's version?
It works on my side.

Ok. Obviously I'm not using the latest. 😆
A patch is on the way.

Fixed in v2.14.3

I was using a old version of chrome, Version 109.0.5414.120
And yes it's solved now thanks :)


Phone number does not validate in React Testing Library test

Expected Behavior
If the phone number entered in the component is valid, the isValid property should be true when running React Testing Library tests (tests should match what is experienced in the browser).
Current Behavior
In the browser, when a valid phone number is entered in the component (or passed in as the defaultValue), the isValid property as seen with onPhoneNumberBlur, for example, is true and the phone number is properly validated. However, when the same behavior is recreated in a test using React Testing Library, the validation fails and the phone number is considered invalid even though it should be valid.
Steps to Reproduce
GitHub repo: https://github.com/jamenamcinteer/react-intl-tel-input-rtl-validation
Repl.it demo: https://repl.it/repls/WellmadeCompetitivePyramid

Run yarn start
Click into the phone number field and then click out of it. Observe that the message Phone number is valid appears.
Run yarn test
Observe that the test fails as the message Phone number is valid never shows up. See App.test.js for the test code and App.js for the app code.

Environment

Version: v8.0.2
Browser: all

A little more info: when I try printing the values received by onPhoneNumberBlur in the browser vs RTL tests, the fullNumber value in the browser includes the country code but in the tests it is missing the country code. In the provided example, the browser fullNumber is +1<PHONE_NUMBER> while the fullNumber for the test is<PHONE_NUMBER>.

Hi @jamenamcinteer!
Thanks for the thorough report! I'm digging into this a bit this weekend to see if I can get a grip on why it happens. If it's something you'd be interested in tackling, let me know!

I dug into it a bit and was able to isolate the issue to an asynchronous import to the library that handles the "core" of phone number validation / manipulation. During initialization, it will use import(...) to get it to populate window, which is then used throughout for validation. This is obviously not ideal because it leaks things into window and then relies on the integrity of what's in there even though it has very little control over it. In the context of RTL, it looks like the test proceeds with or without the initialization step, so window isn't necessarily populated when your assertions are run.
I'm going to look into making that dependency a synchronous import and cleaning it up, but this might require some time given that it involves some rewriting of another package and/or some research into an alternative.
In the meantime, I've found that "shortcircuiting" the async import by importing it yourself in your test suite solves the issue. This is a crude workaround. You could also figure out an dirty wait(...) trick to wait until the window.intlTelInputUtils object is populated, but it feels worse than including the dependency yourself.
You can add libphonenumber-js-utils as a devDependency to your project and import it for its side-effects to resolve the issue:
import 'libphonenumber-js-utils`

test(...)

Let me know if it solves the issue on your end, it seemed to work on mine. Anyhow, I'm starting work on addressing the root cause so that this workaround isn't needed longer than it needs to be.

Hey @mcataford! Thank you so much for looking into this. I tried the workaround in my project and it works perfectly. I appreciate all your help with this!

Glad it worked out!
Since the root cause is documented in #348 and we've got a workaround for your use case, I'll go ahead and close this issue for now. Don't hesitate if you find out any more wonky interactions with RTL!


Working with A500 mini

Hi,
I followed the instructions and it works like a charme on a PC with Windows 10. I having issues to let it work with the A500 mini.  How could I fix it?

Use the https://github.com/rainisto/arcade2usb-converter fork, swap d6 and d10.
Working great on the A500 mini!

You mean I have to change const int pin_joystick_button1 = 10; and const int pin_joystick_button_c = 6; ?
I'll check it out, thanks!

I've followed the instructions,  selecting A500 Mini Pro Micro ATmega32u4 (5v, 16mhz) from the boards menu, and I uploaded the  a500mini-2usb-converter sketch, but it gives me some errors while checking the script. Tha last one is  'pin_joystick_up' was not declared in this scope.


Add new Aztec Connect Rollup

As per announcement (https://medium.com/aztec-protocol/aztec-network-launches-first-ever-private-defi-solution-for-ethereum-e5ec7624d430) Aztec launched a new version of its rollup, Aztec Connect.
Main Rollup processor (Proxy) is here: 0xFF1F2B4ADb9dF6FC8eAFecDcbF96A2B351680455

Aztec Connect has similar security risks as the old Aztec, the main difference is that the team this time has decided on the UpgradabilityProxy for the main RollupProcessor contract.
Additionally it is worth noting that the "Earn" feature implements DeFi pooling by allowing token allocation into the different DeFi protocols via "connectors" or "bridges". Some of these protocols are pretty straigthforward wrt to calculating TVL (e.g. with LIDO they deposit ETH and get back stETH), while some may be more complicated (like Element.Fi or other future protocols).
This means that it may not be sufficient to count TVL based on the value of tokens locked in bridges, various IOUs would have to be accounted for as well (and that is provided a tokenised IOU is issued which is not the case for some protocols - for example MakerDAO)


SharingSupport::updateInvites not 'thread-safe'

I'm executing lots of updateInvites in parallel, which fails from time to time.

Execute a few (e.g. 4) \Sabre\CalDAV\Backend\SharingSupport::updateInvites in parallel
Sometimes you'll get the following error:

<?xml version="1.0" encoding="utf-8"?>
<d:error xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns">
  <s:sabredav-version>3.2.0</s:sabredav-version>
  <s:exception>PDOException</s:exception>
  <s:message>SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '9-principals/rementr-caldav-operator-it@localhost' for key 'calendarid'</s:message>
</d:error>

Actual implementation: \Sabre\CalDAV\Backend\PDO::updateInvites
By replacing the current Delete & Insert approach and using something fancier like INSERT ... ON DUPLICATE KEY UPDATE or a similar UPSERT/MERGE this could be avoided. Although it can be a pain to support all SQL variants.
Alternatively a fancier logic could reduce the number of Delete & Inserts and therefore reduce the probability of this issue.

---
Want to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/37167645-sharingsupport-updateinvites-not-thread-safe?utm_campaign=plugin&utm_content=tracker%2F294006&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F294006&utm_medium=issues&utm_source=github).

Thanks, this should really be treated as a bug. I agree that a ON DUPLICATE KEY type of statement might be best here. The last operation should 'win'.
We use that type of query somewhere else as well. I'm ok writing different queries for different SQL variants

Do you know where? If its an easy fix I might create a PR.

This is happening here:
https://github.com/fruux/sabre-dav/blob/master/lib/CalDAV/Backend/PDO.php#L1424

Ah, sorry, I meant where you used that type of 'ON DUPLICATE KEY UPDATE' queries before. Don't want to reinvent the wheel :)

Hey @trichner ,
Very confused, but I can't seem to find it right now :/ Anyway, I did write a blogpost about this so maybe that's what I remembered it from:
https://evertpot.com/writing-sql-for-postgres-mysql-sqlite/

Actually INSERT IGNORE INTO ... should be enough in this case.


terminated sockets not calling callbacks

On Ratchet\WebSocket\WsServer; when a connected client drops the connection (not in a clean way, i.e.: Unplugs computer), my onClose function does not get called. Infact, when I use $conn->send($msg) the onError function is not called, it treats it as if the client was still connected. How can I know when a client drops the connection uncleanly?

Short answer is you can't. This is a problem at the TCP level. The best thing you can do is use a heartbeat protocol. If the peer doesn't respond in a given amount of time close the connection.

What I was looking for was Ratchet\WebSocket\WsServer::enableKeepAlive() This would be worth mentioning in the documentation. It is something that all websockets would want to implement. I had even started working on my own heartbeat protocol at application layer, but then found the RFC for pings. Maybe its just me, but I couldn't find this option documented anywhere. I would even put it in the tutorial page (Which is great btw).

It's not in the documentation (yet) because 0.4 hasn't been released. It will be documented for the release.

@cboden ah I see :) Looking forward to that release then :+1:


Tag 4 not found in repository docker.io/keymetrics/pm2-docker-alpine

$ docker pull keymetrics/pm2-docker-alpine:4
Pulling repository docker.io/keymetrics/pm2-docker-alpine Tag 4 not found in repository docker.io/keymetrics/pm2-docker-alpine

Use the tag latest instead of 4
docker pull keymetrics/pm2-docker-alpine:latest

@Xoib as far as I know the :latest tag has nodejs v6 onboard. But I need LTS 4th version.

@AleksMeshkov so you should use this repository : https://github.com/ruhmesmeile/pm2-docker-alpine instead of this one because currently we only have the v6 linked.

At this moment, the two available tags are:

:latest: Which has node v7.3.0
:v6: Which has node v4.4.7 (last updated 6 months ago)

There don't seem to be any stable, up-to-date images here.

@gerard-mailtrack
Check this
https://github.com/keymetrics/pm2-docker-alpine/pull/11#issuecomment-275711273

The list of the new tags is available here:
https://hub.docker.com/r/keymetrics/pm2-docker-alpine/tags/


any plans for migration to google maps flutter latest 0.5.11

currently it gives error
Because a ppdepends on clustering_google_maps ^0.0.5+7 which depends on google_maps_flutter 0.5.7, google_maps_flutter 0.5.7 is required.

Yep, I will update tomorrow! Thanks


When you log in to did-app, in handleUserData, condition by user type the data it returns and where it is taken from

sigue disponible esta asignatura?


Support Time Parquet Data Page Statistics

Is your feature request related to a problem or challenge?
Part of https://github.com/apache/datafusion/issues/10922
We are adding APIs to efficiently convert the data stored in Parquet's "PageIndex" into ArrayRefs -- which will make it significantly easier to use this information for pruning and other tasks.
Describe the solution you'd like
Add support to StatisticsConverter::min_page_statistics and StatisticsConverter::max_page_statistics for the types above
https://github.com/apache/datafusion/blob/a923c659cf932f6369f2d5257e5b99128b67091a/datafusion/core/src/datasource/physical_plan/parquet/statistics.rs#L637-L656
Describe alternatives you've considered
You can follow the model from @Weijun-H  in https://github.com/apache/datafusion/pull/10931

Update the test for the listed data types to be Check::Both, following the model of  test_int64 https://github.com/apache/datafusion/blob/a923c659cf932f6369f2d5257e5b99128b67091a/datafusion/core/tests/parquet/arrow_statistics.rs#L506-L529
Add any required implementation in get_datapage_statistics: https://github.com/apache/datafusion/blob/459afbb3a180d31e7cdefffb46f033069aa47408/datafusion/core/src/datasource/physical_plan/parquet/statistics.rs#L624 (follow the model of the row counts, https://github.com/apache/datafusion/blob/2f4347647172f6997448b2e24d322b50c856f3a0/datafusion/core/src/datasource/physical_plan/parquet/statistics.rs#L90)

Typically the change to the test looks like
- check: Check::RowGroup,
+ check: Check::Both,

Additional context
No response

Can I work on this issue? kindly assign it to me!

Hi @myeunee, you can just comment "take" and it will be automatically assigned to you.

Can I work on this issue? kindly assign it to me!

Also in general, feel free to work on any issue -- https://datafusion.apache.org/contributor-guide/index.html#finding-and-creating-issues-to-work-on 🚀

It looks like this issue is one of the last needed to complete the data page statistics extraction feature 🤔

@alamb Since this is the only thing pending. I took the liberty to quickly jump in and raised a PR.
@myeunee Please excuse me.

Thank you @dharanad


Stale product data on PDP

I'm opening this as a question because it feels like a feature request, documentation request, and bug report all rolled into one.
Describe the issue
PDP product data (ServerProductQuery) is pulled during initial build in getStaticProps, and never revalidated. There is a manual client data refetch, but it uses ClientProductQuery, which is not 1:1.
This has led to at least two concrete issues in our team's experience:

[bug] because the data in the statically-built page is stale, any time the updated data conflicts with the old data there can be a problematic flashing of old data before the new data displays. see the price example video below.
[documentation request] because the ~manual revalidation linked above runs the client version of the product query, any API extensions added to the ServerProductQuery are fetched once during build and never re-executed, leading to an undocumented behavior where you need to extend both the server and client product query to refetch your data. see the example video below - the product's inventory has been restocked since the last app build, but because our call to get live productStock is only in the ServerProductQuery, it isn't updated by the client data refetch.

https://github.com/user-attachments/assets/7bcd4440-b619-4c02-bf16-a638e82aee08
Possible Solution
I think the ideal solve would be to support a revalidate value to pass into getStaticProps inside p.tsx. This would be a low-lift way of allowing users to configure an expected "cache time" for product updates, without forcing teams to rebuild their application periodically to pick up catalog changes.
A more elegant solution is to allow users to revalidate on demand (for example, we could hook up to receive VTEX catalog changes via broadcaster), but exposing that functionality involves additional work.
Also, clarification to the existing documentation would be helpful - while the ServerProductQuery and ClientProductQuery docs  call out the fallback / getStaticProps pattern, it would be great to highlight the implications of using two different, overlapping queries to fetch the product data, for how developers should build API extensions / think about the PDP render cycle.

Hey @batzlerg, first of all thank you for this one, improvements proposals are always welcome and help us to evolve even more the product 🤝
Regarding the bug I have a question: do you think that having slightly different queries being fetched are a problem, or is the refetch itself bad?
Even though the on-demand revalidation (ISR) it's still in our sights, we don't support it on our infrastructure yet,  but it would be the best possible solution indeed.

Regarding the bug I have a question: do you think that having slightly different queries being fetched (one on server and the other on client-side) are a problem, or is the refetch itself bad?

I think different queries makes sense conceptually, because some data will become stale more rapidly than other data.
what caught our team off guard is the intersection of two issues:

the ServerProductQuery is really more like a StaticNoRevalidateServerProductQuery, so anything in Server but not in Client will never be refreshed.
because there may be many instances of the FastStore application, each with its own static query, the data captured in ServerProductQuery may be inconsistent. imagine two app instances: A fetches inventory = 0 before the product is restocked, and B fetches inventory = 1000 after the product is restocked. depending on which instance responds to a given request, the user may get an inconsistent page experience between refreshes.

so until some form of revalidation is supported, I think it would help to call out in the docs that extensions to ServerProductQuery will only ever be fetched once (/ according to the described behavior above). perhaps having a shared static cache would also help in the interim, but I could see that adding more infra complexity than just supporting revalidation.


Add schemathesis tests

This PR adds automated Schemathesis tests to the test suite. Most of the tests currently fail, and I believe this is due to a bug in Schemathesis, described in https://github.com/schemathesis/schemathesis/issues/1335. I see that the author of Schemathesis has kindly offered to help get it working with fastapi-crudrouter. I'll update the schemathesis ticket and hopefully this PR will help both projects.

Current CI failure seems to be due to a bug in pytest 7.0.0 (https://github.com/pytest-dev/pytest/pull/9609). Run tests again when 7.0.1 is out (should be very soon) or work around it in requirements.txt.

I added the pytest workaround. Any remaining failures should be due to the Schemathesis bug mentioned above.

Thanks for this @DanLipsitt, great work! 🚀

Thank you so much @DanLipsitt for bringing this PR and reporting the issue to Schemathesis! @awtkns thank you for reviewing & approving the changes :)
I added a small suggestion in the comment above which makes the tests work. They took quite some time to run on my machine (~7 minutes) but showed quite a lot of things that might require attention. I'd also suggest adding data_generation_methods=schemathesis.DataGenerationMethod.all() to schemathsis.from_dict so it also executes negative test scenarios, however they are even slower.
Let me know if I can help with anything :) I'd be happy elaborate

Updated per @Stranger6667's suggestion.


[BUG]: bulk link

How are you running AnythingLLM?
Docker (local)
What happened?
is there a way to increse max deepth level in bulk link scrapper
Are there known steps to reproduce?
No response

Is this not that configuration setting?


AWS Security Token Service <IP_ADDRESS> - Assume Roles for greater than an hour

Hello
AWS recently released support for assuming a role for up to 12 hours. The current release version currently still only supports up to 1 hour, and will through an exception is anything greater than this is passed.
How long will it be until it is able to assume roles for up to 12 hours?
Thanks

No, there is no way right now to get role sessions for the SDK longer than an hour. Longer sessions are console only.


Irrelevant values in CachingConnectionFactory#toString

https://github.com/spring-projects/spring-amqp/blob/ccf202bdb27ed3090cc55e1359c4cb1ac1e9767a/spring-rabbit/src/main/java/org/springframework/amqp/rabbit/connection/CachingConnectionFactory.java#L1044
Hello,
Host and port values should not be displayed when addresses attribute is defined (in AbstractConnectionFactory class) as connect method use addresses first.
Thanks.

We also can set an AddressResolver instead of all those.
Therefore it looks like it is better just to remove host/port from this CachingConnectionFactory.toString().

Thanks for the fix. The message misled me while debugging.


502 error on visiting /

Describe the bug
When visiting https://ideoxan.com, Cloudflare reports a 502 bad gateway error.
To Reproduce
Steps to reproduce the behavior:

Open https://ideoxan.com in a web browser.

Expected behavior
The website should appear.
Desktop (please complete the following information):

OS: Windows 10
Browser: Chrome
Version: 84

This is done intentionally. Every other service (email, DNS, CDN) is operational.

@Skyclo wait, but why?  Is the site down for maintenance?

The website isn't done yet. It will come back soon