Support symlinks for the blobs/sha256 directory

Context: At LPC I presented the changes made to PuzzleFS so it can be integrated with other tools, such as skopeo and lxc. In particular, I showed how to create an LXC container which has its rootfs backed by a PuzzleFS image. In particular, the following command line:
sudo lxc-create --name mycontainer --template oci -- --url oci:/tmp/pfs_ubuntu:eg \
--no-cache --mount-helper pfs-ovl-mount-helper

sets up a PuzzleFS rootfs. Notice the --no-cache argument for this template.
The reason we need this is because the oci template sets up a shared cache for the OCI blobs. The resulting OCI structure looks like this:
root@amiculas-l-PF3FCGJH:/var/lib/lxc/mycontainer# tree -L 2 oci/
oci/
├── blobs
│   └── sha256 -> /var/cache/lxc/sha256
├── index.json
└── oci-layout

2 directories, 2 files

This is a problem because ocidir-rs doesn't follow symlinks by design (using the cap-std model).
To allow for such an LXC setup, I have two ideas:

Extend the ocidir-rs API to support symlinks; the users can then opt-in to the capability-oriented API or choose the unrestricted option which can access files outside the oci directory
Store an additional directory into the OciDir structure which references the blobs/sha256 directory (ok, maybe not blobs/sha256 but actually blobs, so we don't hardcode the hashing method; this of course will require changes to the LXC template) and extend the API to allow for two ambient directories passed to open: one for the oci directory which is required, and one for the oci/blobs/sha256 (or oci/blobs, as I mentioned earlier) which is optional (and in this case we just read it from the oci directory)

I like the second method better because it requires less changes to ocidir-rs, but also because it still provides security benefits by not allowing random symlink accesses: we're confined to the oci/blobs/sha256 directory.
Any objections against implementing the 2nd option?

There's a few design choices here...I started to stub out something like this but it got ugly:
diff --git a/src/lib.rs b/src/lib.rs
index 3245ae3..d48a8b1 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -152,11 +152,18 @@ impl<'a> Debug for GzipLayerWriter<'a> {
     }
 }

-#[derive(Debug)]
 /// An opened OCI directory.
 pub struct OciDir {
     /// The underlying directory.
     pub dir: std::sync::Arc<Dir>,
+    external_links: Option<cap_std::AmbientAuthority>,
+}
+
+impl Debug for OciDir {
+    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+        // Unfortunately AmbientAuthority doesn't impl Debug
+        f.debug_struct("OciDir").field("dir", &self.dir).finish()
+    }
 }

 /// Write a serializable data (JSON) as an OCI blob
@@ -237,7 +244,21 @@ impl OciDir {
     /// Open an existing OCI directory.
     pub fn open(dir: &Dir) -> Result<Self> {
         let dir = std::sync::Arc::new(dir.try_clone()?);
-        Ok(Self { dir })
+        Ok(Self {
+            dir,
+            external_links: None,
+        })
+    }
+
+    pub fn open_allow_external_links(
+        dir: &Dir,
+        authority: cap_std::AmbientAuthority,
+    ) -> Result<Self> {
+        let dir = std::sync::Arc::new(dir.try_clone()?);
+        Ok(Self {
+            dir,
+            external_links: Some(authority),
+        })
     }

     /// Write a serializable data (JSON) as an OCI blob
@@ -337,7 +358,21 @@ impl OciDir {

     /// Open a blob; its size is validated as a sanity check.
     pub fn read_blob(&self, desc: &oci_spec::image::Descriptor) -> Result<File> {
-        let path = Self::parse_descriptor_to_path(desc)?;
+        let mut path = Self::parse_descriptor_to_path(desc)?;
+        let meta = self.dir.symlink_metadata(path)?;
+        let f = match (meta.is_symlink(), self.external_links.as_ref()) {
+            (true, Some(authority)) => {
+                let authority = authority.clone();
+                let abspath = format!("/proc/self/fd/{}/{path}")
+            }
+            (true, None) => todo!(),
+            (false, None) => todo!(),
+            (false, Some(_)) => todo!(),
+        }
+        if let Some(authority) = self.external_links.as_ref() {
+
+
+        }
         let f = self.dir.open(path).map(|f| f.into_std())?;
         let expected: u64 = desc.size();
         let found = f.metadata()?.len();

Store an additional directory into the OciDir structure which references the blobs/sha256 directory (ok, maybe not blobs/sha256 but actually blobs, so we don't hardcode the hashing method; this of course will require changes to the LXC template)

Yeah I like this the best, something like:
diff --git a/src/lib.rs b/src/lib.rs
index 3245ae3..406effd 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -240,6 +240,10 @@ impl OciDir {
         Ok(Self { dir })
     }

+    pub fn add_external_blobdir(&mut self, dir: Dir) {
+        self.external_blobdirs.push(dir);
+    }
+
     /// Write a serializable data (JSON) as an OCI blob
     pub fn write_json_blob<S: serde::Serialize>(
         &self,

so we don't hardcode the hashing method;

Sounds nice in theory, but realistically I don't think we're going to get away from sha256 in the near (years) future. Maybe sha512 or something should be supported as a fallback Just In Case but the trauma to the ecosystem I suspect would be pretty high.

I was thinking about the case where a blob in sha256 would reference a blob in sha512, for example. Then we cannot get to that blob because we are confined in blobs/sha256 by the capability model. Anyway, maybe I'm thinking too theoretically.
I'll sketch something up for option two in the following days.

@cgwalters I can't figure out why dir needs to be wrapped in an std::sync::Arc here:
/// An opened OCI directory.
pub struct OciDir {
    /// The underlying directory.
    pub dir: std::sync::Arc<Dir>,
}

I don't see any clones on dir and the caller still has a reference &Dir, shouldn't the caller have a std::sync::Arc instance as well?
I'm thinking about this change:
diff --git a/src/lib.rs b/src/lib.rs
index 3245ae3..e297f23 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -209,7 +209,7 @@ fn sha256_of_descriptor(desc: &Descriptor) -> Result<&str> {
 impl OciDir {
     /// Open the OCI directory at the target path; if it does not already
     /// have the standard OCI metadata, it is created.
-    pub fn ensure(dir: &Dir) -> Result<Self> {
+    pub fn ensure(dir: Dir) -> Result<(Self, std::sync::Arc<Dir>)> {
         let mut db = cap_std::fs::DirBuilder::new();
         db.recursive(true).mode(0o755);
         dir.ensure_dir_with(BLOBDIR, &db)?;
@@ -220,10 +220,10 @@ impl OciDir {
     }

     /// Clone an OCI directory, using reflinks for blobs.
-    pub fn clone_to(&self, destdir: &Dir, p: impl AsRef<Path>) -> Result<Self> {
+    pub fn clone_to(&self, destdir: Dir, p: impl AsRef<Path>) -> Result<(Self, std::sync::Arc<Dir>)> {
         let p = p.as_ref();
         destdir.create_dir(p)?;
-        let cloned = Self::ensure(&destdir.open_dir(p)?)?;
+        let cloned = Self::ensure(destdir.open_dir(p)?)?;
         for blob in self.dir.read_dir(BLOBDIR)? {
             let blob = blob?;
             let path = Path::new(BLOBDIR).join(blob.file_name());
@@ -235,9 +235,9 @@ impl OciDir {
     }

     /// Open an existing OCI directory.
-    pub fn open(dir: &Dir) -> Result<Self> {
+    pub fn open(dir: Dir) -> Result<(Self, std::sync::Arc<Dir>)> {
         let dir = std::sync::Arc::new(dir.try_clone()?);
-        Ok(Self { dir })
+        Ok((Self { dir: dir.clone() }, dir))
     }

     /// Write a serializable data (JSON) as an OCI blob

Then the caller accesses are synchronized with the ocidir accesses.

I don't see any clones on dir and the caller still has a reference &Dir, shouldn't the caller have a std::sync::Arc instance as well?

Yeah this is a legacy from this crate being split out of some internal code before, where I had some partially-done work to try to use Arc<Dir> more to avoid some unnecessary file descriptor duplication.
I guess for now we could drop the internal Arc easily since it doesn't buy us anything.
Or if we were to lean into this pattern we could have a fn new_from(d: impl Into<Arc<Dir>>) or so...


Backport to 0.10.x: refactor(header): Change to base64 serialize

See #1028. This is a cherry-pick of 529ad56 with fixed conflicts and using the newest version of the crate.
CC @M3rs

Thanks!


Update work_issue.md

Change "re-start" to "restart". Though not included in "Prefered usages" in the documentation guide, I think "restart" is better and used more frequently. Besides, some other docs here, such as "Keep containers alive during daemon downtime" of "Admin Guide", also use "restart".

Proposed changes

Unreleased project version (optional)

Related issues (optional)

Thanks, @scjane :)


Yabai doesn't float System Preferences

Yabai doesn't float System Preferences. It weirdly works with Finder. I do have the System in german and I don't know how Macos actually treats that. I am on Big Sur, and this is my configuration for the exception rules
yabai -m rule --add app=Finder layer=above manage=off
yabai -m rule --add app="^System Preferences$" layer=above manage=off

I have this in my yabai config and it works fine for me on bigsur.
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off

yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off

Still doesn't work. I am very lost at this point

My guess is it's a German localization issue.  Install jq if you don't have it and run yabai -m query --windows | jq ".[] | { App: .app, Title: .title }" when you have System Preferences open.  Then adjust your filter to match.

Just to be safe I would suggest using the following instead:
yabai -m rule --add app="System.*einstellungen$" sticky=on layer=above manage=off

I found the character: U+00AD : SOFT HYPHEN [SHY] {discretionary hyphen}
You can get the full text with all chars also the invincible once when copying out of spotlight search.
yabai -m rule --add app="^Systemeinstellungen$" sticky=on layer=above manage=off

If you copy the string in VSCode you will see some kind of yellow box for the char.

My guess is it's a German localization issue. Install jq if you don't have it and run yabai -m query --windows | jq ".[] | { App: .app, Title: .title }" when you have System Preferences open. Then adjust your filter to match based on what string that gives you.
Here's how I'm excluding System Preferences, in EN-US: yabai -m rule --add app="^System Preferences$" manage=off
[Edit after installing German language] Try this: yabai -m rule --add app="^System einstellungen$" manage=off
And add the layer=above if you want, after testing.

For me it was Systemeinstellungen

The option "layer=above" was causing me the problem... With "manage=off", it works fine


Replace public delegates with events

see https://github.com/ppy/osu-framework/pull/2350#issuecomment-483163351

Weakly against this change due to decrease in readability and weirdness in places like ClickableContainer.


research(performance): dataloaders

Task Description
The GraphQL API is currently not optimized for performance. Getting nested entities from a list, especially, results in a lot of queries.
Example.:
query ($filter: IssueMatchFilter) {
    IssueMatches (filter: $filter) {
        edges {
            node {
                componentInstance {
                    id
                    ccrn
                    component version {
                        id
                    }
                }
            cursor
        }
    }
}

This query would lead to a separate SQL query in the backend for each IssueMatch in the list and each of the component instances. When we get a list of 10 issue matches, we get 1+10 SQL queries. Like.:

SELECT * FROM ComponenInstance WHERE ID=10;

This can be a major performance bottleneck, especially for deeper nested structures and long lists.
There is the concept of Dataloaders https://github.com/graphql/dataloader that circumvents this bottleneck by providing a "loader" that waits for a short period and collects all IDS used to request a result and instead provides an aggregated query and returns the individual results to the resolvers.
The result is that the queries in the above example will be reduced to 2:
SELECT * FROM IssueMatch WHERE $filter;
SELECT * FROM ComponenInstance WHERE ID IN(1, 2,3,4,5,6,7,8,9,10);

The queries above are only for illustration purpose.
Therefore we need to investigate how we can do the above using gqlgen and how high the effort of implementation is.
Acceptance Criteria:

[ ] Find out how it could work for our Application
[ ] Get an understanding of the effort
[ ] PoC
[ ] Create a PoC PR to review
[ ] Decide whether we implement this situational  in general

Expected Test:

A test that validates that the dataloaders are correctly used would be beneficial

@MR2011 please review ticket! Do you agree with the task?


Add option to enable protobuf apiserver communications

What does this PR do?
By default, communication with the apiserver is in json format. Adding the kubernetes_apiserver_use_protobuf option to allow communication in the binary protobuf format, with a potential performance improvement on both the agent and the apiserver.
We'll disable it by default for 6.6, to ensure stability.
Running the kube_apiserver integration test's performance is improved, we should measure it on a live system though:

8837.63kB heap allocations -> 4340.52kB
25.77s go cpu time -> 22.65s

I'm running a gitlab pipeline with the default set to true to ensure e2e passes with it.

e2e is green with protobuf enabled


mingw and pthread.h

Unfortunately, mingw is considered gcc. During compilation the file src\Platforms\Gcc\UtestPlatform.cpp is used. This file uses pthread.h that mingw can't be find.
I changed the functions PThreadMutexCreate(), PThreadMutexLock(), PThreadMutexUnlock() and PThreadMutexDestroy() with the content of src\Platforms\VisualCpp\UtestPlatform.cpp. I also included <windows.h> instead of <pthread.h>.
In this way I was able to compile libCppUTest.a and libCppUTestExt.a libraries and they seem work well.
I think it would be better to create a new platform, named mingw, different from gcc.

Thank you for posting the issue you ran into and your resolution.  I just ran into the exact same thing as you.

@pozzugno I had the same issue as you, but instead of modifying the UtestPlatform file, I found out that I did not install pthreads from the MinGW installer.
The package I needed to install was "mingw32-libpthreadgc-dev" from the mingw-get-setup.exe installer.

Once I installed this package, then I was able to run CMAKE and compile using GCC-8.2.0.

hello, i have work it out the problem of pthread.h that mingw can't be find following the tutorial of @pozzugno,but i am meeting the new problem.when i run  the command-->  C:\Users\flash\Desktop\cpputest-3.8\cpputest_build>mingw32-make
there are the follow errors displaing in the cmd.exe :
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lpthread
collect2.exe: error: ld returned 1 exit status
tests\CMakeFiles\CppUTestTests.dir\build.make:626: recipe for target 'tests/CppUTestTests.exe' failed.
Please help me。

It seems you need to install the pthreads library in your mingw ?


F# discriminated union deserialization bug

I've discovered that default DiscriminatedUnionConverter fails when trying to deserialize a F# discriminated union instance with settings type name handling turned to TypeNameHandling.All (only with this configuration).
Exception message:

An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll
Additional information: Union fields must been an array. Path 'Fields', line 1, position 28.

Test code used to recreate an error:
let settings = JsonSerializerSettings()
settings.TypeNameHandling <- TypeNameHandling.All

let serialize o =
    let json = JsonConvert.SerializeObject(o, Formatting.None, settings)
    Encoding.Default.GetBytes json

let deserialize bytes t =
    let json = Encoding.Default.GetString bytes
    JsonConvert.DeserializeObject (json, t, settings)

type TestUnion =
    | CaseOne of string
    | CaseTwo of int

let a = CaseOne "hello"

let abin = serialize a
let ades = deserialize abin (a.GetType())
let a2 = ades :?> TestUnion

Serialized union JSON: {"Case":"CaseOne","Fields":{"$type":"System.Object[], mscorlib","$values":["hello"]}}
I've also tracked down source of an error in Newtonsoft.Json source code.

Fixed https://github.com/JamesNK/Newtonsoft.Json/commit/a3278ccd6a7ac88c3c5ae85d46a3ec46a6f438ec#diff-cb3fb9511e571c94735be121f80b6fe5R133

This only works if the type is known on the deserializing side.
if the discriminated union is stored in an object array, it still fails.
open Newtonsoft.Json
open System.Text;

let settings = JsonSerializerSettings()
settings.TypeNameHandling <- TypeNameHandling.All

let serialize o =
    let json = JsonConvert.SerializeObject(o, Formatting.None, settings)
    Encoding.Default.GetBytes json

let deserialize bytes t =
    let json = Encoding.Default.GetString bytes
    JsonConvert.DeserializeObject (json, t, settings)

type TestUnion =
    | CaseOne of string
    | CaseTwo of int

let ac = CaseOne "hello"
let a = [| ac :> System.Object |]

let abin = serialize a
let ades = deserialize abin (a.GetType()) :?> System.Object[]
let a2 = ades.[0] :?> TestUnion  //fails as ades is JObject

It's implemented as a type converter and they don't support type names.

Is the scenario where the DU is wrapped in an object array supported?
The answer isn't clear to me.
Is there anything else than adding the DU-Converter to the settings that I need to do?
Every setup that we try here results in a JObject instead of a DU on the deserialized side.

Maybe you could write a custom converter for the object array that includes the type in a wrapper object with type information on serialization and read that type information on deserialization?


Question Ocelot and Blazor

Expected Behavior / New Feature
Having a Blazor microservice routing via Ocelot work by going to https://myOcelotMicroserviceIP:Port/myBlazorRoute
Actual Behavior / Motivation for New Feature
Going to the Ocelot route gives an error page and opening up the dev console returns this:
bootstrap.min.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
default.css:1 Failed to load resource: the server responded with a status of 404 (Not Found)
... and the rest of the resources of the Blazor app

It should be noted that the Blazor app does load correctly on its own.  The Ocelot is able to route API correctly.  I know the Ocelot is routing to the specific Blazor app as I am able to change the error message on the page and it is updated
Steps to Reproduce the Problem

Configure the routing json like this:

{
      "DownstreamPathTemplate": "/{url}",
      "DownstreamScheme": "https",
      "DownstreamHostAndPorts": [
        {
          "Host": "myBlazorApp",
          "Port": 5000
        }
      ],
      "UpstreamPathTemplate": "/myBlazorRoute/{catchAll}",
      "UpstreamHttpMethod": []
    }

Start both the Ocelot microservice and Blazor microservice
Try going to https://myOcelotMicroserviceIP:Port/myBlazorRoute

Specifications

Version: Ocelot : .NET Core 2.2 Ocelot 13.5.2 / Blazor: .NET Core 3.1
Platform: Tested on Windows and Linux

Version: Ocelot : .NET Core 2.2 Ocelot 13.5.2 / Blazor: .NET Core 3.1

Ancient issue! We support only .NET 6+, the same versions as Microsoft does.
If Blazor endpoint uses Websocks then you must change route scheme from https to wss:

"DownstreamScheme": "wss",


Copy index.html from is2 2023

Some of the changes from IS2 2023 were missing (https://github.com/ICESAT-2HackWeek/ICESat-2-Hackweek-2023/commit/602bd954abfdfa628dc6984314b7653e17989aa8). I just copied index.html over.

For IS2, we swapped the sequence of the page to put the about below the schedule once the applications were close.
Is that something we should keep?
I am torn whether this should be a permanent change.

For IS2, we swapped the sequence of the page to put the about below the schedule once the applications were close.

Is that something we should keep?
I am torn whether this should be a permanent change.

Good question. Would making "about" collapsible be easy to do and a good compromise? Or adding some sort of "section order" toggle? Trying to think of ways we can have the best of both worlds but just change a single setting somewhere. For that matter, a few "configurations" that are along the lines of "advertising", "applications-open", "applications-closed", "during-event" to manage turning on/off all the buttons/links and order of things?


Resetting the opacity of NumberLine numbers doesn't animate smoothly

Description of bug / unexpected behavior

Create a number line with numbers. Animate a change in the opacity of the numbers, accessed with NumberLine.numbers. The opacity changes abruptly rather than smoothly.
Smooth opacity change can be obtained by putting the numbers in a VGroup, but then the axis disappears.
Expected behavior

The opacity should change smoothly without removing the axis.
How to reproduce the issue

Code for reproducing the problem
from manim import *

class numberline(Scene):
    def construct(self):

        abrupt_opacity = Tex("Opacity changes abruptly:").shift(UP)
        number_line = NumberLine(include_numbers = True)
        self.add(abrupt_opacity, number_line)
        self.wait(1)
        self.play(
            number_line.numbers.animate.set_fill(opacity = .2)
        )
        self.wait(1)
        self.remove(abrupt_opacity, number_line)

        self.wait(1)

        axis_disappers = Tex("Axis disappears:").shift(UP)
        number_line = NumberLine(include_numbers = True)
        self.add(axis_disappers, number_line)
        self.wait(1)
        self.play(
            VGroup(*number_line.numbers).animate.set_fill(opacity = .2)
        )
        self.wait(1)

Additional media files

Images/GIFs

https://user-images.githubusercontent.com/4729700/213765636-60e75df1-f128-42eb-86f1-4461c3a253eb.mp4

Logs
Terminal output

PASTE HERE OR PROVIDE LINK TO https://pastebin.com/ OR SIMILAR

System specifications
System Details

OS (with version, e.g., Windows 10 v2004 or macOS 10.15 (Catalina)):
RAM:
Python version (python/py/python3 --version):
Installed modules (provide output from pip list):

PASTE HERE

LaTeX details

LaTeX distribution (e.g. TeX Live 2020):
Installed LaTeX packages:

FFMPEG
Output of ffmpeg -version:
PASTE HERE

Additional comments

Use number_line.animate.... instead of number_line.numbers.animate..... Just for fun, the second approach is also fixed by using    ###VGroup(*number_line).animate....
from manim import *

class numberline(Scene):
    def construct(self):

        abrupt_opacity = Tex("Opacity changes abruptly:").shift(UP)
        number_line = NumberLine(include_numbers = True)
        self.add(abrupt_opacity, number_line)
        self.wait(1)
        self.play(
            number_line.animate.set_fill(opacity = .2)
        )
        self.wait(1)
        self.remove(abrupt_opacity, number_line)

        self.wait(1)

        axis_disappers = Tex("Axis disappears:").shift(UP)
        number_line = NumberLine(include_numbers = True)
        self.add(axis_disa

ppers, number_line)
        self.wait(1)
        self.play(
            VGroup(*number_line).animate.set_fill(opacity = .2)
        )
        self.wait(1)

https://user-images.githubusercontent.com/44656681/213896707-8a65dd5e-051b-4b60-8cc9-6e1a22ff93ad.mp4

Thanks for the workaround. But number_line.numbers.animate.set_fill(opacity = .2) should work, right?

I tested it again and your suggestion didn't work. However, if what you suggested should work, I don't know... I am a simple guy trying to learn Manim. The experts might share their suggestions regarding that ☺.

Yes, that's what I mean. The workaround is great, but I believe it is still a bug that number_line.numbers.animate.set_fill(opacity = .2) does not work as expected. Thanks!


Cross compile configuration

The current scripts only do the standard calls to b2 and the bootstrapper to get the Boost binaries from the CMake setup being run.
Any thoughts about how this setup should look like?

You can see here how MXE cross compiles boost for windows. It basically creates a user-config.bjam file, like this:
echo 'using gcc : mxe : $(TARGET)-g++ : <rc>$(TARGET)-windres <archiver>$(TARGET)-ar <ranlib>$(TARGET)-ranlib ;' > '$(1)/user-config.jam'

But rather than guess the names from the target, you can get the names from cmake variables: CMAKE_CXX_COMPILER, CMAKE_RC_COMPILER, CMAKE_RANLIB and CMAKE_AR variables.

Thanks Paul, it's a good reference.
I'm actually guessing the toolset from the CMAKE_CXX_VARIABLE, my problem is more on the way of "How user code should look like?" How the user may expect this to be called/requested?
Maybe:
$ bii cpp:configure -DBII_BOOST_CROSS_COMPILE=ON -DBII_BOOST_TOOLSET=gcc-arm -DBII_BOOST_TARGET_OS=linux

The user shouldn't need to define any extra variables, except maybe one for address-model, but that could probably could be inferred from the compiler name.

-DBII_BOOST_CROSS_COMPILE=ON

Use CMAKE_CROSSCOMPILING variable instead.

-DBII_BOOST_TOOLSET=gcc-arm

Infer from CMAKE_SYSTEM_NAME and CMAKE_CXX_COMPILER.

-DBII_BOOST_TARGET_OS=linux

Infer from CMAKE_SYSTEM_NAME.
Now for some esoteric systems, the user might need to define these variables; they can't be inferred(considering this is open source they can just open a PR for it). However, most likely they will define these extra variables in their cmake toolchain file. So then they can just call:
bii cpp:configure -DCMAKE_TOOLCHAIN_FILE=toolchain-mingw.cmake

Or call:
bii cpp:configure

If they add the toolchain file to their bii settings file.

I'm missing a +1 button on comments. Thanks for all the info.


Exclamation point remains in Catacombs doorway even after opening the door

The door is closed when the player first approaches (even after retrieving the key, etc.) and the exclamation appears to open the doors. Once they are open, when the player passes through the open doorway in either direction, the exclamation point appears again, with no interactivity.

Technically, a fix was already merged for this in the main branch. However, since milestone-1-aa3 has had structural changes to the event.js files, a new fix was necessary.


What to use as a target for prometheus?

Hi,
after I've deployed the plugins, what should I use as a target for prometheus? server:8080 gives a connection refused and on server:15672/metrics the server returns a 404.
Thanks in advance

all endpoints managed by management plugin are prefixed with /api so target url for scrapes is server:15672/api/metrics.

Thanks.


Rust 1.83, allow -> expect (missing_docs)

Objective
We were waiting for 1.83 to address most of these, due to a bug with missing_docs and expect. Relates to, but does not entirely complete, #15059.
Solution

Upgrade to 1.83
Switch allow(missing_docs) to expect(missing_docs)
Remove a few now-unused allows along the way, or convert to expect

Let's see what the CI has to say now :eyes:

I think you can use expect there if you use cfg_attr.


HBASE-28469: Changes for enabling data-tiering checks during cacheOnWrite (compaction codepaths)

DO NOT SUBMIT.
Change-Id: Ic8f11b328a911f23fc1f1c120a331b21847865bc

:broken_heart: -1 overall

Vote
Subsystem
Runtime
Comment

+0 :ok:
reexec
0m 38s
Docker mode activated.

_ Prechecks _

+1 :green_heart:
dupname
0m  0s
No case conflicting files found.

+1 :green_heart:
hbaseanti
0m  0s
Patch does not have any anti-patterns.

+1 :green_heart:
@author
0m  0s
The patch does not contain any @author tags.

_ HBASE-28463 Compile Tests _

+1 :green_heart:
mvninstall
4m  2s
HBASE-28463 passed

+1 :green_heart:
compile
3m  4s
HBASE-28463 passed

+1 :green_heart:
checkstyle
0m 46s
HBASE-28463 passed

+1 :green_heart:
spotless
0m 53s
branch has no errors when running spotless:check.

+1 :green_heart:
spotbugs
2m  1s
HBASE-28463 passed

_ Patch Compile Tests _

+1 :green_heart:
mvninstall
3m 43s
the patch passed

+1 :green_heart:
compile
3m  2s
the patch passed

+1 :green_heart:
javac
3m  2s
the patch passed

-0 :warning:
checkstyle
0m 40s
hbase-server: The patch generated 3 new + 2 unchanged - 0 fixed = 5 total (was 2)

+1 :green_heart:
whitespace
0m  0s
The patch has no whitespace issues.

+1 :green_heart:
hadoopcheck
6m 36s
Patch does not cause any errors with Hadoop 3.3.6.

-1 :x:
spotless
0m 48s
patch has 56 errors when running spotless:check, run spotless:apply to fix.

+1 :green_heart:
spotbugs
2m  8s
the patch passed

_ Other Tests _

+1 :green_heart:
asflicense
0m 12s
The patch does not generate ASF License warnings.

36m 33s

Subsystem
Report/Notes

Docker
ClientAPI=1.43 ServerAPI=1.43 base: https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5908/1/artifact/yetus-general-check/output/Dockerfile

GITHUB PR
https://github.com/apache/hbase/pull/5908

JIRA Issue
HBASE-28469

Optional Tests
dupname asflicense javac spotbugs hadoopcheck hbaseanti spotless checkstyle compile

uname
Linux 47020fa6a854 5.4.0-1103-aws #111~18.04.1-Ubuntu SMP Tue May 23 20:04:10 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

Build tool
maven

Personality
dev-support/hbase-personality.sh

git revision
HBASE-28463 / 4dee5324ae

Default Java
Eclipse Adoptium-11.0.17+8

checkstyle
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5908/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt

spotless
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5908/1/artifact/yetus-general-check/output/patch-spotless.txt

Max. process+thread count
80 (vs. ulimit of 30000)

modules
C: hbase-server U: hbase-server

Console output
https://ci-hbase.apache.org/job/HBase-PreCommit-GitHub-PR/job/PR-5908/1/console

versions
git=2.34.1 maven=3.8.6 spotbugs=4.7.3

Powered by
Apache Yetus 0.12.0 https://yetus.apache.org

This message was automatically generated.


feat: queries to highlight only jsx/tsx tags

Hello and thanks for the awesome plugin! I only use it for lisp/HTML-like languages since I find the general bracket highlights a bit distracting. But I really wanted to be able to use them for the HTML parts of JSX/TSX, so I created this PR to add a query for only the React-style tags of these files, without the main highlighting. Feel free to change this PR if needed (maybe to move from the javascript directory to a new jsx directory? I wasn't sure if maybe this would add redundant queries when using an inherits modeline). Thanks!

Looks good, but I think rainbow-tags-react would be a better name. The -only suffix is redundant in my opinion, and putting tags before react fits better with rainbow-delimiters-react. What is your opinion?

Sounds good! I'll change it now

One more change please: the file queries/tsx/rainbow-tags-react.scm should not be a symlink, use a query which inherits from Javascript instead:
; inherits: javascript

;;; This query exists for people who only want to highlight tags without
;;; parentheses.

All the other queries inherit from Typescript, whose queries in return inherit from Javascript. Since there is nothing Typescript-specific here we can inherit straight from Javascript.
After you have made the change please squash your commits and rebase on the current master branch.

Got it, should be all good now. :+1:

Looks good now. Please squash one more time and I can merge.

Done. Also you may be interested in this page.

Merged, thank you.

Also you may be interested in this page.

Does that only apply to PRs merged through GitHub's web UI? I don't actually use GitHub for merging PRs, this repo is just a mirror. My workflow is to check out the PR locally, inspect it locally. Then I merge the feature branch into master locally and push to GitLab. GitLab then mirrors the changes to GitHub.
This way I am not tied to GitHub, but I still have the option of using it for collaboration because most people are on GitHub for better or for worse.

I see; I think you may be be able to do something like git merge --squash <branchname> but maybe at that point it would just be easier to have contributors squash beforehand.

I think Git changes the committer to myself if I git merge --squash myself. I'll have to try it the next time to see if that is really the case though.


Gracefully handle invalid authenticity token

In a vanilla Rails 4.1.9 installation with Devise 3.4.1 when protect_from_forgery with: :null_session is defined in ApplicationController in case of CSRF mismatch the following exception occurs:
NoMethodError (undefined method `to_key' for nil:NilClass):
  vendor/bundle/ruby/2.1.0/gems/devise-3.4.1/app/controllers/devise/registrations_controller.rb:50:in `update'
  vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.9/lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.9/lib/abstract_controller/base.rb:189:in `process_action'
  vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.9/lib/action_controller/metal/rendering.rb:10:in `process_action'
  vendor/bundle/ruby/2.1.0/gems/actionpack-4.1.9/lib/abstract_controller/callbacks.rb:20:in `block in process_action'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:113:in `call'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:113:in `call'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:149:in `call'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:149:in `call'
  vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.9/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
...

To replicate just head over to /users/edit form as a signed-in user and before submitting the form alter its authenticity_token value.
Probably this happens due to the execution order of the action filters, i.e. :authenticate_scope! is performed before :verify_authenticity_token.
My current solution was to override handle_unverified_request as follows:
class ApplicationController < ActionController::Base

  # Overwrite unverified request handler to force a refresh / redirect.
  def handle_unverified_request
    super # call the default behaviour, including Devise override
    throw :warden, redirect: request.referer || request.url
  end
end

What is your opinion? Am I missing something?

The current override may not make much sense. The purpose of null session is to continue serving requests, if you are going to redirect, you may as well not use null session? Other than that, it looks fine.
That's exactly the problem with  null session, there will be code that assumes a session exists, and it will definitely break. On Devise and on your application.

@josevalim thank you for your response and sorry for coming back to this, but let's document a best practice or a recommendation on this. The question would be: What's the recommendation for handling invalid authenticity tokens?
My understanding is that there could be two flows:

Refuse the request as invalid, i.e. respond a 400 or a 498 (non-standard, but common) status.
To implement this someone could leave protect_from_forgery with: :exception and then write a rescue block handling the error:
rescue_from ActionController::InvalidAuthenticityToken do
  render text: 'Token expired/invalid', status: 498
end

Empty the session. This should force an authentication, as if the request came in with an empty session.
So, when protect_from_forgery with: :null_session is applied, someone could write this to handle the case:
def handle_unverified_request
  super # call the default behaviour, including Devise override
  authenticate_user!
end

there will be code that assumes a session exists, and it will definitely break

I believe that code may assume a session exists, if measures are taken in order to ensure that a session actually exists. Since Devise already overrides handle_unverified_request to do its stuff, it already takes a part in the flow of the handling of invalid authenticity tokens. Don't you think it's easy to write something like (2) above in Devise handle_unverified_request override?
In that case we are not limiting user choices since:

protect_from_forgery with: :exception: will raise an exception, code from Devise will not run, user should handle the exception as she wish.
protect_from_forgery with: :null_session: if we write something like (2) above in Devise handle_unverified_request override, Devise will re-authenticate user and the fact that "a session exists" is ensured.
protect_from_forgery with: :reset_session: the same as :null_session.

In that way, we could DRY this up and offer a general solution on this. I would be happy to write a PR for this, but I would face the following problems:

How without a session would I know which scope to authenticate?
Since this is an override on ApplicationController, how do I know if the inheriting controller actually needs authenticate_scope! and for which actions?

In my mind it would be easier if we could control the execution order in the before_action chain and somehow enforce the authenticate_scope! to execute after the protect_from_forgery callback.
What's your thoughts?


👩💻 improved HydrogenSession typing.

WHY are these changes introduced?
The current typing for HydrogenSession does is de-coupled from the implementation of HydrogenSession in project. This means the shape of the class could be very different from what @shopify/hydrogen expect session to look like.

WHAT is this pull request doing?
Export the typing for HydrogenSession from @shopify/hydrogen and use it to implement HydrogenSession in all the example projects.
The type is implemented using base session type from @remix-run/server-runtime which should ensure all session type from remix are supported. (Addressing concern from https://github.com/Shopify/hydrogen/pull/1430#discussion_r1367061880)
Having HydrogenSession implemented from a base type will ensure the interface of this class is what we expect it to be when we use property from this class in hydrogen utility.

HOW to test your changes?
From any HydrogenSession class that implements DefaultHydrogenSession type, changed the interface so it no longer conform to the interface and see type error in editor.
example 1: changed return type of commit method

example 2: remove get method

Post-merge steps

Checklist

[x] I've read the Contributing Guidelines
[x] I've considered possible cross-platform impacts (Mac, Linux, Windows)
[x] I've added a changeset if this PR contains user-facing or noteworthy changes
[ ] I've added tests to cover my changes
[ ] I've added or updated the documentation

Does anyone know if there are other documentation I need to update with this change?


Support getting the width of a connection

Caleb needs this for PNR.
Syntax proposals: len(connection) or connection.width
Should be simple for a normal connection (just get the width of one of the wireables)
For directed connections (which Caleb is using) the current way to do it is a bit clunky (need to follow the select path to get a wireable which you can query for the type and then width). This is because connection.source returns a select path instead of a wireable. @rdaly525 Could directedconnection.{source,sink} return Wireables instead?

If this is urgent, I would say just implement the python len() function for connection first by abstracting away the clunkyness to the python bindings.
There is nothing wrong with getsrc/getSnk returning a Wireable instead, although it is a little bit clunky if you just want to traverse the directed graph.

I would maybe have a connection.size for the raw bit width in a similar way for type

I'll do connection.size for now to be consistent with the type API.


add replace_invalid_params option

resolves #122

Coverage increased (+2.1%) to 88.493% when pulling b9fb7e7bffff0161d248b659ec8ac78c16701337 on ignore-errors into 9bde136bea62c3a102d81ed716b027758957b3e3 on main.


Remove unused Warrior sounds

Per https://github.com/diasurgical/devilutionX/pull/5820

The list here is not correct, sfx/warrior/warior18.wav is actually used


Add MinerMore Pool for Raven Coin - (A Message from an advanced miner that loves this platform)

this may not be an actual issue but it's a very much needed request that have been requested multiple times by me and a friend on discord that started mining Raven Coin outside of salad (only because of this mainly) and he got paid up to 5 RVN's in a single hour because the MinerMore pool is not as complicated as the NiceHash's one in the process of paying you crypto for what you mined there it's more like renting your hashing power but on MinerMore it's very different and thus why double the earnings there with a 1060 6GB it could be up to $1.6 a day he's got proof and i have proved it myself to seniorquico which is apparently one of your developers in discord that he's actually steadily earning that much which is very high and very fast at submitting shares specially for that gpu that isn't as good in compute as some AMD cards or say the new "Turing" architecture so it's the best pool for Raven Coin despite that mining the coin itself is still possible through salad and it pays 20% more than ethereum but it's still on NiceHash's stratum which is the whole point of this request
sadly that money cannot be transferred into salad balance cause of the current pools you have supported
and whenever i bring this up with any staff or developer their excuse is "We're working on other stuff" well work on this as well god damn it
i'm a valuable customer and iv'e made a load of money in my salad account thus i'm making you money along the process so i don't think you would want to lose me and make yourself look bad in front of your community ^^

I actually agree
there's no point of only having NiceHash :)


[ENG-1068] Make current directoy user code and add it to PYTHONPATH

I know the code
    sys.path.append(code_dir)
    chdir(code_dir)

Is duplicated, but I couldn't find a meaningful name for a utility function, so left it "as is".

Build-time inspection still fails.

Interesting. I deployed simple.tar.gz and it worked for me:
 ak deploy -m /tmp/simple/autokitteh.yaml -d /tmp/simple
[plan] project "py_simple": not found, will create
[plan] var "py_simple/default/USER": not found, will set
[plan] connection "py_simple/http_trigger": not found, will create
[plan] trigger "py_simple/default:py_simple/http_trigger/events": not found, will create
[exec] create_project "py_simple": prj_01j1ah6ywaf6yty0pv2krps3fh created
[exec] set_var "py_simple/default/USER": env_01j1ah6ywaf8yt305k2h2t7w1x updated
[exec] create_connection "py_simple/http_trigger": con_01j1ah6yygej2rz7qnqfxsjxbb created
[exec] create_trigger "py_simple/default:py_simple/http_trigger/events": trg_01j1ah6yytevt8kxs4a3e0rkfx created
[!!!!] Connection created, and can be initialized. Please run this to complete: ak connection init con_01j1ah6yygej2rz7qnqfxsjxbb
[exec] create_build: created "bld_01j1ah6z5de7ev33k077b27kd2"
[exec] create_deployment: created "dep_01j1ah6z5qesp8nkvs30t1n4kf"
[exec] activate_deployment: activated

On the server:
2024-06-26 18:04:18 INFO pythonrt/pythonrt.go:98 python info {"runtime": "python", "exe": "/home/miki/work/autokitteh/src/venv/bin/python3", "version": {"Major":3,"Minor":12}}
2024-06-26 18:04:18 INFO pythonrt/pythonrt.go:113 using python {"runtime": "python", "exe": "/home/miki/.local/share/autokitteh/venv/bin/python"}
2024-06-26 18:04:18 INFO pythonrt/pythonrt.go:155 build {"runtime": "python"}
2024-06-26 18:04:18 INFO pythonrt/pythonrt.go:155 build {"runtime": "python"}


Msgpack serializes data, writes redis data is lost

For an int variable with a value of 0, msgpack serializes and writes the data to redis, and the value corresponding to the key above redis is lost

I don't think I understand your issue.  I don't have a problem setting and getting a value of 0 when msgpack serialization is enabled.
<?php
$obj_r = new Redis();
$obj_r->connect('<IP_ADDRESS>', 6379);

$obj_r->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_MSGPACK);
$obj_r->set('zero', 0);
var_dump($obj_r->get('zero'));

The value in redis is what I would expect too:
$ php /tmp/zero.php
/tmp/zero.php:8:
int(0)
$ redis-cli get zero
"\x00"

I don't think I understand your issue. I don't have a problem setting and getting a value of 0 when msgpack serialization is enabled.
<?php
$obj_r = new Redis();
$obj_r->connect('<IP_ADDRESS>', 6379);

$obj_r->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_MSGPACK);
$obj_r->set('zero', 0);
var_dump($obj_r->get('zero'));

The value in redis is what I would expect too:
$ php /tmp/zero.php
/tmp/zero.php:8:
int(0)
$ redis-cli get zero
"\x00"

Well, thank you very much for your reply. I wrote it in c
redisContext *context = redisConnect(char *ip, int port);
if (context == NULL || context->err)
{
if (context)
{
printf("Error: %s\n", context->errstr);
// handle error
}
else
{
printf("Can't allocate redis context\n");
}
}
    msgpack_sbuffer sbuf;
msgpack_sbuffer_init(&sbuf);
msgpack_packer pk;
msgpack_packer_init(&pk, &sbuf, msgpack_sbuffer_write);
msgpack_pack_array(&pk, 1);
uint8_t a = 0;
msgpack_pack_uint8(&pk, a);
for(int j = 0; j < sbuf.size; j++)
{
	printf("%x  ", sbuf.data[j]);
}
printf("\n");

redisCommand(context, "lpush abc %s", sbuf.data);

    lrange abc 0 10
    1) "\x91"

OMG, I'm sorry.  I also maintain phpredis and mistook your questions as being related to that 🤦♂

redisCommand(context, "lpush abc %s", sbuf.data);

I think you want to use %b and then the length of the data you're sending.
Something like:
redisCommand(context, "lpush %b", sbuf.data, <however long sbuf.data is>);

redisCommand(context, "lpush abc %s", sbuf.data);

I think you want to use %b and then the length of the data you're sending.
Something like:
redisCommand(context, "lpush %b", sbuf.data, <however long sbuf.data is>);

yea， i find this, thank you very much !
This requires storing data to redis in binary mode, like this
redisCommand(context, "lpush abc %b", sbuf.data, sbuf.size);
it's ok!

Glad you got it working!


web support

Summary
Uses the CSS API to observe the safe-area-inset on web.

Test Plan

Example video
What's required for testing (prerequisites)?
Phone with notch, i.e: iPhone X
What are the steps to reproduce (after prerequisites)?
Run expo start --web in the /example. Visit the page from a device with a notch, then turn the device to landscape orientation, the black box should respect safe area insets.
You can also try saving the page as a PWA to get the full effect.
Compatibility

OS
Implemented

iOS
✅

Android
✅

Web
✅

Checklist

[x] I have tested this on a device and a simulator
[ ] I added the documentation in README.md
[ ] I mentioned this change in CHANGELOG.md
[ ] I updated the typed files (TS and Flow)
[x] I added a sample use of the API in the example project (example/App.js)

is there any update on this PR / web support for this package?  i'm seeing an issue coming from react-native-safe-area-view when attempting to use react-navigation-stack on web with the head of react-native-gesture-handler that just added web support a few days ago (thanks again @EvanBacon ) that looks like the web version of this package isn't exporting the getStatusBarHeight function, which is used in react-navigation-stack's getDefaultHeaderHeight function.  not sure if this PR resolves that issue, and since it seems a bit stale, i'm not sure if attempting to use the branch of this PR would only make matters worse or not.

after stitching this branch into react-navigation-stack, it looks like the issue is that the function getStatusBarHeight isn't exported in the index at all, which react-navigation-stack is spreading to gain access to (https://github.com/react-navigation/stack/blob/master/src/views/Header/HeaderSegment.tsx#L10)

@necolas IIRC this is so you can set style changes without updating the tree like: this.setNativeProps({ style: { display: "none" } });

@tehOPEologist this PR isn't implementing forceInset yet. It'd probably require that some tests are written before I felt comfortable merging this.

@EvanBacon Do you have any updates? Or maybe you can advise any workaround?

it seems like this should be a lot easier now that you've added the logic for it to https://github.com/th3rdwave/react-native-safe-area-context! :O

react-native-safe-area-context supports web and this lib is deprecated so yeet

react-native-safe-area-context supports web and this lib is deprecated so yeet

🥸🥸🥸

🥸🥸🥸


RFC: Increase buffer size

Tested against cov-analysis-linux64-2022.06.tar.gz (1.2G) with /tmp mounted on a tmpfs:
$ hyperfine -w 1 -m 10 -c 'rm -Rf /tmp/benchtest/*' './target/release/examples/uncompress_tool uncompress-archive cov-analysis-linux64-2022.06.tar.gz /tmp/benchtest true'
Benchmark 1: ./target/release/examples/uncompress_tool uncompress-archive cov-analysis-linux64-2022.06.tar.gz /tmp/benchtest true
  Time (mean ± σ):      9.516 s ±  0.053 s    [User: 7.088 s, System: 2.401 s]
  Range (min … max):    9.462 s …  9.626 s    10 runs

$ hyperfine -w 1 -m 10 -c 'rm -Rf /tmp/benchtest/*' './target/release/examples/uncompress_tool uncompress-archive cov-analysis-linux64-2022.06.tar.gz /tmp/benchtest true'
Benchmark 1: ./target/release/examples/uncompress_tool uncompress-archive cov-analysis-linux64-2022.06.tar.gz /tmp/benchtest true
  Time (mean ± σ):      8.055 s ±  0.027 s    [User: 6.386 s, System: 1.643 s]
  Range (min … max):    8.008 s …  8.085 s    10 runs

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

0 of 0   changed or added relevant lines in 0 files are covered.
3 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.8%) to 85.57%

Files with Coverage Reduction
New Missed Lines
%

../../../.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.25/src/sink/feed.rs
1
94.44%

../../../.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-0.3.25/src/mpsc/mod.rs
2
90.41%

Totals

Change from base Build<PHONE_NUMBER>:
-0.8%

Covered Lines:
338

Relevant Lines:
395

💛  - Coveralls

Did you compare the memory use? This might impact embedded devices, hence my question.

time(1) shows Maximum resident set size (kbytes) of 7852 for both.
heaptrack(1) shows peak RSS (including heaptrack overhead) of 10.79M for both.

Can you add an entry on CHANGES file before merging?

We might need to raise the MSRV due to Darwin. Are you aware of any possible cause of this error?

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

0 of 0   changed or added relevant lines in 0 files are covered.
7 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-1.8%) to 84.557%

Files with Coverage Reduction
New Missed Lines
%

../../../.cargo/registry/src/github.com-1ecc6299db9ec823/futures-util-0.3.25/src/sink/feed.rs
1
94.44%

../../../.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-0.3.25/src/mpsc/mod.rs
3
89.73%

../../../.cargo/registry/src/github.com-1ecc6299db9ec823/futures-channel-0.3.25/src/mpsc/sink_impl.rs
3
76.92%

Totals

Change from base Build<PHONE_NUMBER>:
-1.8%

Covered Lines:
334

Relevant Lines:
395

💛  - Coveralls


Missing pal_local_joint_control

tiago_controller_configuration package, has dependency on "pal_local_joint_control" that seems not available anywhere

@andreagavazzi Thanks for showing interest in our TIAGo. Regarding your query, pal_local_joint_control is our internal package for the joint level control. However, this dependency is not needed for you to run the TIAGo public simulation.
You can find the info of how to setup and run the simulation here: http://wiki.ros.org/Robots/TIAGo/Tutorials
Thank you,
Best Regards,
PAL Robotics Team

Hello @andreagavazzi,
We will be closing this issue due to inactivity.
Best Regards,
PAL Robotics Team


Only listen on main interface and delete useless packages

Proposed Changes

Fixes #3
Delete useless packages, reduces size by 150mb+

Those packages are there to support the installation of plugins, some plugins actually require those tools.
I'm not sure if and how limiting the interface will solve #3 in this case... @steeve Could you be so kind to provide some kind of explanations for this?

Sure, all the info is at https://github.com/hassio-addons/repository/issues/5

@steeve I'm going to decline, due to some concerns and upcoming changes.
I've started development on a rewrite of this add-on (and all my others). This will be fixed in this rewrite.


Enable use of online lightning flash rates in GEOSCHEMchem

Make GEOS-Chem use lightning flash rates (LFR) that are computed online (in MOIST) instead of reading them from an external file.
This PR is contingent on adding export LFR_GCC to MOIST.

@christophkeller would you mind resolving the conflicted lines in these two files? Thanks

@christophkeller  This PR is zero diff for PCHEM.
But when running GEOS-Chem chemistry the model crashes -
"ExtData could not satisfy import LFR_GCC"
Please include a /dev/null entry for  LRF_GCC.

This PR needs GEOSagcm to be updated first. See this pull request (PR #187). LFR_GCC is then provided by MOIST (with the connectivity set in Physics_GridComp).

Sorry, I missed that first comment!  (And failed to realize that the blue text was a link to another PR).

@GEOS-ESM/chemistry-gatekeepers we are ready to pull #187 into the agcm. If you're are okay with this PR, please approve and tag a chem release that can be referenced by the agcm.

@mathomp4 the workflow reports a failure to compile, as of 4 days ago.  But I compiled this code in February, no problem. Are there new defaults since then? Is it trying different compilers?  I'm not sure what to make of the workflow output.

@mathomp4 the workflow reports a failure to compile, as of 4 days ago. But I compiled this code in February, no problem. Are there new defaults since then? Is it trying different compilers? I'm not sure what to make of the workflow output.

This depends on the GEOSgcm_GridComp pull request. Workflow will fail when multiple dependent PRs across repos are pending. It will only work when they are all in together.

@mathomp4 the workflow reports a failure to compile, as of 4 days ago. But I compiled this code in February, no problem. Are there new defaults since then? Is it trying different compilers? I'm not sure what to make of the workflow output.

This depends on the GEOSgcm_GridComp pull request. Workflow will fail when multiple dependent PRs across repos are pending. It will only work when they are all in together.

Yeah. This might be because we are "in the middle" of the merges. I think it was because a few days ago @sdrabenh deleted the corresponding branch on GMAO_Shared after merging it into master in preparation for a release. Thus, since the branch didn't exist, the build used the GMAO_Shared that was in the components.yaml, which doesn't have lightning_mod. I just restored @christophkeller's old branch in GMAO_Shared and relaunched CircleCI. Hopefully in 20 minutes or so, we'll see a success. If so, I can then re-delete the GMAO_Shared branch.

@mathomp4 the workflow reports a failure to compile, as of 4 days ago. But I compiled this code in February, no problem. Are there new defaults since then? Is it trying different compilers? I'm not sure what to make of the workflow output.

This depends on the GEOSgcm_GridComp pull request. Workflow will fail when multiple dependent PRs across repos are pending. It will only work when they are all in together.

Yeah. This might be because we are "in the middle" of the merges. I think it was because a few days ago @sdrabenh deleted the corresponding branch on GMAO_Shared after merging it into master in preparation for a release. Thus, since the branch didn't exist, the build used the GMAO_Shared that was in the components.yaml, which doesn't have lightning_mod. I just restored @christophkeller's old branch in GMAO_Shared and relaunched CircleCI. Hopefully in 20 minutes or so, we'll see a success. If so, I can then re-delete the GMAO_Shared branch.

Yes, others approved PR#69 merged, and deleted this branch before the whole PR was actually ready. Details were still being worked out and I don't think they were aware of the two other corresponding PRs out there.

Build succeeds with the restoration of the branch in GMAO_Shared as expected.

Great. @mathomp4 good thinking about restoring the branch - that was the easiest solution since changes are in shared master but not referenced in a tagged released yet.

About Workflow:   Does it use mepo?  and if so, does mepo have a separate "develop" list of tags to use?  I have been testing by (1) checkout_externals -e Develop.cfg  (2) cd @GEOSchem_GridComp (3) git checkout develop  (4) git merge .    And I assume that Workflow has no way of using other PR dependencies?

@mmanyin the workflow uses the following commands to build behind the scene:
mepo init
mepo clone
mepo develop GEOSgcm_GridComp GEOSgcm_App
mepo checkout-if-exists ${CIRCLE_BRANCH}
mepo status
where CIRCLE_BRANCH is the PR/branch name. This works well if all inter-dependent PRs use the same name because they will all be checked out. It failed for us initially because one of the 3 branches was already merged into master (changes not referenced in a tag) and the branch was deleted. Restoring the shared branch enable all 3 PRs to be checkout out once again.

@mmanyin the workflow uses the following commands to build behind the scene:
mepo init
mepo clone
mepo develop GEOSgcm_GridComp GEOSgcm_App
mepo checkout-if-exists ${CIRCLE_BRANCH}
mepo status
where CIRCLE_BRANCH is the PR/branch name. This works well if all inter-dependent PRs use the same name because they will all be checked out. It failed for us initially because one of the 3 branches was already merged into master (changes not referenced in a tag) and the branch was deleted. Restoring the shared branch enable all 3 PRs to be checkout out once again.

This looks good, with one provision, for a CHEM PR -- the CIRCLE_BRANCH must not be missing any commits that are already in  CHEM Develop.  Perhaps a more general approach would be to mepo develop  ,   and then  git merge $CIRCLE_BRANCH  (for the target repo).


WIP Adds support to Brazilian portuguese language

Relates to #743

@sumneko I am almost done! I would like to test this out on vscode but I don't know exactly how to do it. Would it be possible to locally install the lang server extension including these files I've been working on? Just to preview the translations.

@sumneko I am almost done! I would like to test this out on vscode but I don't know exactly how to do it. Would it be possible to locally install the lang server extension including these files I've been working on? Just to preview the translations.

The quickest way is to copy the entire locale/pt-br into your extension.

The quickest way is to copy the entire locale/pt-br into your extension.

It worked!
With just  cp ./locale/pt-br ~/.vscode-server/extensions/sumneko.lua-2.4.7/server/locale  and a vscode refresh!

Thank you!


Dec2019 site maintenance announcement

December site maintenance announcement

Docs Build status updates of commit 345a8b4:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sysinternals/Announce/SiteUpgradeDec2019.md
:white_check_mark:Succeeded
View

sysinternals/index.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Seven Segments cannot have multiple instances because of ocr.png

Per this discussion:
https://community.home-assistant.io/t/multiple-seven-segments/67166/4
Seven Segments can not have multiple instances because the component hard codes the png file name fed to ssocr as home-assistant-config-dir/ocr.png.
Attempting to have multiple instances results in a race condition where instances overwrite each other's data.

Code is merged, so this will be released pretty soon...


Drop support for 7.3 and add 8.1

This PR drops support for EOD PHP 7.3 and adds PHP 8.1.
Related: https://github.com/tighten/tighten-coding-standard/pull/10

@driftingly Feel free to tag a release--lmk if you need anything from me


too many scene tabs breaks layout

Add enough tabs that they fill they extend beyong the width of the window, and the dock on the right will be pushed halfway off screen, as well as the rightmost scene tabs and other elements like the settings button on the top right.
Ubuntu 13.10, X11

See #2396.


Setup project management

Setup the project management boards to correctly handle the development tasks, automated based on the workflow specified for the project.
This should include, but is not limited to:

Planning View (essentially a backlog)
Roadmap (define a timeline of expected releases)
Kanbaan Board (for work with the current iteration/sprint
populate the planning view with a list of tasks that should get the project through MVP and into Release Candidate 1 (RC.v1.0)
define the documents explaining the usage of the toolset and configuration

Setup and completed for MVP,

still require document definition


Listen in on careen's success/failures

Atm the migrate command always logs success, even if careen explodes.

I'm thinking that even this common careen failure has exit code of 0, since its an unhandled promise rejection. So this may be trickier than just checking for those. Hm.


Crash when closing remote graphql subscription before receiving first message

Bug description
The server is crashing when terminating subscription before receiving any message.
The error message is:
{"level":"debug","time":1676981480059,"caller":"commands/root.go:99","msg":"env file successfully loaded","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/wunderctl","file":".env"}
{"level":"debug","time":1676981480061,"caller":"scriptrunner/scriptrunner.go:175","msg":"Start runner","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/wunderctl","runnerName":"hooks-server-runner"}
{"level":"info","time":1676981480061,"caller":"node/node.go:199","msg":"Api config: static","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/wunderctl","component":"@wundergraph/node"}
{"level":"debug","time":1676981480061,"caller":"node/node.go:432","msg":"http.Client.Transport","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","enableDebugMode":true}
{"level":"debug","time":1676981480061,"caller":"apihandler/apihandler.go:674","msg":"configureCache","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","primaryHost":"<IP_ADDRESS>:9991","deploymentID":"","cacheKind":"IN_MEMORY_CACHE","cacheSize":128000000}
{"level":"debug","time":1676981480063,"caller":"apihandler/apihandler.go:406","msg":"create sub router","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node"}
{"level":"debug","time":1676981480064,"caller":"apihandler/apihandler.go:188","msg":"configuring API","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","numOfOperations":1}
{"level":"debug","time":1676981480064,"caller":"apihandler/apihandler.go:249","msg":"configuring CORS","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","allowedOrigins":["http://localhost:3000"]}
{"level":"debug","time":1676981480065,"caller":"apihandler/apihandler.go:638","msg":"registered SubscriptionHandler","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","method":"GET","path":"/operations/sse","mock":false,"authRequired":false}
{"level":"debug","time":1676981480065,"caller":"apihandler/internalapihandler.go:85","msg":"configuring API","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","numOfOperations":1}
{"level":"debug","time":1676981480066,"caller":"node/node.go:560","msg":"public node url","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","publicNodeUrl":"http://localhost:9991"}
{"level":"info","time":1676981480066,"caller":"node/node.go:542","msg":"listening on","hostname":"38ee93c55bb8","pid":28747,"component":"@wundergraph/node","addr":"<IP_ADDRESS>:9991"}
{"level":"debug","time":1676981480216,"pid":28759,"hostname":"38ee93c55bb8","component":"@wundergraph/server","msg":"Registered (0) query operations"}
{"level":"debug","time":1676981480216,"pid":28759,"hostname":"38ee93c55bb8","component":"@wundergraph/server","msg":"Registered (0) mutation operations"}
{"level":"info","time":1676981480216,"pid":28759,"hostname":"38ee93c55bb8","component":"@wundergraph/server","msg":"Hooks plugin registered"}
{"level":"info","time":1676981480222,"pid":28759,"hostname":"38ee93c55bb8","component":"@wundergraph/server","msg":"Server listening at http://<IP_ADDRESS>:9992"}

--- ClientRequest start ---

GET /operations/sse HTTP/1.1
Host: localhost:9991
Accept: */*
User-Agent: curl/7.74.0

--- ClientRequest end ---

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xc3c72e]

goroutine 54 [running]:
github.com/wundergraph/graphql-go-tools/pkg/engine/resolve.(*Context).Value(0xc003e227d8?, {0x12ef080?, 0x20cb828?})
        <autogenerated>:1 +0x2e
context.value({0x16bcd30?, 0xc000144c60?}, {0x12ef080?, 0x20cb828?})
        /opt/hostedtoolcache/go/1.18.10/x64/src/context/context.go:590 +0x1f6
context.(*cancelCtx).Value(0xc0001452d8?, {0x12ef080?, 0x20cb828?})
        /opt/hostedtoolcache/go/1.18.10/x64/src/context/context.go:355 +0x65
net/http/httptrace.ContextClientTrace(...)
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/httptrace/trace.go:25
net/http.(*persistConn).readLoop(0xc000145200)
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/transport.go:2104 +0x2ed
created by net/http.(*Transport).dialConn
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/transport.go:1750 +0x173e

How to reproduce
Reproduction devcontainer.
Terminal 1:

cd sse
npm install
npm run start

Terminal 2:

cd world
npm install
./node_modules/.bin/wunderctl generate (npm run start does not work it has strange behavior)
./node_modules/.bin/wunderctl start

Terminal 3:

curl -N http://localhost:9991/operations/sse
ctrl+c before receiving message
Terminal 2 shows error

Expected behavior
I expect the server to not crash.
WunderGraph information
See reproduction repo.
Environment & setup

OS: Devcontainer mcr.microsoft.com/devcontainers/typescript-node:0-18 on 5.15.94-1-MANJARO
Go version: NA
Database: NA
Node.js version: v18.13.0

WunderCtl Version
Version: 0.131.0
Commit: ef6da9fb2798025bd86026cfac4d9881b66a6d00
Date: 2023-02-10T14:11:04Z
BuiltBy: ci

Hi @andcan. Thanks for your report. This should be fixed in the latest release (0.138). Could you please upgrade, try it and let us know if it's working for you? Thanks!

Upgraded to 0.138.0.
It's still crashing:
{"level":"info","time":1678371540019,"msg":"Api config: static","hostname":"9074477a0296","pid":832,"component":"@wundergraph/wunderctl","component":"@wundergraph/node"}
{"level":"error","time":1678371540019,"msg":"The secret WG_CSRF_TOKEN_SECRET was unset. A temporary randomised value has been created; please generate a new one. https://docs.wundergraph.com/docs/self-hosted/security","hostname":"9074477a0296","pid":832,"component":"@wundergraph/node"}
{"level":"error","time":1678371540019,"msg":"The secret WG_SECURE_COOKIE_HASH_KEY was unset. A temporary randomised value has been created; please generate a new one. https://docs.wundergraph.com/docs/self-hosted/security","hostname":"9074477a0296","pid":832,"component":"@wundergraph/node"}
{"level":"error","time":1678371540019,"msg":"The secret WG_SECURE_COOKIE_BLOCK_KEY was unset. A temporary randomised value has been created; please generate a new one. https://docs.wundergraph.com/docs/self-hosted/security","hostname":"9074477a0296","pid":832,"component":"@wundergraph/node"}
{"level":"info","time":1678371540023,"msg":"listening on","hostname":"9074477a0296","pid":832,"component":"@wundergraph/node","addr":"<IP_ADDRESS>:9991"}
{"level":"info","time":1678371540172,"pid":844,"hostname":"9074477a0296","component":"@wundergraph/server","msg":"Hooks plugin registered"}
{"level":"info","time":1678371540178,"pid":844,"hostname":"9074477a0296","component":"@wundergraph/server","msg":"Server listening at http://<IP_ADDRESS>:9992"}
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0xc3d5ce]

goroutine 32 [running]:
github.com/wundergraph/graphql-go-tools/pkg/engine/resolve.(*Context).Value(0xc00009b438?, {0x12f52e0?, 0x20d37a8?})
        <autogenerated>:1 +0x2e
context.value({0x16c3b40?, 0xc000696ea0?}, {0x12f52e0?, 0x20d37a8?})
        /opt/hostedtoolcache/go/1.18.10/x64/src/context/context.go:590 +0x1f6
context.(*cancelCtx).Value(0xc0006973f8?, {0x12f52e0?, 0x20d37a8?})
        /opt/hostedtoolcache/go/1.18.10/x64/src/context/context.go:355 +0x65
net/http/httptrace.ContextClientTrace(...)
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/httptrace/trace.go:25
net/http.(*persistConn).readLoop(0xc000697320)
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/transport.go:2104 +0x2ed
created by net/http.(*Transport).dialConn
        /opt/hostedtoolcache/go/1.18.10/x64/src/net/http/transport.go:1750 +0x173e

Thanks for the confirmation. We're looking into it.

@andcan This is now fixed. If you upgrade to the latest SDK, you shouldn't see this anymore. Thanks for reporting it!


Add fallback/file buffering when requests can't be sent

Is your feature request related to a problem? Please describe.
When the specified OTLP endpoint is unreachable or otherwise incapable of receiving the request, it would be great to have support for a fallback to file (or a custom sink). This will ensure that no data loss would occur in the event of a failure to export, as this sink is being used in critical auditing infrastructure.
Proposal:
Change the IExporter interface for exports on log service requests to return some kind of information about the success/failure state of the exports.
This can then feed into the sink to make a decision about whether to reroute the logs to a secondary sink (or keep it as a filesystem-only fallback), or to continue with ignoring the response.
Expose an option to configure either a filesystem fallback location or a secondary sink fallback.
Edit: upon looking into it, we'd also need to catch exceptions in the case of unreachable grpc endpoints.
Describe alternatives you've considered

Creating a resilient middleware that can receive the logs, however this still requires a network request.
Overriding the implementations myself to ensure a fallback is present.

Additional context
I'd be happy to have a crack at implementing this for the filesystem-only approach if there's nothing already in the works.

Hi @alex-lawrence-conf, thanks for the ticket and PR!
The mechanism you're describing is very similar to what's being discussed in https://github.com/serilog/serilog/issues/1791#issuecomment-1884134585 - just a sketch, but the central idea is to implement fallbacks using shared infrastructure that multiple sinks could benefit from.
The surface syntax for the most common usage would probably end up being something like:
    .WriteTo.FallbackChain(wt => wt.OpenTelemetry(...), wt => wt.File(...))

(Naming TBC.)
In this scenario, the sink configured by WriteTo.OpenTelemetry would implement a Serilog-defined interface like ILoggingFailurePublisher, which the FallbackChain() method would dynamically check for and call SetFallbackListener(...) on when present (or throw otherwise).
There's a bit involved, and some help rolling this out would would be welcome, but I probably need to whip up a spike to get the ball rolling since there are multiple use cases we had in mind for the mechanism. I'll try to loop back in the next few days 🤞

Hi @alex-lawrence-conf, thanks for the ticket and PR!
The mechanism you're describing is very similar to what's being discussed in serilog/serilog#1791 (comment) - just a sketch, but the central idea is to implement fallbacks using shared infrastructure that multiple sinks could benefit from.
The surface syntax for the most common usage would probably end up being something like:
    .WriteTo.FallbackChain(wt => wt.OpenTelemetry(...), wt => wt.File(...))

(Naming TBC.)
In this scenario, the sink configured by WriteTo.OpenTelemetry would implement a Serilog-defined interface like ILoggingFailurePublisher, which the FallbackChain() method would dynamically check for and call SetFallbackListener(...) on when present (or throw otherwise).
There's a bit involved, and some help rolling this out would would be welcome, but I probably need to whip up a spike to get the ball rolling since there are multiple use cases we had in mind for the mechanism. I'll try to loop back in the next few days 🤞

Thanks @nblumhardt for the response. This mechanism sounds like the perfect solution for what I am looking for. I think the majority of what I've done here is easily generalisable by design and could rather trivially be extracted to a fallback chain in the way you describe.
I think from what I've seen making the fallback for this module, an appropriate design choice would be to have sinks opt in to the fallback by exposing their own extensions on a new fallback version of the type returned by WriteTo that contains that publisher instantiated already, so the consuming package can just inject that into the sink and do whatever logic it needs to determine the log state.
Either that, or we could just expose a result type on the sink emissions in a new IFailureLogSink interface using that enum as you've described, and then the fallback chain infrastructure in serilog can determine it's own retry protocol and pacing profile for the different methods.
Just a few design questions:

is serilog by design supposed to use deferred execution, as I've done extensively in my PR? The benefits I saw was it allowed for elegant deferred (and fluent) function chains that are lazily executed on task execution
is it the sink that should be responsible for retry pacing? Or would it make more sense that, since the sinks are going to expect to implement something to do with reporting failure states, that a shared retry mechanism could be implemented that does it for the sinks that opt in to the IFailureLogSink?
If serilog would be responsible for retries, I think that it would make more sense for the sink to not just return it's logging state, but the action it tried to do to maintain log state after any sink transformations. So the result type would look something like:

public struct LogEmissionState
{
    private enum EmissionState
    {
        Failed,
        Success,
        Retry,
    }

    private Action? _retryAction;
    private EmissionState _emissionState;
... Factory methods for the combinations
}

@nblumhardt a quick point about how this use case wouldn't be generalisable is that what I've implemented captures the exact request that would have been sent as either Protobuf or NDJson. We'd lose all of the open telemetry information captured and transformed if it just sends the original logevent down a chain external to this sink

Hi @alsi-lawr; https://github.com/serilog/serilog/pull/2108 implements a spike of this; although it might take a bit of shuffling of code, hopefully the need to carry through some OTel-specific things like resource attributes can be worked around. Keen for some feedback if you have a chance to look in on it. Thanks for the nudge on this!

@nblumhardt is there scope to implement the fallback features in this package now?
I can work on integrating some of the otel-specific things from my fork into the new framework, and work on implementing the ISetLoggingFailureListener interface to forward those to a listener.
It should be trivial to then implement the ILoggingFailureListener in my own code.
Is there a contribution style guide, by the way?

Thanks for the ping! Returning to this, I'm not 100% clear on how usage would look, could you possibly post a short snippet showing what the configuration (in C#) would look like, and how the data would flow between sinks? For resource attributes I'm wondering if the solution to this might instead just be using enrichers on the fallback sinks to explicitly add these as regular properties :thinking:

Thanks for the ping! Returning to this, I'm not 100% clear on how usage would look, could you possibly post a short snippet showing what the configuration (in C#) would look like, and how the data would flow between sinks? For resource attributes I'm wondering if the solution to this might instead just be using enrichers on the fallback sinks to explicitly add these as regular properties 🤔

The way I approached this was by re-emitting a logevent with the otlp message as a single property for an empty message.
I'm envisioning a simpler solution that just does exactly what you're suggesting.
And a second that does what I've implemented already as a class OtlpMessageFallbackSink : OpenTelemetryLogsSink that will attach the otlp raw message contents to the log event.

Thanks for the follow-up. I think to do anything specific for fallbacks in this sink we'd need to dig a bit deeper into examples of what's possible with the default approach and how the modified version would differ.
If the fallback chain was targeting an OTLP sink, all of the OTLP info would/could just be re-added by specifying the same resource attributes on the fallback sink.
If the fallback chain was targeting a different sink then OTLP message bodies probably wouldn't be useful.
I might be missing something; let me know if so. Cheers!

Thanks for the follow-up. I think to do anything specific for fallbacks in this sink we'd need to dig a bit deeper into examples of what's possible with the default approach and how the modified version would differ.
If the fallback chain was targeting an OTLP sink, all of the OTLP info would/could just be re-added by specifying the same resource attributes on the fallback sink.
If the fallback chain was targeting a different sink then OTLP message bodies probably wouldn't be useful.
I might be missing something; let me know if so. Cheers!

So, my use case is that we need to have a fallback that retains all information at the moment of logging, as it's being used for financial auditing. Currently, this is logged to disk as a backup mechanism if connection to our otel-collector goes down. We then have a secondary process that ingests those binary logs (newline delimited grpc messages) and attempts retries.
This was important to have these logs persist in all situations without the reasonable possibility of loss.
Currently, this isn't possible as we have no way to hook into the gRPC call with all the context and pre-built message on failures at all without forking the project.
Re-generating the message could lose important information we require for financial audit logs. With the default implementation, we just the same context as the incoming log message before attaching resource information, so I'd need to maintain mirrored logic for that log enrichment done in this package in order to get close to the original message in another sink.

Thanks for the follow-up! Perhaps for this use-case a local, buffering, OTLP forwarder service and AuditTo support would be a viable option? On the surface it's a fairly uncommon set of requirements so I'm hesitant to add specific API support for it in the sink at this stage.


feat(parser): parse lambda function

I hereby agree to the terms of the RisingWave Labs, Inc. Contributor License Agreement.
What's changed and what's your intention?
Resolve #11838
Just ignore the precedence issue, it’s really hard to construct a wrong case and users rarely meets that.

Checklist

[x] I have written necessary rustdoc comments
[x] I have added necessary unit tests and integration tests
[ ] I have added fuzzing tests or opened an issue to track them. (Optional, recommended for new SQL features #7934).
[ ] My PR contains breaking changes. (If it deprecates some features, please create a tracking issue to remove them in the future).
[x] All checks passed in ./risedev check (or alias, ./risedev c)
[ ] My PR changes performance-critical code. (Please run macro/micro-benchmarks and show the results.)

[ ] My PR contains critical fixes that are necessary to be merged into the latest release. (Please check out the details)

Documentation

[ ] My PR needs documentation updates. (Please use the Release note section below to summarize the impact on users)

Release note
If this PR includes changes that directly affect users or other significant modifications relevant to the community, kindly draft a release note to provide a concise summary of these changes. Please prioritize highlighting the impact these changes will have on users.

Reimplement #11888


slightly decouple sql_json, queries, and results http endpoints from …

[ ] Bug Fix
[ ] Enhancement (new features, refinement)
[X] Refactor
[ ] Add tests
[ ] Build / Development Environment
[ ] Documentation

SUMMARY
Some of the views and view logic (http request handlers, template rendering, response construction, etc) is hyper-coupled to the business logic. In our case, we need to setup alternate endpoints with different internal auth, routes, etc to use the sql_json, queries, and results endpoints from views.core.Superset.  I think these should be more thoroughly decoupled (ie, views just doing view stuff, and calling into a completely separate library for business logic) but that is a lot more than I can chew off right now, so this tiny change is simply breaking those three http request handlers off so we other functions can call into the business logic from different endpoints.
Choose one##** BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN

ADDITIONAL INFORMATION

[ ] Has associated issue:
[ ] Changes UI
[ ] Requires DB Migration.
[ ] Confirm DB Migration upgrade and downgrade tested.
[ ] Introduces new feature or API
[ ] Removes existing feature or API

REVIEWERS

@mistercrunch @villebro

@villebro added typing as suggested, thanks 👍

Codecov Report

Merging #8626 into master will increase coverage by 6.02%.
The diff coverage is 96.55%.

@@            Coverage Diff             @@
##           master    #8626      +/-   ##
==========================================
+ Coverage   65.78%   71.81%   +6.02%
==========================================
  Files         482      121     -361
  Lines       23805    12778   -11027
  Branches     2589        0    -2589
==========================================
- Hits        15661     9176    -6485
+ Misses       7975     3602    -4373
+ Partials      169        0     -169

Impacted Files
Coverage Δ

superset/utils/core.py
88.08% <100%> (ø)
:arrow_up:

superset/views/core.py
71.82% <95.45%> (-0.04%)
:arrow_down:

superset/assets/src/components/Checkbox.jsx

.../assets/src/dashboard/reducers/dashboardFilters.js

...ets/src/dashboard/components/dnd/DragDroppable.jsx

superset/assets/src/components/EditableTitle.jsx

...src/explore/components/controls/VizTypeControl.jsx

...t/assets/src/components/InfoTooltipWithTrigger.jsx

.../src/dashboard/components/UndoRedoKeylisteners.jsx

... and 354 more

Continue to review full report at Codecov.

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


Using up credits to fix problems but doesnt fix the problem

Describe the bug
It keeps saying it's updating the issues and using credits to solve it's own problems which are the same problems over and over.
Link to the Bolt URL that caused the error
https://bolt.new/~/sb1-m2yg93
Steps to reproduce
i keep clicking fix problems and the same problems occur even though it says it fixes them.
Expected behavior
it should at the very least fix the problem or some of the problems so there is progress. not going in a circle. also using credits when clicking fix problems is a big issue because it will take up a lot of credits being stuck in a loop
Screen Recording / Screenshot
No response
Platform
Browser name = Chrome
Full version = <IP_ADDRESS>
Major version = 130
navigator.appName = Netscape
navigator.userAgent = Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36
performance.memory = {
  "totalJSHeapSize": 62425665,
  "usedJSHeapSize": 53766925,
  "jsHeapSizeLimit":<PHONE_NUMBER>
}
Username = MaverickCowboy
Chat ID = 1e1ed2f62366

Additional context
No response

Please see #678 for tips and tricks on working through errors efficiently


Is the documentation for CLI outdated?

I have<EMAIL_ADDRESS>(latest today) installed.
The command httpyac gives the following output
> httpyac --help
Usage: httpyac [options] [command]

httpYac - Quickly and easily send REST, SOAP, GraphQL and gRPC requests

Options:
  -V, --version                 output the version number
  -h, --help                    display help for command

Commands:
  oauth2 [options]              generate oauth2 token
  send [options] <fileName...>  send/ execute http files
  help [command]                display help for command

Documentation says the expected output is something else.
> httpyac --help

usage: httpyac <file or glob pattern> [options]
       --all           execute all http requests in a http file
       --bail          stops when a test case fails
  -e   --env           list of environments
       --filter        filter requests output (only-failed)
  -h   --help          help
       --insecure      allow insecure server connections when using ssl
  -i   --interactive   do not exit the program after request, go back to selection
       --json          use json output
  -l   --line          line of the http requests
  -n   --name          name of the http requests
       --no-color      disable color support
  -o   --output        output format of response (short, body, headers, response, exchange, none)
       --output-failed output format of failed response (short, body, headers, response, exchange, none)
       --raw           prevent formatting of response body
  -r   --repeat        repeat count for requests
       --repeat-mode   repeat mode: sequential, parallel (default)
  -s   --silent        log only request
       --timeout       maximum time allowed for connections
       --var           set variables
  -v   --verbose       make the operation more talkative

This looks similar to the output of
> httpyac help send
Usage: httpyac send [options] <fileName...>

send/ execute http files

Arguments:
  fileName                  path to file or glob pattern

Options:
  -a, --all                 execute all http requests in a http file
  --bail                    stops when a test case fails
  -e, --env  <env...>       list of environments
  --filter <filter>          filter requests output (only-failed)
  --insecure                allow insecure server connections when using ssl
  -i --interactive          do not exit the program after request, go back to selection
  --json                    use json output
  -l, --line <line>         line of the http requests
  -n, --name <name>         name of the http requests
  --no-color                disable color support
  -o, --output <output>     output format of response (short, body, headers, response, exchange, none)
  --output-failed <output>  output format of failed response (short, body, headers, response, exchange, none)
  --raw                     prevent formatting of response body
  --quiet
  --repeat <count>          repeat count for requests
  --repeat-mode <mode>      repeat mode: sequential, parallel (default)
  -s, --silent              log only request
  --timeout <timeout>       maximum time allowed for connections
  --var  <variables...>     list of variables
  -v, --verbose             make the operation more talkative
  -h, --help                display help for command

Is the documentation outdated?

I really like httpyac. It would help to have the documentation updated for me to be able to talk to others about this great tool.

Hi. Sorry. After switching from yargs to commander I forgot to update it. Thanks for the PR.


Replace bool filter with 'is truthy'

Replaces the ' | bool' filters with ' is truthy'.
I was havving issues with this always being false, even when I set the mas_email or mas_password values.  Having debugged the mas_email var to ensure it was making it in to the role correctly I raised an issue on ansible, and was advised this is the correct way to check for non-empty strings.

Currently the mas_email isn't tested in the tests.  Would you like me to add the variables to the tests (although it's broken as discussed in https://github.com/geerlingguy/ansible-collection-mac/issues/11)?

This could be a little funky, because (a) that test (truthy) was only added in Ansible 2.10, meaning users with Ansible 2.9 would not be able to use this collection—and that test does very slightly change the potential behavior of this check (it doesn't return an actual boolean value unless configured that way, afaict reading the docs).

Hmmm… I see your point.  Would conditional tasks, depending on ansible version work?


Uninstallation Instructions

Hello 0x6d69636b,
First things first, thank you for this nice repository.
I used your automatic script to install HardeningKitty. I was unable to remove the module using Remove-Module, I had to delete the files manually, but I am unsure if this is the best method in case of version upgrades. Can you please provide uninstall instructions ?
Thank you in advance for your feedback.
Kind regards,
Astorias96

Hi Astorias96,
Thank you for your feedback! :heart_eyes_cat:
Remove-Module removes a module in the current session, it does not uninstall the module itself. I would just add the latest version and remove the folder(s) of the old version(s).
Best, Mick

Hello Mick,
Thank you for your help. This allows me to prepare the correct update sequence for HardeningKitty. However, could you please confirm if Remove-Module and deleting the old files would 'uninstall' the module itself ? I was unable to uninstall it using Uninstall-Module cmdlet.
Thank you in advance for your feedback.
Best, Astorias96

Remove-Module alone will not uninstall an old version. Uninstall-Module only works for modules installed with Install-Module. So you cannot use it for HardeningKitty. If you remove all files of an version, that version is "completely gone".

Many thanks for your replies & explanations !
Kind regards,
Astorias96


POSHKnife fails to upload a cookbook with a long description containing sample JSON usage

The generated README.md file contains some sample JSON for how to consume the cookbook in a runlist:
{
  "name": "MyCookbook",
  "run_list": [
    "recipe[MyCookbook]"
  ]
}

Upon uploading the cookbook, POSHKnife reports no errors, but new (or updated) cookbook is not visible when checking the Chef server.  Running Fiddler shows a 400 error returned by the server reporting invalid JSON.  Further investigation showed that the "recipe[MyCookbook]" string was being split across multiple lines:
"recipe[
MyCookbook]"

This issue seems only to occur when running POSHKnife under Powershell v3.

After some testing it seems that the ConvertTo-JSON cmdlet behaves slightly different in PS 3 as it does in PS 4.
Adding the -Compress switch to the argument fixes the issue.


Document how plugins should transform data

Resolves ros2/rviz#894
This documents how display plugins should handle time and transforms.

Since this is only changing a markdown file, I think the PR job is enough CI.


Use dataclasses_json for dataclasses

Proposed changes
Reported by @jjmaldonis:
Can we use dataclasses rather than TypedDicts? The syntax is very similar but the functionality is much better. If we use dataclasses, we can decorate them with dataclasses_json to make it easy to convert to/from dictionaries/json.
Context
NA
Possible Implementation
NA
Other information
NA

This PR addresses this particular issue and also maintains the backwards compatibility of using TypedDict access (ie using key/value pairs).
https://github.com/deepgram/deepgram-python-sdk/pull/182
If it doesn't, we can reopen to investigate.

I must be missing something - is there a PR that added dataclasses to the repo?
#182 got merged into main but I don't see any use of dataclasses on the main branch. Same with issue #181.


Move signup from routing to middleware

Not sure what the standard is here, but I'm passing both request and response to the function, and just passing the function itself into the post route. I'm not sure how we can avoid passing both here since to register a user, we need to pass the entire request and response objects.

Looks good!


Choose better app name?

The old app mfachecker only checked whether the current user was logged in with MFA, it did not create or enforce any MFA-only zones.
The new app mfaverifiedzone does enable the user to create MFA-only zones, and also creates the workflow engine rule to enforce these. But the "zone" is a folder in a user's account, and MFA verification is something a visiting user may go through at the IDP. Therefore, a user may be MFA verified, but it doesn't make sense for a zone to  be MFA verified. So I'm thinking if we can give the app a more accurate name somehow

Maybe just "MFA Zones" (slug: mfazones)?
@mickenordin what do you think / prefer?

We have been calling it "Secure Zones", but maybe MFA Zones is more correct and descriptive. I am fine with that.

Yes we can just use MFA zones. Currently new tab created with this name and we just need to change name of app.


Some messages might not be committed on consumer .close

Problem
When out-sink is closed via:
(ms/on-closed out-sink (fn [] @(actor [::close])))

the consumer is closed right away.
The problem is that when the out-sink got closed, it might have been in the middle of (ms/put-all! out-sink events) meaning some of the polled events were not added to out-sink and therefore not processed.
(fn [events] ; function to handle events and resume
  (d/chain (d/future (ms/put-all! out-sink events)) ;; not all events put on time
           #(when % (cmd-self [::resume duration]))))

This means that even though part of the events were processed, none of them were actually committed to kafka.
In other words, this way of closing the consumer assumed that the consumer logic is idempotent which might not always be the case.
Suggestion
Find a way to be sure all events were put into out-sink and therefore committed before closing the consumer for good.

Note
After discussing with the author @robertluo , this is a common scenario in kafka and so we can close this issue.


Can sharing-jdbc and sharding-proxy share one zk configuration?

sharding-proxy just need to configure the ZK address
No need to configure data source information

duplicate with #2548