Update from 0.4.0 to 2.3.18 on 22.04 Humble not transitioning to next inner state

Describe the bug
After updating smacc2 to 2.3.18 my state machine no longer transitions into the next inner state in a superstate. The transition rule is triggered and the RTA also confirm the trigger is executed, but the next state is never created and state machine just comes to a halt with no further output.
Any suggestions as to how I debug what is causing it?
I have tried to comment out all orthogonals in the next state, but it has no change. I tried to find a changelog for the update 0.4.0 to 2.3.18 and see if something changed for inner-states in a super-state but didn't find any. This problem is not present in 0.4.0.
The state machine goes through 2-3 "normal" states before it gets to the superstate, and those work as usual.
Added image of the super-state and events from RTA.

Environment (please complete the following information):
ROS DETAILS:

OS: Ubuntu 20.04 LTS
Version Humble

REPO DETAILS:
smacc2 2.3.18 installed through ubuntu PPA apt install ros-humble-smacc2
Error Details
[navigator_node-2] [INFO] [1697204323.675913356] [StiNextPosState]: TRANSITION RULE TRIGGERED: smacc2::Transition<smacc2::EvCbSuccess<navigator::cl_drone_interface::CbTargetPosChecker, navigator::OrDroneInterface>, navigator::mission_executor_super_state::navigator::inner_states::StiCaptureState, smacc2::default_transition_tags::CONTINUELOOP, boost::statechart::detail::no_context<smacc2::EvCbSuccess<navigator::cl_drone_interface::CbTargetPosChecker, navigator::OrDroneInterface> >, &boost::statechart::detail::no_context<smacc2::EvCbSuccess<navigator::cl_drone_interface::CbTargetPosChecker, navigator::OrDroneInterface> >::no_function>
[navigator_node-2] [WARN] [1697204323.675985855] [navigator]: exiting state: navigator::mission_executor_super_state::navigator::inner_states::StiNextPosState
[navigator_node-2] [INFO] [1697204323.676001259] [navigator]: Notification State Exit: leaving state 0x7f15742a3f80
[navigator_node-2] [INFO] [1697204323.676011963] [navigator]: [Orthogonal navigator::OrCameraInterface] OnExit
[navigator_node-2] [INFO] [1697204323.676034527] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbUpdateDroneData
[navigator_node-2] [INFO] [1697204323.676045738] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.676059316] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.676096318] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbTargetPosChecker
[navigator_node-2] [INFO] [1697204323.676106365] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.676116317] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.676134755] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbSendTargetPos
[navigator_node-2] [INFO] [1697204323.676227302] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.676138942] [navigator]:  [CbTargetPosChecker] target_pos_checker OnExit()
[navigator_node-2] [INFO] [1697204323.676252770] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.676360224] [navigator]: [Orthogonal navigator::OrGlobalPlanner] OnExit
[navigator_node-2] [INFO] [1697204323.676369523] [navigator]: [Orthogonal navigator::OrHasControl] OnExit
[navigator_node-2] [INFO] [1697204323.676379803] [navigator]: [Orthogonal navigator::OrImageAnalyzer] OnExit
[navigator_node-2] [INFO] [1697204323.676390479] [navigator]: [Orthogonal navigator::OrPilotInterface] OnExit
[navigator_node-2] [WARN] [1697204323.676397824] [navigator]: exiting state: navigator::mission_executor_super_state::navigator::inner_states::StiNextPosState
[navigator_node-2] [INFO] [1697204323.676446241] [navigator]: Notification State Exit: leaving state 0x7f15742a3f80
[navigator_node-2] [INFO] [1697204323.676476765] [navigator]: [Orthogonal navigator::OrCameraInterface] OnExit
[navigator_node-2] [INFO] [1697204323.676504750] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbUpdateDroneData
[navigator_node-2] [INFO] [1697204323.676543594] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.676564944] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] waiting future onEntryThread. It was not even created. Skipping wait.
[navigator_node-2] [INFO] [1697204323.676584911] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.677270999] [navigator]:  [CbSendTargetPos] send_target_pos OnExit()
[navigator_node-2] [INFO] [1697204323.677305503] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] asynchronous onExit done.
[navigator_node-2] [INFO] [1697204323.677533443] [navigator]:  [CbUpdateDroneData] updatedrone OnExit()
[navigator_node-2] [INFO] [1697204323.677595558] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] asynchronous onExit done.
[navigator_node-2] [INFO] [1697204323.677658614] [navigator]:  [CbUpdateDroneData] updatedrone OnExit()
[navigator_node-2] [INFO] [1697204323.677659283] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbTargetPosChecker
[navigator_node-2] [INFO] [1697204323.677703578] [navigator]: [navigator::cl_drone_interface::CbUpdateDroneData] asynchronous onExit done.
[navigator_node-2] [INFO] [1697204323.677725294] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.677782423] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] waiting future onEntryThread. It was not even created. Skipping wait.
[navigator_node-2] [INFO] [1697204323.677788713] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.677835327] [navigator]:  [CbTargetPosChecker] target_pos_checker OnExit()
[navigator_node-2] [INFO] [1697204323.875820690] [navigator]: [navigator::cl_drone_interface::CbTargetPosChecker] asynchronous onExit done.
[navigator_node-2] [INFO] [1697204323.875963703] [navigator]: [Orthogonal navigator::OrDroneInterface] OnExit, current Behavior: navigator::cl_drone_interface::CbSendTargetPos
[navigator_node-2] [INFO] [1697204323.876013385] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] onExit - join async onEntry thread
[navigator_node-2] [INFO] [1697204323.876031066] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] waiting future onEntryThread. It was not even created. Skipping wait.
[navigator_node-2] [INFO] [1697204323.876043312] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] onExit - Creating asynchronous onExit thread
[navigator_node-2] [INFO] [1697204323.876083438] [navigator]: [Orthogonal navigator::OrGlobalPlanner] OnExit
[navigator_node-2] [INFO] [1697204323.876087882] [navigator]:  [CbSendTargetPos] send_target_pos OnExit()
[navigator_node-2] [INFO] [1697204323.876094715] [navigator]: [Orthogonal navigator::OrHasControl] OnExit
[navigator_node-2] [INFO] [1697204323.876140073] [navigator]: [Orthogonal navigator::OrImageAnalyzer] OnExit
[navigator_node-2] [INFO] [1697204323.876149662] [navigator]: [Orthogonal navigator::OrPilotInterface] OnExit
[navigator_node-2] [INFO] [1697204323.876132445] [navigator]: [navigator::cl_drone_interface::CbSendTargetPos] asynchronous onExit done.
[navigator_node-2] [INFO] [1697204323.876161235] [StiNextPosState]: [NEXT_POS] onEXIT() next_pos inner state
[navigator_node-2] [WARN] [1697204323.876179130] [navigator]: exiting state: navigator::mission_executor_super_state::navigator::inner_states::StiNextPosState
[navigator_node-2] [INFO] [1697204323.876190837] [navigator]: Notification State Disposing: leaving state0x7f15742a3f80
[navigator_node-2] [INFO] [1697204323.876204131] [navigator]: [SmaccSignals] object signal disconnecting<PHONE_NUMBER>30400
[navigator_node-2] [INFO] [1697204323.876213868] [navigator]: [SmaccSignals] no signals found<PHONE_NUMBER>30400

┆Issue is synchronized with this Jira Task by Unito

Just a couple of questions: how many SmaccSignals do you have running while you're in the state you're transitioning from (including the outer state)? E.g., ROS topic subscriber/publisher callbacks, etc. Also, does the state machine get stuck in the same state on every run? I.e. is it a 'reliable' failure?
It looks like the orthogonals have exited, but its not progressing to where it actually triggers a state exit. Basically, you seem stuck at this line. Are you able to download SMACC2's source and compile it yourself? You can then add a breakpoint to the region where the state machine is getting stuck at and get a clearer picture of what's happening in the inside and exactly where its hanging up.
You can also try temporarily moving the troublesome states out of the outer state (i.e. remove StiNextPosState and StiCaptureState from mission_executor_state) and see if the transition takes place successfully? Its to check if an inner state transition bug we've observed and fixed before is making another appearance.

I have:
6 subscribers
2 publishers
So a total of: 8
They are all in the StiNextPosState I got no ros-signals in the mission_executor_state.
It is the same state that gets halted every time. Although it's also the very first inner-state transition. So, I can't say if the following two inner-state transitions would also be stuck. It's been reproduced on 2 different computers running 22.04, ros2 Humble.
I will try and download the source and compile it myself today and see if I can figure out where it's getting stuck. And otherwise, also try to move the states out to see if it's an inner_state bug as you suggested.

Thanks for the suggestions. You are absolutely right that I should have used atomic for the bool, was an oversight.
I changed bool to be atomic.
I tried adding debug prints in the onExit() to verify if thread is joined like this:
  void onExit() override {
    // close thread, so we don't hang behaviour
    force_shutdown = true;
    if (threadRun.joinable()) {
        log_info("onExit: Trying to join thread...");
        threadRun.join();
        log_info("onExit: Thread have been joined");
    }
  }

But as the image show then the statemachine still halts as originally.

I also added a debug print in the thread:
  void runThread() {
    rclcpp::Rate rate(5); // 10Hz
    while (!isShutdownRequested() && !force_shutdown) {
      this->checkDistanceToTarget();
      rate.sleep();
      log_info("runThread: Thread is running...");
    }
  }

I can confirm that it prints in the console as it's running up until the transition is triggered, then it stops and we get the output as in the image showing it joins the thread.
I tried to change the CB to sync by changing the following:
class CbTargetPosChecker : public smacc2::SmaccClientBehavior, LogHelper {

// event to trigger the transition
auto ev = new smacc2::EvCbSuccess<CbTargetPosChecker, OrDroneInterface>();
this->postEvent(ev);

I get the same output as in the earlier image. prints show thread has joined and transition is triggered. Halts and never goes into the next state. Transition table looks like:
  typedef mpl::list<
          Transition<EvCbSuccess<CbTargetPosChecker, OrDroneInterface>, StiCaptureState, CONTINUELOOP>
  > reactions;

  // STATE FUNCTIONS
  static void staticConfigure() {
    configure_orthogonal<OrHasControl, CbCheckControl>();
    configure_orthogonal<OrDroneInterface, CbUpdateDroneData>();
    configure_orthogonal<OrDroneInterface, CbTargetPosChecker>();
    configure_orthogonal<OrDroneInterface, CbSendTargetPos>();
  }

I did not know about the Updatebleclient behaviours. I will look into that. As the function is just one that checks the current position with the goal position, and triggers state transition if at the new position. So sounds like it would fit the usecase for the Updateable.

Trying to get Updatable to work. My CV looks like this. But when running it, it seems like the update() is never run. I never get any prints in the console, nor does it trigger transition as it did when running it in its own thread. Am I missing something specific to get the update function called?
class CbTargetPosChecker : public smacc2::SmaccAsyncClientBehavior, smacc2::ISmaccUpdatable, LogHelper {
public:
  CbTargetPosChecker() = default;

  ~CbTargetPosChecker() override = default;

  void onEntry() override {

    log_info("OnEntry, Checking pos with 5hz");
    // set period for 5hz, so 1s/5, as its less than 1s and we can only give in int second and int nano-second, we divide 1s in ns by 5
    this->setUpdatePeriod(rclcpp::Duration(0,<PHONE_NUMBER>/5));
//    this->executeUpdate(this->getNode());
  }

  void onExit() override {}

  void update() override
  {
      log_info("Update: Running updatable function at 5hz...");
      this->checkDistanceToTarget();
  }

I get the same output as in the earlier image. prints show thread has joined and transition is triggered. Halts and never goes into the next state. Transition table looks like

I don't have access to my machine atm, but I'll look into this a bit more later today.
Regarding the Updatable() issue, have you tried using it with a syncronous CB instead of the Async one? Alternatively, can you add the Updatable constructor to your CB's constructor so that the run period is initialised during the CB construction process, rather than during transition and the async onEntry() execution

Regarding the Updatable() issue, have you tried using it with a syncronous CB instead of the Async one? Alternatively, can you add the Updatable constructor to your CB's constructor so that the run period is initialised during the CB construction process, rather than during transition and the async onEntry() execution

I tried both synchronous and async. I did however not try adding the updatable constructor to the CB constructor. I will try that on Monday when I am back in the office. (Got a field day tomorrow)

I tried with the duration in the constructor as you suggested, but without any luck:
class CbTargetPosChecker : public smacc2::SmaccClientBehavior, smacc2::ISmaccUpdatable, LogHelper {
public:
    CbTargetPosChecker() : ISmaccUpdatable(rclcpp::Duration(1,0)) {}

  void update() override
  {
      log_info("Update: Running updatable function at 5hz...");
      this->checkDistanceToTarget();
  }

During the OnEntry() I added a breakpoint to see if it had set the duration correctly. And it seems like it did. Set to 1 second.

But I get no execution of the update function. No prints in console, and a breakpoint set in the update function is never hit.
Its like Updatable never get discovered.
When following the trace I can see that the update client is never found and added to the statemachines list of updatables. https://github.com/robosoft-ai/SMACC2/blob/cc5904016f7da6d1f174f387341bf76b5756c068/smacc2/src/smacc2/signal_detector.cpp#L88
But I am unsure if I am doing something wrong. Is my problem here that the client should also inherit from Updatable and not just the client behaviour? Although looking in reference library it appears that just adding Updatableon the client behaviour should be enough.

My client is currently:
namespace navigator
{
namespace cl_drone_interface
{

class ClDroneInterface : public smacc2::ISmaccClient
{
public:
  ClDroneInterface()= default;

  ~ClDroneInterface() override= default;;
};
}  // namespace cl_image_analyzer
}  // namespace navigator

And the orthogonal
namespace navigator
{
    using namespace navigator::cl_drone_interface;

    class OrDroneInterface : public smacc2::Orthogonal<OrDroneInterface>
    {
    public:
        void onInitialize() override
        {
            // This needs client for talking with imaging node, and client to talk with operator
            auto drone_interface_client = this->createClient<ClDroneInterface>();
        }
    };
}  // namespace

With it configured in that state as:
  static void staticConfigure() {
    configure_orthogonal<OrDroneInterface, CbUpdateDroneData>();
    configure_orthogonal<OrDroneInterface, CbTargetPosChecker>();
  }

I managed to get it to run update by adding public to the inheritance of Updatable
class CbTargetPosChecker : public smacc2::SmaccClientBehavior, public smacc2::ISmaccUpdatable, LogHelper {

However I still get the halt on transition where it doesn't make it further as originally.

I don't know if it helps, but I found out that if I add a breakpoint here: https://github.com/robosoft-ai/SMACC2/blob/cc5904016f7da6d1f174f387341bf76b5756c068/smacc2/include/smacc2/impl/smacc_state_machine_impl.hpp#L660
And hit "resume" every time its triggered, then the transition into the next state works as expected. But if I don't "slow down the transition" by doing that and just letting it run, then it errors as originally and never make it into the next state. This was done with the exact same compiled code.
I am not knowledgeable enough yet to figure out where in SMACC2 this is caused. But it seems like there is some sort of race condition on the transition? I just can't figure out why it depends on if you are running a CB with thread/updateable...
Adding this to the behaviours OnExit() method is enough to let it keep going.
  void onExit() override {
      log_info("Exiting Target Pos Checker...");
      sleep(1);
  }

Sorry for the delay, I've finally had some time to look at this on my machine.
I originally suspected there might be some race condition or deallocation blockage when I saw you spawning a thread inside an async CB. However, you've done away with both now and you're still getting this issue so the problem must be elsewhere.
Looking at your code, I can't see an obvious reason why it won't work. Indeed, I put together a small example state machine that switches between 2 states with a timer and updatable and they switch as you'd expect (see my fork here)
Can you confirm that the CbTargetPosChecker client behaviour is the only CB active in the state that won't exit? It looks like there's something running in the background that's preventing the state from exiting

It seems like it happens if I have a CB with a thread in it, and at the same time its started, it gets told to change state, then it have a hard time exiting properly.
You were right that I forgot I also had the CB SendTargetPos initially starting an async-thread like TargetPosChecker before I changed it to updatable, the thread does get stopped after a few seconds by itself as it just waits for a confirmation reply. But seems to be enough to halt it if you transition as soon as you enter the state.
Currently as soon as it goes into sti_next_pos the first time it's already at the initial target position, so it fulfils the transition conditions and tries to change state immediately. Which seems to be too fast for it to clean up properly.
When I make it fly to an initial point a bit further away, there is 2-4s between entering sti_next_pos and it hitting the state transition, which has the same function as the sleep, and I avoid the error.
I did the following test.
I have the TargetPosChecker CB with this in OnEntry():
  void onEntry() override {
    log_info("OnEntry, Checking pos every 5hz");
    auto ev = new smacc2::EvCbSuccess<CbTargetPosChecker, OrDroneInterface>();
    this->postEvent(ev);
  }

I then have another CB SendTargetPos (simplified):
namespace navigator {
namespace cl_drone_interface {

class CbSendTargetPos : public smacc2::SmaccAsyncClientBehavior, LogHelper {
public:
  CbSendTargetPos() = default;
  ~CbSendTargetPos() override = default;

  // Log Function configs
  rclcpp::Logger getNodeLogger() { return this->getLogger(); }
  std::string getLogName() { return "CbSendTargetPos"; }

  void onExit() override {
    // close thread, so we don't hang behaviour
    force_shutdown = true;
    if (threadRun.joinable())
      threadRun.join();

    // unsub subs/pubs
    _sub_mavros_setpoint.reset();
    _pub_position_target.reset();
    _pub_gimbal.reset();
  }

  void onEntry() override {
    // get current data from datastore
    DataStore *_ds;
    this->getStateMachine()->getGlobalSMData("datastore", _ds);

    auto _plan = _ds->getCurrentMissionPlan();
    auto _index = _ds->getCurrentMissionIndex();

    // get target pos
    auto _targetPos = _plan.plan[_index];
    _msg.position = _targetPos.pose.pose.position;

    // start thread that runs our function, as otherwise we never return and won't be able to change state...
    threadRun = std::thread(&CbSendTargetPos::runThread, this);
  }

private:
  void runThread() {
    rclcpp::Rate rate(1); // 1Hz
    // remember to check the shutdown request, so we don't block state transitions
    while (!isShutdownRequested() && !force_shutdown) {
      _pub_position_target->publish(_msg);
      rate.sleep();
    }
  }
  void onMessageSetpointRaw(const mavros_msgs::msg::PositionTarget::SharedPtr msg) {
    // validate if the current published setpoint is == to our requested setpoint.
    //  A hacky way to ensure this node gets closed, but not before the setpoint has been accepted
    if (msg->position == _msg.position) {
      force_shutdown = true;
      _sub_mavros_setpoint.reset();
    }
  }

  bool force_shutdown = false;
  std::thread threadRun;
  interfaces::msg::LarkePositionTarget _msg;
  rclcpp::Subscription<mavros_msgs::msg::PositionTarget>::SharedPtr _sub_mavros_setpoint;
  rclcpp::Publisher<interfaces::msg::LarkePositionTarget>::SharedPtr _pub_position_target;
  rclcpp::Publisher<interfaces::msg::GimbalAttitude>::SharedPtr _pub_gimbal;
};
}
}

This does not work, as it seems to get hung up on the second CB here not being properly disposed. The spawned thread is joined and stopped, as breakpoints inside it doesn't get triggered after the transition is triggered, but the state change still halts as originally.

However if I add a sleep in first CB on exit:
```cpp
  void onEntry() override {
    log_info("OnEntry, Checking pos every 5hz");
    auto ev = new smacc2::EvCbSuccess<CbTargetPosChecker, OrDroneInterface>();
    this->postEvent(ev);
  }
    void onExit() override {
      log_info("Exiting Target Pos Checker...");
      sleep(1);
  }

Then it works fine. So I think part of the problem is an instant state-change causing some kind of race condition between the CBs.

Further testing.
Having the second CB look like this will halt transition:
class CbSendTargetPos : public smacc2::SmaccClientBehavior, public smacc2::ISmaccUpdatable, LogHelper {
public:
    CbSendTargetPos() : ISmaccUpdatable(rclcpp::Duration(0,UPDATE_RATE)) {}
  ~CbSendTargetPos() override = default;

  void onExit() override { }

  void onEntry() override {
    sleep(10);
    return;
  }

However removing the sleep and it works fine. So I think what happens is that the transition breaks if the transition is called before the onEntry() has finished. As I do some light work in OnEntry() of creating a ros_message and saving it to be published on each update. The creation fetches some data from my datastore, and while it takes much less than a second to execute, it might be slow enough that an instant state-change will happen before it returns.

But it solved my issue here and now. As my `SendTargetPosCB is subscribing to a message that would make it exit itself anyway as soon as the position it transmitted was received, so having this on the topic subscription callback to stop theUpdatable`` function:
  void onMessageSetpointRaw(const mavros_msgs::msg::PositionTarget::SharedPtr msg) {
    // validate if the current published setpoint is == to our requested setpoint.
    if (msg->position == _msg.position) {
      this->dispose();
    }
  }

Meant that even in the case where it would halt and not get disposed because a state change happens before it exists onEntry() it would receive this message at the same time and dispose itself, and then the state-change would continue. So it solves my problem here and now, but as the original problem came with the version update, I think there is still something messing with disposing states, if they haven't exited their onEntry() at the time, which is worth looking at.
Also Thanks for the all the help and getting me on the right track! Made a big difference trying to figure out how to debug what was going on! :)

Hello.
Would it be possible to simplify the code and share it as an small example?
In that way I could try to reproduce that error around and diagnose what it is happening.

Hello Pablo
I tried to make a very simple version of inner states where one behaviour would sleep in onEntry while the other would finish. And that still seemed to work as it would change state as soon as the sleep was over. So it seems like I might do something in the behaviour that influences this error, although I am not quite sure what yet.
I will try to see if I can make an example closer to the original code that can reproduce it next week. Or see if I can narrow down if there is a particular subscriber/publisher/datastore that is causing this.

Hi @Crowdedlight, I'm closing the ticket. Lemme know if you're still having issues like this and we can reopen it.
Thank you,

Hi @Crowdedlight, I'm closing the ticket. Lemme know if you're still having issues like this and we can reopen it. Thank you,

Sorry for not getting back. I ended up moving the inner states out of the super-state and that seemed to be more robust. I spent a day trying to make a minimal reproduction example, but couldn't get the error to appear reliably on that.
So in the end assumed we must have done something wrong or some kind of very odd circumstance that caused the initial error and some of the developments and refactors done since having helped remove the issue.
Keep the issue closed. If I revisit my earlier attempt and manage to get a reproducible example at some point I will get back to you, but for now, it seems to work fine for us. :)
And thanks for the help in diagnosing and troubleshooting it!


Clean-up of images provided by meta-raspberrypi

This is a issue based on discussion started in #184 (which is now a closed issue), and to not lose track of the suggestions/discussion I will create a new issue.
To try and summarize the discussion:
There is some confusing today, what the intention of the different images provided by meta-raspberrypi actually is and there is no documentation on them. The current state is:

rpi-hwup-image - Basically equivalent of core-image-minimal with kernel-modules installed
rpi-basic-image - Same as above with "splash" and "ssh" enabled
rpi-test-image - Same as above with some additional packages installed suitable for different hw tests (packagegroup-rpi-test)

The confusing with above is that NONE actually install all the necessary software/firmware to utilize all the hardware components on the RPi boards. Most confusing is that the WiFi firmware does not get installed using above images.
My suggestions is instead and try and utilize the "default" images provided by Yocto/OE-core which already have a nice layering to them (and documented already in the Yocto docs).

core-image-minimal - "A small image just capable of allowing a device to boot."
core-image-base - "A console-only image that fully supports the target device hardware."

And by settings up MACHINE_EXTRA_RRECOMMENDS and MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS the correct packages will be installed in above images. This is basically already done today.
This means that we remove the rpi-hwup-image and rpi-basic-image and change the rpi-test-image to inherit from core-image, with maybe some additional configuration.
Feedback is welcome what the best approach is.

I agree with this, meta-raspberrypi should follow the conventions in
oe-core unless we have good reasons not to.
I would keep the old image names around as aliases with deprecation
warnings for at least one release cycle (~ 6 months) so that people can
upgrade safely. So rpi-hwup-image would become an alias for
core-image-minimal and rpi-basic-image would become an alias for
core-image-minimal. I think we should keep rpi-test-image permanently as
it's useful.
--
Paul Barker
Togán Labs Ltd

I agree with this. I would keep a test image though because it drags all the components we currently have in the layer and it's useful to test a build of all the things we provide (as Paul said).

As one of the initiators of the whole discussion, I also agree with this. We totally should be using the standard Yocto images. This in turn makes the whole idea/purpose of Yocto of seamlessly changing BSP layers and then it "just works".
I agree the particular test image for this layer should be kept for the purpose of testing this layer specifically.
I also want to encourage the documentation of this and other features. The best way to stop users being confused (like I was myself at the beginning) is to clearly state how things should work and the best practices. I can help with this as well if you want.

I've looked into this today and I can't see any way to issue deprecation warnings. What I can do though is make the current rpi-hwup-image and rpi-basic-image recipes error out with a message telling the user which image recipe to use instead. Then after a release cycle or two we can drop these completely.
I'm going to submit a pull request implementing that as soon as I'm done testing.

@betafive Can't we have a warning in do_image for the rpi images? Basically if you are building for example rpi-hw-up-image, warn that next release will have these images removed.

@agherzan, Actually, yea, that probably will work. I'll give that a go.

I've added a bb.warn() call in a do_image_prepend() function. Looks good:
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
WARNING: rpi-hwup-image-1.0-r0 do_image: The image 'rpi-hwup-image' is deprecated, please use 'core-image-minimal' instead
NOTE: Tasks Summary: Attempted 1574 tasks of which 1546 didn't need to be rerun and all succeeded.

Summary: There was 1 WARNING message shown.

Will submit a pull request once I've finished testing the rest of my changes (kernel & firmware upgrades including a 4.14.y kernel).

Exactly. Looks great!

It's not printed when the image is picked up from sstate but I think we can let that slide.

Agreed.

LGTM. With a similar approach, meta-freescale is warning about future deprecation of their non-wic based image creation classes.

great @betafive, exactly what I had in mind!
we should definitively also pay attention to the documentation. If someone gets confused by a dissapearing rpi-hwup-image or rpi-basic-image, then going to the documentation should point them to the right direction. This further makes the sstate "problem" not a problem really.
Thanks for the work!

@hhromic, you're right. I find coding and documentation writing to need two very different states of mind so I usually do them separately. But lets keep this issue open until the docs are done. Should hopefully be later this week.

I can happily help too with that. I guess the relevant files are the ones located under docs?
Let me know, however I can work on this only from two weeks from now.
I also want to propose/discuss an improvement for the handling of the options in config.txt. This also would require documentation updates. I will open another issue ticket for that later.

I second @hhromic's comment on documentation.  It was disconcerting to follow the Quick Start instructions in README to bitbake rpi-hwup-image, only to get a warning that the recipe was deprecated.

Docs updated. Closing this issue.


session support? ssl cookies?

Would it be possible to add session cookies and ssl cookie support?

@NextStepGuru Since the purpose of this plugin is not to contain any code for actually setting cookies but just providing a wrapper for the awesome Tiny cookie library, I do not believe it would make sense to implement these features in this plugin. But I believe that the latest version of tiny cookie contains a secure option, meaning you should be able to do:

Vue.cookie.set('someKey', 'someValue', { secure: true });

Regarding the session cookies if it is something you need you should make a issue on: https://github.com/Alex1990/tiny-cookie/issues


Populate the top level Eat map

This only includes the claims that we have coded.

needed to rebase on top of #10


Added Radom::decision() which returns a bool based on a given probability

I often use something like randf() < 0.33 to do something based on a given probability. This PR adds this functionality to Random. Not sure about the function name. It makes sense to me, but if you have a different suggestion i can change it of course.

Yeah makes sense I think. There's Random.condition which returns a random boolean in 50/50 cases. What about Random.decision(probability)? I mean, semantically it's not really the method which "decides" what has to be done, the decision is done by control paths such if statements. Compare:
if Random.decide(0.6):
    # Do something.

# vs

if Random.decision(0.6):
    # Do something.

Yet decide() is less verbose and easier to type, so I have no strong opinion on this. 🙂

Now that i see both versions side by side i have to agree that decision makes more sense. I changed it 👍

I get what you mean, but aliases are in my opinion a bad idea. I already dislike this in Godot ( see append and push_back). How about something more generic and clear like evaluate_probability or eval_probability? It's a little bit more verbose but self-explanitory and it does not require any aliases.

Well, yeah, I think current name is fine as-is. Lets leave this to mean "the decision which is done by a program", rather than "decision which is done by an actor", this is probably just semantics.

Thanks and congrats for your first contribution!


Adds PopupMenuPosition position to the PopupMenuThemeData

Closes https://github.com/flutter/flutter/issues/110264
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

Hello @gspencergoog, is there something more I should do for this pull request?


Stripe with Google pay and Apple pay

How can I integrate Google pay and Apple pay using this capacitor plugin in ionic 4?
I don't see any documentation for this.
Thanks!

@filipnaumoski
I haven't had a chance to document the plugin yet.
You can take a look at the declaration file here:
https://github.com/zyra/capacitor-stripe/blob/master/packages/plugin/src/definitions.ts#L77-L156
Quick example:
import { Plugins } from '@capacitor/core';
const { StripePlugin } = Plugins;

// apple pay

// Option A: Charges
StripePlugin.payWithApplePay({
    merchantId: 'merchant.test.com', // apple merchant id
    country: 'CA', // 2 letter country code
    currency: 'CAD', // currency code
    items: [
      // list your items here so the user knows what they're paying for
      // tax + total are optional
      {
         label: 'Blue Tshirt',
         amount: 50,
      },
      {
         label: 'Tax',
         amount: 10,
      },
      {
         label: 'Total',
         amount: 60,
      }
    ]
})
.then((res) => {
  // send token to API and handle charge (res.token)
  // then call finalizeApplePayTransaction with the result to dismiss the UI modal
  StripePlugin.finalizeApplePayTransaction({ success: true })
})
.catch(err => {
  // something went wrong
  // user cancelled, integration issue, timeout ..etc
});

// Option #2: Payment Intents
StripePlugin.confirmPaymentIntent({
  clientSecret: 'secret from API',
  applePayOptions: { /* same as above */ },
})
.then(res => {
  // dismiss the apple pay modal in the UI
  // check with your server that everything is fine, depending on your PaymentIntent implementation
  StripePlugin.finalizeApplePayTransaction({ success: true })
})
.catch(err => {
  StripePlugin.finalizeApplePayTransaction({ success: false })
})

// google pay
StripePlugin.startGooglePayTransaction({
  // options not available in definitions file
  // can find some of them here: https://github.com/zyra/capacitor-stripe/blob/master/packages/plugin/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt#L407-L483
})
.then(res => {
  StripePlugin.confirmPaymentIntent({ fromGooglePay: true });
})
.catch(err => {

});

Hello @ihadeed
I have issue with android build after a set up capacitor stripe plugin.
Android build issue
`> Task :capacitor-stripe:compileDebugKotlin FAILED
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (296, 24): None of the following functions can be called with the arguments supplied:
@UiThread public final fun confirmPayment(activity: Activity, confirmPaymentIntentParams: ConfirmPaymentIntentParams): Unit defined in com.stripe.android.Stripe
@UiThread public final fun confirmPayment(fragment: Fragment, confirmPaymentIntentParams: ConfirmPaymentIntentParams): Unit defined in com.stripe.android.Stripe
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (296, 39): Cannot access class 'android.support.v7.app.AppCompatActivity'. Check your module classpath for missing or conflicting dependencies
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (328, 24): None of the following functions can be called with the arguments supplied:
@UiThread public final fun confirmSetupIntent(activity: Activity, confirmSetupIntentParams: ConfirmSetupIntentParams): Unit defined in com.stripe.android.Stripe
@UiThread public final fun confirmSetupIntent(fragment: Fragment, confirmSetupIntentParams: ConfirmSetupIntentParams): Unit defined in com.stripe.android.Stripe
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (328, 43): Cannot access class 'android.support.v7.app.AppCompatActivity'. Check your module classpath for missing or conflicting dependencies
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (473, 31): Type inference failed: fun <TResult : AutoResolvableResult!> resolveTask(p0: Task<TResult!>, p1: Activity, p2: Int): Unit
cannot be applied to
(Task<PaymentData!>!,AppCompatActivity!,Int)
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (475, 21): Cannot access class 'android.support.v7.app.AppCompatActivity'. Check your module classpath for missing or conflicting dependencies
e: /PATH/node_modules/capacitor-stripe/android/src/main/java/ca/zyra/capacitor/stripe/StripePlugin.kt: (475, 21): Type mismatch: inferred type is AppCompatActivity! but Activity was expected
FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':capacitor-stripe:compileDebugKotlin'.

Compilation error. See log for more details

Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

Get more help at https://help.gradle.org

Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/4.10.1/userguide/command_line_interface.html#sec:command_line_warnings
BUILD FAILED in 7s
35 actionable tasks: 16 executed, 19 up-to-date`

Regarding the Android build:
Your app needs to use AndroidX which isn't available in Capacitor latest version yet. See this PR for details.
To use Android X now you can do one of the following:
Install capacitor-android from that PR: there are some instructions here that I haven't tested but they should work.
or, here is what I did:

Follow these steps (add 2 lines to gradle.properties, and run a built-in Android Studio tool)
compile the app and go to any file that's causing a compile error. Remove any invalid imports in the file and re-import using the suggestion given by Android Studio (which will be an AndroidX library import)

That iOS error must be coming from this function: https://github.com/zyra/capacitor-stripe/blob/master/packages/plugin/ios/Plugin/Helper.swift#L172
It's possible that I did not implement the custom errors properly which is why you're seeing that generic error message.
I noticed I made a mistake in my example. I wrote merchantId but it's merchantIdentifier.
Check the following:

you provided all required fields: merchantIdentifier, country, currency, items
need at least one item in items array`
each item must have a label and an amount

amount must be numeric
amount must be greater than 0

Hey @ihadeed

Regarding the Android build:
Your app needs to use AndroidX which isn't available in Capacitor latest version yet. See this PR for details.
To use Android X now you can do one of the following:
Install capacitor-android from that PR: there are some instructions here that I haven't tested but they should work.
or, here is what I did:

Follow these steps (add 2 lines to gradle.properties, and run a built-in Android Studio tool)
compile the app and go to any file that's causing a compile error. Remove any invalid imports in the file and re-import using the suggestion given by Android Studio (which will be an AndroidX library import)

After capacitor android installation from PR I got this error message when i call function from this plugin on web and mobile (setPublishableKey('KEY'); startGooglePayTransaction(); payWithApplePay(); etc.)
Error: Uncaught (in promise): StripePlugin does not have web implementation.
p.s. I stuck with all of this, i need more info for set up this plugin and i need to implement all stripe payments like a credit card, gPay and iPay very soon.
Also i got same error message after change merchantId to merchantIdentifier

@filipnaumoski thanks for the feedback
Looking into it now as I'm integrating it into an app. Will publish any necessary fixes soon.

@ihadeed I managed to resolve the issue with GooglePay. The issue was in MainActivity.java - to be more specific, it was missing add(StripePlugin.class) in the bridge initialization function.
Additionally, there was an issue with Stripe API POST request in web.js, therefore I made some modification in CallStripeAPI function:
headers: Object.assign({ 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json', 'Authorization': ;Bearer ${key}' }, extraHeaders),
remove mode: 'no-cors'
Please, let me know if you have some update in regards to ApplePay. I am still working on this, however I haven't manage to find solution yet.

Thanks @filipnaumoski , I implemented your fix for the web and it seems to work well now.
As for iOS, I just ran a test and managed to successfully use Apple Pay. A few things to double check:

I made another mistake above with the Apple Pay example. The parameters must be wrapped with applePayOptions. Example:

await Capacitor.Plugins.StripePlugin.payWithApplePay({ applePayOptions: { ... } });

Make sure the merchant id is valid. See this guide for details: https://stripe.com/docs/apple-pay#merchantid

Releasing a new version now with the recent fixes/updates.
Breaking changes:

the plugin is now called Stripe instead of StripePlugin so you will need to update the imports (TypeScript & Android)
startGooglePayTransaction is now payWithGooglePay
google pay options must be in a googlePayOptions property:

Stripe.payWithGooglePay({ googlePayOptions: { ... } });

Probably will get rid of payWithGooglePay completely and just have an option to pass googlePayOptions in confirmPaymentIntent since there is no other use for it. But that will be in the next releases.

I'm going to make some PRs soon for the readme, if that's alright. Unless you had some examples to add. Why not both

@ihadeed I managed to resolve the issue with GooglePay. The issue was in MainActivity.java - to be more specific, it was missing add(StripePlugin.class) in the bridge initialization function.
Additionally, there was an issue with Stripe API POST request in web.js, therefore I made some modification in CallStripeAPI function:
headers: Object.assign({ 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json', 'Authorization': ;Bearer ${key}' }, extraHeaders),
remove mode: 'no-cors'
Please, let me know if you have some update in regards to ApplePay. I am still working on this, however I haven't manage to find solution yet.

 I have the same error as you:
"Unable to parse apple pay options: The operation couldn't be completed. (CapacitorStripe.StripePluginError error 0.)"

Seems like some docs are getting added
https://github.com/zyra/capacitor-stripe/tree/master/.docs/pages

@ihadeed I was able to add Google pay to my app, but I'm not sure I did it right. I used my server-side to initialize a payment_intent for the clientSecret.. Is that right?
After using payWithGooglePay, it returns nothing, and I go straight to confirmPaymentIntent, but I need to interact with the paymentMethod before I confirm the payment. How can I get that? I tried to get it off the intent. I don't see the paymentMethod until after it's confirmed, in the dashboard. At that point it's too late for me to mark the transaction as a subscription

@ihadeed I am having below error, when i try to paywithGooglePay in my app.
Request failed:
Unexpected developer error, please try again later.
Please advice, what this means? And also please advice, how to do payment with google pay and apple pay?

@ihadeed I have found out the reason for the above error. Please see below
`03-09 11:54:24.137 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = AMERICAN_EXPRESS is not a valid enum value for this field.
03-09 11:54:27.606 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = AMERICAN_EXPRESS is not a valid enum value for this field.
03-09 11:54:43.038 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = AMERICAN_EXPRESS is not a valid enum value for this field.
03-09 11:55:14.504 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = UNKNOWN is not a valid enum value for this field.
03-09 11:56:18.973 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = UNKNOWN is not a valid enum value for this field.
03-09 11:56:21.028 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = UNKNOWN is not a valid enum value for this field.
03-09 11:56:24.536 13820 13820 W WalletMerchantError: Error in loadPaymentData: PaymentDataRequest.allowedPaymentMethods[0].parameters.allowedCardNetworks[0] = UNKNOWN is not a valid enum value for this field.`
and please advice, why UNKNOWN is not valid enum and Why AMERICAN_EXPRESS not a valid enum. But these values are present in enum.
If i put visa or master card in allowed card networks payment sheet opens with out any alert box

@ihadeed  Please respond for my queries, I am having lot of issues with this plugin. I need you clarification and guidance for this.
When I do confirm payment Intent with googlePayOptions, I got below error. I create payment intent from server. and then passing my client secret to
 const stripePublishable = await this.         cinchSrv.fs.doc$<any>(${environment.appConfig.commerceAccount}/meta/stripe-publishable)         .pipe(take(1)).toPromise();       await Stripe.setPublishableKey({ key: stripePublishable.publishableKey });       await Stripe.confirmPaymentIntent({         clientSecret: cs,         googlePayOptions: {           merchantName: 'test',           totalPrice: 100,           totalPriceStatus: 'FINAL',           currencyCode: 'NOK',           allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],           allowedCardNetworks: ['AMEX', 'DISCOVER', 'INTERAC', 'JCB', 'MASTERCARD', 'VISA'],         }
"unable to complete transaction: You cannot confirm this PaymentIntent because it's missing a payment method. You can either update the PaymentIntent with a payment method and then confirm it again, or confirm it again directly with a payment method."
`

Hi,
I am getting an error
ERROR Error: Uncaught (in promise): Stripe does not have web implementation..
Not sure if some setup issues or something. Can add more info if wanted about the issue.
Thanks.

After using payWithGooglePay, it returns nothing, and I go straight to confirmPaymentIntent, but > I need to interact with the paymentMethod before I confirm.

See pull request #9 for payWithGooglePay fix


Resolve #68 by adding MakeRequest method

I also added OPTIONS method case but I'm not sure about this, please take a look.
https://github.com/parnurzeal/gorequest/commit/3c291a458f68ee08bc3f3b9c128ec71f28d4ec82#diff-7ddfb3e035b42cd70649cc33393fe32cR750

LGTM thanks

Interesting change and LGTM.
Thank you for this @quangbuule


read carParams from namedtuple instead of pycapnp

Use namedtuple to read CarParams for faster and safer state(the namedtuple is immutable). it is nearly identical to native performance.

I'd like to do this optimization more generically. My two immediate ideas are to either move to compiling the schema to Cython or implement something like this in SubMaster. I think we should try the Cython approach first. What do you think?

Here are some issues I've found so far after doing a quick view on the cython approach:

can't use keyword from,to ,the struct Segment needs to be modified to

struct Segment @0xa5b39b4fc4d7da3f {
fromXXX @0 :LatLng;
toXXX @1 :LatLng;

doesn't support anyporint in capnp, struct Map needs to be modified to

struct Map {
entries @0 :List(Entry);
struct Entry {
key @0 :Text;
value @1 :Text;
}
}

The above two issues are easy to solve, but the most serious problem is that the cython wrapper does not support custom namespace: cereal, and even if we added the namespace cereal to the generated cython files through hack, we still need to change all read function in python from sm['abc'].abc to sm['abc'].getXXXX. this is very unreasonable. In addition, the cython wrapper still return the pointer data member through dynamicstruct, I'm wondering how much the performance will improve.
the parsing part of pycapcp should be almost as fast as c++. the biggest problem is the way it read data. currently I prefer to see how much performance we can improve by optimizing the submaster rather than hacking the cython wrapper.

closed. moved to cereal with a better cache class https://github.com/commaai/openpilot/pull/23454


feat: Add a Release Checks Template

Restructures the python pipeline to do the following:

Always build the artifacts to be published (and if docker is included, build the image as well)
Reduce the number of times a "condition" must be set on an individual step. This has increased the number of files as a result, but I think makes it easier to follow what is going on.

See execution here: https://dev.azure.com/tomtomweb/GitHub-TomTom-International/_build/results?buildId=2832

Closing due to inactivity


mock.calls[][] holds reference instead of actual value when function called twice with object

Consider the following test:
jest.dontMock('../unmocked');

describe('foo', function(){
  var unmocked = require('../unmocked');
  var mocked = require('../mocked');

  it('bar', function(){
    unmocked.func();
    var firstCall = mocked.func.mock.calls[0][0];
    var secondCall = mocked.func.mock.calls[1][0];

    expect(firstCall).toEqual({ content: 'first' });
    expect(secondCall).toEqual({ content: 'second' });

  });

});

With some arbitrary function being mocked in the test:
module.exports.func = function() {};

And a function which will be tested:
var mocked = require('./mocked');

module.exports.func = function() {
  var obj = { content: 'first' };
  mocked.func(obj);
  obj.content = 'second';
  mocked.func(obj);
};

The tested function calls the mocked function with an object, mutates the object and calls the mocked function a second time.
mocked.func.mock.calls[0][0] and mocked.func.mock.calls[1][0] will now hold the same reference to obj and the above test fails.
I'm not sure if that's intended.
If it's not, shouldn't jest make a deep copy of the argument if it's an object?
I'm using facebook/jest#0.5.x.

This is because you are only doing the require once.
Move your requires into a beforeEach

That does not solve the problem because I want to test if the function has been called with an object and then with the same object mutated in the same test. So the beforeEach will run only once.
jest.dontMock('../unmocked');

describe('getSearchResults', function(){
  var unmocked;
  var mocked;

  beforeEach(function() {
  unmocked = require('../unmocked');
  mocked = require('../mocked');
  });

  it('mock.calls should deep copy objects', function(){
    unmocked.func();
    var firstCall = mocked.func.mock.calls[0][0];
    var secondCall = mocked.func.mock.calls[1][0];

    expect(firstCall).toEqual({ content: 'first' });
    expect(secondCall).toEqual({ content: 'second' });

  });

});

@sbugert apologies misunderstood, I believe you just stumbled upon issue #429 or something similar.

Cloning here would be too expensive for performance. I understand this is an issue but the side-effect in your function is probably not something you'd want in your application anyway, I'll assume? While I do not know what your application is doing, shallow copying the object in your function Object.assign({}, obj) is probably reasonable.

I've just stumbled onto this as being an issue, using v21.2.1
Does anyone have a fix or a work around?
I feel like a mocked function should deep copy the parameters passed in.

Stumbled upon the same thing here. Any chance this gets revisited / reopened? Right now our production code is doing unnecessary copies, just so the test framework works as expected.

Cloning here would be too expensive for performance. I understand this is an issue but the side-effect in your function is probably not something you'd want in your application anyway, I'll assume? While I do not know what your application is doing, shallow copying the object in your function Object.assign({}, obj) is probably reasonable.

@cpojer - Why would cloning be too expensive? Can't there be some kind of reasonable setting that only does it if we are asking about multiple calls?
As to your second question about why someone would do this without copying the object. I use typeorm and I have my code running in a loop to update a user's status from somewhere else -- this is from a 3rd party so I keep asking the 3rd party system what user's status is and save the result in my own db for caching purposes.
The code more or less looks like this:
async updateUserStatus(user) {
  const maxTries = 5;
  let tryNum = 1;

  while (tryNum <= maxTries) {
    await sleep(sleepTimeout);
    const resp = await client.getStatus(user.id);
    user.status = resp.status;

    await this.userRespository.save(user);

    if (user.status === 'success') {
      return Promise.resolve();
    }
  }
  this.log.info('Failed to get user\'s status in a sucess state');
}

I ran into this and spent some time trying to debug the situation.
I haven't used sinon in a long time but I believe they got this behavior correct. There is definitely a balance between performance and doing what the user intended. Right now, checking multiple mock calls in jest seems confusing.
I totally get the perf issues but surely there's a reasonable middle ground.

I wonder if it makes sense to add the ability to opt in to cloning

I want to add my vote for an option to clone between calls.
In my case I am calling the S3 client to retrieve a list of files. S3 returns a maximum of 1000 files so it is called in a loop with the same requests parameters except for the continuation token. There is currently no way to test the continuation token is correctly copied from the result of the previous call to the next.

I like my own idea above, and would love to see a PR.
jest.fn().cloneArgumentsAndReturnValues() is a way too long name, but you get the idea 🙂
Code lives here: https://github.com/facebook/jest/blob/master/packages/jest-mock/src/index.js

@SimenB we recently encountered the same problem. I think instead of cloning the object in my source code, I'd prefer to waste some extra memory in the test runner.
So having some methods like startArgumentRecording, stopArgumentRecording to opt-in argument recording sounds good to me. (names are not that good but to give you an idea)
One can even call jest.startArgumentRecording() in test setup file if they want to record everything...
So, @cpojer would you consider to add this functionality. Or is there already a solution for that?

I stumpled across this as well today and nearly lost my mind, before I found out it really is an issue on jest itself.
I do understand the argument about performance, even though it is a clear side-effect caused by jest and not a real solution to add unnecessary Object.assigns to production code for tests.
The idea of @SimenB sounds like a solution which could fulfill performance requirements where object copies are not required.


Update view Timestamp logic to fix setAmendmentState problem

Resolve #4303
Remove a strange distinct until changed timestamp logic which leads to failures in the issue.
I don't know, what the reason for this logic is, I think performance problems. So a whole test of the motion detail component is needed.

I worked on fixing the update-timestamp at update, used the changedModels method for it. Test works.

@luisa-beerboom  Please look at the my new solution.

@Elblinator showed me the problem on his computer. I build a small change, comparing the state_ids in the distinctUntil part.


Customizable source path resolution

One of my main use cases for Luau as a tool is in linting Rojo projects.
Having some method of source resolution that allows compatibility with varying project structures in .luaurc or as a command line argument would be really useful, and I can't really use luau-analyze without some custom resolution for require paths.
A possible way to do this would be adding a callback to .luaurc, which should be a luau function that takes in the expression being required, and returns a string file path.
Alternatively, some way to inject game, workspace, and script as environment variables that specifically link to a source file (perhaps requiring a table that has a __tostring metamethod should require the path at that returned string?) would be helpful.

Yeah both of these are on our list of future work:

To make it possible to work with Roblox API surface, we need to add support for type definition files you can pass to luau-analyze or specify as part of .luaurc.
To make it possible to resolve require we need a way to talk about require paths that is compatible between Roblox Studio and standalone Luau tools. We plan to add support for require based on string for that

Both of these are on our roadmap for next year.

Require by string RFC: https://rfcs.luau-lang.org/new-require-by-string-semantics.html
Some future work on require semantics with aliases is also tracked here https://github.com/luau-lang/rfcs/pull/7


tap.error does not use custom inspect

Hello!
Not sure if this is intended or it is a bug.
When I use the .error assertion, in the error log I see the entire object even if I'm using a custom inspect function.
Following the code to reproduce the behavior.
'use strict'

const tap = require('tap')
const { inspect } = require('util')

class Box extends Error {
  constructor () {
    super()
    this.hello = 'world'
    this.winter = 'is coming'
    this.foo = 'bar'
  }

  [inspect.custom] () {
    return {
      hello: this.hello,
      winter: this.winter
    }
  }
}

const box = new Box()
console.log(box)
tap.error(box)

The log:
{ hello: 'world', winter: 'is coming' }
TAP version 13
not ok 1 - (unnamed test)
  ---
  found:
    name: Error
    stack: |-
      Error
          at ...
    hello: world
    winter: is coming
    foo: bar
  at:
    line: 25
    column: 5
    file: prova.js
  stack: |
    ...
  source: |
    tap.error(box)
  ...

1..1
# failed 1 test
# time=9.223ms

Is this intended? If so, how can I hide certain properties?
Thanks!

Interesting.  Yes, tap does not use util.inspect or the util.inspect.custom symbol.
In version 13, it's using a custom type in tap-yaml, so it's theoretically possible to do that.  (In version 12 and before, it'd be very challenging.)  My concern would be that the output might hide things that you'd want to see in the results, though.
In both v13 and before, I believe you could hide things by making the properties non-enumerable, but of course this is a bit of a pain.
class Box extends Error {
  constructor () {
    super()
    this.hello = 'world'
    this.winter = 'is coming'
    Object.defineProperty(this, 'foo', { value: 'bar', enumerable: false })
  }
}

Note that, since message and stack are so important (and typically non-enumerable anyway) tap-yaml always shows them, so those would be there regardless.

Also, this applies to any time that an error appears in the yaml diagnostics.  So for example, all of these would show the same type of thing:
throw box
t.equal(box, { not: 'the box' })
t.pass('this is fine', { diagnostic: true, box })

I tried making the property non-enumerable, but it didn't work.
'use strict'

const tap = require('tap')

class Box extends Error {
  constructor () {
    super()
    this.hello = 'world'
    this.winter = 'is coming'
    Object.defineProperty(this, 'foo', { value: 'bar', enumerable: false })
  }
}

const box = new Box()
console.log(box)
tap.error(box)

This is the log:
{ Error
    ...
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3) hello: 'world', winter: 'is coming' }
TAP version 13
not ok 1 - (unnamed test)
  ---
  found:
    name: Error
    stack: |-
      Error
          ...
    hello: world
    winter: is coming
    foo: bar
  at:
    line: 25
    column: 5
    file: test.js
  stack: |
    Object.<anonymous> (test.js:25:5)
  source: |
    tap.error(box)
  ...

1..1
# failed 1 test
# time=9.729ms

My concern would be that the output might hide things that you'd want to see in the results, though.

I agree, but in the same way, some properties might pollute the output making it very hard to read.
In my case, I'm adding to the error instance a big metadata object, which also contains an agent keep alive instance.
I want the user to be able to inspect the agent via err.meta.agent, but if the user logs err I don't want them to have a very long and unreadable log.

Making it non-enumerable works in v13, not in v12 and before.  New YAML parser.
$ node b.js
{ Error
    at Object.<anonymous> (/Users/isaacs/dev/js/tap/b.js:12:13)
    at Module._compile (internal/modules/cjs/loader.js:799:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:810:10)
    at Module.load (internal/modules/cjs/loader.js:666:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:606:12)
    at Function.Module._load (internal/modules/cjs/loader.js:598:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:862:12)
    at internal/main/run_main_module.js:21:11 hello: 'world', winter: 'is coming' }
TAP version 13
not ok 1 - (unnamed test)
  ---
  found:
    !error
    name: Error
    message: ""
    stack: |-
      Error
          at Object.<anonymous> (/Users/isaacs/dev/js/tap/b.js:12:13)
          at Module._compile (internal/modules/cjs/loader.js:799:30)
          at Object.Module._extensions..js (internal/modules/cjs/loader.js:810:10)
          at Module.load (internal/modules/cjs/loader.js:666:32)
          at tryModuleLoad (internal/modules/cjs/loader.js:606:12)
          at Function.Module._load (internal/modules/cjs/loader.js:598:3)
          at Function.Module.runMain (internal/modules/cjs/loader.js:862:12)
          at internal/main/run_main_module.js:21:11
    hello: world
    winter: is coming
  at:
    line: 14
    column: 5
    file: b.js
  stack: |
    Object.<anonymous> (b.js:14:5)
  source: |
    console.log(box)
    tap.error(box)
    ----^
  ...

1..1
# failed 1 test
# time=22.355ms

Ok, latest v13 includes this, v13.0.0-rc.12.  You can npm install tap@next to get it, but be aware it's very much beta right now.  If you use snapshots, you'll have to regenerate them, the reporter is all different, dropped support for Node v6 and before, etc.  I like it better already, but you may find rough edges, and feedback is welcome.
It still will always print name, message, and stack, since those are pretty essential to its error-ness.  But anything else will respect the inspect results.

Oh, also, there's a changelog at https://github.com/tapjs/node-tap/blob/v13/docs/changelog/index.md if you want to see what else changed.

Thanks!!
Unfortunately, I need to support Node v6 for a while in the main projects which I'm working on (elasticsearch-js, fastify and find-my-way), but I will try v13 as soon as I have the occasion.
Thank you for all your great work!


Younes blackfly calibration

should i be trying to merge this branch into ros2 branch or ci-dev branch? maybe we should get the ros2 branch to a place where it compiles and then i branch off that instead of ci-dev?

should i be trying to merge this branch into ros2 branch or ci-dev branch? maybe we should get the ros2 branch to a place where it compiles and then i branch off that instead of ci-dev? @wmmc88 @niiquaye

So ci dev is slated to merge into the ros2 branch. There were some more things in the cidev branch to fix but I i havent done it yet. I'll look into merging cidev as is or close to as is tomorrow then u can target ros2

should i be trying to merge this branch into ros2 branch or ci-dev branch? maybe we should get the ros2 branch to a place where it compiles and then i branch off that instead of ci-dev? @wmmc88 @niiquaye

So ci dev is slated to merge into the ros2 branch. There were some more things in the cidev branch to fix but I i havent done it yet. I'll look into merging cidev as is or close to as is tomorrow then u can target ros2

btw i got the greenlight from orson to target ci-dev

retarget to ros2 branch


feature：logging config loaded source

for :#63

Codecov Report
Patch coverage: 100.00% and project coverage change: +0.79 :tada:

Comparison is base (56ba90a) 94.77% compared to head (686f939) 95.56%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##             main      #68      +/-   ##
==========================================
+ Coverage   94.77%   95.56%   +0.79%
==========================================
  Files           5        5
  Lines         306      316      +10
  Branches       70       70
==========================================
+ Hits          290      302      +12
+ Misses         13       12       -1
+ Partials        3        2       -1

Impacted Files
Coverage Δ

pydantic_settings/main.py
100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

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

I don't know how to fix the lint to pass the first test, I haven't changed much in the code, so can't figure out how to solve this problem with the ci process

Close as per comment here


Start review of tuto

Hello hello @PaulineSGN ! I am putting some descirption in my commits so that you can see why I suggest that ;)

Give your pull request a good title

e.g. "Fix typo in ansible-galaxy tutorial" or "Add new transcriptomics tutorial covering a new sequencing technology"

Describe your changes in detail, list anything you still need some help with or things that are still TODO
Check that your images are allowed to be re-hosted by the GTN!
Still working on it? Make it a Draft pull request

Once it is ready, choose Ready for Review
Then the automated tests will run and we will know to review and merge it

For the last commit with the links there:
`>    https://zenodo.org/record/5932108/files/wolf_tutorial.zip

https://data.indores.fr/api/access/datafile/9777 : "ceamarc_env.tab"

https://data.indores.fr/api/access/datafile/9756 : "pivot_wider_jupytool_notebook.ipynb"
`

I would advise to clearly put the links in one box and put the name they should have outside of this box  ?

For the unzipping part of your data I have 1 suggestion. I understand that here you wrote this tuto as real life for when people really do have a zip folder.
I would allow the user to choose between following the tuto if he wants to do it with the zip folder or if he just want to directly get the occurence file with a zenodo link or something like that
Am I making any sense ?

Moreover for a 2nd version of this tuto I would create a workflow with the "non interesting" data formating part so that the user can directly start the tuto with running this workflow and then directly go to awsome ecoregionalization part ;)

> 5. Unhide the "occurence" data file then modify datatype to select the "tabular" one
Explain how to unhide maybe add a tip box => For example me when I unhidde I unhide the entire collection so I'd like to know how to only unhidde occurence

For the nex part on Advanced cut
The tool does not detect occurence in my history. I need to drag and drop it ...
probably because I don't unhide well

Now for The Replace blank space with NAs with Column Regex Find And Replace:
I think that in the data column name there can be a space so with all the tools finding the space and replacing it with NAs I find my self with weird columns names such as "individualCountNA" and same for all col names I get NA at the end ...
Maybe I did something wrong but I would say that I might not be the only one so maybe put a warning or need to explain more clearly how to do that to avoid mistakes

Add some screenshots allong the way like 2 or 3 to show how the data should look like when you arrive at jupytool part

In the jupytool part explain how to launch the notebook (a tip box can be sufficient I think)

Here for me the jupytool never worked because of the NAs in the columns name ...

And that is all for me !! Really enjoyed the ecoregionalization so easy to follow and interesting (that's also why) I don't have that much comments on this part !!

Hello @Marie59 ! Thanks you so much !  I’ll update the training as soon as possible.
Thanks again for your help !


Link to estimote-sdk.aar is broken

I would like to download the estimote aar file, but the link in the readme is broken

Hi,
I'm not sure which link you are referring to. So, I'll try to clarify things a little bit :)
Our SDK is distributed by the JCenter repository. Thats why you have to ensure you have such repo configured in your project. Usually, it's done by the following lines in top-level build.gradle of your project:
allprojects {
    repositories {
        jcenter()
        (all other repositories you are using goes here)
    }
}

Once you have JCenter configured, add this line to your build.gradle file:
dependencies {
  compile 'com.estimote:sdk:1.0.12'
}

Hope this address your confusions  :)
Regards
Wojtek

Sorry, I suppose I should have been more clear.
In the manual installation instructions:
https://github.com/Estimote/Android-SDK/blob/master/Docs/manual_installation.md
It says to download estimote-sdk.aar, but the link is broken. I would like to download the aar to include in an Appcelerator project I am working on.
Thanks.

Hi,
Got it. the manual_installation instruction you are referring to is definitely out-of-date and should be fixed.
Latest version of the Estimote SDK for Android can be downloaded from this link:
https://jcenter.bintray.com/com/estimote/sdk/1.0.12/sdk-1.0.12.aar
You can refer to the enclosing folders structure to get the bigger picture of the stuff we are delivering: https://jcenter.bintray.com/com/estimote/
Please note that the official project structure we are supporting is the regular Java/Kotlin gradle/maven-based setup.
One important thing you have to keep in mind when you are not using gradle/maven is that the libraries we are delivering are NOT "fat-jars" anymore.
In other words - All internal or third-party libraries our SDK depends on is not directly included "inside" our SDK library file. All stuff our SDK depends on is simply listed out as a maven/gradle dependency.
I'm not familiar with Appcelerator build tooling and how it handles libraries with external dependencies (which is super-common case in java world :) ). However - if you simply add just indoorsdk-1.0.0.aar to your build and you end up with nasty "class def not found" exception, then you'll have to add all libraries we are depending on manually.
Regards
Wojtek

That's great, thanks! I'm actually experimenting at the moment to work out problems with the build process before attempting to use this in a real project.


Remove confusing test logs in cel tests

These log as "expected x but got y", but pass, which is very confusing.
This leads people to believe the test failed, even though it passed.
I have heard 4 different people think these tests failed when they passed
[x] Policies and Telemetry

@howardjohn: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-mixer-k8s-tests_istio
d8db1862f885dad79f3f22c63f6fe4a19a6c4ce7
link
/test integ-mixer-k8s-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

integ-mixer-k8s-tests_istio
d8db1862f885dad79f3f22c63f6fe4a19a6c4ce7
link
/test integ-mixer-k8s-tests_istio

lintmodern_istio
d8db1862f885dad79f3f22c63f6fe4a19a6c4ce7
link
/test lintmodern

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

/retest


Merge v0.25.1

The following fixes are pulled in:

Replace the section-index plugin with navigation.indexes
Fix consumer power formula
Add test for consumer power formula

Enabled auto-merge.


KafkaTopicProvisioner Retry Mechanism Improvement For Consumer

Use a retry template for topic description method call through admin client when provisioning consumer destinations. We are retrying because in the event this operation gets failed, it is retried with the default retry settings in the provisioner.
Resolves https://github.com/spring-cloud/spring-cloud-stream/issues/2520

Looks good. I had to make some checkstyle and test fixes. Squashed the commits and merged upstream to main. Backported to 3.2.x.


docs: Fix async sessions, Pydantic V2

Pull Request Checklist

[ ] New code has 100% test coverage
[ ] (If applicable) The prose documentation has been updated to reflect the changes introduced by this PR
[ ] (If applicable) The reference documentation has been updated to reflect the changes introduced by this PR

Description

Fixed documentation examples under /contrib/sqlalchemy

Added expire_on_commit=False to prevent errors from mixing sync and async context

Updated Pydantic usage for V2

Close Issue(s)
No issues on GitHub but two threads on Discord

@all-contributors add @geeshta docs


Can it be used on Android? Or are there plans for Android compatibility?

Hi. So far we haven't dealt with the operability of kandy on Android. Added issue #289, all related updates will be in it.

Hi! I added simple Kandy android app with Lets-Plot Skiko frontend:
https://github.com/AndreiKingsley/kandy_android_skiko
However it's experimental and can be unstable.


Starting GRPC server 16685 connection refused

What happened?
This is similar to https://github.com/jaegertracing/jaeger/issues/3852 but for the jaeger operator.
Install using the operator and you get the error:
transport: Error while dialing: dial tcp :16685: connect: connection refused

Steps to reproduce
Install jaeger operator:
helm install jaeger-operator jaegertracing/jaeger-operator -n observability -f jaeger.yaml

Where jaegery.yaml is:
jaeger:
  create: true
  namespace: observability
  spec:
    strategy: allInOne
    ingress:
      enabled: true
      secretName: <redacted>
      hosts:
        - <redacted>

Will create a jaeger operator pod and jaeger pod (jaeger-operator-jaeger-7d75c59dbc-249c5).
Expected behavior
For port 16685 to work.
Note that port 16685 is not exposed by the container. Looks like that is set here:
https://github.com/jaegertracing/jaeger-operator/blob/723105ff90f5dbe2d49258adfbcce9a217f7399c/pkg/deployment/all_in_one.go#L156
Not sure that fixes the issue or not though.
Also note I am testing this on minikube, although hopefully that should make no difference.
Relevant log output
Logs from jaeger-operator-jaeger-7d75c59dbc-249c5:
2023/06/15 03:03:42 maxprocs: Leaving GOMAXPROCS=8: CPU quota undefined
{"level":"info","ts":1686798222.5290956,"caller":"flags/service.go:119","msg":"Mounting metrics handler on admin server","route":"/metrics"}
{"level":"info","ts":1686798222.529127,"caller":"flags/service.go:125","msg":"Mounting expvar handler on admin server","route":"/debug/vars"}
{"level":"info","ts":1686798222.5292172,"caller":"flags/admin.go:129","msg":"Mounting health check on admin server","route":"/"}
{"level":"info","ts":1686798222.5292404,"caller":"flags/admin.go:143","msg":"Starting admin HTTP server","http-addr":":14269"}
{"level":"info","ts":1686798222.5292473,"caller":"flags/admin.go:121","msg":"Admin server started","http.host-port":"[::]:14269","health-status":"unavailable"}
{"level":"info","ts":1686798222.530166,"caller":"memory/factory.go:66","msg":"Memory storage initialized","configuration":{"MaxTraces":0}}
{"level":"info","ts":1686798222.5304503,"caller":"static/strategy_store.go:138","msg":"Loading sampling strategies","filename":"/etc/jaeger/sampling/sampling.json"}
{"level":"info","ts":1686798222.5437305,"caller":"grpc@v1.54.0/server.go:632","msg":"[core][Server #1] Server created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5438118,"caller":"server/grpc.go:104","msg":"Starting jaeger-collector gRPC server","grpc.host-port":"[::]:14250"}
{"level":"info","ts":1686798222.543826,"caller":"server/http.go:56","msg":"Starting jaeger-collector HTTP server","http host-port":":14268"}
{"level":"info","ts":1686798222.5438533,"caller":"grpc@v1.54.0/server.go:820","msg":"[core][Server #1 ListenSocket #2] ListenSocket created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5439267,"caller":"server/zipkin.go:57","msg":"Listening for Zipkin HTTP traffic","zipkin host-port":":9411"}
{"level":"warn","ts":1686798222.5533488,"caller":"internal/warning.go:51","msg":"Using the <IP_ADDRESS> address exposes this server to every network interface, which may facilitate Denial of Service attacks","documentation":"https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks"}
{"level":"info","ts":1686798222.5533893,"caller":"grpc@v1.54.0/server.go:632","msg":"[core][Server #3] Server created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5533977,"caller":"otlpreceiver@v0.76.1/otlp.go:94","msg":"Starting GRPC server","endpoint":"<IP_ADDRESS>:4317"}
{"level":"warn","ts":1686798222.5534341,"caller":"internal/warning.go:51","msg":"Using the <IP_ADDRESS> address exposes this server to every network interface, which may facilitate Denial of Service attacks","documentation":"https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md#safeguards-against-denial-of-service-attacks"}
{"level":"info","ts":1686798222.5534477,"caller":"otlpreceiver@v0.76.1/otlp.go:112","msg":"Starting HTTP server","endpoint":"<IP_ADDRESS>:4318"}
{"level":"info","ts":1686798222.5534656,"caller":"grpc@v1.54.0/server.go:820","msg":"[core][Server #3 ListenSocket #4] ListenSocket created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5534742,"caller":"grpc/builder.go:73","msg":"Agent requested insecure grpc connection to collector(s)"}
{"level":"info","ts":1686798222.553493,"caller":"grpc@v1.54.0/clientconn.go:105","msg":"[core][Channel #5] Channel created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5535097,"caller":"grpc@v1.54.0/clientconn.go:1569","msg":"[core][Channel #5] original dial target is: \":14250\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5535252,"caller":"grpc@v1.54.0/clientconn.go:1574","msg":"[core][Channel #5] dial target \":14250\" parse failed: parse \":14250\": missing protocol scheme","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5535316,"caller":"grpc@v1.54.0/clientconn.go:1589","msg":"[core][Channel #5] fallback to scheme \"passthrough\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5535557,"caller":"grpc@v1.54.0/clientconn.go:1597","msg":"[core][Channel #5] parsed dial target is: {Scheme:passthrough Authority: URL:{Scheme:passthrough Opaque: User: Host: Path:/:14250 RawPath: OmitHost:false ForceQuery:false RawQuery: Fragment: RawFragment:}}","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5535626,"caller":"grpc@v1.54.0/clientconn.go:273","msg":"[core][Channel #5] Channel authority set to \"166:14250\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5536456,"caller":"grpc@v1.54.0/resolver_conn_wrapper.go:175","msg":"[core][Channel #5] Resolver state updated: {\n  \"Addresses\": [\n    {\n      \"Addr\": \":14250\",\n      \"ServerName\": \"\",\n      \"Attributes\": null,\n      \"BalancerAttributes\": null,\n      \"Type\": 0,\n      \"Metadata\": null\n    }\n  ],\n  \"ServiceConfig\": null,\n  \"Attributes\": null\n} (resolver returned new addresses)","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.553675,"caller":"grpc@v1.54.0/balancer_conn_wrappers.go:274","msg":"[core][Channel #5] Channel switches to new LB policy \"round_robin\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.553698,"caller":"grpc@v1.54.0/balancer_conn_wrappers.go:306","msg":"[core][Channel #5 SubChannel #6] Subchannel created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5537117,"caller":"base/balancer.go:177","msg":"[roundrobin]roundrobinPicker: Build called with info: {map[]}","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5537233,"caller":"grpc@v1.54.0/clientconn.go:428","msg":"[core][Channel #5] Channel Connectivity change to CONNECTING","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5537734,"caller":"grpc/builder.go:113","msg":"Checking connection to collector"}
{"level":"info","ts":1686798222.553777,"caller":"grpc@v1.54.0/clientconn.go:1117","msg":"[core][Channel #5 SubChannel #6] Subchannel Connectivity change to CONNECTING","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.553781,"caller":"grpc/builder.go:124","msg":"Agent collector connection state change","dialTarget":":14250","status":"CONNECTING"}
{"level":"info","ts":1686798222.553798,"caller":"grpc@v1.54.0/clientconn.go:1231","msg":"[core][Channel #5 SubChannel #6] Subchannel picks a new address \":14250\" to connect","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5543125,"caller":"grpc@v1.54.0/clientconn.go:1117","msg":"[core][Channel #5 SubChannel #6] Subchannel Connectivity change to READY","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5544164,"caller":"base/balancer.go:177","msg":"[roundrobin]roundrobinPicker: Build called with info: {map[0xc00028fbf0:{{\n  \"Addr\": \":14250\",\n  \"ServerName\": \"\",\n  \"Attributes\": null,\n  \"BalancerAttributes\": null,\n  \"Type\": 0,\n  \"Metadata\": null\n}}]}","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5544362,"caller":"grpc@v1.54.0/clientconn.go:428","msg":"[core][Channel #5] Channel Connectivity change to READY","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5544813,"caller":"./main.go:256","msg":"Starting agent"}
{"level":"info","ts":1686798222.5545537,"caller":"grpc/builder.go:124","msg":"Agent collector connection state change","dialTarget":":14250","status":"READY"}
{"level":"info","ts":1686798222.5545766,"caller":"querysvc/query_service.go:134","msg":"Archive storage not created","reason":"archive storage not supported"}
{"level":"info","ts":1686798222.5545824,"caller":"app/agent.go:69","msg":"Starting jaeger-agent HTTP server","http-port":5778}
{"level":"info","ts":1686798222.5545893,"caller":"app/flags.go:141","msg":"Archive storage not initialized"}
{"level":"info","ts":1686798222.5546787,"caller":"grpc@v1.54.0/server.go:632","msg":"[core][Server #9] Server created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554708,"caller":"grpc@v1.54.0/clientconn.go:105","msg":"[core][Channel #10] Channel created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547187,"caller":"grpc@v1.54.0/clientconn.go:1569","msg":"[core][Channel #10] original dial target is: \":16685\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547292,"caller":"grpc@v1.54.0/clientconn.go:1574","msg":"[core][Channel #10] dial target \":16685\" parse failed: parse \":16685\": missing protocol scheme","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547342,"caller":"grpc@v1.54.0/clientconn.go:1589","msg":"[core][Channel #10] fallback to scheme \"passthrough\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547466,"caller":"grpc@v1.54.0/clientconn.go:1597","msg":"[core][Channel #10] parsed dial target is: {Scheme:passthrough Authority: URL:{Scheme:passthrough Opaque: User: Host: Path:/:16685 RawPath: OmitHost:false ForceQuery:false RawQuery: Fragment: RawFragment:}}","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547526,"caller":"grpc@v1.54.0/clientconn.go:273","msg":"[core][Channel #10] Channel authority set to \"localhost:16685\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547757,"caller":"grpc@v1.54.0/resolver_conn_wrapper.go:175","msg":"[core][Channel #10] Resolver state updated: {\n  \"Addresses\": [\n    {\n      \"Addr\": \":16685\",\n      \"ServerName\": \"\",\n      \"Attributes\": null,\n      \"BalancerAttributes\": null,\n      \"Type\": 0,\n      \"Metadata\": null\n    }\n  ],\n  \"ServiceConfig\": null,\n  \"Attributes\": null\n} (resolver returned new addresses)","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5547972,"caller":"grpc@v1.54.0/balancer_conn_wrappers.go:274","msg":"[core][Channel #10] Channel switches to new LB policy \"pick_first\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554808,"caller":"grpc@v1.54.0/balancer_conn_wrappers.go:306","msg":"[core][Channel #10 SubChannel #11] Subchannel created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554821,"caller":"grpc@v1.54.0/clientconn.go:428","msg":"[core][Channel #10] Channel Connectivity change to CONNECTING","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554839,"caller":"grpc@v1.54.0/clientconn.go:1117","msg":"[core][Channel #10 SubChannel #11] Subchannel Connectivity change to CONNECTING","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554851,"caller":"grpc@v1.54.0/clientconn.go:1231","msg":"[core][Channel #10 SubChannel #11] Subchannel picks a new address \":16685\" to connect","system":"grpc","grpc_log":true}
{"level":"warn","ts":1686798222.5549424,"caller":"grpc@v1.54.0/clientconn.go:1292","msg":"[core][Channel #10 SubChannel #11] grpc: addrConn.createTransport failed to connect to {\n  \"Addr\": \":16685\",\n  \"ServerName\": \"localhost:16685\",\n  \"Attributes\": null,\n  \"BalancerAttributes\": null,\n  \"Type\": 0,\n  \"Metadata\": null\n}. Err: connection error: desc = \"transport: Error while dialing: dial tcp :16685: connect: connection refused\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5549562,"caller":"grpc@v1.54.0/clientconn.go:1119","msg":"[core][Channel #10 SubChannel #11] Subchannel Connectivity change to TRANSIENT_FAILURE, last error: connection error: desc = \"transport: Error while dialing: dial tcp :16685: connect: connection refused\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.554966,"caller":"grpc@v1.54.0/clientconn.go:428","msg":"[core][Channel #10] Channel Connectivity change to TRANSIENT_FAILURE","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5550945,"caller":"app/server.go:215","msg":"Query server started","http_addr":"[::]:16686","grpc_addr":"[::]:16685"}
{"level":"info","ts":1686798222.5551047,"caller":"healthcheck/handler.go:129","msg":"Health Check state change","status":"ready"}
{"level":"info","ts":1686798222.5551147,"caller":"app/server.go:298","msg":"Starting GRPC server","port":16685,"addr":":16685"}
{"level":"info","ts":1686798222.5551238,"caller":"grpc@v1.54.0/server.go:820","msg":"[core][Server #9 ListenSocket #12] ListenSocket created","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798222.5551424,"caller":"app/server.go:279","msg":"Starting HTTP server","port":16686,"addr":":16686"}
{"level":"info","ts":1686798223.5551968,"caller":"grpc@v1.54.0/clientconn.go:1119","msg":"[core][Channel #10 SubChannel #11] Subchannel Connectivity change to IDLE, last error: connection error: desc = \"transport: Error while dialing: dial tcp :16685: connect: connection refused\"","system":"grpc","grpc_log":true}
{"level":"info","ts":1686798223.5552473,"caller":"grpc@v1.54.0/clientconn.go:428","msg":"[core][Channel #10] Channel Connectivity change to IDLE","system":"grpc","grpc_log":true}

Screenshot
None
Additional context
Installed on minikube
Jaeger backend version
1.45.0
SDK
Jaeger operator helm chart
Pipeline
No response
Stogage backend
Memory
Operating system
Fedora 38
Deployment model
Helm
Deployment configs
See above

Duplicated from #204.


Hacker News not working

I can't seem to get YC or YC news to work, even though the former is in urls and the latter is on the frontpage readme. Thank you for this amazing open source project!
from newscatcher import Newscatcher
from newscatcher import urls
url = 'news.ycombinator.com'
url2 = 'ycombinator.com'
eng_lnx = urls(language='en')
nc = Newscatcher(website=url)
try:
    print("looking for " + url + "...")
    nc.get_news()
except Exception as e:
    print(repr(e))
describe_url(url)
print(url + ' in urls: ' + str(url in eng_lnx))
print(url2 + ' in urls: ' + str(url2 in eng_lnx))
nc2 = Newscatcher(website='ycombinator.com')
try:
    print("looking for " + url2 + "...")
    nc2.get_news()
except Exception as e:
    print(repr(e))

It got removed, sorry.
We will add it to the next update


Allow excluding build assets by specifying globs in a config file

Background:  We have a project that imports a lot of JPGs and fonts.  These bundles were cluttering up the report and making it next to useless for analyzing our bundled JavaScript.
By specifying which assets to exclude from the report, it makes it easier to concentrate on what's important to your team.
Example:
Contents of .bundlevisualizer.rc
{
  "exclude": [
    "**/*.gif",
    "**/*.jpg",
    "**/*.{eot,ttf,woff,woff2}"
  ]
}

The config file could be expanded in the future with additional switches and settings.  For instance, it might be helpful to filter child bundles too.

I would very much like to see this feature.  Is there anything I can do to make it happen?  I could just use this fork but I would like to stay current with other updates too.


undefined method `[]' for nil:NilClass

Hi,
I have two messages in my inbox, which imap-backup fails to backup, with the message stated in the title. This migt be related to #40, but in my case those are regular messages, not invites.
Also, none of the invites in my Calendar folder are synced, but there is no error message. The gem just dies with exit code 1.

Thanks for the log dump.
I'm unable to see why those messages are causing problems.
In the meantime, I've released version 1.2.2 with (#48) and better handling of failed server responses.
Could you check if you get a more informative log from that?

Hi, I have updated to 1.2.2 and updated the gist. Hopefully the traceback will help you to pinpoint what is the problem...

@dolik-rce The Gist is still the original (21/1/2018 with version 1.2.1). Could you post a link to the updated Gist?

My apologies, I totally forgot about that. I have updated to the 1.2.2 from gem and updated the original gist.

@dolik-rce I'm still seeing the original log here: https://pastebin.com/raw/UNH7SVkS
Have you creted a new pastebin?

No, I have updated the secret gist. Also, I sent the url to your email again just a minute ago, just to make sure.

Yes, 1.3.0 works without errors. Thank you for the fix!


add true_sequential for WOQ GPTQ

Type of Change
follows INC PR: https://github.com/intel/neural-compressor/pull/1656
Description
detail description
JIRA ticket: xxx
Expected Behavior & Potential Risk
the expected behavior that triggered by this PR
How has this PR been tested?
how to reproduce the test (including hardware information)
Dependency Change?
any library dependency introduced or removed

@VincyZhang,  the failed CI doesn’t seem to be caused by PR, Would you help check it?

@VincyZhang, the failed CI doesn’t seem to be caused by PR, Would you help check it?

failure is not related with this PR, can be merged fisrt.


Catalog Service

Solves issue - #6
Screenshots:

Updates:

Created catalog CRUD API at apps/server
Created UI for catalog & Setup Ant Design on the Admin App at apps/admin

IN PROGRESS


Missing polygon transfer [LiFi]

https://polygonscan.com/tx/0x8735122bb46cd43e229f7b4b85d9a8dd073dcc12e590a7d8cf4386f9eb5c6954
Polygon Transaction Hash (Txhash) Details | PolygonScan
Polygon (MATIC) detailed transaction info for txhash 0x8735122bb46cd43e229f7b4b85d9a8dd073dcc12e590a7d8cf4386f9eb5c6954. The transaction status, block confirmation, gas fee, MATIC, and token transfer are shown.
We have another issue with a transfer using NXTP, it does not appear in the explorer and is not executed for 17 Hours, can you please look into that as well:
https://polygonscan.com/tx/0x8735122bb46cd43e229f7b4b85d9a8dd073dcc12e590a7d8cf4386f9eb5c6954

I think it was not showing anything because of subgraph sync issue.