fix pblog shutdown

@hamilton8415 try this with osrf/mbari_wec_gz#150

Tried mbari_wec_utils 52 with mbari_wec_gz 150 and sim_pblog still crashes
[mbari_wec_batch-1] [ERROR] [sim_pblog-4]: process has died [pid 49061, exit code 1, cmd '/home/developer/mbari_wec_ws/install/sim_pblog/lib/sim_pblog/sim_pblog --loghome batch_results_20230607142034 --logdir results_run_0_20230607142034/pblog --ros-args -r __node:=sim_pblog --params-file /home/developer/mbari_wec_ws/install/sim_pblog/share/sim_pblog/config/sim_pblog.yaml'].

Does it have anything to do with the transforms3d library? Batch run keeps complaining about that for sim_pblog and apt can't install it for humble E: Unable to locate package ros-humble-tf-transformations

apt can't install it for humble

the dependency is actually:
$ sudo apt install python3-transforms3d

That failed too, I could pip install it though but didn't help with the sim

pip3 install transforms3d worked but unable to locate packages ros-humble-tf-transformations and python3-transforms3d via apt install

Something must be wrong with your system config then. Both dependencies work locally for me and they work in CI:
https://github.com/osrf/mbari_wec_utils/actions/runs/5196548742/jobs/9370366471?pr=52#step:4:3114
https://github.com/osrf/mbari_wec_utils/actions/runs/5196548742/jobs/9370366471?pr=52#step:4:3153

I'm using a fresh mbari_wec docker container only

should compare the dockerfile with build-and-test.sh

Well CI has ros2-testing sources that the Dockerfile doesn't.
I purged my docker system and tried again, seems to have worked!

Alright, so trying the two PRs again, traceback from the console:
[mbari_wec_batch-1] Sim run [4] for 5.0 seconds: door state='closed', scale factor=0.5, battery state=0.25, mean piston position=0.5, IncidentWaveSpectrumType=Custom;f:0.0:0.03:0.06:0.09:0.3;Szz:0.0:0.4:1.0:1.0:0.0

sim_pblog starts up fine
[mbari_wec_batch-1] [sim_pblog-24] [INFO] [1686260528.245966978] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._xb_record.XBRecord'> on '/ahrs_data'

and subscribes to a bunch of other topics.
Creates and saves to a new log file for this run:
[mbari_wec_batch-1] [sim_pblog-24] [INFO] [1686260528.432363399] [sim_pblog]: New log directory: batch_results_20230608143951/results_run_4_20230608144207/pblog
[mbari_wec_batch-1] [sim_pblog-24] [INFO] [1686260529.691608714] [sim_pblog]: New log file: batch_results_20230608143951/results_run_4_20230608144207/pblog/2023.06.08T02.42.08.csv

But crashes while exit
[mbari_wec_batch-1] [INFO] [ruby $(which gz) sim-22]: process has finished cleanly [pid 6259]
[mbari_wec_batch-1] [INFO] [launch]: process[ruby $(which gz) sim-22] was required: shutting down launched system
[mbari_wec_batch-1] [INFO] [robot_state_publisher-25]: sending signal 'SIGINT' to process[robot_state_publisher-25]
[mbari_wec_batch-1] [INFO] [sim_pblog-24]: sending signal 'SIGINT' to process[sim_pblog-24]
[mbari_wec_batch-1] [INFO] [parameter_bridge-23]: sending signal 'SIGINT' to process[parameter_bridge-23]
[mbari_wec_batch-1] [INFO] [ros2-21]: sending signal 'SIGINT' to process[ros2-21]
[mbari_wec_batch-1] [robot_state_publisher-25] [INFO] [1686260551.470974661] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [sim_pblog-24] Traceback (most recent call last):
[mbari_wec_batch-1] [sim_pblog-24]   File "/home/developer/mbari_wec_ws/install/sim_pblog/lib/sim_pblog/sim_pblog", line 33, in <module>
[mbari_wec_batch-1] [sim_pblog-24]     sys.exit(load_entry_point('sim-pblog==0.0.0', 'console_scripts', 'sim_pblog')())
[mbari_wec_batch-1] [sim_pblog-24]   File "/home/developer/mbari_wec_ws/install/sim_pblog/lib/python3.10/site-packages/sim_pblog/sim_pblog.py", line 409, in main
[mbari_wec_batch-1] [sim_pblog-24]     rclpy.spin_once(pblog)
[mbari_wec_batch-1] [sim_pblog-24]   File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/__init__.py", line 202, in spin_once
[mbari_wec_batch-1] [sim_pblog-24]     executor.spin_once(timeout_sec=timeout_sec)
[mbari_wec_batch-1] [sim_pblog-24]   File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 705, in spin_once
[mbari_wec_batch-1] [sim_pblog-24]     handler, entity, node = self.wait_for_ready_callbacks(timeout_sec=timeout_sec)
[mbari_wec_batch-1] [sim_pblog-24]   File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 691, in wait_for_ready_callbacks
[mbari_wec_batch-1] [sim_pblog-24]     return next(self._cb_iter)
[mbari_wec_batch-1] [sim_pblog-24]   File "/opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/executors.py", line 588, in _wait_for_ready_callbacks
[mbari_wec_batch-1] [sim_pblog-24]     wait_set.wait(timeout_nsec)
[mbari_wec_batch-1] [sim_pblog-24] KeyboardInterrupt
[mbari_wec_batch-1] [parameter_bridge-23] [INFO] [1686260551.475744408] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [ros2-21] [INFO] [1686260551.484071878] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [INFO] [parameter_bridge-23]: process has finished cleanly [pid 6261]
[mbari_wec_batch-1] [ros2-21] [INFO] [1686260551.568233763] [rosbag2_recorder]: Event publisher thread: Exiting
[mbari_wec_batch-1] [ros2-21] [INFO] [1686260551.568502791] [rosbag2_cpp]: Writing remaining messages from cache to the bag. It may take a while
[mbari_wec_batch-1] [INFO] [robot_state_publisher-25]: process has finished cleanly [pid 6266]
[mbari_wec_batch-1] [INFO] [ros2-21]: process has finished cleanly [pid 6257]
[mbari_wec_batch-1] [ERROR] [sim_pblog-24]: process has died [pid 6264, exit code -2, cmd '/home/developer/mbari_wec_ws/install/sim_pblog/lib/sim_pblog/sim_pblog --loghome batch_results_20230608143951 --logdir results_run_4_20230608144207/pblog --ros-args -r __node:=sim_pblog --params-file /home/developer/mbari_wec_ws/install/sim_pblog/share/sim_pblog/config/sim_pblog.yaml'].

I wouldn't say it crashed, It just got a SIGINT (KeyboardInterrupt) from your control-c. That's perfectly fine behavior for python imho. What I was trying to fix is when the SIGINT didn't work and the launch system had to switch to SIGTERM/SIGKILL. This no longer happens for sim_pblog, but it can still happen from time to time with ruby $(which gz) sim and I've added code in my _gz PR to detect the SIGTERM/SIGKILL and remove dangling processes without the user having to ps aux

I don't see why a SIGINT (exit code -2) should be called an error by the launch script. SIGINT's are intentional and always exit with a -2

I looked into it briefly and rclpy is supposed to handle sigint (and even sigterm) gracefully. Is this a bug?

I wouldn't say it crashed; it just got a SIGINT (KeyboardInterrupt) from your control-c.

I didn't stop the program, this is happening after every batch run and start of a new one

Ok well, a SIGINT is still intentional. The sim is over and needs to stop the program, so it sends a SIGINT (code can't tell the diff if the system sent a signal or the keyboard sent the signal). This is WAI except it would be nice if rclpy handled the SIGINT bettter

imo, rclpy.spin_once should handle sigint and close gracefully, but that's not under my control

That is my understanding too. Is that something we want to look into?
Ran ros2 launch buoy_gazebo mbari_wec.launch.py inc_wave_spectrum:='inc_wave_spectrum_type:Custom' seed:=42 physics_rtf:=10 physics_step:=0.09 door_state:=closed scale_factor:=0.5 battery_soc:=0.25 x_mean_pos:=0.5 and it crashed with the same ODE INTERNAL ERROR as in mbari_wec_gz 150 but not immediately, sim ran for 5secs on RTF=~8

cc @mjcarroll should rclpy.spin_once handle the SIGINT without the stack trace and exit(-2)?

crashed with the same ODE INTERNAL ERROR

yeah, we are having issues with the default Custom wave spectra. Try with inc_wave_spectrum:='inc_wave_spectrum_type:Bretschneider'
@hamilton8415 was having issues where control-c on the sim would result in a crash in gz sim in the NoOp controller. Can you run the sim, control-c and repeat and make sure this doesn't happen to you?

No didn't face any crash in the NoOp controller with both gui enabled and disabled

Unfortunately, it is still sometimes leaving behind a gz process that interferes with things running correctly when re-started.
$ ps aux | grep -E '(ros|pblog|gz)'
hamilton   24804  102  0.3 4463808 248348 pts/2  Sl   13:54   0:25 gz sim -rs --iterations 100000 /home/hamilton/mbari_wec_ws/install/buoy_gazebo/share/buoy_gazebo/worlds/mbari_wec_batch.sdf
hamilton   25003  0.0  0.0  18188  2440 pts/2    S+   13:55   0:00 grep --color=auto -E (ros|pblog|gz)
To be clear, I am running the pblog_shutdown branch in mbari_wec_utils, and andermi/add_launch_param_overrides in mbari_wec_gz

still sometimes leaving behind a gz process

can you paste the sim output when it is shutting down?

When mine has to sigterm gz sim, I see this:
[mbari_wec_batch-1] [ERROR] [ruby $(which gz) sim-2]: process[ruby $(which gz) sim-2] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
[mbari_wec_batch-1] [INFO] [ruby $(which gz) sim-2]: sending signal 'SIGTERM' to process[ruby $(which gz) sim-2]
[mbari_wec_batch-1] [ERROR] [ruby $(which gz) sim-2]: process has died [pid 817223, exit code -15, cmd 'ruby $(which gz) sim -rs --iterations 6000 /home/anderson/wec/igngzb/openrobotics/workspace/install/buoy_gazebo/share/buoy_gazebo/worlds/mbari_wec_batch.sdf --force-version 7'].
[mbari_wec_batch-1] [INFO] [launch]: process[ruby $(which gz) sim-2] was required: shutting down launched system
[mbari_wec_batch-1] [ERROR] [1686346898.237686989] [mbari_wec_batch]: Simulation run [0] was not successful: gz-sim return code [-15]
[mbari_wec_batch-1] Failed to publish log message to rosout: publisher's context is invalid, at ./src/rcl/publisher.c:389
[mbari_wec_batch-1] [ERROR] [1686346898.237948310] [mbari_wec_batch]: gz sim process may still be running...
[mbari_wec_batch-1] Failed to publish log message to rosout: publisher's context is invalid, at ./src/rcl/publisher.c:389
[mbari_wec_batch-1] ps x -o "%p %c" | grep ruby | cut -d " " -f 2 | xargs -I{} kill -9 {}
[mbari_wec_batch-1] ps x -o "%p %c" | grep sim_pblog | cut -d " " -f 2 | xargs -I{} kill -9 {}
[INFO] [mbari_wec_batch-1]: process has finished cleanly [pid 817171]
[INFO] [launch]: process[mbari_wec_batch-1] was required: shutting down launched system

and no gz processes in ps aux

I'm wondering if you had a gz process from before you tried this?

When there's a gz process and I try to run the batch stuff, the output below is what happens, and the log files aren't getting bigger but rather just have a few entries...
$ ros2 launch buoy_gazebo mbari_wec_batch.launch.py sim_params_yaml:=DataCheck.yaml
[INFO] [launch]: All log files can be found below /home/hamilton/.ros/log/2023-06-09-15-15-25-858448-WOLFPACK-29993
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [mbari_wec_batch-1]: process started with pid [29994]
[mbari_wec_batch-1] [INFO] [1686348926.042967877] [mbari_wec_batch]: Creating batch results directory: batch_results_20230609151526
[mbari_wec_batch-1] [INFO] [1686348926.055704568] [mbari_wec_batch]: Generated 1 simulation runs
[mbari_wec_batch-1] [INFO] [1686348926.055859025] [mbari_wec_batch]: Creating log file: batch_results_20230609151526/batch_runs.log
[mbari_wec_batch-1] [INFO] [1686348926.058361294] [mbari_wec_batch]:
[mbari_wec_batch-1]
[mbari_wec_batch-1] Sim run [0] for 1000.0 seconds: door state='closed', scale factor=1.0, battery state=0.8, mean piston position=0.75, IncidentWaveSpectrumType=Bretschneider;Hs:1.5;Tp:12.0
[mbari_wec_batch-1]
[mbari_wec_batch-1] [INFO] [launch]: All log files can be found below /home/hamilton/.ros/log/2023-06-09-15-15-26-290820-WOLFPACK-29994
[mbari_wec_batch-1] [INFO] [launch]: Default logging verbosity is set to INFO
[mbari_wec_batch-1] [INFO] [ros2-1]: process started with pid [30005]
[mbari_wec_batch-1] [INFO] [ruby $(which gz) sim-2]: process started with pid [30007]
[mbari_wec_batch-1] [INFO] [parameter_bridge-3]: process started with pid [30009]
[mbari_wec_batch-1] [INFO] [sim_pblog-4]: process started with pid [30012]
[mbari_wec_batch-1] [INFO] [robot_state_publisher-5]: process started with pid [30015]
[mbari_wec_batch-1] [parameter_bridge-3] [INFO] [1686348926.356959023] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/clock (gz.msgs.Clock) -> /clock (rosgraph_msgs/msg/Clock)] (Lazy 0)
[mbari_wec_batch-1] [parameter_bridge-3] [INFO] [1686348926.358158734] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/world/mbari_wec_world/model/MBARI_WEC_ROS/joint_state (gz.msgs.Model) -> /world/mbari_wec_world/model/MBARI_WEC_ROS/joint_state (sensor_msgs/msg/JointState)] (Lazy 0)
[mbari_wec_batch-1] [parameter_bridge-3] [INFO] [1686348926.358994397] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/model/MBARI_WEC_ROS/pose (gz.msgs.Pose_V) -> /model/MBARI_WEC_ROS/pose (tf2_msgs/msg/TFMessage)] (Lazy 0)
[mbari_wec_batch-1] [parameter_bridge-3] [INFO] [1686348926.359528952] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/model/MBARI_WEC_ROS/pose_static (gz.msgs.Pose_V) -> /model/MBARI_WEC_ROS/pose_static (tf2_msgs/msg/TFMessage)] (Lazy 0)
[mbari_wec_batch-1] [robot_state_publisher-5] Error [SDF.cc:154] Tried to use callback in sdf::findFile(), but the callback is empty.  Did you call sdf::setFindCallback()?
[mbari_wec_batch-1] [robot_state_publisher-5] [ERROR] [1686348926.370301992] [sdformat_urdf]: Unable to find uri[package://buoy_description/models/mbari_wec]
[mbari_wec_batch-1] [robot_state_publisher-5] [ERROR] [1686348926.371271005] [sdformat_urdf]: A model must have at least one link.
[mbari_wec_batch-1] [robot_state_publisher-5] [ERROR] [1686348926.371276255] [sdformat_urdf]: A model must have at least one link.
[mbari_wec_batch-1] [robot_state_publisher-5] [ERROR] [1686348926.371277779] [sdformat_urdf]: FrameAttachedToGraph error: scope context name[] does not match model or world.
[mbari_wec_batch-1] [robot_state_publisher-5] Failed to parse robot description using: sdformat_urdf_plugin/SDFormatURDFParser
[mbari_wec_batch-1] [robot_state_publisher-5] terminate called after throwing an instance of 'std::runtime_error'
[mbari_wec_batch-1] [robot_state_publisher-5]   what():  Unable to initialize urdf::model from robot description
[mbari_wec_batch-1] [ros2-1] stdin is not a terminal device. Keyboard handling disabled.[INFO] [1686348926.445125568] [rosbag2_recorder]: Press SPACE for pausing/resuming
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.469495662] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._xb_record.XBRecord'> on '/ahrs_data'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.519881236] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._bc_record.BCRecord'> on '/battery_data'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.520221980] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._sc_record.SCRecord'> on '/spring_data'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.520493398] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._pc_record.PCRecord'> on '/power_data'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.520754554] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._tf_record.TFRecord'> on '/trefoil_data'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.521049368] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._xb_record.XBRecord'> on '/xb_record'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.521308175] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._bc_record.BCRecord'> on '/bc_record'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.521591245] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._sc_record.SCRecord'> on '/sc_record'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] Warning [Utils.cc:130] [/sdf/model[@name="MBARI_WEC_BASE"]/joint[@name="Universal"]/provide_feedback:/home/hamilton/mbari_wec_ws/install/buoy_description/share/buoy_description/models/mbari_wec_base/model.sdf:L1931]: XML Element[provide_feedback], child of element[joint], not defined in SDF. Copying[provide_feedback] as children of [joint].
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.521828344] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._pc_record.PCRecord'> on '/pc_record'
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.522048331] [sim_pblog]: Subscribing to <class 'buoy_interfaces.msg._tf_record.TFRecord'> on '/tf_record'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] Warning [Utils.cc:130] [/sdf/model[@name="MBARI_WEC_BASE"]/joint[@name="TrefoilDoors"]/provide_feedback:/home/hamilton/mbari_wec_ws/install/buoy_description/share/buoy_description/models/mbari_wec_base/model.sdf:L1994]: XML Element[provide_feedback], child of element[joint], not defined in SDF. Copying[provide_feedback] as children of [joint].
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.524525894] [rosbag2_storage]: Opened database 'batch_results_20230609151526/results_run_0_20230609151526/rosbag2/rosbag2_0.db3' for READ_WRITE.
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.524615535] [rosbag2_recorder]: Event publisher thread: Starting
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.524876106] [rosbag2_recorder]: Listening for topics...
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.525302230] [sim_pblog]: Using batch_results_20230609151526 as logging home
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.529195110] [sim_pblog]: New log directory: batch_results_20230609151526/results_run_0_20230609151526/pblog
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.534156894] [rosbag2_recorder]: Subscribed to topic '/trefoil_mag'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.542388244] [rosbag2_recorder]: Subscribed to topic '/rosout'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.549109496] [rosbag2_recorder]: Subscribed to topic '/xb_imu'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.556134116] [rosbag2_recorder]: Subscribed to topic '/battery_data'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.560960422] [noop_controller]: [ROS 2 NoOp Controller] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.563084250] [rosbag2_recorder]: Subscribed to topic '/ahrs_data'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.570270627] [spring_controller]: [ROS 2 Spring Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.570386889] [rosbag2_recorder]: Subscribed to topic '/parameter_events'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.571002043] [spring_controller]: [ROS 2 Spring Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.571036389] [spring_controller]: [ROS 2 Spring Control] setting publish_rate: 10
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686348926.574202421] [sim_pblog]: New log file: batch_results_20230609151526/results_run_0_20230609151526/pblog/2023.06.09T03.16.14.csv
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.575204994] [power_controller]: [ROS 2 Power Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.575705924] [power_controller]: [ROS 2 Power Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.575739580] [power_controller]: [ROS 2 Power Control] setting publish_rate: 10
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.577503303] [rosbag2_recorder]: Subscribed to topic '/clock'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.580369118] [battery_controller]: [ROS 2 Battery Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.580963116] [battery_controller]: [ROS 2 Battery Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.581002219] [battery_controller]: [ROS 2 Battery Control] setting publish_rate: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.584193852] [xbow_ahrs]: [ROS 2 XBow AHRS] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.584692340] [rosbag2_recorder]: Subscribed to topic '/tf'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686348926.588432764] [trefoil_controller]: [ROS 2 Trefoil Controller] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.591352490] [rosbag2_recorder]: Subscribed to topic '/events/write_split'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.597435875] [rosbag2_recorder]: Subscribed to topic '/xb_gps'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.610528664] [rosbag2_recorder]: Subscribed to topic '/spring_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.617170906] [rosbag2_recorder]: Subscribed to topic '/joint_states'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.623831411] [rosbag2_recorder]: Subscribed to topic '/power_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.630683531] [rosbag2_recorder]: Subscribed to topic '/tf_static'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.637341017] [rosbag2_recorder]: Subscribed to topic '/trefoil_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686348926.644006626] [rosbag2_recorder]: Subscribed to topic '/trefoil_imu'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [Err] [SDFFeatures.cc:843] The geometry element of collision [collision] couldn't be created
[mbari_wec_batch-1] [ERROR] [robot_state_publisher-5]: process has died [pid 30015, exit code -6, cmd '/opt/ros/humble/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /tmp/launch_params_w4fermoc --params-file /tmp/launch_params_q7karzsc'].

In my testing, I start without any gz processes evident. Then after one or two Ctrl-C of the batch processing, the gz processes are present and that keeps things from running.  If I kill those processes, it's back to working for a couple of times...

Do you have program output of when it needs to do a SIGTERM?
you should see:
[mbari_wec_batch-1] ps x -o "%p %c" | grep ruby | cut -d " " -f 2 | xargs -I{} kill -9 {}

I don't entirely understand the question.  And entirely is generous...

[mbari_wec_batch-1] [ERROR] [ruby $(which gz) sim-2]: process[ruby $(which gz) sim-2] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'

Do you ever see this ^^ when you control-c the sim early (or when it would cycle to a new sim run)?

Yes, those two lines are in the output when a gz process is left behind, but aren't there otherwise.

Output when a gz process is leftover is as follows:
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.520553677] [noop_controller]: [ROS 2 NoOp Controller] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.529723632] [spring_controller]: [ROS 2 Spring Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.530434267] [spring_controller]: [ROS 2 Spring Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.530467110] [spring_controller]: [ROS 2 Spring Control] setting publish_rate: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.534557729] [power_controller]: [ROS 2 Power Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.535035236] [power_controller]: [ROS 2 Power Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.535065335] [power_controller]: [ROS 2 Power Control] setting publish_rate: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.539243795] [battery_controller]: [ROS 2 Battery Control] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.539713054] [battery_controller]: [ROS 2 Battery Control] Set publish_rate param from SDF: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.539741750] [battery_controller]: [ROS 2 Battery Control] setting publish_rate: 10
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.542446713] [xbow_ahrs]: [ROS 2 XBow AHRS] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352372.546393307] [trefoil_controller]: [ROS 2 Trefoil Controller] Setting up controller for [MBARI_WEC_ROS]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.631182575] [rosbag2_recorder]: Subscribed to topic '/trefoil_imu'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.667694304] [rosbag2_recorder]: Subscribed to topic '/trefoil_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.680261678] [rosbag2_recorder]: Subscribed to topic '/spring_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.693000336] [rosbag2_recorder]: Subscribed to topic '/xb_gps'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.705723248] [rosbag2_recorder]: Subscribed to topic '/ahrs_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.719448533] [rosbag2_recorder]: Subscribed to topic '/power_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.731499162] [rosbag2_recorder]: Subscribed to topic '/battery_data'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.767233150] [rosbag2_recorder]: Subscribed to topic '/xb_imu'
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352372.780557219] [rosbag2_recorder]: Subscribed to topic '/trefoil_mag'
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [Err] [SDFFeatures.cc:843] The geometry element of collision [collision] couldn't be created
[mbari_wec_batch-1] [ERROR] [robot_state_publisher-5]: process has died [pid 37145, exit code -6, cmd '/opt/ros/humble/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /tmp/launch_params_emw7x00y --params-file /tmp/launch_params_jcy1r5wa'].
[mbari_wec_batch-1] [sim_pblog-4] [INFO] [1686352373.389226336] [sim_pblog]: New log file: batch_results_20230609161251/results_run_0_20230609161252/pblog/2023.06.09T04.12.52.csv
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[mbari_wec_batch-1] [WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[mbari_wec_batch-1] [parameter_bridge-3] [INFO] [1686352377.591322172] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [ruby $(which gz) sim-2] [INFO] [1686352377.591325483] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352377.591330075] [rclcpp]: signal_handler(signum=2)
[mbari_wec_batch-1] [sim_pblog-4] Traceback (most recent call last):
[mbari_wec_batch-1] [sim_pblog-4]   File "/home/hamilton/mbari_wec_ws/install/sim_pblog/lib/sim_pblog/sim_pblog", line 33, in
[mbari_wec_batch-1] [sim_pblog-4] Process SpawnPoolWorker-1:
[mbari_wec_batch-1] [sim_pblog-4]     sys.exit(load_entry_point('sim-pblog==0.0.0', 'console_scripts', 'sim_pblog')())
[mbari_wec_batch-1] [sim_pblog-4]   File "/home/hamilton/mbari_wec_ws/install/sim_pblog/lib/python3.10/site-packages/sim_pblog/sim_pblog.py", line 410, in main
[mbari_wec_batch-1] [sim_pblog-4]     time.sleep(1./100.)
[mbari_wec_batch-1] [sim_pblog-4] KeyboardInterrupt
[mbari_wec_batch-1] [INFO] [parameter_bridge-3]: process has finished cleanly [pid 37139]
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352377.603945164] [rosbag2_recorder]: Event publisher thread: Exiting
[mbari_wec_batch-1] [ros2-1] [INFO] [1686352377.604136231] [rosbag2_cpp]: Writing remaining messages from cache to the bag. It may take a while
[mbari_wec_batch-1] [INFO] [ros2-1]: process has finished cleanly [pid 37135]
[mbari_wec_batch-1] [ERROR] [sim_pblog-4]: process has died [pid 37142, exit code -2, cmd '/home/hamilton/mbari_wec_ws/install/sim_pblog/lib/sim_pblog/sim_pblog --loghome batch_results_20230609161251 --logdir results_run_0_20230609161252/pblog --ros-args -r __node:=sim_pblog --params-file /home/hamilton/mbari_wec_ws/install/sim_pblog/share/sim_pblog/config/sim_pblog.yaml'].
[ERROR] [mbari_wec_batch-1]: process[mbari_wec_batch-1] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
[INFO] [mbari_wec_batch-1]: sending signal 'SIGTERM' to process[mbari_wec_batch-1]
[mbari_wec_batch-1] [ERROR] [ruby $(which gz) sim-2]: process[ruby $(which gz) sim-2] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
[mbari_wec_batch-1] [INFO] [ruby $(which gz) sim-2]: sending signal 'SIGTERM' to process[ruby $(which gz) sim-2]
[mbari_wec_batch-1] [ERROR] [ruby $(which gz) sim-2]: process has died [pid 37137, exit code -15, cmd 'ruby $(which gz) sim -rs --iterations 100000 /home/hamilton/mbari_wec_ws/install/buoy_gazebo/share/buoy_gazebo/worlds/mbari_wec_batch.sdf --force-version 7'].
[mbari_wec_batch-1] [INFO] [launch]: process[ruby $(which gz) sim-2] was required: shutting down launched system
[mbari_wec_batch-1] [ERROR] [1686352382.601635780] [mbari_wec_batch]: Simulation run [0] was not successful: gz-sim return code [-15]
[mbari_wec_batch-1] Failed to publish log message to rosout: publisher's context is invalid, at ./src/rcl/publisher.c:389
[mbari_wec_batch-1] [ERROR] [1686352382.602479613] [mbari_wec_batch]: gz sim process may still be running...
[mbari_wec_batch-1] Failed to publish log message to rosout: publisher's context is invalid, at ./src/rcl/publisher.c:389
[mbari_wec_batch-1] ps x -o "%p %c" | grep ruby | cut -d " " -f 2 | xargs -I{} kill -9 {}
[mbari_wec_batch-1] ps x -o "%p %c" | grep sim_pblog | cut -d " " -f 2 | xargs -I{} kill -9 {}
[INFO] [mbari_wec_batch-1]: process has finished cleanly [pid 37124]
[INFO] [launch]: process[mbari_wec_batch-1] was required: shutting down launched system

when a gz is left behind, what is the output of manually running:
ps x -o "%p %c" | grep ruby

"37144 ruby"

blank

git pull in the _gz branch should fix it...
I should have used awk all along...

Ruby off the rails...
Yep, works nicely now.  I did 10-12 in a row with no problems, including some in which I did many Ctrl-C's in a row before it cleaned up (the centipede treatment).

@hamilton8415 don't forget to approve this one too :)


If Marcellus Wallace demands, you follow

Replaced implementation of Observer with lambda-function

I do not demand! You scrued up the subscribe! Nice try ;)


Module not found problem

I'm having a problem running an app that my colleagues have running fine on their Macs and Linux machines. Every time I start in the emulator (Android SDK and Genymotion) it tells me that it cannot find the module. But the module is right there.
My colleagues have sent me working zipped versions from their PCs and it still will not compile on mine. Titanium 3.5.1GA is what I am using.
Error:
[ERROR] :  TiExceptionHandler: (main) [1722,1722] ----- Titanium Javascript Runtime Error -----
[ERROR] :  TiExceptionHandler: (main) [1,1723] - In ti:/module.js:280,9
[ERROR] :  TiExceptionHandler: (main) [1,1724] - Message: Uncaught Error: Requested module not found: analytics.google
[ERROR] :  TiExceptionHandler: (main) [0,1724] - Source:         throw new Error("Requested module not found: " + request);
[ERROR] :  V8Exception: Exception occurred at ti:/module.js:280: Uncaught Error: Requested module not found: analytics.google

Versions:
$ node -v
v0.12.4
$ java -version
java version "1.7.0_79"
OpenJDK Runtime Environment (IcedTea 2.5.5) (7u79-2.5.5-0ubuntu<IP_ADDRESS>)
OpenJDK Server VM (build 24.79-b02, mixed mode)
$ ti --version
4.0.1

$ ti sdk
Titanium Command-Line Interface, CLI version 4.0.1, Titanium SDK version 3.5.1.GA
Copyright (c) 2012-2015, Appcelerator, Inc.  All Rights Reserved.

Please report bugs to http://jira.appcelerator.org/

SDK Install Locations:
   /home/land/.titanium [default]

Installed SDKs:
   3.5.1.GA [selected]  /home/land/.titanium/mobilesdk/linux/3.5.1.GA

Here is a full stack page where I am looking for help also showing some SS.
http://stackoverflow.com/questions/30623316/titanium-missing-google-analytics-when-starting-app?noredirect=1#comment49357229_30623316

I can't tell which version of this module you're using, but this sounds very familiar.
I had hoped the issue was solved by the latest release. If that's not the case, please let me know.

You are my new favorite person on planet earth! :) thank you so much. It's finally working, I've been at it a week and gotten no where haha. Thanks again!

No problem! ...but about the release version...  are you using the new one? It would be helpful to know if the new version solved this issue or not.

3.0.0: http://cdn.microthosting.com/imgs/Screenshot_at_2015-06-04_16-31-11.png

Not sure if that is new or old, we inherited the app from another dev. Never used it before :)

No worries. If you have a free moment, try replacing it with the newest version and let me know how it goes. I think we solved that issue, but would love to know for sure.


Error when attempting to use InteractiveBrowserCredential for downloading from blob storage

Package Name: @azure/identity
Package Version: 2.0.0-beta.6
Package Name: @azure/storage-blob
Package Version: ^12.11.0
Operating system: OSX
[x] nodejs

version: ^13.7.0

[ ] browser

name/version:

[x] typescript

version: ~4.6.2

Is the bug related to documentation in

[ ] README.md
[ ] source code documentation
[ ] SDK API docs on https://docs.microsoft.com

Describe the bug
We’re seeing the following error in the terminal when we attempt to use the InteractiveBrowserCredential class to authorize a script to download files from blob storage for the user.

Error: Interactive Browser Authentication Error "Did not receive token with a valid expiration"

At the same time, we see this error in the browser which opens for the interactive authentication:

ERROR. Scopes: https://storage.azure.com/.default. Error message: null. null.

A simplified example of the code that is producing this error would be the following function that downloads a blob to a given directory then returns the path to that directory as a string:
export async function downloadOurSdk(version: string, downloadDirectory: string): Promise<string> {
  const credential = new InteractiveBrowserCredential({
    tenantId: '<redacted>',
    clientId: '<redacted>',
    loginStyle: 'redirect',
    redirectUri: 'http://localhost:8080/',
  });
  const blobServiceClient = new BlobServiceClient('https://<redacted>.blob.core.windows.net', credential);

  const containerClient = blobServiceClient.getContainerClient(version);
  const blockBlobClient = containerClient.getBlockBlobClient('our-sdk.zip');

  await blockBlobClient.downloadToFile(downloadDirectory, 0, undefined);
  console.log('\nDownloaded blob content...');

  return downloadDirectory;
}

The error appears to be thrown by the call to await blockBlobClient.donwloadToFile(downloadDirectory, 0, undefined); because the console.log after that line is never seen in the terminal (while a console.log placed directly before that line is printed to the terminal).
I haven’t been able to find much of anything about this error online, so I’ve been reading all the documentation about the InteractiveBrowserCredential class, the InteractiveBrowserCredentialNodeOptions interface, the BlockBlobClient class’s downloadToFile method, and the BlobDownloadOptions interface, but I don’t see any mention of an expiration or timeout property in any of them (though that may be a red herring).
I’m not really sure what steps to take next, and I was hoping y’all might be able to catch something obvious that I missed about this. Note that I have also followed the instructions here to enable verbose logging, and I’ve attached the output of that at the end of this issue.
Thanks for any assistance you can give!
To Reproduce
Steps to reproduce the behavior:

Use an InteractiveBrowserCredential to acquire a BlobServiceClient (using the @azure/storage-blob package).
Use the BlobServiceClient to obtain a ContainerClient.
Use the ContainerClient to obtain a BlockBlobClient.
Call the BlockBlobClient's downloadToFile method.

Expected behavior
The Microsoft credentials used to login with the InteractiveBrowserCredential should be used to authorize downloading the given blob to a file in the given directory.
Screenshots
n/a
Additional context
--verbose logs from the given error:
azure:core-client:warning The baseUri option for SDK Clients has been deprecated, please use endpoint instead.
azure:core-http:info ServiceClient: using custom request policies
azure:core-http:info ServiceClient: using custom request policies
azure:core-http:info ServiceClient: using custom request policies
azure:storage-blob:info RetryPolicy: =====> Try=1 Primary
azure:storage-blob:info Request: {
  "streamResponseStatusCodes": {},
  "url": "https://harborsdkbinaries.blob.core.windows.net/2-8-1-18-74105c96-osx/harbor-sdk.zip",
  "method": "GET",
  "headers": {
    "_headersMap": {
      "x-ms-version": "2021-08-06",
      "accept": "application/xml",
      "user-agent": "azsdk-js-storageblob/12.11.0 (NODE-VERSION v18.2.0; Darwin 21.6.0)",
      "x-ms-client-request-id": "cb0f50e4-ee40-4eda-9639-67c58b069179"
    }
  },
  "withCredentials": false,
  "timeout": 0,
  "keepAlive": true,
  "requestId": "cb0f50e4-ee40-4eda-9639-67c58b069179"
}
azure:identity:info InteractiveBrowserCredential => MSAL Node V2 info message: [Thu, 25 Aug 2022 18:58:15 GMT]<EMAIL_ADDRESS>: Info - getTokenCache called
azure:identity:info Node.js MSAL Open Browser => More than one account was found authenticated for this Client ID and Tenant ID.
However, no "authenticationRecord" has been provided for this credential,
therefore we're unable to pick between these accounts.
A new login attempt will be requested, to ensure the correct account is picked.
To work with multiple accounts for the same Client ID and Tenant ID, please provide an "authenticationRecord" when initializing a credential to prevent this from happening.
azure:identity:info Node.js MSAL Open Browser => Silent authentication failed, falling back to interactive method.
azure:identity:info Node.js MSAL Open Browser => InteractiveBrowserCredential listening on port 8080!
azure:identity:info InteractiveBrowserCredential => MSAL Node V2 info message: [Thu, 25 Aug 2022 18:58:15 GMT]<EMAIL_ADDRESS>: Info - getAuthCodeUrl called
azure:core-rest-pipeline retryPolicy:info Retry 0: Attempting to send request 36fae5c9-01d4-4ae2-9ada-08d611d802f9
azure:core-rest-pipeline:info Request: {
  "url": "https://login.microsoftonline.com/common/discovery/instance?api-version=1.1&authorization_endpoint=REDACTED",
  "headers": {
    "accept-encoding": "gzip,deflate",
    "user-agent": "azsdk-js-identity/2.0.0-beta.6 core-rest-pipeline/1.9.1 Node/v18.2.0 OS/(x64-Darwin-21.6.0)",
    "x-ms-client-request-id": "36fae5c9-01d4-4ae2-9ada-08d611d802f9"
  },
  "method": "GET",
  "timeout": 0,
  "disableKeepAlive": false,
  "withCredentials": false,
  "abortSignal": {},
  "requestId": "36fae5c9-01d4-4ae2-9ada-08d611d802f9",
  "allowInsecureConnection": false,
  "enableBrowserStreams": false
}
azure:core-rest-pipeline:info No cached TLS Agent exist, creating a new Agent
azure:core-rest-pipeline:info Response status code: 200
azure:core-rest-pipeline:info Headers: {
  "cache-control": "max-age=86400, private",
  "content-type": "application/json; charset=utf-8",
  "strict-transport-security": "max-age=31536000; includeSubDomains",
  "x-content-type-options": "nosniff",
  "access-control-allow-origin": "*",
  "access-control-allow-methods": "GET, OPTIONS",
  "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"",
  "x-ms-request-id": "ed593fac-641e-4e4b-bf2c-696cf8f29000",
  "x-ms-ests-server": "2.1.13481.11 - SCUS ProdSlices",
  "x-xss-protection": "0",
  "set-cookie": "fpc=Aq-ZappgSQpPmzILacS8OEI; expires=Sat, 24-Sep-2022 18:58:16 GMT; path=/; secure; HttpOnly; SameSite=None",
  "date": "Thu, 25 Aug 2022 18:58:16 GMT",
  "content-length": "980"
}
azure:core-rest-pipeline retryPolicy:info Retry 0: Received a response from request 36fae5c9-01d4-4ae2-9ada-08d611d802f9
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing 2 retry strategies.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy throttlingRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy exponentialRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info None of the retry strategies could work with the received response. Returning it.
azure:core-rest-pipeline retryPolicy:info Retry 0: Attempting to send request 927305c4-23e9-4b13-af1b-661045c0b274
azure:core-rest-pipeline:info Request: {
  "url": "https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/v2.0/.well-known/openid-configuration",
  "headers": {
    "accept-encoding": "gzip,deflate",
    "user-agent": "azsdk-js-identity/2.0.0-beta.6 core-rest-pipeline/1.9.1 Node/v18.2.0 OS/(x64-Darwin-21.6.0)",
    "x-ms-client-request-id": "927305c4-23e9-4b13-af1b-661045c0b274"
  },
  "method": "GET",
  "timeout": 0,
  "disableKeepAlive": false,
  "withCredentials": false,
  "abortSignal": {},
  "requestId": "927305c4-23e9-4b13-af1b-661045c0b274",
  "allowInsecureConnection": false,
  "enableBrowserStreams": false
}
azure:core-rest-pipeline:info Response status code: 200
azure:core-rest-pipeline:info Headers: {
  "cache-control": "max-age=86400, private",
  "content-type": "application/json; charset=utf-8",
  "strict-transport-security": "max-age=31536000; includeSubDomains",
  "x-content-type-options": "nosniff",
  "access-control-allow-origin": "*",
  "access-control-allow-methods": "GET, OPTIONS",
  "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"",
  "x-ms-request-id": "27228cfa-649f-4a09-9007-6d20fffd4200",
  "x-ms-ests-server": "2.1.13481.12 - SCUS ProdSlices",
  "x-xss-protection": "0",
  "set-cookie": "fpc=AnGD6erPafxDm5xhJ2FGGQU; expires=Sat, 24-Sep-2022 18:58:16 GMT; path=/; secure; HttpOnly; SameSite=None",
  "date": "Thu, 25 Aug 2022 18:58:16 GMT",
  "content-length": "1753"
}
azure:core-rest-pipeline retryPolicy:info Retry 0: Received a response from request 927305c4-23e9-4b13-af1b-661045c0b274
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing 2 retry strategies.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy throttlingRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy exponentialRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info None of the retry strategies could work with the received response. Returning it.
azure:identity:info InteractiveBrowserCredential => MSAL Node V2 info message: [Thu, 25 Aug 2022 18:58:17 GMT]<EMAIL_ADDRESS>: Info - acquireTokenByCode called
azure:identity:info InteractiveBrowserCredential => MSAL Node V2 info message: [Thu, 25 Aug 2022 18:58:17 GMT] : [6171d1d6-3c74-455c-8364-a9078fea62b7]<EMAIL_ADDRESS>: Info - in acquireToken call
azure:core-rest-pipeline retryPolicy:info Retry 0: Attempting to send request e3d911d9-0c4f-43a4-acac-19f5ffca512a
azure:core-rest-pipeline:info Request: {
  "url": "https://login.microsoftonline.com/72f988bf-86f1-41af-91ab-2d7cd011db47/oauth2/v2.0/token",
  "headers": {
    "content-type": "application/x-www-form-urlencoded;charset=utf-8",
    "accept-encoding": "gzip,deflate",
    "user-agent": "azsdk-js-identity/2.0.0-beta.6 core-rest-pipeline/1.9.1 Node/v18.2.0 OS/(x64-Darwin-21.6.0)",
    "x-ms-client-request-id": "e3d911d9-0c4f-43a4-acac-19f5ffca512a"
  },
  "method": "POST",
  "timeout": 0,
  "disableKeepAlive": false,
  "withCredentials": false,
  "abortSignal": {},
  "requestId": "e3d911d9-0c4f-43a4-acac-19f5ffca512a",
  "allowInsecureConnection": false,
  "enableBrowserStreams": false
}
azure:core-rest-pipeline:info Response status code: 400
azure:core-rest-pipeline:info Headers: {
  "cache-control": "no-store, no-cache",
  "pragma": "no-cache",
  "content-type": "application/json; charset=utf-8",
  "expires": "-1",
  "strict-transport-security": "max-age=31536000; includeSubDomains",
  "x-content-type-options": "nosniff",
  "p3p": "CP=\"DSP CUR OTPi IND OTRi ONL FIN\"",
  "x-ms-request-id": "48444501-1d77-4280-ae65-7c5b5c130100",
  "x-ms-ests-server": "2.1.13672.0 - CHY FirstSlice",
  "x-ms-clitelem": "1,9002327,0,,I",
  "x-xss-protection": "0",
  "set-cookie": "fpc=Ah_S4yGIGwVDn7N-J4rczGaYKMIdAQAAAEm9mdoOAAAA; expires=Sat, 24-Sep-2022 18:58:18 GMT; path=/; secure; HttpOnly; SameSite=None",
  "date": "Thu, 25 Aug 2022 18:58:18 GMT",
  "content-length": "478"
}
azure:core-rest-pipeline retryPolicy:info Retry 0: Received a response from request e3d911d9-0c4f-43a4-acac-19f5ffca512a
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing 2 retry strategies.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy throttlingRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info Retry 0: Processing retry strategy exponentialRetryStrategy.
azure:core-rest-pipeline retryPolicy:info Retry 0: Skipped.
azure:core-rest-pipeline retryPolicy:info None of the retry strategies could work with the received response. Returning it.
azure:identity:info Node.js MSAL Open Browser => getToken() => ERROR. Scopes: https://storage.azure.com/.default. Error message: null. null.
azure:storage-blob:error RetryPolicy: Caught error, message: Interactive Browser Authentication Error "Did not receive token with a valid expiration", code: undefined
harbor-install Invocation Failed:
Error: Interactive Browser Authentication Error "Did not receive token with a valid expiration"
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

@bperki8 just do double check the obvious, did you configure the redirect uri for the application whose client id you are passing to support localhost:8080? https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-desktop-app-registration#redirect-uris

@xirzec, that we did:

👍

I spent a bit of time trying to repro this so I could debug it, but I can't seem to get past this blocker:

Whenever I have my app request user_impersonation of storage it claims it needs admin consent... even though I can't see any reason why it should. Using other kinds of AAD auth (e.g. EnvironmentCredential with that same app using a secret) works great.

@xirzec, we ran into that one, too. I believe the fix is to go to the Permissions tab of the app and grant admin consent for the entire tenant. In the case of an app on the Microsoft tenant, that means submitting an admin consent request through the SPACE tool. Once our admin consent request was approved, we no longer saw the "Need admin approval" message, and that's when we ran into the problem that I opened this issue about. 👍

@xirzec, we ran into that one, too. I believe the fix is to go to the Permissions tab of the app and grant admin consent for the entire tenant. In the case of an app on the Microsoft tenant, that means submitting an admin consent request through the SPACE tool. Once our admin consent request was approved, we no longer saw the "Need admin approval" message, and that's when we ran into the problem that I opened this issue about. 👍

Appreciate the tips! I might try making a separate test tenant to chase this down more, but can I understand your scenario a bit more?
I'm assuming you can't use some kind of managed identity or client secret to have the app itself authenticate to the storage account and do the download, which is why you are using a flow that requires user authentication. I wonder if the OnBehalfOfCredential would work any better?

@xirzec , I'll have to look into the OnBehalfOfCredential to see if it will work for our needs. In the meantime, here's our situation in case you can tell us what credential would work.
We already have a script written that will perform this download suing the az artifacts universal download command. But this requires the user to be signed in with their Azure account (using an az login) and it has been reported as a major pain point by our users that this step of the process can be difficult to follow and even more difficult to debug when it goes wrong.
To that end, we're trying to re-write the script so it will have the least amount of burden on the user as possible. That means we're looking for a way that does not require an az login or setting environment variables or anything like that.
Sending the user to their default browser and letting them use their normal Microsoft credentials to sign in seems like the easiest method for the user, so that's why we're trying to get the InteractiveBrowserCredential working, but if there's another method that's just as easy (or even easier) on the users, we'd be open to it.

After watching the video on What are managed identities for Azure resources? and reading this section about the DefaultAzureCredential, I think this may be a solution we can work with.
If I'm understanding this correctly, the DefaultAzureCredential will search for environmental variables to do the authenticating first, but if none are found, then it will search for a Managed Identity to do the authenticating. That Managed Identity does not require the handling of credentials by users, and that's exactly what we're tryin to avoid, so I think I'll give this a try and let you know how it works. 👍
Thanks for the pointer!

Ah I think I see the shape of this a bit better. Am I correct in understanding you are building a command-line tool that can download a blob using the user's credentials?
DefaultAzureCredential is magical when it works, though it does require some form of active identity present on the machine. Managed Identity is more about authenticating a deployed service without extra configuration than it is about authenticating a local user against AAD, so I'm not sure how useful it will be if I understand your use-case.
Until WAM  is supported, you're probably right that InteractiveBrowserCredential is the "correct" flow for your use case, though the app registration bits make it complex. @schaabs do you have any advice here?

Ah I think I see the shape of this a bit better. Am I correct in understanding you are building a command-line tool that can download a blob using the user's credentials?

Yeah, sorry I wasn't clearer about that, but this is correct. We are doing this as part of a command line tool for downloading and installing our sdk binaries using the user's credentials.

Hey, @xirzec! We believe we've found the solution to our problem (while still using the InteractiveBrowserCredential). It took two things on our part.

We had not assigned the needed role (Storage Blob Data Reader) to the app that was doing the downloading in the relevant blob storage account. Adding that role was one of the steps that helped.
We changed the platform type from Single Page Application to Mobile and desktop applications (while still making sure we had the correct redirect URI), and in the advanced settings on the same page, we toggled the flag to allow "public client flows".

This second step was discovered by an engineer on my team when she tested the script through a dotnet console app instead of node.js. The error message in her case was different from the message I was seeing, and indicated something about the token being for a SPA, so she came to the conclusion that changing the platform to something other than a SPA may be able to help.
After making those changes and running the script, I appear to be having no issues with the confirmation and blob download flow. So I think maybe this issue can be considered closed. 👍
Thanks for your time in assistance in this matter!

@bperki8 I'm glad you were able to get this working! Identity can be pretty finnicky until you get the configuration just right.
@KarishmaGhiya when you are back, perhaps we can figure out some way to make this easier to diagnose? Or at least we can ask the Identity folks to update the error string. 😄


Handle bounds in AllGatherOpshape function

related https://github.com/openxla/stablehlo/issues/865

This needs solving #865 which we are planing for the latter part of the current quarter.  Un-assigning for now.

blocked by https://github.com/openxla/stablehlo/issues/865


Feature/174 edit posts

No need for a post.getText() , it's a direct attribute of the instance, non-dynamically generated.
For video theres a post.getVideo() as it's an indirect attribute of the class.
This is part of the Law of Demeter https://en.wikipedia.org/wiki/Law_of_Demeter .


mitmproxy 11.0版本，mitmweb启动报错

mitmproxy 11.0版本，mitmweb启动报错
TypeError: e.map is not a function
at CaptureSetup (http://<IP_ADDRESS>:8081/static/app.js:65:50929)
at Ch (http://<IP_ADDRESS>:8081/static/app.js:5:55364)
at li (http://<IP_ADDRESS>:8081/static/app.js:5:65205)
at ck (http://<IP_ADDRESS>:8081/static/app.js:9:9934)
at bk (http://<IP_ADDRESS>:8081/static/app.js:9:1017)
at ak (http://<IP_ADDRESS>:8081/static/app.js:9:923)
at Tj (http://<IP_ADDRESS>:8081/static/app.js:9:765)
at Lj (http://<IP_ADDRESS>:8081/static/app.js:7:11182)
at http://<IP_ADDRESS>:8081/static/app.js:5:40449
at http://<IP_ADDRESS>:8081/static/app.js:1:12961
Component Stack:
at CaptureSetup (http://<IP_ADDRESS>:8081/static/app.js:65:50490)
at div
at MainView (http://<IP_ADDRESS>:8081/static/app.js:65:52006)
at div
at ProxyAppMain (http://<IP_ADDRESS>:8081/static/app.js:69:3070)
at ConnectFunction (http://<IP_ADDRESS>:8081/static/app.js:58:5505)
at Provider (http://<IP_ADDRESS>:8081/static/app.js:58:2818)

Could you please be more specific? Which are the steps to reproduce the issue?

Could you please be more specific? Which are the steps to reproduce the issue?

The same script execution under version 11.0 error, version back to 10.4 is ok

Could you please be more specific? Which are the steps to reproduce the issue?

The same script execution under version 11.0 error, version back to 10.4 is ok

okay thanks! And did you do something in particular? Or after running mitmweb, it crashed?

Can you please clear your browser cache and reload mitmweb?

Yes，you are right，It's OK after clear browser cache，thanks!


Add when eval filter

closes #312
Have a look for
https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md
Changes

[ ] add docs
[ ] add samples

Should we call it when.if or when.eval, ... I am open for ideas.

eval or expression but not if

Should we call it when.if or when.eval, ...
I am open for suggestions.

Codecov Report
Base: 49.39% // Head: 49.23% // Decreases project coverage by -0.15% :warning:

Coverage data is based on head (f11f23b) compared to base (612eee8).
Patch coverage: 27.27% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1213      +/-   ##
==========================================
- Coverage   49.39%   49.23%   -0.16%
==========================================
  Files          88       88
  Lines        6632     6639       +7
==========================================
- Hits         3276     3269       -7
- Misses       3161     3173      +12
- Partials      195      197       +2

Impacted Files
Coverage Δ

server/shared/procBuilder.go
82.24% <27.27%> (-2.89%)
:arrow_down:

server/logging/log.go
48.83% <0.00%> (-5.82%)
:arrow_down:

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

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


DO: possibility to add a new object type value for RM

The RM should be able to add a new DO object type value, if it is missing from the list.
Currently, new values can only be added manually through the database.

In addition the RM should be able to edit and delete unused items from list.


Null safe on higher order functions in arrays

There are a few situations where the null safety checks of the analyzer fail to do it's job and we are forced to opt out of the check by using !.
It would be nice if the analyzer could know that the values are not able to be null.
Example:
class A {
  String? text;
}

var list = <A>[];
list.where((e) => e.text != null).map((e) => e.text.length);

The above does not work as it still thinks text can be null. Instead you have to write:
list.where((e) => e.text != null).map((e) => e.text!.length);

I believe the first example should be considered valid as we already have done a null check.
This tracker is for issues related to:

Analyzer

Platform:

Dart SDK version: 3.0.2 (stable)
MacOSX

This would not be sound:
bool b = false;

class B extends A {
  String? get text => (b = !b) ? super.text : null;
}

Check out https://github.com/dart-lang/language/issues?q=is%3Aopen+is%3Aissue+label%3Afield-promotion.


Feature/#148array validation expanded

closes #148
📑 Description
ArrayField Component intially supported only Strings and Objects. I updated the ArrayField component by adding conditions to handle different data types within arrays:

Numbers: Used InputNumber wrapped in a Form.
Booleans: Used Checkbox with valuePropName="checked" inside Form.Item.

These changes allow the component to dynamically render inputs based on the data type defined in field.items.type.
✅ Checks

I have performed a self-review of my code

@quest-bot loot #148

@petar-cvit  please review

@petar-cvit  check now


After installing shelter, discord opens logged out and without titlebar, and one launch later it refuses to work completely

I'm using OpenAsar + BetterDiscord. Is there anythting I can do about it?

Shelter has not been tested with bd; will do testing on my end
Honestly, not sure whether to officially support other mods or not but that's a decision for later.

In my testing, installing betterdiscord does not cause any real issues, but it appears that bd does not load if the shelter injector is present.
I have no idea how to fix this, for now I'm just going to go with that running two mods alongside each other is not supported, and I do not plan to investigate how exactly to get this to work.


[PROD] New User Registration - "user not found, or token incorrect" when verifying email [originally logged on staging but also happening in Prod)

Issue
I registered a new user on GO staging, correctly got a "validate your account" email asking me to please

Please validate your IFRC Go account by following this link.

However when I clicked on the link it took me to a page that said

User not found, or token incorrect
We could not find a user and token that matched those supplied. Please contact your system administrator.

Please can you investigate so that I can continue my testing!  Thanks loads

URL
<EMAIL_ADDRESS>Steps to reproduce
Go to https://go-stage.ifrc.org/register and create a new user - click on the link in the email that you receive.

OK I think it's to do with having a + in the email address (which is allowable in email addresses but it seems that GO doesn't handle it).  Not urgent but please fix, as I know several people who use + to handle different signups.  Cheers

@tovari I see from the IM mailbox that a user in Production had this issue today as well - and by the looks of things they don't have any special characters in their email address.  Worth investigating!

I have just changed the title to reflect this is an issue in Production - as we have received an email from yet another user who has experienced this problem when validating their account.  Please investigate urgently, thanks a million.

@nanometrenat, would you mind to share the other user name in prod? Thanks!

@nanometrenat, would you mind to share the other user name in prod? Thanks!

username is email address - and github is public - so sharing the user ids:
11529 (1 July)
11466 (24 June)

@tovari same issue again reported via the mailbox today


updated the temporary update link to the slack channel

stop gap solution to broken invite link

confirmed it works in the emulator


Feature request:  Support to playback composed media sources

Feature request
Is there a plan to support composed media source?  e.g.  playlist or ads(pre/mid/post) + content composed playback!

Can be achieved by multi players. When playing Ads,  prepare the  content media with a new player, and switch the player when ad played completed. Should reuse the same displayview when switching.

Should reuse the same displayview when switching.
I'm still wonder how to reuse t the same displayview?  SurfaceView or TextureView,  is there any OS version's request? Please give an example if could !


Summary
Android offers this out of box.  iOS will not allow us to do anything here.  UWP can piggyback on persistent notifications.
API Changes
Unknown
Intended Use Case
Subject line

My feature request would also solve this.
https://github.com/shinyorg/shiny/issues/485

This only solves for android and not necessarily the other platforms properly.  This is also still being debated if it is a complexity I want to take on for this project right now

I have experience needing to download large files in the background on iOS and Android. So yes, this would only solve it for Android as iOS wouldn't allow you to have a notification that displays progress.

Closing as this isn't something I need for the immediate future and not a focus for 3.0


[Event Request] codeunit 5847 "Get Average Cost Calc Overview" - OnAfterCopyAvgCostAdjmtEntryPointToAvgCostCalcOverview

We would like to add a new event OnAfterCopyAvgCostAdjmtEntryPointToAvgCostCalcOverview in the following trigger:
trigger OnRun()
.
.
.
repeat
Init;
Type := Type::"Closing Entry";
"Entry No." := "Entry No." + 1;
"Item No." := AvgCostAdjmtEntryPoint."Item No.";
"Variant Code" := AvgCostAdjmtEntryPoint."Variant Code";
"Location Code" := AvgCostAdjmtEntryPoint."Location Code";
"Valuation Date" := AvgCostAdjmtEntryPoint."Valuation Date";
OnAfterCopyAvgCostAdjmtEntryPointToAvgCostCalcOverview(Rec, AvgCostAdjmtEntryPoint); //A200F0002.Event
"Attached to Valuation Date" := "Valuation Date";
"Attached to Entry No." := "Entry No.";
"Cost is Adjusted" := AvgCostAdjmtEntryPoint."Cost Is Adjusted";
if EntriesExist(Rec) then begin
OnBeforeAvgCostAdjmtEntryPointInsert(Rec, AvgCostAdjmtEntryPoint);
Insert();
end else
AvgCostAdjmtEntryPoint.Delete();
until AvgCostAdjmtEntryPoint.Next() = 0;
end;
Event signature
[IntegrationEvent(false, false)]
local procedure OnAfterCopyAvgCostAdjmtEntryPointToAvgCostCalcOverview(var AvgCostCalcOverview: Record "Average Cost Calc. Overview"; var AvgCostAdjmtEntryPoint: Record "Avg. Cost Adjmt. Entry Point")
begin
    //A200F0002.Event
end;

Thanks for reporting this. We agree, and we’ll publish a fix asap, either in an update for the current version or in the next major release. Please do not reply to this, as we do not monitor closed issues. If you have follow-up questions or requests, please create a new issue where you reference this one.


kubernetes 1.16 does not work now

The alpha metadata.initializers field, deprecated in 1.13, has been removed.
https://github.com/kubernetes/kubernetes/pull/79504

error: error validating "./spark-operator.yaml": error validating data: ValidationError(Deployment.spec.template.metadata): unknown field "initializers" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta; if you choose to ignore these errors, turn validation off with --validate=false

The field has been removed from all the manifests in this repo in #678. I also created a PR in the Helm chart repo to remove the field: https://github.com/helm/charts/pull/18520.


Remove duplicate common folder contents

Fixes #1966
Let's see if there's any content using those and whether they should. In some cases, I saw the exact same snippet being referenced 3x because of the dupe folders.

They don't seem to be used since build only has warnings.

I'm trying to do a full rebuild here since I was not trusting the incremental build report but I'm not being able to see the results.


qucs-s: 24.1.0 -> 24.4.1

Updated Qucs-s from 24.1.0 to 24.4.1. The new version now supports Qt 6.8.0, which fixes a bug I was having where text wouldn't render on version 24.1.0.
Here's a changelog: https://github.com/ra3xdh/qucs_s/compare/24.4.0...24.4.1
This is my first pull request to nixpkgs, so please tell me if I'm doing something wrong.
Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Your PR currently targets the release branch nixos-unstable. Please change the target to the master branch.

Oops, sorry! I think I've changed it to master branch now.

@ofborg eval

Hmm, it seems like the CI is only triggered by new commits, could you please amend your commit and force-push again to re-trigger the CI for the master-branch?

hope I did that right, sorry I've never really messed with PRs before even outside of nixpkgs.

Seems alright, the CI is triggered. Now we have to wait for it (can take very long).

Already done in #348331


Can not debug on MacOS 13.3/13.4 when default_features are set to true

Hello,
When trying to debug with lldb on MacOS I this error:

a workaround is disable the default features for now:
git2 = { version = "0.17.1", default_features = false }

Hm, I haven't seen any issues like that. Can you provide a complete reproduction, preferably without using external commands like cargo debug?
That is, something like:

In the git2-rs repo, run cargo build --example fetch
Run lldb target/debug/examples/fetch
Type run

Also, can you provide the output of cargo -Vv, and also otool -L path/to/your/binary to see which OpenSSL it is linking? I think the likely cause is that there is some installation of OpenSSL on your system that it is not working with.

So I followed your repo and got the following:

cargo -Vv
cargo 1.71.0-nightly (ac8401032 2023-05-02)
release: 1.71.0-nightly
commit-hash: ac84010322a31f4a581dafe26258aa4ac8dea9cd
commit-date: 2023-05-02
host: aarch64-apple-darwin
libgit2: 1.6.3 (sys:0.17.0 vendored)
libcurl: 7.87.0 (sys:0.4.61+curl-8.0.1 system ssl:(SecureTransport) LibreSSL/3.3.6)
ssl: OpenSSL 1.1.1t  7 Feb 2023
os: Mac OS 13.3.1 [64-bit]

otool -L target/debug/examples/fetch
target/debug/examples/fetch:
	/opt/homebrew/opt/libgit2/lib/libgit2.1.6.dylib (compatibility version 1.6.0, current version 1.6.4)
<EMAIL_ADDRESS>(compatibility version 3.0.0, current version 3.0.0)
<EMAIL_ADDRESS>(compatibility version 3.0.0, current version 3.0.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/usr/lib/libiconv.2.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1319.100.3)

Thanks, I'm able to reproduce it now.  Looks like it works with OpenSSL 1.1.1, but has an issue with 3.1.
One workaround is to use the vendored-openssl feature, which won't use your system OpenSSL.
It looks like this is https://github.com/openssl/openssl/issues/20753. I'm not sure, but it looks like the fix for that has already been merged, but did not make it into the 3.1 release.
Considering this is likely an OpenSSL issue, I'm going to close as I think it is out of our control. I suspect this will be fixed in a future release of OpenSSL.


[FEATURE]: Admin should be able to edit reported snippet

Feature Summary
User can report snippet because of long comment  like this #599 or typos. Admin could modify snippet to remove comment, correct typos instead of deleting them.
Code of Conduct

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

I will working on this


[REVIEW] Adding KDD content

@BradReesWork LGTM, but I can't merge.

@taureandyernv I think @BradReesWork updated the README with the KDD 2020 info.


Add Label to FabricDescriptorStruct and hook up logic with UpdateFabricLabel

Once  #6596 goes in, there will be OCTET_STRING support in lists. This means we can add support for Label in the Fabric Descriptor Struct. This PR:

Adds Label to FabricDescriptor struct + regens files
Adds fabric label to AdminPairingInfo with persistence support
Hooks up UpdateFabricLabel to SetFabricLabel and writes the fabric label into the attribute list upon changes.

This cannot go in until #6596 goes in.

@shana-apple Needs restyle

@Damian-Nordic can you look at latest 2 commits?

@shana-apple Note that this was reverted....


Allow testing without using block syntax.

The follow gives me a parse error. "Extraneous ']' before ';'" on the line inside the for loop.
- (void)testDeleteAll {
    set = [NSSet setWithObjects:[NSObject mock], [NSObject mock], [NSObject mock], nil];
    for (NSObject *object in set) {
        [[object should] receive:@selector(delete)];
    }
    [set deleteAll];
}

At first, I thought it was just cause I wrapped the shoulds in a for loop, but I tried it the following way and got the same error on all the lines with should:
- (void)testDeleteAll {
    NSObject *object1 = [NSObject mock];
    [[object1 should] receive:@selector(delete)];
    NSObject *object2 = [NSObject mock];
    [[object2 should] receive:@selector(delete)];
    NSObject *object3 = [NSObject mock];
    [[object3 should] receive:@selector(delete)];
    set = [NSSet setWithObjects:object1, object2, object3, nil];
    [set deleteAll];
}

Does Kiwi only work inside blocks? I just want to use the mocking/stubing functionality... Is that going to be pulled out into a separate library like RSPec does it?

I just pasted this into the Kiwi non-block based example test case in the project and it compiled fine (although I'm assuming deleteAll is a category method you are testing).
What compiler are you using?

LLVM 3.0 w ARC enabled

Is your class a subclass of KWTestCase?
It looks like no, because your tests start with "test". Test Cases inside a KWTestCase start with "itShould", otherwise they will never be invoked. Of cause you also need to import "Kiwi.h".
I use Kiwi that way all the time. Just right in this moment even with LLVM 3.0/ARC and it works just fine.

Oh, thanks. No, it isn't, so that must be it. :)


Alarm Trigger with Hue Motion detectors

Hello,
I would like to implement an alarm system in Homekit. I'm using a Hue Homebridge plugin for the Philips Hue motion detectors. They are visible and working in Homekit. When I activate, for an example, the state Away and one of the motion detectors detects motion nothing happens. Do I miss something? Do I need to change something on the webserver? I only have a simple Apache2 webserver.
Thanks a lot.

Dear Mobius,
I am afraid I won't be able to help you with this issue. My plugin alone is not defining any logic regarding alarm states and actual alarms, it only acts as a relay: it simply forwards queries from your iPhone to an arbitrary web application of yours.
When you are using http-securitysystem, you need a web app to connect it to and it has to be the web app that listens for inputs and triggers responses. Basically: this plugin shows a completely 3rd party security solution as if it was homekit-compatible.
To give you an example:
I am using Node-Red for defining certain automation rules of my home. Node-red itself is not homekit-compatible, but it can expose web endpoints, on which it listens to requests and provides responses based on logic you define.
I have my home security logic inside node-red (it is receiving inputs from motion sensors and it is triggering alarms and lights, it can also control Philips Hue stuff for example) and I have this securitysystem homebridge-plugin running and relaying HomeKit requests to node-red web endpoints. This way my completely custom security solution seems like if it was a HomeKit device and I can use my phone or Siri to toggle it.

Dear Codetwice,
Sorry for my late response, I was for a couple of days on holidays. Yesterday I have installed your Plugin from the develop branch. The polling option is for me mandatory for the challenge to use the Philips Hue motion sensors. Interestingly I could only install the develop branch as local user without sudo and -g.
I have installed Node-Red in a virtual machine and it looks really interesting. But when I'm correctly informed, it is not possible to integrate the Hue sensors in Node Red.
I have now configured your plugin to work with my Hue sensors (homebridge-hue from ebaauw). I also made some chances in the homebridge-hue Plugin.
For everyone who is interested I added the changes Below:
First I added a new file (motion) inside my web server (/var/www/html/alarm). Inside the file HueSensor.js (/.../homebridge-hue/lib/) In the Function „HueSensor.prototype.heartbeat = function(obj) {“ I chanced and added following code (line ~580).
Original:
      this.durationTimer = null;
      this.service
        .updateCharacteristic(this.type.Characteristic, saved.value);
    }.bind(this), this.duration);
  } else {
    this.log.info(
      '%s: set homekit %s from %s%s to %s%s on %s', this.name,
    	this.type.name, old.hk.value, this.type.unit,
    	this.hk.value, this.type.unit, this.hk.lastupdated
    );
    this.service
      .updateCharacteristic(this.type.Characteristic, this.hk.value);
    }
}

}
Changed:
      this.durationTimer = null;
      this.service
        .updateCharacteristic(this.type.Characteristic, saved.value);
    }.bind(this), this.duration);
  } else {
    if (this.type.name == "motion") {
      var fs = require('fs');
      var alarmstatus;
      try {
        alarmstatus = JSON.parse(fs.readFileSync('/var/www/html/alarm/check', 'utf8'));
      } catch (err) {
        self.log("Error: alarmstatus = %s", alarmstatus);
      }

      if (alarmstatus !== 3) {
        this.log.info('alarmstatus ist: %s : Motion detected!', alarmstatus);
        if (alarmstatus == 0 || alarmstatus == 2) {
          this.log.info('alarmstatus ist:%s', alarmstatus);

          var fs = require('fs');
          if (this.name == "Motion Sensor Name 1" || this.name == "Motion Sensor Name 2" || this.name == "Motion Sensor Name 3" && old.hk.value == 0) {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
            fs.writeFile("/var/www/html/alarm/motion", 1, function(err) {
              if(err) {
                    return console.log(err);
              }
            });
          } else if (this.name == "Motion Sensor Name 1" || this.name == "Motion Sensor Name 2" || this.name == "Motion Sensor Name 3" && old.hk.value == 1) {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
            fs.writeFile("/var/www/html/alarm/motion", 0, function(err) {
              if(err) {
                    return console.log(err);
              }
            });
          } else {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
          }
        }
        if (alarmstatus == 1) {
          this.log.info('alarmstatus ist:%s', alarmstatus);
          var fs = require('fs');
          if (this.name == "Motion Sensor Name 1" || this.name == "Motion Sensor Name 2" || this.name == "Motion Sensor Name 3" || this.name == "Motion Sensor Name 4" && old.hk.value == 0) {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
            fs.writeFile("/var/www/html/alarm/motion", 1, function(err) {
              if(err) {
                    return console.log(err);
              }
            });
          } else if (this.name == "Motion Sensor Name 1" || this.name == "Motion Sensor Name 2" || this.name == "Motion Sensor Name 3" || this.name == "Motion Sensor Name 4" && old.hk.value == 1) {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
            fs.writeFile("/var/www/html/alarm/motion", 0, function(err) {
              if(err) {
                    return console.log(err);
              }
            });
          } else {
            this.log.info(
              '%s: set homekit %s from %s%s to %s%s on %s', this.name,
                    this.type.name, old.hk.value, this.type.unit,
                    this.hk.value, this.type.unit, this.hk.lastupdated
            );
          }
        }
      } else {
        fs.writeFile("/var/www/html/alarm/motion", 0, function(err) {
          if(err) {
                return console.log(err);
          }
        });
      }
    this.service
      .updateCharacteristic(this.type.Characteristic, this.hk.value);
    }
  }
}

}
When motion will be detected with specific motion sensors, the value 1 will be written inside motion file. When the motion sensor detects no motion anymore, the value 0 will be written. Which Motion Sensor is selected is based on the alarm state (alarmstatus). State 0 and 2 is in ma setup the same (Home and Night). State 1 = Away.
In the function "HttpSecuritySystemAccessory.prototype.setTargetState = function(state, callback)" I have chanced the "if (error)" as follows:
HttpSecuritySystemAccessory.prototype.setTargetState = function(state, callback) {
this.log("Setting state to %s", state);
var self = this;
var cfg = null;
switch (state) {
case Characteristic.SecuritySystemTargetState.STAY_ARM:
cfg = this.urls.stay;
break;
case Characteristic.SecuritySystemTargetState.AWAY_ARM :
cfg = this.urls.away;
break;
case Characteristic.SecuritySystemTargetState.NIGHT_ARM:
cfg = this.urls.night;
break;
case Characteristic.SecuritySystemTargetState.DISARM:
cfg = this.urls.disarm;
break;
}
var url = cfg.url;
var body = cfg.body;
if (url) {
	this.httpRequest(url, body, function(error, response) {
		if (error) {
			this.log("SetState function failed: %s", error.message);
			callback(error);
		} else {
			this.log("SetState function succeeded!");
			self.securityService.setCharacteristic(Characteristic.SecuritySystemCurrentState, state);
			callback(error, response, state);
            var fs = require('fs');
            fs.writeFile("/var/www/html/alarm/check", state, function(err) {
              if(err) {
                 return console.log(err);
              }
            });
		}
	}.bind(this));
} else {
	callback(null);
}

};
With this code the security state chance inside the HomeKit app will be written to the check file. I use this because I have no "intelligent" alarm system at the backend.
The chances at function "HttpSecuritySystemAccessory.prototype.getCurrentState = function(callback)" are as follows:
HttpSecuritySystemAccessory.prototype.getCurrentState = function(callback) {
var self = this;
self.debugLog("Getting current state");
this.getState(this.urls.readCurrentState.url, this.urls.readCurrentState.body, function(err, state) {
self.debugLog("Current state is %s", state);
var fs = require('fs');
var motion;
try {
motion = JSON.parse(fs.readFileSync('/var/www/html/alarm/motion', 'utf8'));
} catch (err) {
self.log("Error: Motion = %s", motion);
}
if (motion == "") {
fs.writeFile("/var/www/html/alarm/motion", 0, function(err) {
if(err) {
return console.log(err);
}
});
}
if (self.previousCurrentState !== 3 && motion == "1") {
state = 4;
self.previousCurrentState = state;
self.log("Current state changed to %s", state);
}
if (self.previousCurrentState !== state) {
self.previousCurrentState = state;
self.log("Current state changed to %s", state);
}
	callback(err, state);
});

};

Congrats and thanks for the explanation. I'd have never thought of using homebridge itself to connect devices!


NormalizeAtttribute breaks min/max date custom validators

On version 1.16 ... (we upgraded from 1.13)
NormalizeAtttribute converts the attribute value to number when input type is text and the validationMethod contains min, max or step.
We just encountered validation problems on existing software where a jquery datepicker is used on an input type text and custom validation for enforcing dateranges named 'mindate' and 'maxdate'. Dateformats like ddMMyyyy are converted to numbers ... dates with day < 10 cannot be parsed because the first zero is cutoff ...
Why normalizeAttributes for non-default validators? Imho the specific validator is responsible for correct parsing and determining the type.

could you provide a jsfiddle or similar reduced example code which shows your issue?

https://jsfiddle.net/Yoeri/w6txktdu/


Annotate code patches with influence on results

Is your feature request related to a problem? Please describe.
Code patches may have different influence on the outcome of an analysis. Changes may have no influence at all (documentation changes, comments, neglegible changes to the look and feel). Changes might just augment the available information, e.g., add a variant annotation. Changes might also change the outcome when an reanalysis is performed, e.g., when touching thresholds. Or they might change existing data, e.g., by invalidating existing results.
Describe the solution you'd like
We need to make a proper classification across one or more dimensions and must annotate git patches appropriately.
We also need to make this information transparent/available to users.
Describe alternatives you've considered
The history file as we have it right now is fine for now but we need to extend this.
Additional context

Change-id in Gerrit
AngularJS commit rules
git-interpret-trailer
GitHub action to add reviewed by trailer
GitHub action with checks
collection of commit message convention and git trailers
gitmoji, mostly curiosity, has some categories as well
for risk assessments, often the dimensions impact and risk are used
https://www.greenlight.guru/blog/how-to-assess-change-impact
https://en.m.wikipedia.org/wiki/ISO_13485

My take on this:

Description of change in patch is essential (either via text or reference to issue)
Short classification of projected impact on results is good documentation practice. However, proper quantification requires a re-validation which should not be part of the dev process
Risk assessment is done at the top level

Idea for patch message (together with @holtgrewe ):
Related-Issue: #xxx <OR> No-Related-Issue: free text reason
Influences-Results-Impact: none / revalidation_required

Upon release, incorporated patches are scanned for "Influences-Results-Impact" flags and transperantly mentioned in RELEASE NOTES. Users are nevertheless required to re-validated but it helps them to judge differences to prior results.


Update languages.yml

Description

This PR adds support for the BynixScript programming language in GitHub Linguist.

Added .bs and .bynixscript as recognized extensions for BynixScript.
The language ID is 9763900.
Assigned the color #29ca04 to BynixScript.

Checklist:

[ ] I am adding a new extension to a language.

[ ] The new extension is used in hundreds of repositories on GitHub.com

Search results for each extension:

https://github.com/search?type=code&q=NOT+is%3Afork+path%3A*.FOOBAR+KEYWORDS

[ ] I have included a real-world usage sample for all extensions added in this PR:

Sample source(s):

[URL to each sample source, if applicable]

Sample license(s):

[ ] I have included a change to the heuristics to distinguish my language from others using the same extension.

[x] I am adding a new language.

[x] The extension of the new language is used in hundreds of repositories on GitHub.com.

Search results for each extension:

https://github.com/search?type=code&q=NOT+is%3Afork+path%3A*.FOOBAR+KEYWORDS

[ ] I have included a real-world usage sample for all extensions added in this PR:

Sample source(s):

[URL to each sample source, if applicable]

Sample license(s):

[ ] I have included a syntax highlighting grammar: [URL to grammar repo]

[ ] I have added a color

Hex value: #RRGGBB
Rationale:

[ ] I have updated the heuristics to distinguish my language from others using the same extension.

[ ] I am fixing a misclassified language

[ ] I have included a new sample for the misclassified language:

Sample source(s):

[URL to each sample source, if applicable]

Sample license(s):

[ ] I have included a change to the heuristics to distinguish my language from others using the same extension.

[ ] I am changing the source of a syntax highlighting grammar

Old: [URL to grammar repo]
New: [URL to grammar repo]

[ ] I am updating a grammar submodule

[ ] I am adding new or changing current functionality

[ ] I have added or updated the tests for the new or changed functionality.

[ ] I am changing the color associated with a language

[ ] I have obtained agreement from the wider language community on this color change.

[URL to public discussion]
[Optional: URL to official branding guidelines for the language]

I've addressed the requested changes. Please review again.

I've addressed the requested changes. Please review again.

🤨 You haven't followed the instructions in the CONTRIBUTING.md file nor have you filled in the template in the PR.

Haven't followed the instructions anywhere?

Haven't followed the instructions anywhere?

Yup. As per CONTRIBUTING.md we need real world samples for all new extensions and you probably want to include a include a grammar for syntax highlighting else your new language will be just as exciting as plain text 😁 .
The template in the PR body also needs to be filled in with search links for each of the file extensions to support our popularity requirement.

I'm still working on syntax highlighting. And btw, are 3 samples enough?

Three is enough, but they need to be real world examples, not contrived simple examples or "hello world" files as they're used to train the classifier.

Oh yes, and we don't accept PRs adding hobby languages or very new languages... we require languages to be actively used on GitHub. I see there isn't a single file on GitHub with the .bynixscript extension so we will not accept this extension. There are a lot of .bs files but I don't think they're thuis new language.

I've just found your language repo... it's only two weeks old. There is no way your language is going to be anywhere near to meeting our usage requirements. I'm closing this PR. Please feel free to open a new PR once your language meets our usage requirements.

Can I make another pull request if all the requirements are met?

No. Our only requirement is your language meets out usage requirements. It doesn't matter if it takes 10 days or 10 years.

May I ask, does github linguist need vim highlighting?

We use TextMate compatible grammars. This is stated in the CONTRIBUTING.md file.


Bash command to clear the VSCode integrated terminal scrollback on Windows 10?

Issue Type: Bug
I'm happily running Git bash in VSCode on Windows with:
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
The "Terminal: Clear" command (workbench.action.terminal.clear, which I have bound to Control-L) clears not only the screen but also the scrollback buffer, as expected, so trying to scroll up does nothing because there is nothing to show.
How can I reproduce this with a shell command?
The clear command does not clear the scrollback, neither does reset. These commands work by outputting escape sequences to the screen.  Since the terminal thinks it is "TERM = xterm-256color", the relevant escape sequence should be the one output by the shell command printf "\e[3J" which works on all other xterm emulations (and is part of clear's output).  In VSCode it does not clear the scrollback but, oddly, resurrects one screenful of previously cleared scrollback.
VS Code version: Code 1.53.2 (622cb03f7e070a9670c94bae1a45d78d7181fbd4, 2021-02-11T11:48:04.245Z)
OS version: Windows_NT x64 10.0.19042

System Info

Item
Value

CPUs
Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz (8 x 3392)

GPU Status
2d_canvas: enabledgpu_compositing: enabledmultiple_raster_threads: enabled_onoop_rasterization: enabledopengl: enabled_onprotected_video_decode: unavailable_offrasterization: enabledskia_renderer: enabled_onvideo_decode: enabledvulkan: disabled_offwebgl: enabledwebgl2: enabled

Load (avg)
undefined

Memory (System)
15.96GB (10.40GB free)

Process Argv
--crash-reporter-id 13260536-d995-489d-8f04-2bc386bb128a

Screen Reader
no

VM
0%

Extensions (4)

Extension
Author (truncated)
Version

vscode-eslint
dba
2.1.14

seito-openfile
Fr4
1.8.7

gc-excelviewer
Gra
3.0.41

org-mode
vsc
1.0.0

A/B Experiments
vsliv368:30146709
vsreu685:30147344
python383cf:30185419
pythonvspyt617cf:30253240
vspor879:30202332
vspor708:30202333
vspor363:30204092
vswsl492cf:30256860
vstry244cf:30256637
pythonvsdeb440:30248342
pythonvsded773:30248341
pythonvspyt600cf:30251589

Related to https://github.com/xtermjs/xterm.js/issues/106
Not sure we can do anything about this as I believe we handle the sequence we're given correctly.

You can check what VS Code receives from the pty by logging escape sequences https://github.com/microsoft/vscode/wiki/Terminal-Issues#enabling-escape-sequence-logging

Thanks Tyriar.   I executed this command in bash:
sleep 2; printf "(\e[3J)"; sleep 99
I cleared the dev console during the sleep 2.  During the sleep 99, the console showed:
xterm.js: parsing data ()
Something deleted my \e[3J.
workbench.action.terminal.clear clears scrollback but also shows nothing in dev console.

Although this is a really old issue, it's still relevant. Even today, no matter whether I'm running cmd, Powershell 7, Git Bash or any other profile, their respective clear command only clears one screenful of the terminal, without actually clearing the scrollback buffer.

Workarround that worked for me in zsh in mac
add to your ~/.zshrc the following line
alias clear="printf "\e[3J"; clear"

I guess similar approaches can be done with other shells.
for windows shells you might be able to create a bat in the PATH that overrides cls? not sure.
HTH

Under cmd.exe inside VSCode, none of the "clear" termcodes will clear the scrollback, even though they should.
In fact, just the 'cls' command should clear the scrollback, as it does under classic cmd window, and also Windows Terminal.
@echo off
setlocal enableextensions

call :testit "[3J" "erase scrollback"         || exit /b
call :testit "[2J" "erase all"                || exit /b
call :testit "[1J" "erase above"              || exit /b
call :testit "[0J" "erase below"              || exit /b
call :testit "[J"  "erase below (alternate)"  || exit /b
call :testit "c"   "reset term"               || exit /b
echo Done.

goto :eof
:testit
REM this loop will probably reach the scrollback on most window sizes
for /l %%F in (30,1,37) do (
    for /l %%B in (40,1,47) do (
        call :echoe "\x1b[%%F;%%Bm%%F;%%B\x1b[0m"
    )
)
echo. & echo.
set /p "_=Press enter to test %1 (%~2): "
if "%_%"=="q" exit /b 1
call :echoe \x1b%1
if "%~1"=="c" exit /b && REM "(exit because c is the last test)"
set /p "_=Press enter to move on to the next test."
exit /b 0
goto :eof

goto :eof
:echoe
setlocal
set "arg=%~1"
set "arg=%arg:\x=0x%"
forfiles /p "%~dp0." /m "%~nx0" /c "cmd /c <nul set /p _=%arg%"
goto :eof

for me, it works:


Swift 3.0/ Xcode 8 support

Hi, I'm looking to migrate my code to Swift 3. I was wondering if you will provide support for Swift 3 in the near future. Thanks!

Swift 3 conversion completed on https://github.com/SwiftArchitect/TGPControls/tree/swift


QueryDSL, illegal argument type when projecting LocalDateTime from JPASQLQuery into DTO

Very similar situation to issue#575, but with conversion Timestamp/Date -> LocalDate/LocalDateTime in native queries. In my s-classes I use LocalDate field and when I use Projection.constuctor to fill in my DTO, I get java.lang.IllegalArgumentException: argument type mismatch error. I used SQLQuery before, but it was not the best choice for me, since it doesn't pass through JPA. Do you have any advice in that case?

@TumanovViktor hi im same problem
u solved this?

faced this issue but with ZonedDateTime


ci(cypress): disable failing test

SUMMARY
Disable flaky test that's causing unnecessary queues on CI right now.
BEFORE/AFTER SCREENSHOTS OR ANIMATED GIF

TEST PLAN

ADDITIONAL INFORMATION

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

Codecov Report

Merging #12523 (b42ed12) into master (ec0e872) will decrease coverage by 1.27%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #12523      +/-   ##
==========================================
- Coverage   64.43%   63.16%   -1.28%
==========================================
  Files        1014      485     -529
  Lines       49571    29931   -19640
  Branches     4829        0    -4829
==========================================
- Hits        31943    18907   -13036
+ Misses      17451    11024    -6427
+ Partials      177        0     -177

Flag
Coverage Δ

cypress
?

javascript
?

python
63.16% <ø> (-0.76%)
:arrow_down:

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

Impacted Files
Coverage Δ

superset/sql_validators/postgres.py
50.00% <0.00%> (-50.00%)
:arrow_down:

superset/views/database/views.py
62.69% <0.00%> (-24.88%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/db_engine_specs/sqlite.py
65.62% <0.00%> (-9.38%)
:arrow_down:

superset/db_engine_specs/presto.py
73.37% <0.00%> (-8.66%)
:arrow_down:

superset/databases/commands/create.py
83.67% <0.00%> (-8.17%)
:arrow_down:

superset/databases/commands/update.py
85.71% <0.00%> (-8.17%)
:arrow_down:

superset/sql_validators/base.py
93.33% <0.00%> (-6.67%)
:arrow_down:

superset/db_engine_specs/base.py
79.38% <0.00%> (-6.45%)
:arrow_down:

superset/views/database/forms.py
83.33% <0.00%> (-5.56%)
:arrow_down:

... and 547 more

Continue to review full report at Codecov.

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

Codecov Report

Merging #12523 (b42ed12) into master (ec0e872) will decrease coverage by 1.27%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master   #12523      +/-   ##
==========================================
- Coverage   64.43%   63.16%   -1.28%
==========================================
  Files        1014      485     -529
  Lines       49571    29931   -19640
  Branches     4829        0    -4829
==========================================
- Hits        31943    18907   -13036
+ Misses      17451    11024    -6427
+ Partials      177        0     -177

Flag
Coverage Δ

cypress
?

javascript
?

python
63.16% <ø> (-0.76%)
:arrow_down:

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

Impacted Files
Coverage Δ

superset/sql_validators/postgres.py
50.00% <0.00%> (-50.00%)
:arrow_down:

superset/views/database/views.py
62.69% <0.00%> (-24.88%)
:arrow_down:

superset/db_engine_specs/mysql.py
79.59% <0.00%> (-12.25%)
:arrow_down:

superset/db_engine_specs/sqlite.py
65.62% <0.00%> (-9.38%)
:arrow_down:

superset/db_engine_specs/presto.py
73.37% <0.00%> (-8.66%)
:arrow_down:

superset/databases/commands/create.py
83.67% <0.00%> (-8.17%)
:arrow_down:

superset/databases/commands/update.py
85.71% <0.00%> (-8.17%)
:arrow_down:

superset/sql_validators/base.py
93.33% <0.00%> (-6.67%)
:arrow_down:

superset/db_engine_specs/base.py
79.38% <0.00%> (-6.45%)
:arrow_down:

superset/views/database/forms.py
83.33% <0.00%> (-5.56%)
:arrow_down:

... and 547 more

Continue to review full report at Codecov.

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