[rust] import/export type mismatch in generated Rust stuff

this problem of "phantom imports" from  here https://github.com/WebAssembly/component-model/issues/295#issuecomment-1906905780 https://github.com/jcbhmr/unicode-math-class.wasm/actions/runs/7631660252

package<EMAIL_ADDRESS>
interface types {
    /// <https://docs.rs/unicode-math-class/0.1.0/unicode_math_class/enum.MathClass.html>
    enum math-class {
        normal,
        alphabetic,
        binary,
        closing,
        diacritic,
        fence,
        glyph-part,
        large,
        opening,
        punctuation,
        relation,
        space,
        unary,
        vary,
        special,
    }
}

/// <https://docs.rs/unicode-math-class/0.1.0/unicode_math_class/>
world unicode-math-class {
    export types;
    use types.{math-class};

    /// <https://docs.rs/unicode-math-class/0.1.0/unicode_math_class/constant.REVISION.html>
    export revision: func() -> u8;

    /// <https://docs.rs/unicode-math-class/0.1.0/unicode_math_class/fn.class.html>
    export class: func(c: string) -> option<math-class>;
}

mod my_macros;

cargo_component_bindings::generate!();
use my_macros::rs_wit_parallel_enum;
use unicode_math_class;

pub struct Component;
impl bindings::Guest for Component {
    fn revision() -> u8 {
        unicode_math_class::REVISION
    }
    fn class(c: String) -> Option<bindings::MathClass> {
        let c = c.chars().next().expect("non-empty string");
        unicode_math_class::class(c).map(|x| x.into())
    }
}

rs_wit_parallel_enum!(unicode_math_class::MathClass, bindings::MathClass, {
    Normal,
    Alphabetic,
    Binary,
    Closing,
    Diacritic,
    Fence,
    GlyphPart,
    Large,
    Opening,
    Punctuation,
    Relation,
    Space,
    Unary,
    Vary,
    Special,
});

// wasm-tools component wit

package root:component;

world root {
  import<EMAIL_ADDRESS>  use<EMAIL_ADDRESS>
  export revision: func() -> u8;
  export class: func(c: string) -> option<math-class>;
  export<EMAIL_ADDRESS>}

https://github.com/jcbhmr/unicode-math-class.wasm/tree/fe20eb02987a2a41855fcbe4bee78475f4becb07

has happened to me again in a much worse way; cargo-component (which uses wit-bindgen iirc) is using this phantom imported type instead of the locally declared exported type which has the needed data (the 0th tuple item) that i need to use to perform various library operations.
here's the wit:
im trying to provide bindings for this https://docs.rs/subsetter/latest/subsetter/ rust crate in wit
package<EMAIL_ADDRESS>
interface types {
  resource profile {
    pdf: static func(glyphs: list<u16>) -> profile;
  }

  record tag {
    tuple0: tuple<u8, u8, u8, u8>,
  }

  variant error {
    unknown-kind,
    invalid-offset,
    missing-data,
    invalid-data,
    missing-table(tag),
  }
}

world subsetter {
  export types;
  use types.{profile, tag, error};

  export subset: func(data: list<u8>, index: u32, profile: profile) -> result<list<u8>, error>;
}

and here's the code
cargo_component_bindings::generate!();
use bindings::exports::typst_community::subsetter::types;
use subsetter;

pub struct Component;
impl bindings::Guest for Component {
    // SHOULD BE using the bindings::exports::* stuff
    // fn subset(data: Vec<u8>, index: u32, profile: types::Profile) -> Result<Vec<u8>, types::Error> {
    //     todo!()
    // }

    // BUT IS using the IMPORTED types which means I can't extract the
    // inner tuple 0 item from the profile struct to operate on it
    fn subset(
        data: Vec<u8>,
        index: u32,
        profile: bindings::typst_community::subsetter::types::Profile,
    ) -> Result<Vec<u8>, bindings::typst_community::subsetter::types::Error> {
        todo!()
    }
}

pub struct Profile(subsetter::Profile<'static>);
impl types::GuestProfile for Profile {
    fn pdf(glyphs: Vec<u16>) -> types::OwnProfile {
        todo!()
    }
}

and when that compiles (with using the rust code as shown above) it gives some weird wit when using wasm-tools component wit
@jcbhmr ➜ /workspaces/subsetter.wasm (main) $ wasm-tools component wit ./target/wasm32-unknown-unknown/debug/subsetter.wasm
package root:component;

world root {
  import<EMAIL_ADDRESS>  use<EMAIL_ADDRESS>tag, error};

  export subset: func(data: list<u8>, index: u32, profile: profile) -> result<list<u8>, error>;
  export<EMAIL_ADDRESS>}

reproduction: https://github.com/jcbhmr/subsetter.wasm/tree/9b1d7c65a48bdb9a92f6d3bf48ee97b8485fbb64
basically what i understand to be happening in error is that the use types.{...} is somehow importing the things from the interface types {}? and then when it generates the rust bindings.rs it generates the imported types and then uses those imported types instead of the exported types that i want it to use.
the end result is that i cannot get the profile.0. 🤷♂
idk if im even explaining this right or what. all i know is that the types that i want and the types that i got are mismatched and idk what to do if this is a bug or if this is how WIT is supposed to work or what lol
cc @lukewagner

bindings.rs copy pasted here
// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT!
pub type Profile = typst_community::subsetter::types::Profile;
pub type Error = typst_community::subsetter::types::Error;
const _: () = {

  #[doc(hidden)]
  #[export_name = "subset"]
  #[allow(non_snake_case)]
  unsafe extern "C" fn __export_subset(arg0: i32,arg1: i32,arg2: i32,arg3: i32,) -> i32 {
    #[allow(unused_imports)]
    use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String};

    // Before executing any other code, use this function to run all static
    // constructors, if they have not yet been run. This is a hack required
    // to work around wasi-libc ctors calling import functions to initialize
    // the environment.
    //
    // This functionality will be removed once rust 1.69.0 is stable, at which
    // point wasi-libc will no longer have this behavior.
    //
    // See
    // https://github.com/bytecodealliance/preview2-prototyping/issues/99
    // for more details.
    #[cfg(target_arch="wasm32")]
    ::cargo_component_bindings::rt::run_ctors_once();

    let len0 = arg1 as usize;
    let result1 = <_GuestImpl as Guest>::subset(Vec::from_raw_parts(arg0 as *mut _, len0, len0), arg2 as u32, typst_community::subsetter::types::Profile::from_handle(arg3 as u32));
    let ptr2 = _RET_AREA.0.as_mut_ptr() as i32;
    match result1 {
      Ok(e) => { {
        *((ptr2 + 0) as *mut u8) = (0i32) as u8;
        let vec3 = (e).into_boxed_slice();
        let ptr3 = vec3.as_ptr() as i32;
        let len3 = vec3.len() as i32;
        ::core::mem::forget(vec3);
        *((ptr2 + 8) as *mut i32) = len3;
        *((ptr2 + 4) as *mut i32) = ptr3;
      } },
      Err(e) => { {
        *((ptr2 + 0) as *mut u8) = (1i32) as u8;
        use typst_community::subsetter::types::Error as V6;
        match e {
          V6::UnknownKind=> {
            {
              *((ptr2 + 4) as *mut u8) = (0i32) as u8;
            }
          }
          V6::InvalidOffset=> {
            {
              *((ptr2 + 4) as *mut u8) = (1i32) as u8;
            }
          }
          V6::MissingData=> {
            {
              *((ptr2 + 4) as *mut u8) = (2i32) as u8;
            }
          }
          V6::InvalidData=> {
            {
              *((ptr2 + 4) as *mut u8) = (3i32) as u8;
            }
          }
          V6::MissingTable(e) => {
            *((ptr2 + 4) as *mut u8) = (4i32) as u8;
            let typst_community::subsetter::types::Tag{ tuple0:tuple04, } = e;
            let (t5_0, t5_1, t5_2, t5_3, ) = tuple04;
            *((ptr2 + 5) as *mut u8) = (::cargo_component_bindings::rt::as_i32(t5_0)) as u8;
            *((ptr2 + 6) as *mut u8) = (::cargo_component_bindings::rt::as_i32(t5_1)) as u8;
            *((ptr2 + 7) as *mut u8) = (::cargo_component_bindings::rt::as_i32(t5_2)) as u8;
            *((ptr2 + 8) as *mut u8) = (::cargo_component_bindings::rt::as_i32(t5_3)) as u8;
          },
        }
      } },
    };ptr2
  }

  const _: () = {
    #[doc(hidden)]
    #[export_name = "cabi_post_subset"]
    #[allow(non_snake_case)]
    unsafe extern "C" fn __post_return_subset(arg0: i32,) {
      let l0 = i32::from(*((arg0 + 0) as *const u8));
      match l0 {
        0 => {
          let l1 = *((arg0 + 4) as *const i32);
          let l2 = *((arg0 + 8) as *const i32);
          let base3 = l1;
          let len3 = l2;
          ::cargo_component_bindings::rt::dealloc(base3, (len3 as usize) * 1, 1);
        },
        _ => (),
      }
    }
  };
};
use super::Component as _GuestImpl;
pub trait Guest {
  fn subset(data: ::cargo_component_bindings::rt::vec::Vec::<u8>,index: u32,profile: Profile,) -> Result<::cargo_component_bindings::rt::vec::Vec::<u8>,Error>;
}

#[allow(unused_imports)]
use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String};

#[repr(align(4))]
struct _RetArea([u8; 12]);
static mut _RET_AREA: _RetArea = _RetArea([0; 12]);
pub mod typst_community {
  pub mod subsetter {

    #[allow(clippy::all)]
    pub mod types {
      #[used]
      #[doc(hidden)]
      #[cfg(target_arch = "wasm32")]
      static __FORCE_SECTION_REF: fn() = super::super::super::__link_section;

      #[derive(Debug)]
      #[repr(transparent)]
      pub struct Profile{
        handle: ::cargo_component_bindings::rt::Resource<Profile>,
      }

      impl Profile{
        #[doc(hidden)]
        pub unsafe fn from_handle(handle: u32) -> Self {
          Self {
            handle: ::cargo_component_bindings::rt::Resource::from_handle(handle),
          }
        }

        #[doc(hidden)]
        pub fn into_handle(self) -> u32 {
          ::cargo_component_bindings::rt::Resource::into_handle(self.handle)
        }

        #[doc(hidden)]
        pub fn handle(&self) -> u32 {
          ::cargo_component_bindings::rt::Resource::handle(&self.handle)
        }
      }

      unsafe impl ::cargo_component_bindings::rt::WasmResource for Profile{
        #[inline]
        unsafe fn drop(_handle: u32) {
          #[cfg(not(target_arch = "wasm32"))]
          unreachable!();

          #[cfg(target_arch = "wasm32")]
          {
            #[link(wasm_import_module = "typst-community:subsetter/types@1.0.0+0.1.1")]
            extern "C" {
              #[link_name = "[resource-drop]profile"]
              fn drop(_: u32);
            }

            drop(_handle);
          }
        }
      }

      #[repr(C)]
      #[derive(Clone, Copy)]
      pub struct Tag {
        pub tuple0: (u8,u8,u8,u8,),
      }
      impl ::core::fmt::Debug for Tag {
        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
          f.debug_struct("Tag").field("tuple0", &self.tuple0).finish()
        }
      }
      #[derive(Clone, Copy)]
      pub enum Error{
        UnknownKind,
        InvalidOffset,
        MissingData,
        InvalidData,
        MissingTable(Tag),
      }
      impl ::core::fmt::Debug for Error {
        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
          match self {
            Error::UnknownKind => {
              f.debug_tuple("Error::UnknownKind").finish()
            }
            Error::InvalidOffset => {
              f.debug_tuple("Error::InvalidOffset").finish()
            }
            Error::MissingData => {
              f.debug_tuple("Error::MissingData").finish()
            }
            Error::InvalidData => {
              f.debug_tuple("Error::InvalidData").finish()
            }
            Error::MissingTable(e) => {
              f.debug_tuple("Error::MissingTable").field(e).finish()
            }
          }
        }
      }
      impl ::core::fmt::Display for Error {
        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
          write!(f, "{:?}", self)
        }
      }

      impl std::error::Error for Error {}
      impl Profile {
        #[allow(unused_unsafe, clippy::all)]
        pub fn pdf(glyphs: &[u16],) -> Profile{

          #[allow(unused_imports)]
          use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String};
          unsafe {
            let vec0 = glyphs;
            let ptr0 = vec0.as_ptr() as i32;
            let len0 = vec0.len() as i32;

            #[cfg(target_arch = "wasm32")]
            #[link(wasm_import_module = "typst-community:subsetter/types@1.0.0+0.1.1")]
            extern "C" {
              #[link_name = "[static]profile.pdf"]
              fn wit_import(_: i32, _: i32, ) -> i32;
            }

            #[cfg(not(target_arch = "wasm32"))]
            fn wit_import(_: i32, _: i32, ) -> i32{ unreachable!() }
            let ret = wit_import(ptr0, len0);
            Profile::from_handle(ret as u32)
          }
        }
      }

    }

  }
}
pub mod exports {
  pub mod typst_community {
    pub mod subsetter {

      #[allow(clippy::all)]
      pub mod types {
        #[used]
        #[doc(hidden)]
        #[cfg(target_arch = "wasm32")]
        static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_section;

        pub use super::super::super::super::super::Profile as Profile;
        const _: () = {
          #[doc(hidden)]
          #[export_name =<EMAIL_ADDRESS>          #[allow(non_snake_case)]
          unsafe extern "C" fn dtor(rep: usize) {
            ::cargo_component_bindings::rt::Resource::<Profile>::dtor(rep)
          }
        };
        unsafe impl ::cargo_component_bindings::rt::RustResource for Profile{
          unsafe fn new(_rep: usize) -> u32 {
            #[cfg(not(target_arch = "wasm32"))]
            unreachable!();

            #[cfg(target_arch = "wasm32")]
            {
              #[link(wasm_import_module = "[export]typst-community:subsetter/types@1.0.0+0.1.1")]
              extern "C" {
                #[link_name = "[resource-new]profile"]
                fn new(_: usize) -> u32;
              }
              new(_rep)
            }
          }

          unsafe fn rep(_handle: u32) -> usize {
            #[cfg(not(target_arch = "wasm32"))]
            unreachable!();

            #[cfg(target_arch = "wasm32")]
            {
              #[link(wasm_import_module = "[export]typst-community:subsetter/types@1.0.0+0.1.1")]
              extern "C" {
                #[link_name = "[resource-rep]profile"]
                fn rep(_: u32) -> usize;
              }
              rep(_handle)
            }
          }
        }
        pub type OwnProfile = ::cargo_component_bindings::rt::Resource<Profile>;

        unsafe impl ::cargo_component_bindings::rt::WasmResource for Profile{
          #[inline]
          unsafe fn drop(_handle: u32) {
            #[cfg(not(target_arch = "wasm32"))]
            unreachable!();

            #[cfg(target_arch = "wasm32")]
            {
              #[link(wasm_import_module = "[export]typst-community:subsetter/types@1.0.0+0.1.1")]
              extern "C" {
                #[link_name = "[resource-drop]profile"]
                fn drop(_: u32);
              }

              drop(_handle);
            }
          }
        }

        #[repr(C)]
        #[derive(Clone, Copy)]
        pub struct Tag {
          pub tuple0: (u8,u8,u8,u8,),
        }
        impl ::core::fmt::Debug for Tag {
          fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
            f.debug_struct("Tag").field("tuple0", &self.tuple0).finish()
          }
        }
        #[derive(Clone, Copy)]
        pub enum Error{
          UnknownKind,
          InvalidOffset,
          MissingData,
          InvalidData,
          MissingTable(Tag),
        }
        impl ::core::fmt::Debug for Error {
          fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
            match self {
              Error::UnknownKind => {
                f.debug_tuple("Error::UnknownKind").finish()
              }
              Error::InvalidOffset => {
                f.debug_tuple("Error::InvalidOffset").finish()
              }
              Error::MissingData => {
                f.debug_tuple("Error::MissingData").finish()
              }
              Error::InvalidData => {
                f.debug_tuple("Error::InvalidData").finish()
              }
              Error::MissingTable(e) => {
                f.debug_tuple("Error::MissingTable").field(e).finish()
              }
            }
          }
        }
        impl ::core::fmt::Display for Error {
          fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
            write!(f, "{:?}", self)
          }
        }

        impl std::error::Error for Error {}
        const _: () = {

          #[doc(hidden)]
          #[export_name =<EMAIL_ADDRESS>          #[allow(non_snake_case)]
          unsafe extern "C" fn __export_static_profile_pdf(arg0: i32,arg1: i32,) -> i32 {
            #[allow(unused_imports)]
            use ::cargo_component_bindings::rt::{alloc, vec::Vec, string::String};

            // Before executing any other code, use this function to run all static
            // constructors, if they have not yet been run. This is a hack required
            // to work around wasi-libc ctors calling import functions to initialize
            // the environment.
            //
            // This functionality will be removed once rust 1.69.0 is stable, at which
            // point wasi-libc will no longer have this behavior.
            //
            // See
            // https://github.com/bytecodealliance/preview2-prototyping/issues/99
            // for more details.
            #[cfg(target_arch="wasm32")]
            ::cargo_component_bindings::rt::run_ctors_once();

            let len0 = arg1 as usize;
            let result1 = <_ProfileImpl as GuestProfile>::pdf(Vec::from_raw_parts(arg0 as *mut _, len0, len0));
            ::cargo_component_bindings::rt::Resource::into_handle(result1) as i32
          }
        };
        use super::super::super::super::super::Profile as _ProfileImpl;
        pub trait GuestProfile {
          fn pdf(glyphs: ::cargo_component_bindings::rt::vec::Vec::<u16>,) -> OwnProfile;
        }

      }

    }
  }
}

#[cfg(target_arch = "wasm32")]
#[link_section = "component-type:subsetter"]
#[doc(hidden)]
pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 998] = [3, 0, 9, 115, 117, 98, 115, 101, 116, 116, 101, 114, 0, 97, 115, 109, 13, 0, 1, 0, 7, 229, 1, 1, 65, 2, 1, 66, 10, 4, 0, 7, 112, 114, 111, 102, 105, 108, 101, 3, 1, 1, 111, 4, 125, 125, 125, 125, 1, 114, 1, 6, 116, 117, 112, 108, 101, 48, 1, 4, 0, 3, 116, 97, 103, 3, 0, 2, 1, 113, 5, 12, 117, 110, 107, 110, 111, 119, 110, 45, 107, 105, 110, 100, 0, 0, 14, 105, 110, 118, 97, 108, 105, 100, 45, 111, 102, 102, 115, 101, 116, 0, 0, 12, 109, 105, 115, 115, 105, 110, 103, 45, 100, 97, 116, 97, 0, 0, 12, 105, 110, 118, 97, 108, 105, 100, 45, 100, 97, 116, 97, 0, 0, 13, 109, 105, 115, 115, 105, 110, 103, 45, 116, 97, 98, 108, 101, 1, 3, 0, 4, 0, 5, 101, 114, 114, 111, 114, 3, 0, 4, 1, 112, 123, 1, 105, 0, 1, 64, 1, 6, 103, 108, 121, 112, 104, 115, 6, 0, 7, 4, 0, 19, 91, 115, 116, 97, 116, 105, 99, 93, 112, 114, 111, 102, 105, 108, 101, 46, 112, 100, 102, 1, 8, 4, 1, 43, 116, 121, 112, 115, 116, 45, 99, 111, 109, 109, 117, 110, 105, 116, 121, 58, 115, 117, 98, 115, 101, 116, 116, 101, 114, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 43, 48, 46, 49, 46, 49, 5, 0, 11, 11, 1, 0, 5, 116, 121, 112, 101, 115, 3, 0, 0, 7, 239, 4, 1, 65, 2, 1, 65, 15, 1, 66, 10, 4, 0, 7, 112, 114, 111, 102, 105, 108, 101, 3, 1, 1, 111, 4, 125, 125, 125, 125, 1, 114, 1, 6, 116, 117, 112, 108, 101, 48, 1, 4, 0, 3, 116, 97, 103, 3, 0, 2, 1, 113, 5, 12, 117, 110, 107, 110, 111, 119, 110, 45, 107, 105, 110, 100, 0, 0, 14, 105, 110, 118, 97, 108, 105, 100, 45, 111, 102, 102, 115, 101, 116, 0, 0, 12, 109, 105, 115, 115, 105, 110, 103, 45, 100, 97, 116, 97, 0, 0, 12, 105, 110, 118, 97, 108, 105, 100, 45, 100, 97, 116, 97, 0, 0, 13, 109, 105, 115, 115, 105, 110, 103, 45, 116, 97, 98, 108, 101, 1, 3, 0, 4, 0, 5, 101, 114, 114, 111, 114, 3, 0, 4, 1, 112, 123, 1, 105, 0, 1, 64, 1, 6, 103, 108, 121, 112, 104, 115, 6, 0, 7, 4, 0, 19, 91, 115, 116, 97, 116, 105, 99, 93, 112, 114, 111, 102, 105, 108, 101, 46, 112, 100, 102, 1, 8, 3, 1, 43, 116, 121, 112, 115, 116, 45, 99, 111, 109, 109, 117, 110, 105, 116, 121, 58, 115, 117, 98, 115, 101, 116, 116, 101, 114, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 43, 48, 46, 49, 46, 49, 5, 0, 2, 3, 0, 0, 7, 112, 114, 111, 102, 105, 108, 101, 3, 0, 7, 112, 114, 111, 102, 105, 108, 101, 3, 0, 1, 2, 3, 0, 0, 3, 116, 97, 103, 3, 0, 3, 116, 97, 103, 3, 0, 3, 2, 3, 0, 0, 5, 101, 114, 114, 111, 114, 3, 0, 5, 101, 114, 114, 111, 114, 3, 0, 5, 1, 112, 125, 1, 105, 2, 1, 106, 1, 7, 1, 6, 1, 64, 3, 4, 100, 97, 116, 97, 7, 5, 105, 110, 100, 101, 120, 121, 7, 112, 114, 111, 102, 105, 108, 101, 8, 0, 9, 4, 0, 6, 115, 117, 98, 115, 101, 116, 1, 10, 1, 66, 10, 4, 0, 7, 112, 114, 111, 102, 105, 108, 101, 3, 1, 1, 111, 4, 125, 125, 125, 125, 1, 114, 1, 6, 116, 117, 112, 108, 101, 48, 1, 4, 0, 3, 116, 97, 103, 3, 0, 2, 1, 113, 5, 12, 117, 110, 107, 110, 111, 119, 110, 45, 107, 105, 110, 100, 0, 0, 14, 105, 110, 118, 97, 108, 105, 100, 45, 111, 102, 102, 115, 101, 116, 0, 0, 12, 109, 105, 115, 115, 105, 110, 103, 45, 100, 97, 116, 97, 0, 0, 12, 105, 110, 118, 97, 108, 105, 100, 45, 100, 97, 116, 97, 0, 0, 13, 109, 105, 115, 115, 105, 110, 103, 45, 116, 97, 98, 108, 101, 1, 3, 0, 4, 0, 5, 101, 114, 114, 111, 114, 3, 0, 4, 1, 112, 123, 1, 105, 0, 1, 64, 1, 6, 103, 108, 121, 112, 104, 115, 6, 0, 7, 4, 0, 19, 91, 115, 116, 97, 116, 105, 99, 93, 112, 114, 111, 102, 105, 108, 101, 46, 112, 100, 102, 1, 8, 4, 1, 43, 116, 121, 112, 115, 116, 45, 99, 111, 109, 109, 117, 110, 105, 116, 121, 58, 115, 117, 98, 115, 101, 116, 116, 101, 114, 47, 116, 121, 112, 101, 115, 64, 49, 46, 48, 46, 48, 43, 48, 46, 49, 46, 49, 5, 11, 4, 1, 47, 116, 121, 112, 115, 116, 45, 99, 111, 109, 109, 117, 110, 105, 116, 121, 58, 115, 117, 98, 115, 101, 116, 116, 101, 114, 47, 115, 117, 98, 115, 101, 116, 116, 101, 114, 64, 49, 46, 48, 46, 48, 43, 48, 46, 49, 46, 49, 4, 0, 11, 15, 1, 0, 9, 115, 117, 98, 115, 101, 116, 116, 101, 114, 3, 2, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48];

#[inline(never)]
#[doc(hidden)]
#[cfg(target_arch = "wasm32")]
pub fn __link_section() {}

Thanks for the report! It's taken me a bit to get around to this but I can clarify at least that this is expected, albeit I can see surprising, behavior.
This world declaration:

world subsetter {
  export types;
  use types.{profile, tag, error};

  export subset: func(data: list<u8>, index: u32, profile: profile) -> result<list<u8>, error>;
}

elaborates to:

world subsetter {
  import types;
  use types.{profile, tag, error};

  export subset: func(data: list<u8>, index: u32, profile: profile) -> result<list<u8>, error>;

  export types;
}

Top-level functions in a world, like subset, can only access imported types. This means that the profile type, a resource from the types interface, means that the types interface is required to be imported. The world the simultaneously exports the types interface meaning that it both imports and exports the same interface.
Currently there is no means by which a top-level function can access exported types from a world. You'll need to instead wrap the top-level function in its own interface and export that from the world. For example:
package<EMAIL_ADDRESS>
interface types {
  resource profile {
    pdf: static func(glyphs: list<u16>) -> profile;
  }

  record tag {
    tuple0: tuple<u8, u8, u8, u8>,
  }

  variant error {
    unknown-kind,
    invalid-offset,
    missing-data,
    invalid-data,
    missing-table(tag),
  }
}

interface subset {
  use types.{profile, tag, error};

  subset: func(data: list<u8>, index: u32, profile: profile) -> result<list<u8>, error>;
}

world subsetter {
  export types;
  export subset;
}

Thank you very much for clarifying how this is being expanded and why this happens. ❤

Currently there is no means by which a top-level function can access exported types from a world. You'll need to instead wrap the top-level function in its own interface and export that from the world.

Given this fact ☝ I think that the convention that I was pointed towards in https://github.com/WebAssembly/component-model/issues/295 can be modified slightly:
instead of "functions in top-level world, types in interface types {} until they can be exported on the root" it should be "everything that would be at the root-level should go in interface types {}"
("types" seems to sorta be a catch-all interface since enums/records/resources can't go on the root world similar to default imports in JS)

That all makes sense as what we should say in the short term.  Longer-term (w/o saying precisely when), it seems attractive to have a co-expressivity property that everything you can do with imported/exported interfaces one could also do with direct world imports/exports (so that interfaces are only necessary when you want to group/namespace).  This seems generally useful for folks hand-authoring component exports (e.g., for library-style components).  At the raw C-M level this is the case, so this matches the general WIT/C-M co-expressivity long-term goals.
If we assume that co-expressivity goal, it seems like one should be able to (one day) write, e.g.:
world w {
  export blob-type: resource { ... }
  export make-blob: func() -> blob-type
}

since one could do the same thing inside an export blob: interface { ... }, which implies allowing top-level exported functions to refer to preceding top-level exported types.  And then, if we want use directly in a world to match what it means when its inside an exported interface, I think that would imply that the original subsetter example would only have exports, no imports.
Does that sound right, at least as a future goal state?

Yeah sounds good to me! Both using interface types for everything for now for @jcbhmr and in the future being able to export all kinds of things from a world.
I'll note though that this is a bit more subtle than just being able to export types, this is something @lukewagner you and I have talked about in the past but the problem is:
world foo {
    import types;
    export types;

    use type.{a-type}; // does this refer to `import types` or `export types`
}

Right now the answer to the above question is "always import types" but that's a WIT-level limitation rather than a component model limitation. We'll want "power syntax" for resolving that in the future.

Hah, yes, that case keeps popping up in my mind too.  I expect it'll be rather rare (unlike the common/expected case of importing and exporting the same function-only interface that uses an only-imported type-defining interface), but definitely we need an answer for it.
One idea that could avoid surprise is to say:

If you write use X.{...} in a world and X has not otherwise been imported or exported, import it.
If you write use X.{...} in a world and X is already imported xor exported, alias that.
If you write use X.{...} in a world and X is both imported and exported, syntax error.
Add new syntax: use import X.{...} or use export X.{...} which aliases the respective import/export if it already exists or adds it if not.

Alternatively, which is technically breaking, but perhaps not yet widely, I was wondering if we maybe want to only allow the final bullet's syntax when inside a world and then then there's never an ambiguity.  It also avoids the first bullet's (justified, but still ad hoc) bias towards imports.  The different syntax is perhaps justified since worlds inherently have 2 sets whereas interfaces (where use originated) only have 1 set.

That all sounds good to me! I've not given it too much thought before but I like all your recommendations, including requiring the disambiguation by default. I know use has been surprising to folks historically when both imports and exports are in play.

Ok I'm going to close this as expected behavior for now in terms of wit-bindgen, but some of these ideas might be good to move to the component-model repository as well for ideas of future extensions

Makes sense.  I'll file an issue for use import/use export; that seems like a good (and perhaps short-term) change to make.  Achieving general C-M parity is a more open-ended and long-running project, so I'll hold off on filing specific issues there.


In kafka events, the traceId and spanId are not written in the logs

Describe
In kafka events, the traceId and spanId are not written in the logs
Environment
Java 17. Spring boot starter 3.2.2
We use the following dependencies for tracing:
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-tracing</artifactId>
        </dependency>
        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-tracing-bridge-otel</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opentelemetry</groupId>
            <artifactId>opentelemetry-exporter-otlp</artifactId>
        </dependency>

Kafka Template Bean:
import io.micrometer.common.KeyValues;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.kafka.core.ProducerFactory;
import org.springframework.kafka.support.micrometer.KafkaRecordSenderContext;
import org.springframework.kafka.support.micrometer.KafkaTemplateObservationConvention;

@Configuration
@ComponentScan
@RequiredArgsConstructor
public class KafkaConfig {
    @Bean
    public KafkaTemplate<Object, Object> kafkaTemplate(final ProducerFactory<Object, Object> producerFactory) {
        final KafkaTemplate<Object, Object> kafkaTemplate = new KafkaTemplate<>(producerFactory);
        kafkaTemplate.setObservationEnabled(true);
        kafkaTemplate.setObservationConvention(new KafkaTemplateObservationConvention() {
            @Override
            public KeyValues getLowCardinalityKeyValues(KafkaRecordSenderContext context) {
                return KeyValues.of("topic", context.getDestination(),
                        "id", String.valueOf(context.getRecord().key()));
            }
        });
        return kafkaTemplate;
    }
}

import io.micrometer.context.ContextExecutorService;
import io.micrometer.context.ContextScheduledExecutorService;
import io.micrometer.context.ContextSnapshot;
import io.micrometer.context.ContextSnapshotFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.task.SimpleAsyncTaskExecutor;
import org.springframework.scheduling.annotation.AsyncConfigurer;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.web.servlet.config.annotation.AsyncSupportConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ThreadFactory;

@Configuration(proxyBeanMethods = false)
class CommonConfiguration {

    // Example of Async Servlets setup
    @Configuration(proxyBeanMethods = false)
    @EnableAsync
    static class AsyncConfig implements AsyncConfigurer, WebMvcConfigurer {
        @Override
        public Executor getAsyncExecutor() {
            return ContextExecutorService.wrap(Executors.newCachedThreadPool(), ContextSnapshot::captureAll);
        }

        @Override
        public void configureAsyncSupport(AsyncSupportConfigurer configurer) {
            configurer.setTaskExecutor(new SimpleAsyncTaskExecutor(r -> new Thread(ContextSnapshotFactory.builder().build().captureAll().wrap(r))));
        }
    }

    /**
     * NAME OF THE BEAN IS IMPORTANT!
     * <p>
     * We need to wrap this for @Async related things to propagate the context.
     *
     * @see EnableAsync
     */
    // [Observability] instrumenting executors
    @Bean(name = "taskExecutor", destroyMethod = "shutdown")
    ThreadPoolTaskScheduler threadPoolTaskScheduler() {
        ThreadPoolTaskScheduler threadPoolTaskScheduler = new ThreadPoolTaskScheduler() {
            @Override
            protected ExecutorService initializeExecutor(ThreadFactory threadFactory, RejectedExecutionHandler rejectedExecutionHandler) {
                ExecutorService executorService = super.initializeExecutor(threadFactory, rejectedExecutionHandler);
                return ContextExecutorService.wrap(executorService, ContextSnapshot::captureAll);
            }

            @Override
            public ScheduledExecutorService getScheduledExecutor() throws IllegalStateException {
                return ContextScheduledExecutorService.wrap(super.getScheduledExecutor());
            }
        };
        threadPoolTaskScheduler.initialize();
        return threadPoolTaskScheduler;
    }
}

application.yml file
logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %5p [${spring.application.name:-},%X{traceId:-},%X{spanId:-}] 0 --- [%15.80t] %-40.40logger{39} : %msg%n"

management:
  tracing:
    sampling:
      probability: 1.0
    propagation:
      produce: b3
      consume: b3
      type: b3,w3c

code:
@Async
    protected void sendMessage(Object message, String key,  String topic) {

        kafkaTemplate.send(topic, key, message)
                .thenAccept(result -> {
                    log.debug("producerListener -> Message was sent. msg: {}", result);
                })
                .exceptionally(ex -> {
                    log.error("producerListener -> Error: {}", message, ex);
                    return null;
                });
    }

What's going on
In this case, the kafka topic places traceId and span Id in headers, but the logging pattern does not find these traceId and spanId and accordingly does not write them in logs.
What have we changed
 @Async
    protected void sendMessage(Object message, String key,  String topic) {

        Map<String, String> copyOfContextMap = MDC.getCopyOfContextMap();

        kafkaTemplate.send(topic, key, message)
                .thenAccept(result -> {
                    MDC.setContextMap(copyOfContextMap);
                    log.debug("producerListener -> Message was sent. msg: {}", result);
                })
                .exceptionally(ex -> {
                    MDC.setContextMap(copyOfContextMap);
                    log.error("producerListener -> Error: {}", message, ex);
                    return null;
                });
    }

We added Map<String, String> copyOfContextMap = MDC.getCopyOfContextMap(); to producer. and information about traceId and spanId began to appear in the logs.
Is there a better solution for not writing this?: Map<String, String> copyOfContextMap = MDC.getCopyOfContextMap();
We also used this link: https://github.com/micrometer-metrics/micrometer-samples/blob/main/kafka-producer/src/main/java/com/example/micrometer/ManualConfiguration.java
It didn't help.
The problem is related to the transition to spring boot 3. On Spring boot 2, the Sleuth library was used for tracing and kafka event tracing was present. But when we started using examples and instructions from micrometer, trace id did not appear, it only appeared in kafka headers

Apparently this is a duplication of: https://github.com/micrometer-metrics/micrometer/issues/4859.
Any chances that you can share with us a simple project where we can reproduce, debug and play with?
Just to be sure that we are on the same page.
Thanks

Here is simple example https://github.com/oooximionnn/KafkaTracing/

I have similar problem.
For ConcurrentKafkaListenerContainerFactory we set CommonErrorHandler that you can see below:
  @Bean
  public DefaultErrorHandler errorHandler() {
    BackOff fixedBackOff = new FixedBackOff(0, 0);
    return new DefaultErrorHandler(
        (consumerRecord, exception) -> log.error("Failed to process ATG message from topic:{}. key:{}",
            consumerRecord.topic(), consumerRecord.key(), exception),
        fixedBackOff);
  }

When I was using spring boot 3.1.9 logs produced by this handler had MDCs (traceId, spanId and one custom BaggageField). After upgrade to spring boot 3.2.4 MDCs are gone.

@mkoralewski ,
it is not similar.
This issue talks about KafkaTemplate and KafkaProducer.
Your one is for consumer side.
Please, consider to raise a new issue with reproducer.
More over this issue talks about a migration from Spring Boot 2.x to 3.x.
You claim that it was OK in the previous Spring Boot minor.
However an observation instrumentation is still the same.
So, something is needed to be shared with us to let us to reproduce and play with.

So, this one was done before in Spring Sleuth: https://github.com/spring-cloud/spring-cloud-sleuth/blob/3.1.x/spring-cloud-sleuth-instrumentation/src/main/java/org/springframework/cloud/sleuth/instrument/kafka/TracingKafkaProducer.java#L148.
We probably need to instrument similar way a Callback in the KafkaTemplate.buildCallback() since we have there an Observation to rely on.
In general to do whatever was there in the: https://github.com/spring-cloud/spring-cloud-sleuth/blob/3.1.x/spring-cloud-sleuth-instrumentation/src/main/java/org/springframework/cloud/sleuth/instrument/kafka/KafkaTracingCallback.java#L54

Just tested the fix against this simple unit test:
	@Test
	void logsAreCorrelatedFromKafkaTemplateCallback() throws ExecutionException, InterruptedException {
		this.kafkaTemplate.send("test-topic", "test data")
				.thenAccept((result) -> LOG.warn("sent: " + result))
				.get();
	}

The output in logs like this:
2024-03-21T11:29:42.890-04:00  WARN 39812 --- [spring-kafka-template-tracing] [cing-producer-1] [65fc526678dd9d4c091afda72b6512cc-091afda72b6512cc] ringKafkaTemplateTracingApplicationTests : sent: SendResult [producerRecord=ProducerRecord(topic=test-topic, partition=null, headers=RecordHeaders(headers = [RecordHeader(key = traceparent, value = [48, 48, 45, 54, 53, 102, 99, 53, 50, 54, 54, 55, 56, 100, 100, 57, 100, 52, 99, 48, 57, 49, 97, 102, 100, 97, 55, 50, 98, 54, 53, 49, 50, 99, 99, 45, 48, 57, 49, 97, 102, 100, 97, 55, 50, 98, 54, 53, 49, 50, 99, 99, 45, 48, 48])], isReadOnly = true), key=null, value=test data, timestamp=null), recordMetadata=test-topic-1@0]

I think this is what you are looking for.
Will open PR soon.

Thank you. Please tell me what I need to do in the end to get the traceId and span Id in the producer and consumer.

what dependencies are needed
do I need some kind of bean type configuration
what should be written in application.yml
Is there anything else?

we are using spring boot 3

@artembilan
Thank you very much the problem is solved :)

@artembilan Hi, which version is the fix released in? thanks

This issue is labeled with 3.2.0-RC1. So, everything after that (inclusive) has the fix in.
Linked issue also show that it was back-ported to 3.0.16 (this generation is End of Life already), and into 3.1.4.
So, upgrading your project to the latest supported version would have the fix.
Hope that helps somehow.


Edit awesome-icons list description

Updates description of the icons list project to match with its current description.

Hi @notlmn, thanks for your suggestion but I don't see much value in extending the description.
Per contribution guidelines:

Avoid using List of… or A curated list of… and similar in the description. It is redundant.

To explain why I think it applies here:

All listed projects are curated lists by the very definition of this project.
The icons listed are obviously awesome because that's right in the repo name. 😉
It's possible there are some descriptions which don't respect this rule, those are likely historical omissions or just lazyness on my side.

I hope you understand that I won't accept this change, but feel free to discuss it further.


Failing E2E: Checkout as Persistent User

regression/checkout-as-persistent-user.e2e-spec.ts failed on Jenkins when re-running it.
Can't repro locally.

PR: https://github.com/SAP/cloud-commerce-spartacus-storefront/pull/3722
I could not repro this locally.
Looking at the error, I assume that the payment-details page does not load in time and therefore cypress times out. Checkout-flow.e2e also experienced this issue a long time ago and I fixed it by using the same method I did for this ticket.


Added gauges to track thread utilization of memory & cpu

This has been functionally tested locally and verified that the expected gauges and values are being output


Add tests inmutable widgets.

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Fixed issues
https://github.com/yiisoft/yii-bulma/pull/20

We have two types of widgets:
Widget simple:
$widget = MyWidget::Widget();
$widget->render();

Widget Begin/End:
$widget = MyWidget::Begin();
$widget->start();
    // content
$widget->end();

Another variant but there will be a great BC:
We have two types of widgets:
Widget simple:
$widget = MyWidget::widget();
$widget->render();

Widget begin/end:
$widget = MyWidget::widget();
$widget->begin();
    // content
$widget->end();

Do you mean:
$widget = MyWidget::widget()->option1(true)->option2(false);
$widget->begin();
    // content
$widget->end();

?

Do you mean:
$widget = MyWidget::widget()->option1(true)->option2(false);
$widget->begin();
    // content
$widget->end();

?

yes.

In a template that would be:
<?php $widget = MyWidget::widget()->option1(true)->option2(false) ?>
<?= $widget->begin() ?>
    Content
<?= $widget->end() ?>

It could also be:
<?= MyWidget::widget()->options(['class' => 'testMe'])->begin() ?>
    // content
<?= MyWidget::end() ?>

In a template that would be:
<?php $widget = MyWidget::widget()->option1(true)->option2(false) ?>
<?= $widget->begin() ?>
    Content
<?= $widget->end() ?>

It could also be:
<?= MyWidget::widget()->options(['class' => 'testMe'])->begin() ?>
    // content
<?= MyWidget::end() ?>

yes, i have added the test.

Please check I think all the PRs that BC will do in the repositories are ready, are there any missing ?


User system

based on discourse

Ref:
https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974

Next step to check authentication in vue.


docs: specify templates should be on their own line

It wasn't explicitly written anywhere that I cannot use a template inline, the LSP is still highlighting it as a component.
Open to discuss whether or not that is accurate because I could see either way being correct. I think another appropriate solution here is to force it to go to the next line if a matching component is found but my only concern there is with name collisions

well I guess you could use string literals if you ever truly wanted to have some string with @ and that by default templ should assume its a component and the LSP should push it to the next line 🤷

Thanks for taking the time to document this, I think we should supplement this with an update to the vscode syntax to avoid confusion.
I also think this documentation section could benefit from the input/output style we have in other areas such as: https://templ.guide/syntax-and-usage/css-style-management#html-class-attribute
Just a single input and output should be fine:
templ showLeftWithLabel() {

 		Left:
 		@left()

 		Left: @left()

}
templ left() {

Left

}

 	Left:

Left

 	Left: @left()

Me should also fix the underlying issue. It's a bit weird to not be able to do that, right?

That's what I was thinking, I think we could document current behavior and open an issue. I think there's a bit of nuance in supporting template elements mid line.
templ showLeftWithLabel() {
	@left()
	Left: @left()
<EMAIL_ADDRESS>}

Definitely has some nuances. What would the fix look like in your opinions? The LSP pushing the component to its own line? Or that templ can detect that the component exists and generate it? Only reason I didn't opt for fixing it was that I'm unsure whether the behavior would be not intuitive for someone who puts text that's just so happens to match a component function (and they want the text).

@joerdav I'm not entirely clear on what you meant with your first comment:

I think we should supplement this with an update to the vscode syntax to avoid confusion.

are you suggesting additional pages to be modified and only having the templ input with the html output for the sections?

Sorry for the confusion, what I meant was that if we are going to document that template elements on the same line do not work, then we should change the syntax highlighting to not highlight the element in those cases.
But it sounds like we might be going for a fix instead?
I think what we want is for the following to be valid, and to render left:
templ showLeftWithLabel() {
	Left: @left()
}

But we want to avoid breaking other peoples code who may have @ in their templates already. That may not be possible in cases such as:
templ username() {
    Hello @joerdav
}

@joerdav I've implemented what I believe to be a valid fix. There are three cases that I have used to validate it:

@SomeComponent() - since the parentheses are present this is straight forward to parse as a templ element. I assume all elements of this form are correct and just parse them. (Existing behavior of the templ element parser)
@SomeComponent - This requires special handling, I check for whether or not the same text exists in the template as a passed in argument i.e. @SomeComponent templ.Component. This is a very naive approach and I will look at other alternative methods but for now that is parsing correctly

The only problem is now there are two failing tests. I can definitely fix them to use the new logic from point 2, but I just want to ensure that is the solution we want to proceed with?
	name:  "templelement: bare variables are read until the end of the token",
	input: `@template</div>`,
	expected: TemplElementExpression{
		Expression: Expression{
			Value: `template`,

and
	name: "templelement: simple, block with templelement as child",
	input: `@Other(p.Test) {
		@other2
	}`,
	expected: TemplElementExpression{
		Expression: Expression{
			Value: "Other(p.Test)",

https://github.com/a-h/templ/compare/main...Waldeedle:templ:fix/parse-templ-element-expressions
you can see my current fix in my forked repo, it is under the branch fix/parse-templ-element-expressions

@joerdav @a-h when you folks get a second, let me know what you think about the solution 🎉

@joerdav @a-h gentle reminder, I'm just waiting for feedback before implementing the logic we all agree on here 🙇


GeoTIFF validation worker filesize and projection

This enhances the PR https://github.com/klips-project/rabbitmq-worker/pull/48 by:

adding the gdal-async
handling two validation steps: fileSize and projection

This is a base for further validation tests (extent, cell size, bands etc.).
@JakobMiksch Please check.

Thanks for the helpful review! All recommendations considered.
Also added extent, datatype and bands (minimum number of bands = 1) test.


With Post it goes to put only

I am submitting data using POST, but it is keeping calling put method only.
Keeping calling this ?
public function putAction() {
    $id = $this->_getParam('id', 0);
    $this->view->id = $id;
    $this->view->params = $this->_request->getParams();
    $this->view->message = sprintf('Resource #%s Updated', $id);
    $this->_response->ok();
}

appologies, this repo is not actively maintained, I'm going to mark this repo as Archived.


Update headless label explanation

Fixes #44440

preview page: https://deploy-preview-45035--kubernetes-io-main-staging.netlify.app/docs/reference/labels-annotations-taints/#servicekubernetesioheadless

/lgtm
If you change the PR description to:
Fixes #44440

That will properly link the PR with the issue and resolve the issue when this merges.

I believe the related issue is not about adding a description of a headless service since it's already in the docs but the issue states that according to https://kubernetes.io/docs/reference/labels-annotations-taints/#servicekubernetesioheadless , it states the annotation is used on Services but the description states it's on the Endpoints object. It's best to check and create a headless service that abstract live pods and see if the annotation is on the Service, Endpoint, and/or EndpointSlices

I agree with https://github.com/kubernetes/website/pull/45035#issuecomment-1943140708
I'm not at all confident that the PR description matches up with the change.
/lgtm cancel
@tamilselvan1102 please consider how to address the concern from the related issue.

@reylejano @sftim
How about below content

Headless Service allows a client to connect to whichever Pod it prefers, directly. It doesn’t route the client request like a regular Service does. Headless service does not allocate an IP address to the service and returns the IP addresses of the individual pods directly to the DNS system. The default Service type is "ClusterIP" if no type is specified. To make headless service , we need to add the "clusterIP" field and set its value to "None".

Thanks for the suggestion.
That suggested text is kind of OK, but it's not very readable as English and doesn't follow our style guide; for example, we avoid using “we”.

@sftim
Please review below content

Headless Service allows a client to connect to whichever Pod it prefers, directly. It doesn’t route the client request like a regular Service does. Headless service does not allocate an IP address to the service and returns the IP addresses of the individual pods directly to the DNS system. The default Service type is "ClusterIP" if no type is specified. To make headless service, the "clusterIP" field has to added and set its value to "None".

Try this:
A headless Service allows a client to connect to whichever Pod it prefers, directly. Services that are headless don't
configure routes and packet forwarding using
[virtual IP addresses and proxies](/docs/reference/networking/virtual-ips/); instead, headless Services report the
endpoint IP addresses of the individual pods via internal DNS records, served through the cluster's
[DNS service](/docs/concepts/services-networking/dns-pod-service/).
To define a headless Service, you make a Service with `.spec.type` set to ClusterIP (which is also the default for `type`),
and you additionally set `.spec.clusterIP` to None.

The string value None is a special case and is not the same as leaving the `.spec.clusterIP` field unset.

I have edited the PR description to omit “Fixes #44440” (because it doesn't)

@sftim
raised new PR https://github.com/kubernetes/website/pull/45744
Please review

/close


SSH connection always tries Key instead of Password

Version: 1.0.120
Platform: win32 10.0.17134
Plugins: none
Hi,
I am freaking loving Terminus so far, but unfortunately, there is a small issue. When I open a new SSH connection, Terminus tries to authenticate with my SSH key instead of the password that's selected in settings

We are not using SSH keys to authenticate to our servers. So, what am I doing wrong?
Thank you.
Regards,
Richard Bukovansky

@bes-internal You mean directly on our SSH server? I can't touch that (I'm not admin) and in PuTTY or MobaXterm this issue is not happening.

terminus does not insert the (saved) password in the keyboard-interactive method, as it might seem

So, that option is there why then? 🤔 Or are you acknowledging it's a bug in Terminus? 🤷♂

This option (authentication password) and setting and save password below is a special method that must be enabled on the server side throught PasswordAuthentication yes in /etc/ssh/sshd_config.  Usually this option is disabled, as in your case. The saved password is not used when auth check interactive method.
The only bug here is probably a change in behavior compared to past releases, but this is so important.
This bug is duplicate of #1790

Special method? What's special on this password authentication? 😮 That's standard username&password authentication, isn't it?
If so, then again, we do have that enabled (!), we wouldn't be able to log into that server (actually all servers) otherwise. See the PuTTY screenshot... That's username&password authenticated.

Special method? What's special on this password authentication?

We communicate in terms of SSH:

Password (this method is disabled on your server)
Public-Key (fails)
Keyboard-Interactive (the password saved in the interface is not inserted here! the rest of the software applies the password here. Terminus Must be improved to do it as usual for people. See #1790 )
others...

P.S open setting - debugging - open dev tools  and connect to ssh server:

I don't see that "Server does not support auth method password" there:

BTW I still think you are missing my point... I do get logged in to that server with my in Terminus saved password after it tries SSH key authentication, and I'm definitely not typing my password to get in. So, Terminus has to use that saved password, that's for sure, what I'm not sure, why it tries to use my SSH key first when I selected Saved password in the definition of that SSH connection. I would really like if Terminus could just use the authentication method chosen, in my case, Saved password, and skip all the rest.

@Eugeny Would be please possible you could take a look? Thank you very much.

I cannot reproduce your case. When saved ssh key ask about passphase (with saved password too) it does it interactively:

Try to recreate this entry in the ssh section.
@Eugeny bug: terminus ignores auth mode selector switch and always do auto!

@bes-internal Well, I don't have SSH key entered. Terminus with auto mode autoselects my standard SSH key ~/.ssh/id_rsa and asks for my passphrase. If I enter the correct passphrase, Terminus tries that SSH key, which is rejected, and then it continues with my stored password (see the very first screenshot). If I don't enter the passphrase for the SSH key, the connection fails with some error and does not continue with using the stored password.

Same issue here. Although I set it to use Password to login, it always try to use my ~/.ssh/id_rsa to login. Of course, it fails every time.

I can confirm the problem has been resolved in the latest AppVeyor build.
Thank you, @Eugeny!


Add a hint of ownership transfer when calling EmbeddedChannel.read*()…

… methods.
Motivation:
As shown in issues it is sometimes hard to understand why a leak was reported when the user just calles EmbeddedChannel.readInbound() / EmbeddedChannel.readOutbound() and drop the message on the floor.
Modifications:
Add a hint before handover the message to the user and transfer the ownership.
Result:
Easier debugging of leaks caused by EmbeddedChannel.read*().

Cherry-picked into 4.1 (0c5014b1057f9549c3fb346890162c66bc3631ea)


Loading solely from file system is very hard

I want to load from the file system in tests. This is very had to do. Everything about the current design of loader assumes remote loading.
I'm not sure if the current design can even be adapted to accommodate this case, but perhaps a new foundational design could allow a more modular composition of load sources.

Agreed about a new foundational design. ZiplineLoader has some ideas that haven’t worked out very well in practice, and I’d like to consider building a replacement.
I think our design is too imperative. I’d like to change it to make a loading decision, then execute it, as I describe here:
https://publicobject.com/2024/03/10/deciders-decisions-and-executors/
There’s a lot of moving parts to the decision and ideally we’re extremely conservative about how much I/O we do.


Unmanned Drone harvested different gas than I ordered

Minecraft Version: 1.10.2
is this the latest curseforge build? yes
Explain issue in detail:
Observed behavior: Unmanned Drone harvested different gas than I ordered him.
Suspected reason:
I had inconsistency between the Planets cfg file in the Save and the Config folder... I believe this is what happened: I picked a gas, it found the gas in the Savefile Gas List => id of the gas in that list => gas in the Global list with the same Id. And that is the gas the Probe delivered.
Example: If I had in Save file gases A, B, and C and in the Config X, Y, A, B, C and I select gas A it would deliver gas X, since id A = 0 and list2[0] = X.

Now the sad part:
It looks like I cannot fix this. I set the:
B:resetPlanetsFromXML=true
But it is still the same, how can I change which gasses are harvestable where in existing save?
The Planet config in save does not contain the information any more, so it has to be somewhere else... but where?

Is this still a issue? Please comment if it is and i will reopen if if you are unable? We are closing old issues to see what is still relevant and needs to be fixed.


refactor(exception): static error class & remove exception handler

refer to https://github.com/artusjs/spec/pull/27

Codecov Report
Base: 91.92% // Head: 91.92% // Decreases project coverage by -0.00% :warning:

Coverage data is based on head (2424b95) compared to base (d500fb9).
Patch coverage: 96.42% of modified lines in pull request are covered.

:exclamation: Current head 2424b95 differs from pull request most recent head ee4bbac. Consider uploading reports for the commit ee4bbac to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #208      +/-   ##
==========================================
- Coverage   91.92%   91.92%   -0.01%
==========================================
  Files          52       51       -1
  Lines        1226     1201      -25
  Branches      186      185       -1
==========================================
- Hits         1127     1104      -23
+ Misses         99       97       -2

Impacted Files
Coverage Δ

src/exception/index.ts
100.00% <ø> (ø)

src/exception/impl.ts
96.15% <96.15%> (ø)

src/application.ts
90.90% <100.00%> (-0.40%)
:arrow_down:

src/loader/impl/exception.ts
90.00% <100.00%> (-1.31%)
:arrow_down:

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

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


Error in Value Formatter documentation / implementation?

Hi there!
The documentation for the value formatters says:

The format method takes the raw_value, and context parameters. raw_value is the value as read from the model, and context is the context of the current user/request.

Maybe I'm just reading this incorrectly, but the context parameter that's actually being passed by ResourceSerializer seems to be the resource instance being serialized.
It could just be that I'm getting confused by the context label, but I was expecting to have access to the context I was setting inside my controller here.

Thanks for pointing this out. The code is indeed inconsistent. I originally was providing both source and context to the value formatters. @dgeb and I decided that we were going to make the formatters more focused. It looks like I completely fumbled that code(https://github.com/cerebris/jsonapi-resources/commit/1c53c3f9346365073813fc11e2aeac5383d0be18?diff=split), and I don't remember whether the intention was to remove source, context or both.
I'm thinking we should remove both, though I'm open to good use cases to justify other options. My reasoning is resources have the context, and the serializer does not. Resources also can have a custom method to override the default getter or setter and this method would have access to the context as well as to the other fields on the resource. Thus a custom getter can provide all the functions that a ValueFormatter can when provided with both source and context. This has the added benefit of keeping more logic in the resource, which I think is more appropriate than in a ValueFormatter.
Thoughts?

Thanks for the super-quick response, @lgebhardt! Today has been my first day working with the library, so take everything I say with a grain of salt :).
For context, my use case is actually pretty close to that in the docs - I want to format a Datetime in the timezone of the requesting user's locale. From the sound of it, you'd recommend customising the getter on the resource to perform the timezone conversion before passing it on to the formatter.
Your reasoning around removing both source and context from the formatter makes sense and that would certainly work for my case - I can use eg created_at.in_time_zone('AEST') before I hand the value off to the formatter.
However, I do however wonder about situations where the underlying raw_value being passed to the formatter is the same, but actual format to be used is context-dependent.
The example I can think of that's quite close to my current situation would be if users were able to select a preferred date format, eg 2015-02-01 instead of 02/01/15. In that situation, I'd guess the custom getter could utilise the context and simply return the value as a string, but that does seem to defeat the purpose of having custom formatter.

Formatting dates to a user's preference is the use case I first envisioned. It was the original reason I added the context to the ValueFormatters.  However I'm now not even sure this is an appropriate action for an API. My current line of thinking is it would be better for the server to speak in UTC and the API client to do the formatting. But what I think is appropriate and what we want the library to enforce are separate things.
I'm not sure why I didn't focus on this earlier, but if we leave the code passing in the source resource you will have access to the context through the resource. Then you can use either method (formatter or resource method override) to produce the intended result. I just need to fix the code up so it always sends the source. I'll see if I can get this done soon.

What you say makes a lot of sense :).
Thanks for the help here and with the project in general - it's been super easy to get up and running!

Glad to hear it's been easy to get started with.

I think we're just confusing the interface of value formatters by allowing either source or context as arguments. It muddies the responsibilities of formatters vs. resources.
I'd like to remove both arguments from value formatters in favor of custom getters on resources themselves, unless a strong case can be made to keep either. Context-specific presentation logic really doesn't belong in an API.

Ok, I simplified the ValueFormatters by removing both source and context. I think that's the correct choice.

Thanks @lgebhardt :+1:

@gavinballard can be closed?

Looks like it, thanks!


add svg namespace

if only because it helps making plots of plots https://observablehq.com/@fil/plot-of-plots

[ ] Question: should we also add xlink?
[ ] Remove redundant add from test/plot.js

I don’t think this is necessary for the Plot-of-plots techniques; it’s only necessary when using data URL serialization, and in that case, you could inject the xmlns attribute yourself (as you do in the notebook). I think we’ll want some sort of “glyph” mark for Plot-of-plots that allows you to generate arbitrary SVG content at a given xy location, or alternatively, perhaps we can improve the function shorthand or custom mark implementation to make this sort of thing easier.

We also do it in the snapshot tests. But agree it's not necessary, just a a bit of help.


sync master

This should be an unexpected test error.

@monkey92t what do you mean? This error interface conversion: *errors.errorString is not net.Error: missing method Temporary?

@monkey92t what do you mean? This error interface conversion: *errors.errorString is not net.Error: missing method Temporary?

The Read Timeout test is affected by the HELLO command and I have fixed it.

Do you have any other questions?

Nope, thank you :+1:


Fix reveal from ref file bug

Fixes issue #604
Proposed Changes

Fix reveal from ref file bug
Add test cases

Python black linter failed. Could you run make format_codestyle?

Python black linter failed. Could you run make format_codestyle?

I did, and I tried it once again now but there isn't any change in formatting.

Python black linter failed. Could you run make format_codestyle?

I did, and I tried it once again now but there isn't any change in formatting.

No worries. I merged for now and I'll fix it separately. :+1:
It could be that you have to pip3 install --upgrade --user black to get the latest version.

Ah yes, it reformatted after upgrading. Thanks! :D


Bug in compress_graph_zero_coeff!

The removal of nodes with zero coefficients seems to have a bug (only found for quite large graphs with many zeros). MWE:
Download https://people.kth.se/~eliasj/buggraph2.cgr
julia> graph=import_compgraph("buggraph2.cgr");
julia> @show eval_graph(graph,0.1)
eval_graph(graph, 0.1) = 0.7969737373602765
0.7969737373602765
julia> compress_graph_zero_coeff!(graph)
julia> @show eval_graph(graph,0.1)
eval_graph(graph, 0.1) = 0.9231434910373834
0.9231434910373834

More precisely: It seems Ba3 is incorrectly reduced:
A=0.1;
B2=0.24881187554831496;
julia> Ba3_org = 0.29157325284207336*(-0.7990395534962511*I + 0*A)+1.799039553496251*B2
0.21464384372862552
julia> Ba3_new = -0.06793031709552498*I+1.799039553496251*B2
0.37969208839548035

So it should be somewhere here:
https://github.com/matrixfunctions/GraphMatFun.jl/blob/e08bd944416de12dca60149a4e1dabaefd9085cf/src/compress_graph.jl#L108-L114


Package MARKUP does not exist

Just installed nyxt browser on manjaro and and wanted to try the Dracula theme. The following error appeared after copying the .lisp files and restarting nyxt. Apparently 'Package MARKUP does not exist'. Not sure where to go from here on..
Error occured:
Could not load the init file: READ error during LOAD:
Package MARKUP does not exist.
Line: 25, Column: -1, File-Position: 1894
Stream: #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" >{10071D1343}

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1001170103}>
0: ((LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE))
1: ((FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX))
2: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<FUNCTION (FLET "THUNK" :IN UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX) {7F575B94677B}>)
3: (UIOP/STREAM:CALL-WITH-SAFE-IO-SYNTAX #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:PRINT-BACKTRACE) {10081B266B}> :PACKAGE :CL)
4: ((FLET "H0" :IN NYXT::LOAD-LISP) #<SB-C::INPUT-ERROR-IN-LOAD {10081B1873}>)
5: (SB-KERNEL::%SIGNAL #<SB-C::INPUT-ERROR-IN-LOAD {10081B1873}>)
6: (ERROR #<SB-C::INPUT-ERROR-IN-LOAD {10081B1873}>)
7: (SB-C:COMPILER-ERROR SB-C::INPUT-ERROR-IN-LOAD :CONDITION #<SB-INT:SIMPLE-READER-PACKAGE-ERROR "Package ~A does not exist." {10081B17D3}> :STREAM #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" {10071D1343}>)
8: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {10071D2C5B}> #<SB-C::SOURCE-INFO {10071D2C23}> SB-C::INPUT-ERROR-IN-LOAD)
9: (SB-INT:LOAD-AS-SOURCE #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" {10071D1343}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
10: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" {10071D1343}> NIL)
11: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7F575B946ECB}> #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" {10071D1343}> NIL #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/statusline.lisp" {10071D1343}>)
12: (LOAD #P"/home/xxx/.config/nyxt/statusline.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
13: ((LAMBDA NIL :IN "/home/xxx/.config/nyxt/init.lisp"))
14: (SB-INT:SIMPLE-EVAL-IN-LEXENV (DOLIST (NYXT:FILE (LIST (NYXT:NYXT-INIT-FILE "statusline.lisp") (NYXT:NYXT-INIT-FILE "stylesheet.lisp"))) (LOAD NYXT:FILE)) #<NULL-LEXENV>)
15: (SB-EXT:EVAL-TLF (DOLIST (NYXT:FILE (LIST (NYXT:NYXT-INIT-FILE "statusline.lisp") (NYXT:NYXT-INIT-FILE "stylesheet.lisp"))) (LOAD NYXT:FILE)) 1 NIL)
16: ((LABELS SB-FASL::EVAL-FORM :IN SB-INT:LOAD-AS-SOURCE) (DOLIST (NYXT:FILE (LIST (NYXT:NYXT-INIT-FILE "statusline.lisp") (NYXT:NYXT-INIT-FILE "stylesheet.lisp"))) (LOAD NYXT:FILE)) 1)
17: ((LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) (DOLIST (NYXT:FILE (LIST (NYXT:NYXT-INIT-FILE "statusline.lisp") (NYXT:NYXT-INIT-FILE "stylesheet.lisp"))) (LOAD NYXT:FILE)) :CURRENT-INDEX 1)
18: (SB-C::%DO-FORMS-FROM-INFO #<FUNCTION (LAMBDA (SB-KERNEL:FORM &KEY :CURRENT-INDEX &ALLOW-OTHER-KEYS) :IN SB-INT:LOAD-AS-SOURCE) {10071166FB}> #<SB-C::SOURCE-INFO {10071166C3}> SB-C::INPUT-ERROR-IN-LOAD)
19: (SB-INT:LOAD-AS-SOURCE #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/init.lisp" {10071150E3}> :VERBOSE NIL :PRINT NIL :CONTEXT "loading")
20: ((LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/init.lisp" {10071150E3}> NIL)
21: (SB-FASL::CALL-WITH-LOAD-BINDINGS #<FUNCTION (LABELS SB-FASL::LOAD-STREAM-1 :IN LOAD) {7F575B94787B}> #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/init.lisp" {10071150E3}> NIL #<SB-INT:FORM-TRACKING-STREAM for "file /home/xxx/.config/nyxt/init.lisp" {10071150E3}>)
22: (LOAD "/home/xxx/.config/nyxt/init.lisp" :VERBOSE NIL :PRINT NIL :IF-DOES-NOT-EXIST T :EXTERNAL-FORMAT :DEFAULT)
23: ((FLET NYXT::UNSAFE-LOAD :IN NYXT::LOAD-LISP))
24: (NYXT::LOAD-LISP "/home/xxx/.config/nyxt/init.lisp" :PACKAGE #<PACKAGE "NYXT-USER">)
25: (NYXT::START-BROWSER NIL)
26: (NYXT:START :URLS NIL)
27: ((LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE))
28: (UIOP/IMAGE:CALL-WITH-FATAL-CONDITION-HANDLER #<FUNCTION (LAMBDA NIL :IN UIOP/IMAGE:RESTORE-IMAGE) {10066C9BBB}>)
29: ((FLET SB-UNIX::BODY :IN SB-IMPL::START-LISP))
30: ((FLET "WITHOUT-INTERRUPTS-BODY-1" :IN SB-IMPL::START-LISP))
31: (SB-IMPL::START-LISP)

Fixed
The current configuration (latest commit) should work now, I removed custom url changes because of the changes in the latest release 2.2.2. If you want a cleaner interface, I suggest to compile 2.1.1 which supported the options in the old config.
I'm not sure if Manjaro has the nyxt package inside its official repositories, I assume you installed it from nyxt (AUR).
The issue
I need to point out that nyxt is still in developement, and there are some changes that will eventually occur during different releases and it'll effect configurations.
I need to also say this, In the current moment the latest version of nyxt has some loading problems. it crashes once you want to load a web buffer, this is due to the latest WebKitGTK update, If you also have this problem, you'll need to follow this issue in the official repository and wait until it's fixed: nyxt#1840
If you can't wait until the next update in master branch, you can install nyxt-browser-git (AUR), I just tested it and it loads fine and good, but it can also be a little buggy.
Testing the update
Package: nyxt-browser-git 2.1.1.r469.gaf599d8d-1
System: Arch Linux

Best Regards, Mahdy

Ok, so you commented out that part. I will not downgrade the Browser for the sake of theming. Thought you might know how to change it without the Markup package. I was just curious on that browser to play around a bit.

The markup package, was included in the older versions of nyxtbrowser, it was how statuslines were written but they changed it, so I commented it, I also haven't looked into the new code so I could modify it further, because it's still in developement, what I said was that if you really wanted to test the old theme you may want to use the 2.1.1 or older. However the new update on this repo will work fine with the latest release and has no problems, you may just want to git pull and install it again.
But the latest official nyxtbrowser release has some issues in loading, I wanted to say it so you would try the nyxt-browser-git package and test it without any problems.
Best Regards, Mahdy


Dockerfile

Let's get a Dockerfile created allowing people to spin up a VM with all the required dependencies.

Done in 38b70ec51ae7b2671ae0fdd9e4b9d8869ed82054


📝Presentations by ShogoHirasawa

https://talks.osgeo.org/foss4g-2023/talk/B9DDED/ 2023-06-29T11:00–11:30 (30 min)
https://talks.osgeo.org/foss4g-2023/talk/7PLC3D/ 2023-06-28T14:10–14:15 (5 min)

Workshop image:

Congratulations! We have done it well.


IE11 'Promise' is undefined

Hello,
In my angular 7 project I've upgrade oidc-client-js lib to new version (1.7.0) and it is worked fine in chrome. But when I try to login in IE browser I'm get an error as below. Have any advice to solve this issue?
'Promise' is undefined

You need the babel polyfill or something to polyfill promise when in IE


[Cleanup] UI_Extensions cleanup

Deleted some dead code
Some minor bits of cleanup
Moved WorkingDictionary to its own file.

Eventually, I want to do more work on UI_Extensions.cs to break it up a bit more

LGTM


Refactor: Consider a shared nothing architecture, to reduce thread complexity

ATM there's quite a bit of work in managing SHARED state between threads/sub systems. Although this is working well, it's complex. A shared nothing architecture would mean there are no sync issues, however work would need to be done to implement async request response, or maybe just pushing messages between systems. This might actually not be that hard to implement. It's basically just the Actor Mailbox pattern. We already use mail boxes really, but they're not used in clear boundaries between acts and state systems. New mail boxes would replace the existing concurrent collections that we already use and rely on, but in a more structured and clearly delineated fashion.
There are three thread actors atm - the controller, the poller, and the workers. Main sync issues occur because the poller and the controller share access to the WorkManager, PartitionMonitor and ShardManager. This would change it so that only the controller has access to these, and the poller instead pushes messages to it's inbox - partition assignment changes and new polled messages.
Poller would try to make sure controllers Records inbox always has enough queued. And it would push assignment messages to it, and it would be ok that the controller process these messages only at the start of it's cycle. As it would simply drop results from records that aren't assigned anymore, and async remove from inbound queues stale records before they're processed.
The ultimate simplification would be to eliminate the seperate poller thread. I think the main reason there's a seperate thread is because of blocking polls to the broker when there's no data in the partitions. It will wait up until some max. However, two options:
a) go with the interrupting model and interrupt a blocking poll if work arrives for the controller to do.
b) don't block when polling?

Drafted in

#270


Custom URL, not playing

Current Behavior
I'm trying to play a video from custom url.
It works with thumbnail, but it doesn't play anything.
Expected Behavior
It should play my video
Steps to Reproduce
  <ReactPlayer
    url="http://v.kr.kollus.com/Wplj7tdp"
    light="http://v.kr.kollus.com/poster/Wplj7tdp.jpg"
    playing
    controls={true}
  />

This is the element that I wrote for playing a video. You can check if this video plays well on the website by clicking URL directly.
Environment

URL attempting to play: http://v.kr.kollus.com/Wplj7tdp
Browser: Chrome
Operating system: Windows 10

This video requires flash player to be played, this is in no way a react player issue :)


SRPM build log should point at builder-live.log, not builder-live.log.gz

I can see this in dashboard:
Copr SRPM build logs: Logs URL
The thing is that builder-live.log.gz doesn't exist until after the build finishes.  It would be nice to point at just builder-live.log.  Copr is able to redirect to builder-live.log.gz automatically once the build finishes.

YES! We tried to pick the log that is available soon but clearly, we haven't selected the correct one.


Compilation errors when generating a mutation with NonNullable Input

When doing the following mutation in Swift, the generated classes do not compile
Schema:
type Author {
    id: Int!
    firstName: String
    lastName: String
    posts: [Post] # the list of Posts by this author
  }

  input AuthorInput {
    id: Int!
    firstName: String
	  lastName: String
		posts: PostInput
  }

  type Post {
    id: Int!
    title: String
    author: Author
    votes: Int
  }

  input PostInput {
    id: Int!
		firstName: String
		lastName: String
	  author: AuthorInput
  }

  # the schema allows the following query:
  type Query {
    posts: [Post]
    author(id: Int!): Author
  }

  # this schema allows the following mutation:
  type Mutation {
    upvotePost (
      postId: Int!
    ): Post

		createPost (
		   input: PostInput!
		) : Post
  }

Mutation
mutation x($input:PostInput!) {
    createPost(input:$input)
}

Errors:
Value type 'AuthorInput' cannot have a stored property that references itself
Value type 'PostInput' cannot have a stored property that references itself

@martijnwalraven is apollo android uses same code gen? we see the issue there as well.

@pranayairan: Apollo Android uses apollo-codegen to generate an intermediate representation, but the code generation itself is written in Java. It may very well have the same issue though.

@martijnwalraven There are at least 3 solutions I found:
Solution 1: Change at least one of the structs to class, to make a reference cycle, you need at least one reference.
Solution 2: As mentioned here: indirect enums and structs, an elegant solution could be to wrap your reference inside an enum with an indirect case.
In you example, it would give this:
enum ReferencePin {
case none
indirect case pin(Pin)
}
struct DetailedPin {
var pin: ReferencePin
}
struct Pin {
var detailedPin: DetailedPin?
}
or directly, depending on your needs:
enum ReferencePin {
case none
indirect case pin(Pin)
}
struct Pin {
var otherPin: ReferencePin
}
Indirect tells the compiler there is a recursion in your enum, and it should insert the necessary layer of indirection.
Solution 3:
//  Provides indirection for a given instance.
//  For value types, value semantics are preserved.
struct Indirect {
// Class wrapper to provide the actual indirection.
private final class Wrapper {
var value: T
init(_ value: T) {
self.value = value
}
}
private var wrapper: Wrapper

init(_ value: T) {
    wrapper = Wrapper(value)
}

var value: T {
    get {
        return wrapper.value
    }
    set {
        // upon mutation of value, if the wrapper class instance is unique,
        // simply mutate the underlying value directly.
        // otherwise, create a new instance.
        if isKnownUniquelyReferenced(&wrapper) {
            wrapper.value = newValue
        } else {
            wrapper = Wrapper(newValue)
        }
    }
}

}
You can now just use the Indirect wrapper for one (or both) of your structs properties:
struct DetailedPin {
var pin: Indirect?
}
struct Pin {
var foo: String
var detailedPin: DetailedPin?
}
var p = Pin(foo: "foo", detailedPin: nil)
var d = DetailedPin(pin: Indirect(p))
p.detailedPin = d

This should be fixed in apollo-codegen 0.16.2.
@weapon3042: Thanks for looking into solutions for avoiding reference cycles with value types. In this case, the easiest solution seemed to be to replace stored properties with computed properties, because the end result should be a graphQLMap anyway.

@martijnwalraven Thanks!


config/phonegap.yml path update

When U use "rails s -d"  old @auth  couldn't find config/phonegap.yml
best regerds

Hello, Very sorry for just seeing this pull request now. I see some of these commits are useful to fixing and modernizing this gem. Would it be possible for you to squash the commits into more readable chunks so that I can pull some of the new functionality in? Thank you!


1.0.0-pre.51 seems to break something

Since updating from 50 to 51, I get the following error when running my development script
0 info it worked if it ends with ok
1 verbose cli [ '/usr/local/bin/node',
1 verbose cli   '/usr/local/bin/npm',
1 verbose cli   'run',
1 verbose cli   'development' ]
2 info using<EMAIL_ADDRESS>
3 info using<EMAIL_ADDRESS>
4 verbose run-script [ 'predevelopment', 'development', 'postdevelopment' ]
5 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>
6 info lifecycle<EMAIL_ADDRESS><EMAIL_ADDRESS>
7 verbose lifecycle<EMAIL_ADDRESS>unsafe-perm in lifecycle true
8 verbose lifecycle<EMAIL_ADDRESS>PATH: /usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin:/Users/diccon/Web Server/node/sen$
9 verbose lifecycle<EMAIL_ADDRESS>CWD: /Users/diccon/Web Server/node/senate/authorization/api
10 silly lifecycle<EMAIL_ADDRESS>Args: [ '-c', 'ts-node-dev --respawn --transpileOnly ./src/app.ts' ]
11 silly lifecycle<EMAIL_ADDRESS>Returned: code: 1  signal: null
12 info lifecycle<EMAIL_ADDRESS>Failed to exec development script
13 verbose stack Error<EMAIL_ADDRESS>development: `ts-node-dev --respawn --transpileOnly ./src/app.ts`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:198:13)
13 verbose stack     at ChildProcess.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:198:13)
13 verbose stack     at maybeClose (internal/child_process.js:982:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
14 verbose pkgid<EMAIL_ADDRESS>
15 verbose cwd /Users/diccon/Web Server/node/senate/authorization/api
16 verbose Darwin 19.5.0
17 verbose argv "/usr/local/bin/node" "/usr/local/bin/npm" "run" "development"
18 verbose node v10.16.0
19 verbose npm  v6.14.6
20 error code ELIFECYCLE
21 error errno 1
22 error<EMAIL_ADDRESS>development: `ts-node-dev --respawn --transpileOnly ./src/app.ts`
22 error Exit status 1
23 error Failed at the<EMAIL_ADDRESS>development script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Rolling back to 1.0.0-pre.50 seems to fix the issue
Node version is v12.18.2 (I know it says 10.16.0 in the log, but I've since upgraded and the issue remains).
TS version: 8.10.2

Change transpileOnly -> transpile-only

Before version 1.0.0-pre.51, I use this command:
npx ts-node-dev --respawn --transpileOnly ./src/index.ts --watch
After version 1.0.0-pre.51 I need to move all arguments to end:
npx ts-node-dev ./src/index.ts --watch --respawn -transpileOnly
I have not yet checked if that affects the behaviour and it may very well not be the solution, but can give a hint of where the issue are.

@whitecolor: can you take a look at the PR to fix that, #106?

Ah, stuck at this as well
Maybe a more clear error message would be helpful?

Something like output the wrong parameter?


Add log when receiving cancellation signal for a single input.

Missed this case when adding the log in the IOContext cancel() call. For single inputs, we just issue a SIGUSR1 and the signal handler then does the task cancellation. Everything works as intended, just missing the log.

@prbot approve


Fix logo link to homepage and update version no to prepare new release

I was able to test this locally using the new link-components script. Screenshot from the frontend site:

Test failure from 9539803 is just the attempt to update status in Jira.


NuGet binaries not strong named any more

I also miss any kind of a changelog which would mention this and in general what changed between 1.1.3 and 1.1.6.

Strong named : I don't know how to do that in the new project.json / .Net Core 1.0 RTM, please advice
Changelog:

1.1.4 Update to dotnet rc2 and removed dependency on EntityFramework
1.1.5 .Net Core 1.0 RTM + Changed dependency from JetBrains.Annotations to fix issues with System.Runtime
1.1.6 Removed portable target to fix issues with .Net Core 1.0 RTM when using this project

The key-file is provided LINQKit\src\LinqKit.Net45\LinqKit.snk and it was bound by *.csproj-file, but you can probably use also the Properties\AssemblyInfo.cs file adding the AssemblyKeyFileAttribute

Personally I'll keep away from .Net Core 1.0 for at least 1-2 years -- Microsoft may call it RTM, I call it public beta test.
AssemblyKeyFileAttribute creates a compiler warning CS1699 since VS2005 -- I wonder why Microsoft added these to UWP at all.

I used the original key-file. New NuGet has been created.
ReleaseNotes: https://github.com/scottksmith95/LINQKit/blob/master/ReleaseNotes.txt
Please verify

looks good


is the author accepting any pull requests

I ask because he doesnt seem to be on the issues page alot and i have a couple of pull requests i would love to commit to help with maintenance

Try, but check that all tests is passed and it doesn't break backward compatability

perfect


[SPARK-18143][SQL]Ignore Structured Streaming event logs to avoid breaking history server

What changes were proposed in this pull request?
Because of the refactoring work in Structured Streaming, the event logs generated by Strucutred Streaming in Spark 2.0.0 and 2.0.1 cannot be parsed.
This PR just ignores these logs in ReplayListenerBus because no places use them.
How was this patch tested?

Generated events logs using Spark 2.0.0 and 2.0.1, and saved them as structured-streaming-query-event-logs-2.0.0.txt and structured-streaming-query-event-logs-2.0.1.txt
The new added test makes sure ReplayListenerBus will skip these bad jsons.

cc @marmbrus @tdas

@rxin do we need to cancel 2.0.2-RC1 because of this issue?

Test build #67664 has started for PR 15663 at commit 5feb1bd.

Test build #67666 has started for PR 15663 at commit 3aedd53.

one comment, but overall looks good.

Test build #67664 has finished for PR 15663 at commit 5feb1bd.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67664/
Test PASSed.

Test build #67666 has finished for PR 15663 at commit 3aedd53.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67666/
Test PASSed.

Test build #67678 has started for PR 15663 at commit 4dd84eb.

Test build #67680 has started for PR 15663 at commit 0f51b4e.

Test build #67678 has finished for PR 15663 at commit 4dd84eb.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67678/
Test PASSed.

Test build #67680 has finished for PR 15663 at commit 0f51b4e.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67680/
Test PASSed.

Merged build finished. Test PASSed.

Test build #67731 has started for PR 15663 at commit 729d50d.

Updated. 2.0.1 event logs don't include the "stackTrace" field.

Test build #67734 has started for PR 15663 at commit d30a3a5.

Test build #67731 has finished for PR 15663 at commit 729d50d.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67731/
Test PASSed.

Merged build finished. Test PASSed.

Test build #67734 has finished for PR 15663 at commit d30a3a5.

This patch fails PySpark unit tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67734/
Test FAILed.

retest this please

Test build #67742 has started for PR 15663 at commit d30a3a5.

retest this please

Test build #67751 has started for PR 15663 at commit d30a3a5.

Test build #67742 has finished for PR 15663 at commit d30a3a5.

This patch fails from timeout after a configured wait of `250m`.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67742/
Test FAILed.

Test build #67751 has finished for PR 15663 at commit d30a3a5.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/67751/
Test PASSed.

Merged build finished. Test PASSed.

cc @tdas / @marmbrus
does this change lgtu?

LGTM. Merging to master and 2.0

Okay, I merged only to master, this does not merge cleanly to 2.0. I am on vacation so i cant test out the 2.0 fix quickly, better make a separate PR for 2.0


Add acceptance test that uses Kotlin

Add an acceptance test that uses Kotlin to invoke this API.
This will help identify issues with nullability annotations from JSpecify.

Closing for now as the Kotlin compiler is being buggy with the project configuration by trying to interpret it as an IntelliJ project within the GitHub runners. Will reconsider if/when this issue is addressed.

Closing for now as the Kotlin compiler is being buggy with the project configuration by trying to interpret it as an IntelliJ project within the GitHub runners. Will reconsider if/when this issue is addressed.


Patches ported from poi 3.16

Patches ported from poi 3.16

These changes includes removing public methods, seems to be a candidate for v2.8 of NPOI

Can we leave the obsolete public method AS IS instead of removing it? No one knows who is using it. This may cause breaking changes.

Learned something new. I have added this method back.

LGTM


Basic camera controls with mouse and keyboard

W A S D control position, mouse or arrow keys control rotation
Press C to reset rotation (centre camera)
Press P to reset position

Hm after merging I noticed a few problems, when You rotate it rotates around the local axis not the global one, creating some strange behavior. Also could you make it so that the cursor doesn't move while trying to rotate (could be trigger by a certain key, check: https://www.glfw.org/docs/3.3/input_guide.html).
I also created a separate brach to work on that feature.
Cheers!


Upgrade plexus-utils

Upgrade to address:
CVE-2017-1000487maven org.codehaus.plexus : plexus-utils : 1.5.4plexus-utils-1.5.4.jarOpen

mvn tree:dependency confirms that plexus-utils is being pulled in via this plugin
[INFO] +- com.googlecode.maven-download-plugin:download-maven-plugin:jar:1.4.1:compile
Although it is the latest version of the plugin, it only expresses a prereq on 1.5.4 as can be seen at
https://mvnrepository.com/artifact/com.googlecode.maven-download-plugin/download-maven-plugin/1.4.1
This is a version being reported by our CVE scans as having issues.
To address this we use  which can control transitive dependencies as well as direct. Current management in our poms is only via explicit versions (albeit parameterized) which does not influence transitive dependencies in this way
The original issue was reported at https://github.com/odpi/egeria/issues/22
Creating a PR to push this change

From local build:
mvn dependency:tree > ../depend.out
I get:
cat ../depend.out | grep plexus-utils
Following a clm build off the PR
Every single line is now
[INFO] |  +- org.codehaus.plexus:plexus-utils:jar:3.1.1:compile
Prior to the fix these were all showing 1.5.4
Yet the latest CLM run at
https://nexus-iq.wl.linuxfoundation.org/assets/index.html#/reports/odpi-egeria/0931089f18da4f08a83b82f75c202bb4
Is still showing
Dependency org.codehaus.plexus:plexus-utils:jar:1.5.4 located at Module org.odpi.egeria:access-services-connectors:jar:0.3-SNAPSHOT
and many other jars
Very odd as this jar only contains:
17:40 $ jar -tf ./open-metadata-implementation/adapters/open-connectors/access-services-connectors/target/access-services-connectors-0.3-SNAPSHOT.jar
META-INF/
META-INF/MANIFEST.MF
META-INF/maven/
META-INF/maven/org.odpi.egeria/
META-INF/maven/org.odpi.egeria/access-services-connectors/
META-INF/maven/org.odpi.egeria/access-services-connectors/pom.xml
META-INF/maven/org.odpi.egeria/access-services-connectors/pom.properties
and neither the pom.xml or pom.properties seem to refer.
Deferring for further discussion and investigation. However 'mvn' itself seems to prove a positive effect of the change made.

The article at https://help.sonatype.com/integrations/sonatype-clm-for-maven explains how the sonar CLM scan finds dependencies.
Manually creating the module.xml s using
mvn clean install com.sonatype.clm:clm-maven-plugin:index
Results in confirmation
17:50 $ cat ./open-metadata-implementation/adapters/open-connectors/access-services-connectors/target/sonatype-clm/module.xml | grep plexus-utils

So either

maven/nexus/sonar plugin is out of date on build machine
the report is stale
.....

Will review in a few days.

the plexus-utils fix works
This suggests #22 is the corrrect approach to persue


Translations update from Foundry Hub - Weblate

Translations update from Foundry Hub - Weblate for Simple Calendar/main.
Current translation status:

Codecov Report
Base: 99.98% // Head: 99.98% // No change to project coverage :thumbsup:

Coverage data is based on head (e251339) compared to base (8f103b0).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #405   +/-   ##
=======================================
  Coverage   99.98%   99.98%
=======================================
  Files          74       74
  Lines        7000     7000
  Branches     2014     2014
=======================================
  Hits         6999     6999
  Misses          1        1

Flag
Coverage Δ

unittests
99.98% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

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


Namespaces

It looks like the feature gate "NamespaceDefaultLabelName" has been removed as described on this page:
https://kubernetes.io/docs/reference/command-line-tools-reference/feature-gates-removed/
But it's noted on this page that it can be enabled:
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/#automatic-labelling
Maybe that the "Namespaces" page needs to be updated.

/language en
/sig docs

/retitle Unclear documentation on NamespaceDefaultLabelName feature gate
The documentation is not wrong; however, we can clean up
https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ to avoid mentioning the feature gate at all (we'd keep the feature-state shortcode).
/priority backlog
/help
/triage accepted


fix: solana-test-validator error (#2838)

This PR fixes the solana-test-validator error #2838
Problem
running solana-test-validator on macOS fails with the following error:
Ledger location: test-ledger
Log: test-ledger/validator.log
Error: failed to start validator: Failed to create ledger at test-ledger: io error: Error checking to unpack genesis archive: Archive error: extra entry found: "._genesis.bin" Regular

Proposed Solution
added checks for homebrew and GNU tar installation for intel-based and apple silicon-based macs directly in the agave install file and exporting the PATH accordingly.

so far so many people have encountered this issue, and they've been struggling with the solution.
ref: https://solana.stackexchange.com/questions/4499/blockstore-error-when-starting-solana-test-validator-on-macos-13-0-1/16319#16319


maxNumberOfFiles 设置了这个等于1，为何还能无限添加图片？

如题 (Such as title)

@531431988 can you change title to English? Comment too.

maxNumberOfFiles Set this to 1, why can you add unlimited pictures?

Make sure you set it like
   :max-number-of-files=1

Or you can upload more than one

Accurate, yes, you can also select the picture, but will not upload, can: max-number-of-files = "1" select the picture is not showing thumbnails

Your point is valid @531431988 . files more than max files count should not be shown in preview. But this feature is depend on core dropzone library.
Closing this issue as it was a question and it is answered and accepted.