[BUG] TS0601 _TZE200_fzo2pocs Blind Motor Inverted Controls

Describe the bug
Zemismart TS0601 _TZE200_fzo2pocs Blind Motorsc connected to Conbee II using ZHA in Home Assistant.
When configured out of the box, the position and up/down arrows in home assistant are inverted.
I have changed cover_inverted cluster in TuyaWindowCoverControl to Bool.true and the position is now working correctly.
However the up and down arrows make the covers open/close inverted and if the blind is fully open or closed, the only way to open it is to change the position.
I've tried setting motor_direction both to true and false but neither change the button controls.
To Reproduce
Steps to reproduce the behavior:

Pair blind motor
set cover_inverted cluster in TuyaWindowCoverControl to Bool.true (the position will now show correctly)
try to open or close the blind
blind goes the opposite direction to button pressed.

Expected behavior
When I press the down/ close button the blind goes down.
When I press the open/ up button the blind goes up.
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Device Signature:
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 142>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0202",
      "in_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0x000a",
        "0x0102",
        "0xef00"
      ],
      "out_clusters": [
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_fzo2pocs",
  "model": "TS0601",
  "class": "zhaquirks.tuya.ts0601_cover.TuyaZemismartSmartCover0601"
}

When I pushed up (which makes the motor go down) and then stop:
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Sending Tuya Cluster Command.. Manufacturer is _TZE200_fzo2pocs Cluster Command is 0x0000, Arguments are ()
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Sending Tuya Command. Paylod values [endpoint_id : 1, Status : 0, TSN: 0, Command: 0x0401, Function: 0, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.zigbee.application] Sending Zigbee request with tsn 1 under 2 request id, data: b'050210010000000104000100'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_request (27, 2, 0, <DeconzAddressEndpoint address_mode=2 address=0xC72D endpoint=1>, 260, 61184, 1, b'\x05\x02\x10\x01\x00\x00\x00\x01\x04\x00\x01\x00', 2, 0)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data request response: [2, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, 2]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_CONFIRM|2: 166>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_confirm (0,)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|APSDE_DATA_CONFIRM|2: 174>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data confirm response for request with id 2: 00
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Request id: 0x02 'aps_data_confirm' for <DeconzAddressEndpoint address_mode=ADDRESS_MODE.NWK address=0xc72d endpoint=1>, status: 0x00
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [30, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\x0c\x02\x10\x01\x0b\x00\x00', 0, 175, 255, 114, 227, 195, 0, -37]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=True is_reply=True disable_default_response=False> manufacturer=4098 tsn=1 command_id=Command.Default_Response>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'0c0210010b0000'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [33, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\x08\x01\x00\x00\x01\x04\x00\x01\x00', 0, 175, 255, 114, 227, 195, 0, -37]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=8 command_id=1>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=0, command_id=1025, function=0, data=[1, 0])]
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0001, Tuya Paylod values[Status : 0, TSN: 0, Command: 0x0401, Function: 0x00, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09080100000104000100'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [34, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xff64>, 1, 260, 0, b'\x18U\n\x01\x00 R\xe2\xff \x15', 0, 175, 255, 186, 225, 195, 0, -57]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xff64:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=85 command_id=Command.Report_Attributes>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xff64:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=82>), Attribute(attrid=65506, value=<TypeValue type=uint8_t, value=21>)]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xff64:1:0x0000] Attribute report received: app_version=82, 65506=21
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xff64>, ep: 1, profile: 0x0104, cluster_id: 0x0000, data: b'18550a01002052e2ff2015'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [33, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\x08\x01\x00\x00\x01\x04\x00\x01\x00', 0, 175, 255, 117, 227, 195, 0, -37]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=8 command_id=1>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=0, command_id=1025, function=0, data=[1, 0])]
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0001, Tuya Paylod values[Status : 0, TSN: 0, Command: 0x0401, Function: 0x00, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09080100000104000100'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [33, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\x08\x01\x00\x00\x01\x04\x00\x01\x00', 0, 175, 255, 117, 227, 195, 0, -38]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=8 command_id=1>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=0, command_id=1025, function=0, data=[1, 0])]
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0001, Tuya Paylod values[Status : 0, TSN: 0, Command: 0x0401, Function: 0x00, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09080100000104000100'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [33, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\x08\x01\x00\x00\x01\x04\x00\x01\x00', 0, 175, 255, 117, 227, 195, 0, -37]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=8 command_id=1>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=0, command_id=1025, function=0, data=[1, 0])]
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0001, Tuya Paylod values[Status : 0, TSN: 0, Command: 0x0401, Function: 0x00, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09080100000104000100'
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [33, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\x08\x01\x00\x00\x01\x04\x00\x01\x00', 0, 175, 255, 117, 227, 195, 0, -37]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=8 command_id=1>
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=0, command_id=1025, function=0, data=[1, 0])]
2022-01-31 13:10:37 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0001, Tuya Paylod values[Status : 0, TSN: 0, Command: 0x0401, Function: 0x00, Data: [1, 0]]
2022-01-31 13:10:37 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09080100000104000100'
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [36, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, 1, 260, 61184, b'\t\t\x02\x00\x01\x03\x02\x00\x04\x00\x00\x002', 0, 175, 255, 117, 227, 195, 0, -38]
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=9 command_id=2>
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy.zcl] [0xc72d:1:0xef00] ZCL request 0x0002: [Command(status=0, tsn=1, command_id=515, function=0, data=[4, 0, 0, 0, 50])]
2022-01-31 13:10:38 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Received Attribute Report. Command is 0x0002, Tuya Paylod values[Status : 0, TSN: 1, Command: 0x0203, Function: 0x00, Data: [4, 0, 0, 0, 50]]
2022-01-31 13:10:38 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Tuya Attribute Cache : [{8: 50, 32770: 1, 32769: ''}]
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0xc72d>, ep: 1, profile: 0x0104, cluster_id: 0xef00, data: b'09090200010302000400000032'
2022-01-31 13:10:38 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Sending Tuya Cluster Command.. Manufacturer is _TZE200_fzo2pocs Cluster Command is 0x0002, Arguments are ()
2022-01-31 13:10:38 DEBUG (MainThread) [zhaquirks.tuya] 5c:02:72:ff:fe:94:31:fe Sending Tuya Command. Paylod values [endpoint_id : 1, Status : 0, TSN: 0, Command: 0x0401, Function: 0, Data: [1, 1]]
2022-01-31 13:10:38 DEBUG (MainThread) [zigpy_deconz.zigbee.application] Sending Zigbee request with tsn 3 under 4 request id, data: b'050210030000000104000101'

Can confirm I have the same problem with my Zemismart TS0601 _TZE200_fzo2pocs cover blind motors. I've just learned to live with it for six months now. Would be great if we can find a solution though.

See https://github.com/zigpy/zha-device-handlers/issues/1399 for a similar issue.
It's possible that _TZE200_fzo2pocs would just need to be added to TUYA_COVER_INVERTED_BY_DEFAULT here:
https://github.com/zigpy/zha-device-handlers/blob/16f298e9ce293d241592f86573e909f9c32809d0/zhaquirks/tuya/__init__.py#L129-L137 or perhaps just modify the command sent:
https://github.com/zigpy/zha-device-handlers/blob/16f298e9ce293d241592f86573e909f9c32809d0/zhaquirks/tuya/__init__.py#L106

Thanks @TheJulianJES for the push.
I ended up needing to do both changes to get my blinds to work.
For some reason, I never pushed them back as a pull request.
I'll do a pull request of my fix and hope they don't break the blinds for other users!

@jameshirka , @dmulcahey,
I would argue the change merged in #1510 is actually a regression and the bug was not there in the first place. Depending on how you actually fit the cover, it will dictate the required command to open or close the cover. Tuya has made some provision for that and allows to invert the orientation via the invert command. I don't think it's linked to variations in the way the Tuya devices are implemented.
The way to logically invert the device is to send send it an invert command. In order to do that in developperTools->Services, you can send:
invert
service: zha.issue_zigbee_cluster_command
data:
  ieee: 'xx:xx:xx:xx:xx:xx:xx:xx'
  endpoint_id: 1
  cluster_id: 258
  cluster_type: in
  command_type: server
  command: 6
  args:
    - 0
    - 0
    - 1029
    - 0
    - [1, 1]

stop invert
service: zha.issue_zigbee_cluster_command
data:
  ieee: 'xx:xx:xx:xx:xx:xx:xx:xx'
  endpoint_id: 1
  cluster_id: 258
  cluster_type: in
  command_type: server
  command: 6
  args:
    - 0
    - 0
    - 1029
    - 0
    - [1, 0]

If we start to modify the code every time someone has their cover inverted it will be a never ending story.
Now maybe some effort should be done to make it easier to invert the device sense. I don't know where this information should be. Maybe there should some work done in the UI to allow to control that.
Now I wouldn't like to change the implementation again because I went trough the pain to invert my covers to match the latest release. That would be unfortunate to have to change it again.

Its possible implanting one or 2 switches in ZHA GUI like we have made with tuya TRVS but i think its also need changing the key mapping for up and down that is being little more tricky for getting it nice in the GUI then we can describe the switches from the quirk side.
One version is saving the attribute reversed and if its revered the swapping the up and down keys and if its not reversed its using the "original" key mapping but its must being code adding for doing that logic in the quirk handling.

@MattWestb ,if you can add an invert switch entity in the UI it would be perfect. You don't need to invert the commands in the quirk. I believe the TS0601 will report whether they're inverted or not. Then you can send the appropriate command when switch is toggle.
I can try to have a look, but I don't have much time for that those days.

@blauret great find.
Weird that I have blinds installed to roll from both sides and yet both were inverted for me.
I tried setting the invert by setting the cover_inverted cluster to no avail and seeing @SweAdelpha having the same issue, I just inverted the controls.
I'll have a look and see what I can do about adding the inverted cluster command and an inverted switch when I have a few hours.

@MattWestb @blauret ... I agree - it would be nice to have a invert switch on the HA side to invert blinds.
In the interim i think we should revert changes from PR:... https://github.com/zigpy/zha-device-handlers/pull/1510
I can create the pr in a few hours if necssary.
The reason being - when I add the blind to tuya using their official app it works correctly. The command being sent from ZHA now is inverted and all my blinds and scenes are broken! (probably for other people too). @jameshirka hopefully you don't mind if we do this?

@sushant40 happy to roll it back now that @blauret has a workaround.
Weird that yours work in the app correctly as mine also work in the app correctly but were inverted in HA.
We can then look at an invert switch in the GUI to cover this scenario for others.

Cool - i have created https://github.com/zigpy/zha-device-handlers/pull/1555 to revert the change.

same issue here, everything was fine before

The PR to revert the change hasnt been approved? Does anyone know how to nudge it along?

Resolved.

👍

FYI for people who end up here after a Google search like I did: inverting the motor via the remote control also fixed this in HA for my Zemismart ZM79-ZB units, meaning that I didn't have to adjust any quirks or send any Zigbee commands. To do this, press the remote set button (hidden behind the battery cover) four times and then press up / open on the remote. You can repeat this process to un-invert the controls as well.

FYI for people who end up here after a Google search like I did: inverting the motor via the remote control also fixed this in HA for my Zemismart ZM79-ZB units, meaning that I didn't have to adjust any quirks or send any Zigbee commands. I suspect that this is the same for the TZE200 units. To do this, press the remote set button (hidden behind the battery cover) four times and then press up / open on the remote. You can repeat this process to un-invert the controls as well.

That's also an option, if you have the RF remote control!!!


Legacy command no longer call callback with error

Description
Since @redis/client 1.5.0, callback are no longer called when an error is thrown.
Issue can be reproduced using the following code:
  const client = createClient({ url, legacyMode: true });

  await client.connect();

  const result = await promisify(client.sendCommand).call(client, 'PING');
  console.log(`Result is ${result}`);

> OK "Result is PONG" is printed

  try {
    await promisify(client.sendCommand).call(client, 'FAIL');
  } catch (e) {
    console.log(`Error is ${e}`);
> KO, we never reach this code
  }

From what I was able to investigate, it seems the issue was introduced here: https://github.com/redis/node-redis/commit/aa75ee49#diff-6674346081a0261b88e15fb0ae5a540ec522569c7310ff00a34b4b0c34a0c07aL316
as the catch mechanism to forward the error to the callback was removed.
To give you a bit more context on my use case, I encountered this issue because I use redlock as dependency of my project.
Redlock use the callback error mechanism to load scripts if they are missing.
https://github.com/mike-marcacci/node-redlock/blob/870778cd520f9649e80f74fa755ee0f12519c683/redlock.js#L455
Node.js Version
v19.4.0
Redis Server Version
6.2.10
Node Redis Version
4.6.1
Platform
windows
Logs
No response

@msebire version 4.6.2 is on npm, sorry about that


Uncomment Plasma window management protocol

The protocol was fixed by https://github.com/KDE/plasma-wayland-protocols/commit/b00501d7cdf7c4107af03ca29cb14fc0d21c5b3e which seems to be working alright with wayland-scanner locally.

Neat, thanks for the heads-up!

ALl seems good (the CI failure is irrelevant to this PR).
Could you just add a changelog entry in the wayland-protocols-plasma changelog for this, under the "unreleased" section?

Perfect, thanks!


[CT-1385] [CT-1381] [Feature] Improved Lineage DAG Layout

Is this your first time submitting a feature request?

[X] I have read the expectations for open source contributors
[X] I have searched the existing issues, and I could not find an existing issue for this feature
[X] I am requesting a straightforward extension of existing dbt functionality, rather than a Big Idea better suited to a discussion

Describe the feature
I propose 2 features:
Pinned x-coordinate ranges for nodes in the Dag
Minimized cross overs when deciding the y-coordinate of models.
In my view the x-coordinate would be the best way to view layers.
For example, consider a DAG with 4 layers:

Layer 1: Sources & Seeds
Layer 2: Bronze
Layer 3: Silver
Layer 4: Gold

I'd want no layer 1 node to be to the right of a layer 2 node, etc...
With regards to minimizing edge crossings. I know this is hard (NP Hard), but I think dot and similar tools do a pretty good job. See https://docs.google.com/viewer?url=http://www.graphviz.org/pdf/dotguide.pdf
Describe alternatives you've considered
I considered exporting the DAG file and visualizing it myself
Who will this benefit?
Anyone who uses the DAG as a form of troubleshooting/documentation
Are you interested in contributing this feature?
No, I don't know JS
Anything else?
No response

Since dbt best practices recommends this layering, it would be very useful to see it in the docs. I'd love to re-open this feature request.


Jenkins Job Improvments, Inline shell script, TeamCity Build

Jenkins Job improvments:

support crumb 2 step authentication (jenkins 2.11)
support non standard or defaults port and http / SSL protocols
TeamCity Build with Shelvset / Source Branch (with python runner)
Generic Inline Shell Script

Hi @grawcho, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!

In order for us to evaluate and accept your PR, we ask that you sign a contribution license agreement. It's all electronic and will take just minutes. I promise there's no faxing. https://cla.microsoft.com.

TTYL, MSBOT;

@grawcho - if you're still interested in this, break them up into separate PRs.  note latest shellscript task supports inline

sure thing.
will do.
Thanks.


TAJO-1696: Resource calculator should consider the requested disk resource at the first stage

+1
Great! @jihoonson


Test-Table feature only works partially

Using the following test example:
`func TestSomeTest(t *testing.T) {
tt := []struct {
name   string
method string
url    string
apiKey string
status int
}{
{name: "AccessDenied1", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
{name: "AccessDenied2", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
{name: "AccessDenied3", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
{name: "AccessDenied4", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
{name: "AccessDenied5", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
{name: "AccessDenied6", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
}
for _, tc := range tt {
	tc := tc
	t.Run(tc.name, func(t *testing.T) {
		fmt.Println(tc.name, tc.method, tc.url, tc.apiKey, tc.status)
	})
}

}
And running it usinglua require('neotest').run.run()` It will run the whole test but only show checkmarks for some of the tests (seems random which ones it picks). Also looking at the neotest-summary I also just see 2-3 of the tests:

I'm using the latest neovim stable 0.8.1 and the latest golang 0.19.4

Please feel free to open a PR to help fix this. This plugin has no official maintainer and is entirely contributed by the community.

Okay, thanks. I've spent half an hour trying to understand what's going on there but as treesitter queries are new for me, I'd need to spend much more time to get a grasp on this. Till then I'll turn test_tables off for now.

Unfortunately, there's still an issue starting at more than 9 tests, using this example:
func TestSomeTest(t *testing.T) {
	tt := []struct {
		name   string
		method string
		url    string
		apiKey string
		status int
	}{
		{name: "AccessDenied1", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied2", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied3", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied4", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied5", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied6", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},

		{name: "AccessDenied7", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied8", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied9", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
		{name: "AccessDenied10", method: http.MethodGet, url: "/api/nothing", apiKey: "lalala", status: http.StatusForbidden},
	}
	for _, tc := range tt {
		tc := tc
		t.Run(tc.name, func(t *testing.T) {
			fmt.Println(tc.name, tc.method, tc.url, tc.apiKey, tc.status)
		})
	}
}

"AccessDenied1" falls out of the results. @sergii4 @akinsho should we reopen this?

@marcomayer seems so. Nice catch. I can take a look later

Probably it is a nvim-treestitter issue. I run same query on the online tree-sitter playground and using tree-sittier-go locally and all is works perfectly.
This issue only reproduces in nvim environment
I have opened a bug on nvim-treesitter repo.

@akinsho @marcomayer I pulled out last version of nvim that includes fix. Everything is working for me now.
Could you please check it on your side?

@sergii4 thanks a lot, yes this fixes it!

@marcomayer thanks for drawing attention to it!


Sharing queries between slices, caching, and other hard things.

Make sure these boxes are checked before submitting your issue - thank you!

[X] I have checked the superset logs for python stacktraces and included it here as text if any
[X]I have reproduced the issue with at least the latest released version of superset
[X] I have checked the issue tracker for the same issue and I haven't found one similar

Superset version
Current
Expected results
Cached Data, reduced number of quiries, quick response time initially; rainbows and unicorns strategically.
Actual results
Confusion and Pain
Steps to reproduce
Running a Dashboard with lots of queries and thinking of my poor database.
I am enjoying Superset, and I have a dashboard created and working. I've noticed that when  I run queries it seems I could be "saving" trips if I could find a way to materialize certain queries and share the data between slices.
For example,  I may do a query that shows sales for items (number of items) grouped for a given data in a pie chart, but also want to show a total of all sales... I suppose one is a select itemnum, count() the other is just just count()  But I guess, I could think of other potential items where the data could be shared between slices (showing different visualizations of the same data).
So that led me to searching the issues, and I found Caching, however... call me naive, call me ignorant, call me maybe, but when I read it, it seemed more to be caching the web presentation layer (I.e. FLASK is a web thing right?) or does this actually cache data request too?  This is where I got super confused, and started on the path of the dark side.   I guess, is caching the right way for reduce the number of queries?   Sharing between slices even possible?  Is 42 really the answer to life, the universe, and everything?
Important questions for a visualization tool.

Notice: this issue has been closed because it has been inactive for 312 days. Feel free to comment and request for this issue to be reopened.

@mistercrunch
Is the above mentioned feature / request exists in superset (or) are there any plans to implement it?
can you please let us know about this feature / request.
Thanks in advance.

@JohnOmernik
hey john!,
did you find any way to acheive this, i also need the same kind of implementation.

Hey @JohnOmernik  and @SaiManojG , same thoughts here. Did you get anywhere with this issue? :)
Cheers,
Nikita


M3-5553: Revisions to Account Maintenance Page for Volumes

Description

Ensure the Status indicator and text are properly aligned vertically

Same issue as #7983

Hide Pagination controls if there are not >25 results
Move the Download CSV link outside of the table to the bottom right below it

Still hides link when accordion is collapsed

How to test

Go to /account/maintenance in Cloud Manager
Test the three changes listed above
Double check functionality of tables and accordians

I was able to address @DevDW's feedback. The solution is not super elegant, but works as expected. Can I get one more review or a re-review from someone? cc @tiffwong


Chore belindas nextjs update api evironment

This PR contains a quality of life update! Now you can set the API address from your .env file. If the developer is using a localhost based API address, the API address will be printed to the console.
How to test:

Use the .env.sample to help set up your .env file. Once set, use npm run dev and run backend
Make sure localhost port number matches with backend port number

Changing the api address via the env seems to be working

How would I test this PR locally? Changing the API address in the env works fine, but I notice that there's issues with signing in and data not being fetched. Usually, I would comment out the env API URL lines on the Sign In page and next.config.js, but how would I do that in this PR?

@intisarosman1 I think the issue might the localhost address does not contain the same port value as the backend server.
So If the frontend .env file contains 3005 (API_URL=http://localhost:3005/api) then the backend listening port value should be 3005


Question: How best to go about learning to create Azue pipeline and build processes

@AArnott I've been studying how you've setup azure pipeline and the overall build process for this project and it is elegant, and most importantly, necessary for repeatability, determinate high quality and availability. I was just wondering how does one go about learning to do it all; any suggestions on where to start? I've grown so dependent on VS builds and legacy deployment and Installer, but now I'm moving everything to azure pipelines and Azure App Center for WPF and other native apps via Xamarin. I'm also working on the Desktop samples for Nerdbank.Streams and wanted increase my domain knowledge around the build process.

The Azure Pipelines documentation on docs.microsoft.com are quite good, IMO. I learned much of what I do from that, and simply from owning or influencing dozens of repos so I've seen a lot of what works and doesn't.
I've tried to encapsulate all the "good" practices in https://github.com/aarnott/library.template. So if you want to see a repo that is nothing but pure best practices for any .NET library repo, I suggest you look there.


toHex

Codecov Report

Merging #23 into master will increase coverage by 0.00%.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##           master      #23   +/-   ##
=======================================
  Coverage   99.32%   99.33%
=======================================
  Files          28       29    +1
  Lines         744      747    +3
  Branches       95       97    +2
=======================================
+ Hits          739      742    +3
  Misses          4        4
  Partials        1        1

Impacted Files
Coverage Δ

src/6502/assembler/index.js
98.97% <100.00%> (ø)

src/6502/disassembler/index.js
100.00% <100.00%> (ø)

src/utils/tohex.js
100.00% <100.00%> (ø)

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 0baebe0...1acef41. Read the comment docs.


Add Enumeration

Introduce another way of enumeration scheme. It will be introduced later. Thanks.

@noahlevenson we are going to close this one so we can figure out a better approach to versioning and enumeration (per some of your comments last week)


Is coupled to tapzero

We don't want to depend on using tapzero. Should be able to use this with any test library — tape, etc.
Currently we are using testContext from ssc-test: https://github.com/nichoth/tap-ssc-example/blob/main/test/index.js#L5
testContext(tapzero, { headless: true })

This watches the global property tapzero.GLOBAL_TEST_RUNNER.completed to know when to exit the process.
How to do this using any test library? Need to know when tests are done, and exit the process.

Found a hacky solution for now — https://github.com/nichoth/tap-ssc/blob/b1ca971ad59600c29afe927c43a7700d6e154837/cli.mjs#L23
Use
process.kill(child.pid + 1)

Another other option would be to have an ssc program that reads from stdin, then runs the code that is piped in. You could add the testing code inline to a script tag:
const script = document.createElement('script');
script.type = 'text/javascript';
script.text = aStringFromStdin;
document.body.appendChild(script);


Add a cache for dns?

The cache2go is a good choice for caching dns-results.

The recommended way is to put dnsmasq in front and let it do caching.


[branch-2.1]featImplementing Job in Nereids (#41391)

Proposed changes
The JOB's execution SQL is currently defined by an older CUP file, which causes some issues with lexical analysis in the new optimizer as it doesn't pass under the old optimizer. Since the JOB's underlying execution already uses the new optimizer, we're planning to fully migrate to ANTLR4 for consistency.
(cherry picked from commit 334b473deb5ff2e5c29c5eedcfac95dd806ae622)
#41391

run buildall


XML Whitespace Handling

Smithy 1.12 introduced new protocol tests around XML whitespace handling.
These are currently failing. Task is to investigate and fix whatever we need to in serde-xml to implement the tests/protocol correctly.

// file: runtime/serde/serde-xml/common/test/aws/smithy/kotlin/runtime/serde/xml/XmlStreamReaderTest.kt

    @Test
    fun itHandlesWhitespaceValues() = runSuspendTest {
        val payload = """<string>  </string>""".encodeToByteArray()
        val actual = xmlStreamReader(payload).allTokens()
        val expected = listOf(
            XmlToken.BeginElement(1, "string"),
            XmlToken.Text(1, "  "),
            XmlToken.EndElement(1, "string"),
        )

        assertEquals(expected, actual)
    }

This test fails


Create calendar.cpp

Have you read the Contributing Guidelines on Pull Requests?
(Write your answer here.)
yes
(Write your answer here.)
Checklist

[x] I've read the contribution guidelines.
[x] I've checked the issue list before deciding what to submit.
[ ] I've edited the README.md and link to my code.

Related Issues or Pull Requests
https://github.com/TesseractCoding/NeoAlgo/issues/2038

please add DWOC label to this pull request and add a label-4 tag as well

please add DWOC label to this pull request and add a label-4 tag as well

Please do mention the issue that this PR fixes.

Please do mention the issue that this PR fixes.

done sir.

done sir.

Sorry, but this program doesn't fit in any of the domain that we cover in this repository.

Sorry, but this program doesn't fit in any of the domain that we cover in this repository.


Adding selected multiple urls support :)

any chance to let nuclei burp plugin support multiple urls selected e.g. from burp history I selected multiple urls so instead of generate template it will run nuclei directly by using my specific templates dir and the list file will be the selected urls

Hello @0xAwali,
The plugin only covers template generation currently. I've added the option for generating a template using multiple requests (covered in: https://github.com/projectdiscovery/nuclei-burp-plugin/issues/9 and will be released under v1.1.0 - although it's already available for early adaptors in v1.1.0-beta)
Adding various scanning support will be considered for v1.2.0.

Hey @forgedhallpass ,
I can see scanning in already supported via the nuclei plugin for burp but the main drawback is that it only supports a single URL at a time, as the OP stated it will be great if we can have multi URL support as we have in CLI.
Thanks and Regards,


[MM-13955] Add telemetry for Android

Summary
This PR adds telemetry for Android.  Telemetry will be configured on Android beta build only [1] and will send data whenever the server it's connected to has diagnostics enabled.
Initial metrics to capture are the following:

start:overall
start:process_packages
start:content_appeared
start:select_server_screen
start:channel_screen
team:switch
channel:loading
channel:switch_loaded
channel:switch_initial
channel:close_drawer
channel:open_drawer
posts:loading
posts:list_update
(Details will be documented per MM-15171.)

The device information to be collected are the following:

apiLevel: DeviceInfo.getAPILevel()
buildNumber: DeviceInfo.getBuildNumber()
bundleId: DeviceInfo.getBundleId()
brand: DeviceInfo.getBrand()
country: DeviceInfo.getDeviceCountry()
deviceId: DeviceInfo.getDeviceId()
deviceLocale: DeviceInfo.getDeviceLocale()
deviceType: DeviceInfo.getDeviceType()
deviceUniqueId: DeviceInfo.getUniqueID()
height: Dimensions
isEmulator: DeviceInfo.isEmulator()
isTablet: DeviceInfo.isTablet()
manufacturer: DeviceInfo.getManufacturer()
maxMemory: DeviceInfo.getMaxMemory()
model: DeviceInfo.getModel()
serverVersion
systemName: DeviceInfo.getSystemName()
systemVersion: DeviceInfo.getSystemVersion()
timezone: DeviceInfo.getTimezone()
version: DeviceInfo.getVersion()
width: Dimensions
(See react-native-device-info docs for details on each info.)

@esethna I believe there's no identifiable info included on the list above. But I'd like to request for your review if it conforms with our Telemetry docs.
Ticket Link
Jira ticket: MM-13955
Device Information
This PR was tested on: [Android and also on iOS simulator (just to check if no side-effect)]

Thanks @enahum for the reviews.

done including telemetry js to bundle
only load/listen to native code if telemetry is enabled (not sure if commenting/uncommenting code is acceptable but it works)
updated fastlane to run telemetry config for Android build only (which is initially implemented)
addressed other comments

Please take a look again.

@hmhealey @enahum PR updated, please take a look again, thanks!

Will do as soon as I fix master

@enahum PR updated. Please take a look again.  Thanks

@saturninoabril you still need to merge the redux pr and add the reference to the commit

@enahum That's right.  Will just wait for last review of it.

@saturninoabril redux PR merged, feel free to update the ref and merge this one

PR updated with corresponding commit hash of mattermost-redux.


[Backend] Problem in delete contact us api Fixed

Issue that this pull request solves
Issue Link resolve #932
Closes: #932
Brief description of what is fixed or changed
Delete contact us is not working properly. and contact us routes fixing. and adding validation. fixed. now delete works properly.
Types of changes
Put an x in the boxes that apply

[x] Bugfix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation update (Documentation content changed)
[ ] Other (please describe):

Checklist
Put an x in the boxes that apply

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[ ] My changes generate no new warnings
[ ] My changes does not break the current system and it passes all the current test cases.

@Kajol-Kumari  can you please check and merge it.


Fix Incorrect source_files path in Podspec

The file glob was set up such that it would look for ios m and h
files in the root directory instead of the ios directory.

@phil-flyclops The podspec is not located in the root directory, but in the ios one (ios/RNLocalize.podspec). So I don't see any issue here? Did it throw you an error on install?

@zoontek Yes, it was unable to find any files and would make an empty project as a result.
The Podspec definition tells what repo to grab from, but doesn't have a way to define where the podspec file itself originally lived so it causes issues if you try to specify source_files from anywhere but the root of the project.
CocoaPods explicitly dictates using paths relative from the root of the repository for this reason - https://guides.cocoapods.org/syntax/podspec.html#group_file_patterns

@phil-flyclops I just gave it a try using this Podfile and everything went well. Are you sure you didn't forget the /ios at the end of the import path ?
platform :ios, '9.0'

target 'RNLocalizeTest' do

  # see https://facebook.github.io/react-native/docs/integration-with-existing-apps#configuring-cocoapods-dependencies
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTAnimation',
    'RCTNetwork',
    'RCTText',
    'RCTWebSocket',
    # Add any other subspecs you want to use in your project
  ]

  pod 'RNLocalize', :path => '../node_modules/react-native-localize/ios' # notice the /ios

end

The issue I had was stemming out of a use case like this where I have a Podspec instead of a Podfile referencing this as a transitive dependency and no longer have the ability to use relative paths like that - https://github.com/CocoaPods/CocoaPods/issues/3276
I manually solved it for our use case since we have a Private Spec Repo of Pods - https://guides.cocoapods.org/making/private-cocoapods.html
It seems like something that would affect folks who have the same use case, but if it is rare enough I can just keep adjusting it on my end as new versions of this library are published.

To the use-case point, here are two major react native projects that keep their ios code isolated but Podspecs at the top level of the repository to deal with this problem.
https://github.com/react-native-community/react-native-linear-gradient
https://github.com/react-native-community/lottie-react-native
Would you be on board with having a copy of the Podspec in the root of the repo with the tweaked source_files directive so that we can support people using the current setup and people using private spec repos?

@phil-flyclops I just published v1.1.0 with a duplicate Podfile at root.

Sweet, thanks!


💩  Single thread POC

This is just POC and I'm not going to merge this as-is but liberate from Worker threads improve performance a lot.
With Worker threads

It seems no performance improvement could be achieve by liberating from Worker. See #161


Fix for incorrect nested-unsigned test

The previous PR (https://github.com/NVIDIA/spark-rapids/pull/7340) was not properly failing if cudf did not throw the expected exception.  This fixes that.
Note:  this PR is dependent on a cudf PR  https://github.com/rapidsai/cudf/pull/12360 and should not be merged until it is (but should be merged immediately after).

@gpucibot merge

Anyone know what the holdup here is on the blossom-ci?   This PR should get merged.

build


[BUG] Pod wait infinitely with "MountVolume.MountDevice failed for volume ...  rpc error: code = Internal desc = mount failed: exit status 32 ... already mounted or mount point busy."

Describe the bug
Hi thanks for the storage solution! However today when I use it, Pod wait infinitely with errors.
pod event says:
MountVolume.MountDevice failed for volume "pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729" : rpc error: code = Internal desc = mount failed: exit status 32 Mounting command: mount Mounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount Output: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.

and

Unable to attach or mount volumes: unmounted volumes=[data], unattached volumes=[kube-api-access-mvm48 jmx-config data logs scripts]: timed out waiting for the condition

longhorn-csi-plugin
...

E0517 12:56:59.442122  817737 mount_linux.go:184] Mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount
Output: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.

time="2022-05-17T12:56:59Z" level=error msg="NodeStageVolume: err: rpc error: code = Internal desc = mount failed: exit status 32\nMounting command: mount\nMounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount\nOutput: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.\n"
time="2022-05-17T12:59:01Z" level=info msg="NodeStageVolume: req: {\"staging_target_path\":\"/var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount\",\"volume_capability\":{\"AccessType\":{\"Mount\":{\"fs_type\":\"ext4\"}},\"access_mode\":{\"mode\":1}},\"volume_context\":{\"fromBackup\":\"\",\"numberOfReplicas\":\"1\",\"staleReplicaTimeout\":\"2880\",\"storage.kubernetes.io/csiProvisionerIdentity\":\"1652748412194-8081-driver.longhorn.io\"},\"volume_id\":\"pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729\"}"
time="2022-05-17T12:59:01Z" level=debug msg="volume pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 device /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 contains filesystem of format ext4"
time="2022-05-17T12:59:01Z" level=debug msg="trying to ensure mount point /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount"
time="2022-05-17T12:59:01Z" level=debug msg="mount point /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount try reading dir to make sure it's healthy"
I0517 12:59:01.534586  817737 mount_linux.go:370] `fsck` error fsck from util-linux 2.34
/dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 is in use.
e2fsck: Cannot continue, aborting.

E0517 12:59:01.539703  817737 mount_linux.go:184] Mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount
Output: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.

time="2022-05-17T12:59:01Z" level=error msg="NodeStageVolume: err: rpc error: code = Internal desc = mount failed: exit status 32\nMounting command: mount\nMounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount\nOutput: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.\n"
time="2022-05-17T13:01:03Z" level=info msg="NodeStageVolume: req: {\"staging_target_path\":\"/var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount\",\"volume_capability\":{\"AccessType\":{\"Mount\":{\"fs_type\":\"ext4\"}},\"access_mode\":{\"mode\":1}},\"volume_context\":{\"fromBackup\":\"\",\"numberOfReplicas\":\"1\",\"staleReplicaTimeout\":\"2880\",\"storage.kubernetes.io/csiProvisionerIdentity\":\"1652748412194-8081-driver.longhorn.io\"},\"volume_id\":\"pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729\"}"
time="2022-05-17T13:01:03Z" level=debug msg="volume pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 device /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 contains filesystem of format ext4"
time="2022-05-17T13:01:03Z" level=debug msg="trying to ensure mount point /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount"
time="2022-05-17T13:01:03Z" level=debug msg="mount point /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount try reading dir to make sure it's healthy"
I0517 13:01:03.672286  817737 mount_linux.go:370] `fsck` error fsck from util-linux 2.34
/dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 is in use.
e2fsck: Cannot continue, aborting.

E0517 13:01:03.678743  817737 mount_linux.go:184] Mount failed: exit status 32
Mounting command: mount
Mounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount
Output: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.

time="2022-05-17T13:01:03Z" level=error msg="NodeStageVolume: err: rpc error: code = Internal desc = mount failed: exit status 32\nMounting command: mount\nMounting arguments: -t ext4 -o defaults /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount\nOutput: mount: /var/snap/microk8s/common/var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729/globalmount: /dev/longhorn/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729 already mounted or mount point busy.

extra info following https://longhorn.io/kb/troubleshooting-volume-with-multipath/
root@ecs-332336:~# ls -l /dev/longhorn
...
brw-rw---- 1 root root  8,  80 May 17 20:25 pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729

ls -l /dev
...
brw-rw---- 1 root disk      8,  80 May 17 20:25 sdf

[to be continued]

To Reproduce
N/A
Expected behavior
no error
Log or Support bundle
seems to contain too much sensitive information. you can ask for logs that you need and I will provide :)
Environment

Longhorn version: 1.2.4
Installation method (e.g. Rancher Catalog App/Helm/Kubectl): helm
Kubernetes distro (e.g. RKE/K3s/EKS/OpenShift) and version: microk8s

Number of management node in the cluster:
Number of worker node in the cluster:

Node config

OS type and version: ubuntu 20.04
CPU per node: 4
Memory per node: 16g
Disk type(e.g. SSD/NVMe): hdd
Network bandwidth between the nodes: single node

Underlying Infrastructure (e.g. on AWS/GCE, EKS/GKE, VMWare/KVM, Baremetal): bare
Number of Longhorn volumes in the cluster: ~10

Additional context
Add any other context about the problem here.

Can you provide the output of:

kubectl get volumes -n longhorn-system -o yaml pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
Find the status.currentNodeID field in the above output. SSH into that node. run lsblk

kubectl get volumes -n common -o yaml pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
apiVersion: longhorn.io/v1beta1
kind: Volume
metadata:
  creationTimestamp: "2022-05-17T01:21:37Z"
  finalizers:
  - longhorn.io
  generation: 4
  labels:
    longhornvolume: pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
    recurring-job-group.longhorn.io/default: enabled
  managedFields:
  - apiVersion: longhorn.io/v1beta1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:finalizers:
          .: {}
          v:"longhorn.io": {}
        f:labels:
          .: {}
          f:longhornvolume: {}
          f:recurring-job-group.longhorn.io/default: {}
      f:spec: {}
      f:status: {}
    manager: longhorn-manager
    operation: Update
    time: "2022-05-17T01:21:37Z"
  name: pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
  namespace: common
  resourceVersion: "214221"
  selfLink: /apis/longhorn.io/v1beta1/namespaces/common/volumes/pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
  uid: c8cc9cfc-66a8-44e6-85a7-0354d911d4ff
spec:
  Standby: false
  accessMode: rwo
  backingImage: ""
  baseImage: ""
  dataLocality: disabled
  dataSource: ""
  disableFrontend: false
  diskSelector: null
  encrypted: false
  engineImage: longhornio/longhorn-engine:v1.2.4
  fromBackup: ""
  frontend: blockdev
  lastAttachedBy: ""
  migratable: false
  migrationNodeID: ""
  nodeID: ecs-332336
  nodeSelector: null
  numberOfReplicas: 1
  replicaAutoBalance: ignored
  revisionCounterDisabled: false
  size: "8589934592"
  staleReplicaTimeout: 2880
status:
  actualSize: 252928000
  cloneStatus:
    snapshot: ""
    sourceVolume: ""
    state: ""
  conditions:
    restore:
      lastProbeTime: ""
      lastTransitionTime: "2022-05-17T01:21:39Z"
      message: ""
      reason: ""
      status: "False"
      type: restore
    scheduled:
      lastProbeTime: ""
      lastTransitionTime: "2022-05-17T01:21:39Z"
      message: ""
      reason: ""
      status: "True"
      type: scheduled
    toomanysnapshots:
      lastProbeTime: ""
      lastTransitionTime: "2022-05-17T01:21:39Z"
      message: ""
      reason: ""
      status: "False"
      type: toomanysnapshots
  currentImage: longhornio/longhorn-engine:v1.2.4
  currentNodeID: ecs-332336
  expansionRequired: false
  frontendDisabled: false
  isStandby: false
  kubernetesStatus:
    lastPVCRefAt: ""
    lastPodRefAt: ""
    namespace: common
    pvName: pvc-8ccb1ec6-1f11-4a0d-8848-a128f6f04729
    pvStatus: Bound
    pvcName: data-kafka-0
    workloadsStatus:
    - podName: kafka-0
      podStatus: Pending
      workloadName: kafka
      workloadType: StatefulSet
  lastBackup: ""
  lastBackupAt: ""
  lastDegradedAt: ""
  ownerID: ecs-332336
  pendingNodeID: ""
  remountRequestedAt: "2022-05-17T12:24:10Z"
  restoreInitiated: false
  restoreRequired: false
  robustness: healthy
  shareEndpoint: ""
  shareState: ""
  state: attached

root@ecs-332336:~# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0    7:0    0  44.7M  1 loop  /snap/snapd/15534
loop1    7:1    0  55.5M  1 loop  /snap/core18/2409
loop2    7:2    0 182.3M  1 loop  /snap/microk8s/3202
sda      8:0    0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdb      8:16   0     8G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdc      8:32   0   100M  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdd      8:48   0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sde      8:64   0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdf      8:80   0     8G  0 disk
└─mpatha
       253:0    0     8G  0 mpath
sdg      8:96   0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdh      8:112  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdi      8:128  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdj      8:144  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdk      8:160  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdl      8:176  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdm      8:192  0    15G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sds     65:32   0    20G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdt     65:48   0    15G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdw     65:96   0     8G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdy     65:128  0     2G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdz     65:144  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
sdac    65:192  0     1G  0 disk  /var/snap/microk8s/common/var/lib/kubelet/pods
vda    252:0    0    40G  0 disk
└─vda1 252:1    0    40G  0 part  /
vdb    252:16   0   100G  0 disk
└─vdb1 252:17   0   100G  0 part  /mnt/data

@PhanLe1010 The info is shown above. Thank you!

https://longhorn.io/kb/troubleshooting-volume-with-multipath/ solved the problem.

I successfuly make my Faulty volumes become Healthy by lowring the Storage Minimal Available Percentage in Longhorn Web UI Settings.
https://github.com/longhorn/longhorn/issues/4277#issuecomment-1205962364


Add new mod: FunkyShoeMan.TheWildsExtended

Closes #465
https://github.com/FunkyShoeMan/TheWildsExtended

dear god you work fast checking the issue ~5 seconds after posting


Fix #5

This changes the filenames for queued items to have a random 10 character suffix (fixing #5) and reverses the order queued files are flushed (to FIFO)

Works great! Thanks a lot for the fix :)


How do you train the probing classifier?

Hi Authors,
Thanks for your work!I have a question regarding the probing classifier mentioned in the supplementary material. As I understand, you employ a logistic regression model for the probing classifier, and you compare the model output with the ground truth to assess correctness, which is then used to train the probing classifier. However, this approach seems counterintuitive to me. It appears that you're using the model's output to obtain the label and train a classifier on the model's internal state, which seems contradictory.
Could you kindly clarify if I am misunderstanding something?
Thank you!

Hi,
Thank you for the interest in our paper!
Seems like your understanding is correct. Can you elaborate more on why this is counterintuitive?


falco inotify handler fails in k8s environment with ebpf driver

Falco never apply rules files changes in our EKS environment when using ebpf driver. After adding any additional rules to falco_rules.yaml It just continues to work as if the file was never touched. From log messages below one can infer that inotify handler used to track those changes seems to be broken.
How to reproduce it

git clone https://github.com/falcosecurity/charts.git
cd charts/falco
change driver to ebpf in vaules.yaml
helm install falco ./ -n falco --values ./values.yaml
change falco_rules.yaml inside on of containers
notice the following error messages in falco pod logs:

Wed Oct 25 21:22:16 2023: SIGHUP received, restarting...
Syscall event drop monitoring:
   - event drop detected: 0 occurrences
   - num times actions taken: 0
21:21:57.227720194: Notice A shell was spawned in a container with an attached terminal (evt_type=execve user=root user_uid=0 user_loginuid=-1 process=sh proc_exepath=/bin/busybox parent=runc command=sh terminal=34816 exe_flags=EXE_WRITABLE container_id=c85a6d505d94 container_image=docker.io/falcosecurity/falcoctl container_image_tag=0.6.2 container_name=falcoctl-artifact-follow k8s_ns=falco k8s_pod_name=falco-7xqkv)
Events detected: 1
Rule counts by severity:
   NOTICE: 1
Triggered rules by rule name:
   Terminal shell in container: 1
Wed Oct 25 21:22:16 2023: Falco version: 0.36.1 (x86_64)

add new rule to falco_rules.yaml
falco ignores rules changes and never receives SIGHUP

Expected behaviour
At step 8 falco should reload and apply new rules
Environment

Falco version:

Fri Oct 27 16:01:09 2023: Falco version: 0.36.1 (x86_64)
Fri Oct 27 16:01:09 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Falco version: 0.36.1
Libs version:  0.13.2
Plugin API:    3.1.0
Engine:        26
Driver:
  API version:    5.0.0
  Schema version: 2.0.0
  Default driver: 6.0.1+driver

System info:

attached below

Cloud provider or hardware configuration:
AWS
OS:
Amazon linux
Kernel:
Linux falco-7xqkv 5.10.165-143.735.amzn2.x86_64 #1 SMP
Installation method:
Kubernets, official helm chart

Additional context
Wed Oct 25 21:21:16 2023: Falco version: 0.36.1 (x86_64)
Wed Oct 25 21:21:16 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Wed Oct 25 21:21:16 2023: Loading rules from file /etc/falco/falco_rules.yaml
Wed Oct 25 21:21:16 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Wed Oct 25 21:21:16 2023: Starting health webserver with threadiness 2, listening on port 8765
Wed Oct 25 21:21:16 2023: Loaded event sources: syscall
Wed Oct 25 21:21:16 2023: Enabled event sources: syscall
Wed Oct 25 21:21:16 2023: Opening 'syscall' source with BPF probe. BPF probe path: /root/.falco/falco-bpf.o
Wed Oct 25 21:22:16 2023: Falco version: 0.36.1 (x86_64)
Wed Oct 25 21:22:16 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Wed Oct 25 21:22:16 2023: Loading rules from file /etc/falco/falco_rules.yaml
Wed Oct 25 21:22:16 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Wed Oct 25 21:22:16 2023: SIGHUP received, restarting...
Syscall event drop monitoring:
   - event drop detected: 0 occurrences
   - num times actions taken: 0
21:21:57.227720194: Notice A shell was spawned in a container with an attached terminal (evt_type=execve user=root user_uid=0 user_loginuid=-1 process=sh proc_exepath=/bin/busybox parent=runc command=sh terminal=34816 exe_flags=EXE_WRITABLE container_id=c85a6d505d94 container_image=docker.io/falcosecurity/falcoctl container_image_tag=0.6.2 container_name=falcoctl-artifact-follow k8s_ns=falco k8s_pod_name=falco-7xqkv)
Events detected: 1
Rule counts by severity:
   NOTICE: 1
Triggered rules by rule name:
   Terminal shell in container: 1
Wed Oct 25 21:22:16 2023: Falco version: 0.36.1 (x86_64)
Wed Oct 25 21:22:16 2023: Falco initialized with configuration file: /etc/falco/falco.yaml
Wed Oct 25 21:22:16 2023: Loading rules from file /etc/falco/falco_rules.yaml
Wed Oct 25 21:22:16 2023: The chosen syscall buffer dimension is: 8388608 bytes (8 MBs)
Wed Oct 25 21:22:16 2023: Starting health webserver with threadiness 2, listening on port 8765
Wed Oct 25 21:22:16 2023: Loaded event sources: syscall
Wed Oct 25 21:22:16 2023: Enabled event sources: syscall
Wed Oct 25 21:22:16 2023: Opening 'syscall' source with BPF probe. BPF probe path: /root/.falco/falco-bpf.o
Wed Oct 25 21:22:17 2023: Failed read with inotify handler, shutting down watcher...

Here is the falco --support | jq .system_info output
falco_issue.txt

ei @dmitryroshchin thank you for reporting, this seems the same issue reported here https://github.com/falcosecurity/libs/issues/1448, it should be fixed in Falco 0.36.2, do you mind trying it?

/assign @Andreagit97

Seems to be fixed in 0.36.2, many thanks!


Adds typing information for 'ws', a WebSocket library

also don't forget package-lock.json....

@lindner Thanks for pointing out we're at version 4. Internally we have version 6.0.0 and I would like to minimise chances of things working differently internally and externally, so I'm also updating to 6.0.0 in this patch. I prefer to find any surprises sooner rather than later.

I'll land it, let me know if you have issues with bumping ws to 6.0


Is routemgmt package not pinned for dependencies?

"There was a change in the apigateway to return a 204 without a body for deleting an API". This change is leading to Travis failures. Are we not pinned to prevent such a breaking against the package?
org.scalatest.exceptions.TestFailedException: /home/travis/build/openwhisk/openwhisk/ansible/../bin/wsk -i --apihost <IP_ADDRESS> --apiversion v1 api-experimental delete --auth ... CLI_APIGWTEST4 API Name
    error: Unable to delete action: Response is not valid 'application/json'. (code 1109)

Closing because there's now integration testing at least in the gw repo and #1959 addresses the problem more generally.


api: Remove runner related infromation from ModelInput.

The goal here is to not leak more information than is absolutely needed
by connectors into the ModelInput and ModelOutput APIs. Previously we
were passing the full input payload through to the connector and other
infromation like model-slug and model-image which were not necessary at
that level. Since we are also validating the schema everywhere this led
to situations where the schema for the model-runner changed in a way
that was irrelevant to the connectors, but they would fail to validate
the new schema even though it was not actually a part of the schema that
was relevant to them.
In order to rectify this I have done the following:

Remove the Model type from the ModelInput.
Published a new runner.json schema in addition to the input.json and output.json` schemas.
Aligned model-runner and the connectors to validate that correct
schema.
Added an assumption to model-runner that it will only ever care
about the first model in the models list. This works because we
re-write the inputFile.json in the matrix part of the workflow in
the control-plane.

Some comments that would make the code nicer, but not necessary to go in.

Rebased on master and going to give this PR another look.


Remove istanbul and use nyc

Removing istanbul and adding nyc because istanbul is deprecated. Their recommendation is to use nyc instead.
Reference: https://www.npmjs.com/package/istanbul

@adam2k you will need to downgrade NYC to v14 as they dropped Node 6 support in v15
Learn it the hard way

@adam2k I added an nyc switch on https://github.com/kr1sp1n/node-vault/pull/195

Closing in favor of #195


Full Port Scan

Don't pull it, seems like nuclie has a bug with this flag. Raising an issue on them, once they correct it we will merge it,


⚠ MIGRASI has degraded performance

In db4684c, MIGRASI (https://migrasi.unmer.ac.id/) experienced degraded performance:

HTTP code: 200
Response time: 6394 ms

Resolved: MIGRASI performance has improved in 1bb7e30.


Fix @typescript-eslint/no-unnecessary-type-assertion instances

Summary
In the process of updating to ESLint 9, some rules were temporarily ignored due to changes in their recommendations. One of these rules was the @typescript-eslint/no-unnecessary-type-assertion rule.
This PR re-enables the @typescript-eslint/no-unnecessary-type-assertion rule and addresses instances where redundant type constituents were used.
Changes

Enable @typescript-eslint/no-unnecessary-type-assertion ESLint rule in eslint.config.mjs

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.04%) to 92.952%

Files with Coverage Reduction
New Missed Lines
%

src/routes/transactions/entities/tests/human-description.builder.ts
2
80.0%

Totals

Change from base Build<PHONE_NUMBER>:
-0.04%

Covered Lines:
6984

Relevant Lines:
7235

💛  - Coveralls


Add North Yorkshire Unitary

I'm making this PR because Democracy Club needs to create organisations to hold elections in EveryElection. It would be good if we can keep the local-authority-code values in sync, so this is to figure out what that value will be. As long as the code is settled on then we are in no hurry for this to be merged.

Draft legislation: https://www.legislation.gov.uk/ukdsi/2022/9780348231380
We don't have a GSS code yet
end-dates - Bucks districts have an end date that is the day before the start date of Bucks UA. North Northants uses the same day. I've used the same day because that's what it says in the legislation, but happy to change.

Actual legislation: https://www.legislation.gov.uk/uksi/2022/328/made
This isn't going to be made in EE till next year, because afaict the elections this year are to the county council, just using the same divisions as will exist in the unitary.

Actual legislation: https://www.legislation.gov.uk/uksi/2022/328/made
This isn't going to be made in EE till next year, because afaict the elections this year are to the county council, just using the same divisions as will exist in the unitary.


refactor(semantic): alter syntax of control_flow! macro

Previously:
let ix = control_flow!(|self, cfg| cfg.current_node_ix);

after this PR:
let ix = control_flow!(self, |cfg| cfg.current_node_ix);

It expands to:
let ix = if let Some(ref mut cfg) = self.cfg {
    cfg.current_node_ix
} else {
    Default::default()
};

So rationale for this change is that it makes it clearer that self is passed in and cfg comes out into the "closure".

@rzvxa Out of interest, why if let Some(ref mut cfg) = self.cfg rather than if let Some(cfg) = &mut self.cfg? Is there a subtle difference between the two?

@rzvxa Out of interest, why if let Some(ref mut cfg) = self.cfg rather than if let Some(cfg) = &mut self.cfg? Is there a subtle difference between the two?

Not a functional one, I find this too noisy(lots of symbols).
if let Some($cfg) = &mut $self.cfg {
    $body
} else {
}

Thanks for satisfying my curiosity!


boot.loader.raspberryPi.uboot: add Raspberry Pi 4 support

Description of changes

This adds uboot support for the Raspberry Pi 4.
Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] 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

[x] 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/)
23.05 Release Notes (or backporting 22.11 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
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[x] Fits CONTRIBUTING.md.

I have never used the "official" rPI u-boot integration, precisely because the PI4 is/was not supported.
I did actually create my own u-boot integration (as part of my master thesis, but it also does a whole bunch of application specific things). What I can confirm is that indeed the {start,fixup}4*.{elf,dat} files are requiredd ion the rPI4 (though they are loaded by the GPU before the kernel (u-boot), and have nothing really to do with u-boot).
What is odd to me is that you pull the DTB for the iPI4 from the firmware package:

usually the DTBs come from the kernel package (I think; which config.hardware.deviceTree.package is a filtered version of? not sure why)
where do other versions of the PI get their device trees from in this scenario?

how did older versions handle this?
I am not sure the Compute Module uses the same file name

Having the correct bcm2711-rpi-4-b.dtb file is quite important, and there exist different ones with the same name in different packages. The official Kernel has one, the firmware package may have one that may or may not be the same, and u-boot I think also has a simplified DTB file for the PI.
If u-boot is not explicitly told to load another DTB (e.g. via the extlinux.conf or its env vars), the DTB that got loaded by the GPU from this fixed name, and that the GPU manipulated according to the contents of config.txt (and the options set in the eeprom) will be the one that Linux boots with. If the initial DTB is not the "official" one, then a lot of the official documentation regarding config.txt options does not apply.
That said, in a NixOS environment, on may very well decide to cut out all the config.txt processing and explicitly use a modified deice tree per configuration/generation.

Would love to see this get in. Currently running into an issue on my Pi4 where the activation script will not install (or reinstall for upgrades) firmware or bootloader binaries to /boot, I think a change like this may fix. I've also seen some issues filed that are caused by that issue.
For this PR, also take a look at:
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/sd-card/sd-image-aarch64.nix
This sd-image seems to come with support specifically for various Pis including some configuration for the Pi4 not seen in this PR
It configures the interrupt controller:
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/sd-card/sd-image-aarch64.nix#L32-L33
And it installs additional DTBs:
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/sd-card/sd-image-aarch64.nix#L71-L76
As a final note, I've seen @samueldr do a lot of work on Pi4 support in previous PRs. He may also have some comments

Currently running into an issue on my Pi4 where the activation script will not install (or reinstall for upgrades) firmware or bootloader binaries to /boot

I can confirm that (sounds like the same issue as I documented for myself here: https://github.com/NiklasGollenstede/nix-wiplib/blob/master/modules/hardware/rpi.nix.md?plain=1#L13-L15). For now, consider disabling boot.loader.generic-extlinux-compatible.enable (and use the non-uboot rPI bootloader).

I think a change like this may fix

I think so too.

For this PR, also take a look at:
https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/installer/sd-card/sd-image-aarch64.nix

It's actually odd that that stuff is configured there. It seems the image creation should use one (or multiple) of the bootloader configurations, not craft its own.

I think regarding the dtb files, we need a decision whether:

NixOS wants the (rPI standard) processing of device trees performed by the PIs early bootloader according to the config.txt

this is much more compatible with much of the documentation for the rPI for other OSes
but there is only one config.txt shared by all configurations, so changing the latest generation affects previous ones, and specialisations can't differentiate on device tree settings

or NixOS wants to modify the device trees as part of the Nix build process, according to each individual configuration/generation, and then have them passed to the linux kernel without "runtime" modifications

this nicely ties the PIs hardware features and driver settings to each configuration (i.e. is very NixOS-ish)
but means that much of the documentation for the PI is not applicable, and people need to figure out how to modify the device trees (or write/apply overlays to them) statically in Nix builds
there are some settings that have to be made in the config.txt (for example enabling 64bit mode)

is is possible to support both (like the boot.loader.generic-extlinux-compatible.useGenerationDeviceTree setting)

Only once that is decided can we start implementing something more consistent than "I read somewhere that this file is required, so I copied it and it works for me". (Not that I haven't done exactly that so far.)

I think it would be worthwhile to merge this change, since it only adds insignificantly to the current implementation and does not introduce any new complexity. A change to the DTB population process could be made in another PR. What do you think?

I am inclined to agree, except for one point: adding this implies to people who use that option that other people made it work properly.
Things should work either as intuitively expected or documented. Currently, I'd say the DTB handling (and thus the applicability of config.txt options) is inconsistent. I, at least, could not say what I expect with this implementation, and thus also couldn't document it.
I think it should at least be documented that the behavior is somewhat unknown ("works for me"). (config.txt) options that silently don't apply can be a major source of frustration.
So from my side: yes, merge, but only if the option description includes a disclaimer like: device tree and config.txt options may or may not work as expected.

So from my side: yes, merge, but only if the option description includes a disclaimer like: device tree and config.txt options may or may not work as expected.

Thanks, I've added a disclaimer to point that out.

Just saw a disclaimer has already been added on master, I've updated this PR accordingly.

We are deprecating all boot.loader.raspberrypi options.
They were de-facto the moment they stopped working like one would expect.
It's, like, my opinion, but I personally think that adding that only to be removed in may/june next year isn't a good idea.
All the options work on the same semantics, and are are YMMV under the same conditions. If config.txt wouldn't be updated, it also wouldn't update U-Boot.

Thanks for the heads-up, makes sense. I'll close this.


Proxy.txt sections

In proxy.txt there are 3 sections, http/socks4/socks5, do I have to remove the # so that they are not uncommented? And if I only use socks5, can i just delete all three of the uncommented things?

No
Dont remove anything only the 11.222.333:8080
proxies and if u only use socks5 only place them in socks5 section


org.jboss.cdi.tck.tests.deployment.discovery.EmptyBeansXmlDiscoveryTest breaks backward compat

Can someone please explain to me the rational behind org.jboss.cdi.tck.tests.deployment.discovery.EmptyBeansXmlDiscoveryTest?
An empty beans.xml file always behaved as marker file for a ALL!
What you wrote in CDI-4.0 is that "A new beans.xml 4.0 schema file has been added and the namespace of the beans_4_0.xsd schema file is xmlns:jakartaee="https://jakarta.ee/xml/ns/jakartaee", the same as 3.0. The key changes in the schema are to make the bean-discovery-mode attribute default to annotated and to use annotated as the default when an empty beans.xml is seen in a deployment. "
So if a beans.xml with a version="4.0" gets detected then the bean discovery mode gets changed. Otherwise not.
If you really intend to change the default in CDI-4.0 for a completely empty beans.xml file then it will not even be backward compat with CDI-3.0.

Maybe not just for this option, but together with some other use cases that surfaced recent in Telemtry, it might be time to work towards this indeed.


Sign in disabled for Google App

Hello Ben,
There are people waiting for this app for their Google doc. However currently sign-in is disabled for this app on Google doc. Kindly look into.
Thanks

I also faced similar problem, when using the application in the website. It's working when I've installed the web app (https://support.google.com/chrome/answer/9658361?co=GENIE.Platform%3DDesktop&hl=en) in my system.


Updated description

Thanks once again!

FYI, you can also push further commits to your forked branch you are sending the PR from. It will automatically synchronize with your previous PR and you won't have to make a separate PR for any other small changes. :smile:

👍


[DevEx]: Fix failing stats.spec tests

Improvement Summary
We should fix all failing automated tests
Detailed Description
Vue3 updates have broken multiple tests which need to be examined and updated.
Failing test are marked .skip.

Convert data tables to normal tables for now, ditching the unsupported Vuetify component.


Adds FriendsOfCake/crud-json-api as a PHP server library

repo: https://github.com/FriendsOfCake/crud-json-api
docs: https://crud-json-api.readthedocs.io/en/latest/

Thanks!

And thank you kindly for merging 👍


Find out why ServerTest unit tests sometimes hang on closing database

May be an error with BaseX's new DropDB()
Started occuring after commit 576a45a3fa8912da8f69b205eaf6bb8e7a3a02dc

may also be this link

This turned out to be a missing conn.close(), but BenchmarkTest.testMain() still hangs

When I get the time, I'll try using try-with-resources statements to close connections and see if that fixes it


feat: run migrations outside transaction

Background
Adding indices to the schema_checks table is slow and would block pending operations on the table (writes, updates) for at least 30 seconds, according to @kamilkisiela estimations), which would block our customers from using any features related to schema_checks for that timeframe...
Instead, we can create indices concurrently using the CONCURRENTLY keyword.
However, this requires us to run database migrations outside a transaction, which is fine but requires adjustments to our migrations-runner, which is running everything inside a single transaction.
I also added some time logging, which makes it easier for us to see the actual runtimes of the single migrations.
Example output:

Description

Checklist

[ ] Input validation
[ ] Output encoding
[ ] Authentication management
[ ] Session management
[ ] Access control
[ ] Cryptographic practices
[ ] Error handling and logging
[ ] Data protection
[ ] Communication security
[ ] System configuration
[ ] Database security
[ ] File management
[ ] Memory management
[ ] Testing

Before running db migration indices sizes.

Running migration: 2023.10.26T12.44.36.schema-checks-filters-index.ts
  Starting step schema_checks_connection_pagination_with_changes
  Finished in 52.130s
  Starting step schema_checks_connection_pagination_with_no_success
  Finished in 309ms
  Starting step schema_checks_connection_pagination_with_no_success_and_changes
  Finished in 376ms
Finished in 52.931s
Running migration: 2023.10.30T00-00-00.drop-persisted-operations.ts
Finished in 301ms

Post-migration:


Unclear troubleshooting steps

The troubleshooting step doesn't make it clear what config is being reset.
Do you mean something in the Log Analytics Workspace, or the "configure" button in the solution, or somewhere else?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d84cea6b-a85a-1814-b3ee-f0fd9517a10f
Version Independent ID: 6a341000-55dc-94de-5191-356928c5429a
Content: DNS Analytics solution in Azure Monitor - Azure Monitor
Content Source: articles/azure-monitor/insights/dns-analytics.md
Service: azure-monitor
Sub-service: insights
GitHub Login: @bwren
Microsoft Alias: bwren

@thommck Thank you for reaching out with your query , we will review and get back to you at the earliest.

@thommck My sincere apologies for delay in getting back to this thread.
Apologies for the experience you are having with the document , the troubleshooting steps could have been more clear. Thank you for bringing this to our notice and helping us improve our Azure documentation.
Resetting config referred in the steps is pertaining to DNS Analytics solution with in Log Analytics workspace.
Go to Log Analytics workspace -->  workspace summary -->  DNS Analytics solution -->  configure . Change a value to activate the save button and then change it back. Then hit Save. That will reset the configuration.
We will raise a PR to update the troubleshooting steps to be more clear. Once its reviewed and approved the changes will go live accordingly.
At this point it appears that there's no further edits or updates needed to the documentation, other than what has been listed above. We will go ahead and close this issue for now, however if you have any further queries or feedback on the documentation please tag us in your reply and will be happy to reopen the thread and continue the conversation. Thank you


fix: properly freeze Baggage object

Clearly the intent was to call the function, but previously the freeze method was dead code.
I have not verified that this actually works correctly, however.

thx @intgr


Add tape logo.

Signed-off-by: Jay Guo<EMAIL_ADDRESS>

suggestion adding issues and prs status and resolve conflicts...
[![Issues](https://img.shields.io/github/issues/SamYuan1990/Probe?color=0088ff)](https://github.com/SamYuan1990/Probe/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/SamYuan1990/Probe?color=0088ff)](https://github.com/SamYuan1990/Probe/pulls)


LEGO: Pull request from lego/hb_2939_20201124000528125 to master

LEGO: Pull request from lego/hb_2939_20201124000528125 to master with localized lcls

This error was fixed in master

/azp run

rerunning again


Add scatter_min VJP

Proposed changes
Implemented scatter_min operation's vjp, similarly as with scatter_max.
Checklist
Put an x in the boxes that apply.

[x] I have read the CONTRIBUTING document
[x] I have run pre-commit run --all-files to format my code / installed pre-commit prior to committing changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have updated the necessary documentation (if needed)

Done!


net/http/httputil: ReverseProxy appends trailing slash to url with empty path

What version of Go are you using (go version)?

$ go version
go version go1.18beta1 darwin/amd64

Does this issue reproduce with the latest release?
Yes
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/noahkreiger/Library/Caches/go-build"
GOENV="/Users/noahkreiger/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/noahkreiger/go/pkg/mod"
GONOPROXY="github.com/nkreiger"
GONOSUMDB="github.com/nkreiger"
GOOS="darwin"
GOPATH="/Users/noahkreiger/go"
GOPRIVATE="github.com/nkreiger"
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/Users/noahkreiger/go/go1.18beta1"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/Users/noahkreiger/go/go1.18beta1/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.18beta1"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
GOWORK=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS="-Wno-error -Wno-nullability-completeness -Wno-expansion-to-defined -Wbuiltin-requires-header"
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/4w/ymct9nsd21j2tmf_8k7csf340000gn/T/go-build285603268=/tmp/go-build -gno-record-gcc-switches -fno-common"

What did you do?
Attempted to serve a reverse proxy where the base URL had a RawPath and Path value of "", an empty string.
// Serve a reverse proxy for a given url
func serveReverseProxy(target string, res http.ResponseWriter, req *http.Request) {
	// parse the url
	url, _ := url.Parse(target)

	// create the reverse proxy
	proxy := httputil.NewSingleHostReverseProxy(url)

	// Note that ServeHttp is non blocking and uses a go routine under the hood
	proxy.ServeHTTP(res, req)
}

target = "http://localhost:808/health"
req.URL.Path = ""
req.URL.RawPath = ""
What did you expect to see?
I expected the new single host reverse proxy to rout the request to http://locahost:8080/health
What did you see instead?
It was routed to http://localhost:8080/health/ which causes the route to throw a 404 Not Found because of the extra suffix "/"
Potential Easy Fix
https://github.com/golang/go/blob/b357b05b70d2b8c4988ac2a27f2af176e7a09e1b/src/net/http/httputil/reverseproxy.go#L111
it this line to be
case !aslash && !bslash:
		if b == "" {
			return a
		}
		return a + "/" + b
	}

so if the base path is empty, it just returns the new path passed in instead of appending an extra slash...

@neild per owners.

@krackers has a point.
Maybe modify reverseproxy.go:singleJoiningSlash as follows (comments added):
func singleJoiningSlash(a, b string) string {
	aslash := strings.HasSuffix(a, "/")
	bslash := strings.HasPrefix(b, "/")
	switch {
	case aslash && bslash:
		return a + b[1:] // avoid doubled slashes when both are present
	case !aslash && !bslash: // neither has a slash, make sure there is one, or at least the result is non-blank
		if b=="" {
		    if a=="" {
		        return "/" // if both are blank, return a slash
		    }
		    return a // avoid adding a trailing slash if b is blank
		}
		return a + "/" + b // both non-blank, separate with slash
	}
	return a + b // only one of a or b has a trailing/leading slash, just concatenate
}

The reverseproxy.go code is a bit strange. I've quoted it below and added //??? comments where I want to editorialize.
func joinURLPath(a, b *url.URL) (path, rawpath string) {
	if a.RawPath == "" && b.RawPath == "" {
                //??? this is the only place singleJoiningSlash is called (other than in tests)
		return singleJoiningSlash(a.Path, b.Path), ""
 	}
	// Same as singleJoiningSlash, but uses EscapedPath to determine
	// whether a slash should be added
	apath := a.EscapedPath()
	bpath := b.EscapedPath()

	aslash := strings.HasSuffix(apath, "/")
	bslash := strings.HasPrefix(bpath, "/")

	switch {
	case aslash && bslash:
		return a.Path + b.Path[1:], apath + bpath[1:]
	case !aslash && !bslash:
                //??? do we have the same issue here? Does it matter?
		return a.Path + "/" + b.Path, apath + "/" + bpath
	}
	return a.Path + b.Path, apath + bpath
}

Hi,
This is my solution:
`// Serve a reverse proxy for a given url
func serveReverseProxy(target string, res http.ResponseWriter, req *http.Request) {
// parse the url
url, _ := url.Parse(target)
req.URL = url    // <----------  add this
url.Path = ""   // <----------  add this
// create the reverse proxy
proxy := httputil.NewSingleHostReverseProxy(url)
// Note that ServeHttp is non blocking and uses a go routine under the hood
proxy.ServeHTTP(res, req)

}`

As @krackers says: An HTTP request URL can't contain an empty path. Should we be adding a special case to handle one, given that our existing behavior doesn't seem particularly wrong?


Prevent Priting

I would like to know that is possible disable the printing function.
I downloaded the demo, and would like to prevent the shortcut "Ctrl + P" of browser.
Is it Possible ?!?
Anyone help me?
Regards

Sure, just remove the print button at https://github.com/mozilla/pdf.js/blob/master/web/viewer.html#L158 and the code that handles printing: https://github.com/mozilla/pdf.js/blob/master/web/secondary_toolbar.js#L84
Closing as answered.

Tim,
I already removed the print button, but i need prevent the "Ctrl + P".
I would like something that not allow the "Ctrl + P".
Regards

You cannot prevent the user from printing the document completely. See also http://stackoverflow.com/questions/18843936/how-to-disable-the-ctrlp-using-javascript-or-jquery, but that is out of scope for this project.


fix: avoid optimized deps during build in worker bundles

Description
After https://github.com/vitejs/vite/pull/11218, we introduced a regression when deps optimization is enabled during build. Since v3, the way deps optimization works is that dependencies imported in workers are optimized together with the dependencies of the main app. For this to work, given that each worker is bundled by a different rollup process, we were awaiting for all the workers to be bundled before doing the optimization run with esbuild (as we need to know during build every dep that should be optimized before, we don't have reloads at build time). We had then a registerWorkerSource scheme so we avoid waiting for the worker id, and instead wait for the registered ids inside the worker. For this scheme to work, all the workers need to be processed in parallel and #11218 serialized the workers. This means that there could potentially be a deadlock if there are deps imported by several workers.
Unrelated to #11218, we have an issue with maxParallelFileOps. Rollup is willing to give us better tools to avoid this problem (see https://github.com/rollup/rollup/issues/4985). Using delayLoading would be very clean, but if we need to also use it to await for the worker bundles, we are back to registering worker sources and adding extra complexity. It should be doable though, but we also need to revert #11218.
This PR explores not using deps optimization when bundling workers. I still don't know if this is acceptable, but I don't know how we can work out optimizing deps for them if they aren't bundled in parallel. Even if we force the user to include all the deps in the worker by hand, it won't work. Sending the PR in case others would like to also check this problem, I don't think we should merge it yet.

What is the purpose of this pull request?

[x] Bug fix
[ ] New Feature
[ ] Documentation update
[ ] Other

Closing this as we have merged https://github.com/vitejs/vite/pull/14685, and we are back at doing parallel builds for workers. Optimizing dependencies in workers is possible now, but I no longer think that this is what we'll be recommending in the future. With rolldown, there shouldn't be the need for pre-bundling during build, or it will be tackled directly by its own caching.


Instrument host using the tracing crate

The tracing crate allows you to instrument your code and then choose from any number of subscribers..  this greatly reduces the overhead of trying to support multiple instrumentation outbound targets. It also has a number of really compelling features.
Once this is done, we can then implement the prometheus / open telemetry issues (#10 ) with subscribers to the tracing output rather than hard-coded paths.
https://docs.rs/tracing/0.1.22/tracing/index.html
https://crates.io/crates/tracing-opentelemetry
https://docs.rs/tracing-subscriber/0.2.15/tracing_subscriber/fmt/index.html

Related to #9 #11

No longer applicable to OTP.


Inp.yml file for the workflows

To sucessfully run the CWL workflows an Input.yml file need to be provided by APE. Forexample, the inp.yml file for example1 is here. The path to the file is set by the user.

The inputs are already provided as part of the CWL under inputs:. Is that not sufficient? APE cannot generate the path to the local elements as they are not available at that stage.

So APE should in that case generate 2 files, workflow.cwl and inputs.yml?

If the APE can't do it then we should either remove the "format" field from the workflow or ask the user to generate it by itself.

BTW removing "format" field is not a good idea.

APE could generate 2 files, but it would be up to the user to specify the path in the inputs anyway (the path is not known upfront). I will try to implement it tomorrow, but I cannot guarantee that I will manage.

If APE cant' do it ,the user can do it very easily by a single command before running the workflow and then use the "sed" command to update the correct path to the input file. We can provide the code for both commands.