Not all session files are loaded.

Support guidelines

[X] I've read the support guidelines

I've found a bug and checked that ...

[X] ... the documentation does not mention anything about my problem
[X] ... there are no open or closed issues that are related to my problem

Description
I'm porting from a bare metal rtorrent to this docker image. The first time I loaded the image using docker compose, no file is loaded from the previous instance (on purpose). I then shutdown docker image, copy the session files over (~950 torrents) and restart the image. I can see all 950 torrent in rutorrent.
If I need to stop and restart the instance, only ~1/2 are now loaded (510 instead of 950). This halfing continues until it reaches 30 torrent only. The torrent loaded as not necessarily the same as the previous 1/2. It seems it's loading the session files randomly.
All session files are still present in the file system, so I know nothing has been deleted.
I tried to add the stop_grace_period: 120s in the compose.yml file., but same result.
I'm guessing it has to do with the loading/shutdown time, but I'm not sure which parameter to change.
Expected behaviour
All torrents/session to be loaded every time on restart.
Actual behaviour
Only 1/2 torrents/session loaded.
Steps to reproduce

Start docker compose with no prior data.
Stop docker compose
Copy over session files (*.torrent *.torrent.rtorrent, *.torrent.libtorrent_resume)
Start docker compose again
Stop docker compose
Start docker compose again

Docker info
Client:
 Version:    24.0.5
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.11.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.20.3
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 3
  Running: 3
  Paused: 0
  Stopped: 0
 Images: 5
 Server Version: 24.0.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
 runc version:
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 5.15.0-105-generic
 Operating System: Ubuntu Core 22
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 15.37GiB
 Name: homeserver
 ID: 49a8d0fc-8cb2-4e84-9828-b9078386d576
 Docker Root Dir: /var/snap/docker/common/var-lib-docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  <IP_ADDRESS>/8
 Live Restore Enabled: false

Docker Compose config
name: rtorrent-rutorrent
services:
  rtorrent-logs:
    command:
    - bash
    - -c
    - tail -f /log/*.log
    container_name: rtorrent-rutorrent-logs
    depends_on:
      rtorrent-rutorrent:
        condition: service_started
        required: true
    image: bash
    network_mode: none
    restart: always
    volumes:
    - type: bind
      source: /media/nas/rtorrent/log
      target: /log
      bind:
        create_host_path: true
  rtorrent-rutorrent:
    container_name: rtorrent-rutorrent
    environment:
      AUTH_DELAY: 0s
      LOG_ACCESS: "true"
      LOG_IP_VAR: remote_addr
      MAX_FILE_UPLOADS: "50"
      MEMORY_LIMIT: 1024M
      OPCACHE_MEM_SIZE: "128"
      PGID: "1000"
      PUID: "1000"
      REAL_IP_FROM: <IP_ADDRESS>/32
      REAL_IP_HEADER: X-Forwarded-For
      RT_DHT_PORT: "6881"
      RT_INC_PORT: "50000"
      RT_LOG_EXECUTE: "false"
      RT_LOG_LEVEL: info
      RT_LOG_XMLRPC: "false"
      RT_SESSION_SAVE_SECONDS: "2400"
      RU_DO_DIAGNOSTIC: "true"
      RU_FORBID_USER_SETTINGS: "false"
      RU_HTTP_TIME_OUT: "30"
      RU_HTTP_USE_GZIP: "true"
      RU_HTTP_USER_AGENT: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:12.0) Gecko/20100101
        Firefox/12.0
      RU_LOCALE: UTF8
      RU_LOG_FILE: /data/rutorrent/rutorrent.log
      RU_LOG_RPC_CALLS: "false"
      RU_LOG_RPC_FAULTS: "true"
      RU_OVERWRITE_UPLOADED_TORRENTS: "false"
      RU_PHP_GZIP_LEVEL: "2"
      RU_PHP_USE_GZIP: "false"
      RU_REMOVE_CORE_PLUGINS: httprpc
      RU_RPC_TIME_OUT: "5"
      RU_SAVE_UPLOADED_TORRENTS: "true"
      RU_SCHEDULE_RAND: "10"
      RUTORRENT_AUTHBASIC_STRING: ruTorrent restricted access
      RUTORRENT_PORT: "8080"
      TZ: Australia/Sydney
      UPLOAD_MAX_SIZE: 16M
      WAN_IP_CMD: "false"
      WEBDAV_AUTHBASIC_STRING: WebDAV restricted access
      WEBDAV_PORT: "9000"
      XMLRPC_AUTHBASIC_STRING: rTorrent XMLRPC restricted access
      XMLRPC_PORT: "8000"
    expose:
    - 6881/udp
    - "8000"
    - "8080"
    - "9000"
    - "50000"
    image: crazymax/rtorrent-rutorrent:latest
    networks:
      rtorrent-rutorrent: null
    ports:
    - target: 6881
      published: "6881"
      protocol: udp
    - target: 8080
      published: "8080"
      protocol: tcp
    - target: 9000
      published: "9000"
      protocol: tcp
    - target: 50000
      published: "50000"
      protocol: tcp
    restart: always
    stop_grace_period: 2m0s
    ulimits:
      nofile:
        soft: 32000
        hard: 40000
      nproc: 65535
    volumes:
    - type: bind
      source: /media/nas
      target: /data
      bind:
        create_host_path: true
    - type: bind
      source: /media/nas/download
      target: /downloads
      bind:
        create_host_path: true
    - type: bind
      source: /media/nas/passwd
      target: /passwd
      bind:
        create_host_path: true
    - type: volume
      source: movies
      target: /media/Movies
      volume: {}
    - type: volume
      source: tv
      target: /media/Series
      volume: {}
networks:
  rtorrent-rutorrent:
    name: rtorrent-rutorrent
volumes:
  movies:
    name: rtorrent-rutorrent_movies
    driver_opts:
      device: //<IP_ADDRESS>/Movies
      o: vers=3.0,_netdev,file_mode=0777,dir_mode=0777,
      type: cifs
  tv:
    name: rtorrent-rutorrent_tv
    driver_opts:
      device: //<IP_ADDRESS>/Series
      o: vers=3.0,_netdev,file_mode=0777,dir_mode=0777,
      type: cifs

Logs
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> E 8F2E0E89A561553A0F782D32C7D792F79055D5EE->file_list: Failed to prepare file list: Could not create directory '/media/nas/download': No such file or directory
rtorrent-rutorrent-logs  |<PHONE_NUMBER> E Could not resume download: Could not create directory '/media/nas/download': No such file or directory
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Shutting down thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Shutting down thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent disk: Shutting down thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Starting thread.
rtorrent-rutorrent       | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
rtorrent-rutorrent       | [s6-init] ensuring user provided files have correct perms...exited 0.
rtorrent-rutorrent       | [fix-attrs.d] applying ownership & permissions fixes...
rtorrent-rutorrent       | [fix-attrs.d] done.
rtorrent-rutorrent       | [cont-init.d] executing container initialization scripts...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: executing...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: executing...
rtorrent-rutorrent       | Setting timezone to Australia/Sydney...
rtorrent-rutorrent       | Setting PHP-FPM configuration...
rtorrent-rutorrent       | Setting PHP INI configuration...
rtorrent-rutorrent       | Setting OpCache configuration...
rtorrent-rutorrent       | Setting Nginx configuration...
rtorrent-rutorrent       | Setting Nginx XMLRPC over SCGI configuration...
rtorrent-rutorrent       | Setting Nginx ruTorrent configuration...
rtorrent-rutorrent       | Setting Nginx WebDAV configuration...
rtorrent-rutorrent       | Update healthcheck script...
rtorrent-rutorrent       | Initializing files and folders...
rtorrent-rutorrent       | rpc.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | rutorrent.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | webdav.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | Checking rTorrent local configuration...
rtorrent-rutorrent       | Checking rTorrent configuration...
rtorrent-rutorrent       | Bootstrapping ruTorrent configuration...
rtorrent-rutorrent       | Removing core plugin httprpc...
rtorrent-rutorrent       | Setting custom config for create plugin...
rtorrent-rutorrent       | Checking ruTorrent custom plugins...
rtorrent-rutorrent       | Checking ruTorrent plugins configuration...
rtorrent-rutorrent       | Checking ruTorrent custom themes...
rtorrent-rutorrent       | Setting GeoIP2 databases for geoip2 plugin...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] ~-socklog: executing...
rtorrent-rutorrent       | [cont-init.d] ~-socklog: exited 0.
rtorrent-rutorrent       | [cont-init.d] done.
rtorrent-rutorrent       | [services.d] starting services
rtorrent-rutorrent       | [services.d] done.
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: using the "epoll" event method
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: nginx/1.24.0
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: OS: Linux 5.15.0-105-generic
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: getrlimit(RLIMIT_NOFILE): 32000:40000
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: start worker processes
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: start worker process 541
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: start worker process 542
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: start worker process 543
rtorrent-rutorrent       | 2024/04/27 14:49:59 [notice] 508#508: start worker process 545
rtorrent-rutorrent       | [27-Apr-2024 14:49:59] NOTICE: fpm is running, pid 511
rtorrent-rutorrent       | [27-Apr-2024 14:49:59] NOTICE: ready to handle connections
rtorrent-rutorrent       | <IP_ADDRESS> - - [27/Apr/2024:14:50:05 +1000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
rtorrent-rutorrent       | <IP_ADDRESS> - - [27/Apr/2024:14:50:06 +1000] "GET /php/getsettings.php?_=1714193405813 HTTP/1.1" 200 4866 "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"

Additional info
No response

You need to remove RU_REMOVE_CORE_PLUGINS: httprpc for ruTorrent v4.3 compatibility. Delete the rpc plugin if it's left over.
https://github.com/Novik/ruTorrent/releases/tag/v4.3.0

Also, it looks like you triggered an internal rtorrent error. When loading session files, it found /media/nas/download not accessible. Session files are not designed to be copied like this.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> E 8F2E0E89A561553A0F782D32C7D792F79055D5EE->file_list: Failed to prepare file list: Could not create directory '/media/nas/download': No such file or directory

Thank you for the quick feedback. I'll try to remove the plug.
And for the migration, what is a better way of doing this? Simply import all torrents in a stop states and "save to.." without moving data?

Copy the data to the default download directory. Add the .torrent files to your watch folder. Let the hash checks complete. Then use "save to" to copy or move the data. All the labels will be lost. You'll have to recreate them. This will rebuild all session files.

Thank you for your help. I've done some testing and there's some progress:

rtorrent-rutorrent-logs  |<PHONE_NUMBER> E 8F2E0E89A561553A0F782D32C7D792F79055D5EE->file_list: Failed to prepare file list: Could not create directory '/media/nas/download': No such file or directory Only happened once. I guess I moved the underlying file, but did not repoint the torrent to the new location. I don't have this error anymore.
I removed httprpc from the rtorrent-rutorrent.env, but I can still see the line in the start-up logs. I tried to rebuild the image (thinking it was only once during the image building), but to no avail. The current config is like this: RU_REMOVE_CORE_PLUGINS=
If I copy 1 torrent file in the watch folder, it works and I can see it loading up in the UI. If I copy a batch, nothing happens. No error in the logs.

@AntAreS24 You need to pull docker edge. docker pull crazymax/rtorrent-rutorrent:edge

I double checked my steps and I figured out why it's not loading the torrents. I forgot to clean the .session folder and all the existing .torrent were there. I wiped the entire folder, restarted the compose and i can now load all 950.
I'm now going through the tedious process and rechecking all of them...
I'll try the restart (on the old version as I know it's working) first, then, if everything is working as expected, I'll update to edge

Sounds good. I would recommend waiting until #341 is merged before going to edge. There is anther problem.

@stickz thank you for all the help. It took a whole (almost 48h) to force recheck all torrents that I had... I stopped and restarted it and all torrents were present. It was very painful and I'm hoping I won't have to do that again 😄
Since it's working, I'll wait a bit to upgrade to egde

For those having similar issues, I basically had to:

Start clean a new instance
Since I didn't have all the original torrent files, but the session torrent file, I had to change their name using the following script:

#!/bin/bash
today=$(date +"%Y%m%d")
target_file="list_$today.txt"
echo $target_file

touch $target_file
for file in *.torrent
do
  echo $(echo $file) $(aria2c -S $file |grep '^  1|'|sed 's/^  1|//' |cut -d"/" -f 2) >> $target_file
done

I then ran a mv <hash>.torrent <target_name>torrent
I moved all those files in the watch folder
Since all my data was in an NAS, I had to change the location of ALL torrent to the NAS path
I force recheck all files (I was doing that in batch otherwise the UI was not responding)
I labelled them again, and it's not fully up and running!

I had to restart the service this morning and only 494 out of 956 torrent got loaded again :(
rtorrent-rutorrent       | [09-May-2024 09:58:51] NOTICE: Terminating ...
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 15 (SIGTERM) received from 505, exiting
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 541#541: exiting
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 540#540: exiting
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 543#543: exiting
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 542#542: exiting
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 542#542: exit
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 541#541: exit
rtorrent-rutorrent       | [09-May-2024 09:58:51] NOTICE: exiting, bye-bye!
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 543#543: exit
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 540#540: exit
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 17 (SIGCHLD) received from 542
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: worker process 542 exited with code 0
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 29 (SIGIO) received
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 17 (SIGCHLD) received from 541
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: worker process 541 exited with code 0
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 29 (SIGIO) received
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 17 (SIGCHLD) received from 543
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: worker process 543 exited with code 0
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 29 (SIGIO) received
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: signal 17 (SIGCHLD) received from 540
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: worker process 540 exited with code 0
rtorrent-rutorrent       | 2024/05/09 09:58:51 [notice] 510#510: exit
rtorrent-rutorrent       | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
rtorrent-rutorrent       | [s6-init] ensuring user provided files have correct perms...exited 0.
rtorrent-rutorrent       | [fix-attrs.d] applying ownership & permissions fixes...
rtorrent-rutorrent       | [fix-attrs.d] done.
rtorrent-rutorrent       | [cont-init.d] executing container initialization scripts...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: executing...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: executing...
rtorrent-rutorrent       | Setting timezone to Australia/Sydney...
rtorrent-rutorrent       | Setting PHP-FPM configuration...
rtorrent-rutorrent       | Setting PHP INI configuration...
rtorrent-rutorrent       | Setting OpCache configuration...
rtorrent-rutorrent       | Setting Nginx configuration...
rtorrent-rutorrent       | Setting Nginx XMLRPC over SCGI configuration...
rtorrent-rutorrent       | Setting Nginx ruTorrent configuration...
rtorrent-rutorrent       | Setting Nginx WebDAV configuration...
rtorrent-rutorrent       | Update healthcheck script...
rtorrent-rutorrent       | Initializing files and folders...
rtorrent-rutorrent       | rpc.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | rutorrent.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | webdav.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | Checking rTorrent local configuration...
rtorrent-rutorrent       | Checking rTorrent configuration...
rtorrent-rutorrent       | Bootstrapping ruTorrent configuration...
rtorrent-rutorrent       | ln: failed to create symbolic link '/var/www/rutorrent/conf/users/users': Not supported
rtorrent-rutorrent       | Removing core plugin httprpc...
rtorrent-rutorrent       | Setting custom config for create plugin...
rtorrent-rutorrent       | Checking ruTorrent custom plugins...
rtorrent-rutorrent       | Checking ruTorrent plugins configuration...
rtorrent-rutorrent       | Checking ruTorrent custom themes...
rtorrent-rutorrent       | Setting GeoIP2 databases for geoip2 plugin...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] ~-socklog: executing...
rtorrent-rutorrent       | [cont-init.d] ~-socklog: exited 0.
rtorrent-rutorrent       | [cont-init.d] done.
rtorrent-rutorrent       | [services.d] starting services
rtorrent-rutorrent       | [services.d] done.
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: using the "epoll" event method
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: nginx/1.24.0
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: OS: Linux 5.15.0-105-generic
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: getrlimit(RLIMIT_NOFILE): 32000:40000
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: start worker processes
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: start worker process 767
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: start worker process 769
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: start worker process 770
rtorrent-rutorrent       | 2024/05/09 10:00:54 [notice] 743#743: start worker process 771
rtorrent-rutorrent       | [09-May-2024 10:00:54] NOTICE: fpm is running, pid 746
rtorrent-rutorrent       | [09-May-2024 10:00:54] NOTICE: ready to handle connections
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:05 +1000] "GET /plugins/diskspace/action.php?_=1715212418244 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:16 +1000] "GET /plugins/diskspace/action.php?_=1715212418245 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:27 +1000] "GET /plugins/diskspace/action.php?_=1715212418246 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 2024/05/09 10:01:34 [info] 767#767: *1 epoll_wait() reported that client prematurely closed connection, so upstream connection is closed too while sending request to upstream, client: 192.168.x.xxx, server: , request: "POST /plugins/rpc/rpc.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php-fpm/php-fpm.sock:", host: "<IP_ADDRESS>:8080", referrer: "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:34 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 499 0 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:38 +1000] "GET /plugins/diskspace/action.php?_=1715212418247 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:49 +1000] "GET /plugins/diskspace/action.php?_=1715212418248 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:01:59 +1000] "GET /plugins/diskspace/action.php?_=1715212418249 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:00 +1000] "GET / HTTP/1.1" 304 0 "-"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:00 +1000] "GET /php/getsettings.php?_=1715212920671 HTTP/1.1" 200 4881 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:01 +1000] "GET /php/getplugins.php HTTP/1.1" 200 327547 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:01 +1000] "POST /php/setsettings.php HTTP/1.1" 200 5 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/trafic/action.php HTTP/1.1" 200 26306 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/create/action.php HTTP/1.1" 200 2 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /php/setsettings.php HTTP/1.1" 200 5 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "GET /plugins/cpuload/action.php?_=1715212920672 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "GET /plugins/diskspace/action.php?_=1715212920673 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/_task/action.php HTTP/1.1" 200 2 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/rss/action.php HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/history/action.php HTTP/1.1" 200 92780 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/rss/action.php HTTP/1.1" 200 35 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:03 +1000] "POST /plugins/check_port/action.php?init HTTP/1.1" 200 53 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:04 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803734 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:04 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 310 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:04 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 481 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 2024/05/09 10:02:04 [warn] 767#767: *17 a client request body is buffered to a temporary file /tmp/nginx/1/00/0000000001, client: 192.168.x.xxx, server: , request: "POST /plugins/rpc/rpc.php HTTP/1.1", host: "<IP_ADDRESS>:8080", referrer: "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:04 +1000] "GET /plugins/cpuload/action.php?_=1715212920674 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:04 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 237415 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:13 +1000] "GET /plugins/diskspace/action.php?_=1715212920675 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:20 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803891 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:20 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 482 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:20 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 309 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:20 +1000] "GET /plugins/cpuload/action.php?_=1715212920676 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:23 +1000] "GET /plugins/diskspace/action.php?_=1715212920677 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:34 +1000] "GET /plugins/diskspace/action.php?_=1715212920678 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:37 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803891 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:38 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 482 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:38 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 309 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:38 +1000] "GET /plugins/cpuload/action.php?_=1715212920679 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:45 +1000] "GET /plugins/diskspace/action.php?_=1715212920680 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:55 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803891 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:56 +1000] "GET /plugins/diskspace/action.php?_=1715212920681 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:56 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 482 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:56 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 308 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:02:56 +1000] "GET /plugins/cpuload/action.php?_=1715212920682 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:07 +1000] "GET /plugins/diskspace/action.php?_=1715212920683 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:13 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803891 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:15 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 482 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:15 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 308 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:15 +1000] "GET /plugins/cpuload/action.php?_=1715212920684 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:17 +1000] "GET /plugins/diskspace/action.php?_=1715212920685 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:28 +1000] "GET /plugins/diskspace/action.php?_=1715212920686 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:31 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803890 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:32 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 482 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:32 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 308 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:32 +1000] "GET /plugins/cpuload/action.php?_=1715212920687 HTTP/1.1" 200 14 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:39 +1000] "GET /plugins/diskspace/action.php?_=1715212920688 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/"
rtorrent-rutorrent       | 192.168.x.xxx - - [09/May/2024:10:03:49 +1000] "POST /plugins/rpc/rpc.php HTTP/1.1" 200 803887 "http://<IP_ADDRESS>:8080/"

Upgrade image to rule out RPC plugin. Latest is stable now.

Nope... Upgraded to latest, and every time I restart, the number of session is halfed:
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Shutting down thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Shutting down thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent disk: Shutting down thread.
rtorrent-rutorrent       | [s6-init] making user provided files available at /var/run/s6/etc...exited 0.
rtorrent-rutorrent       | [s6-init] ensuring user provided files have correct perms...exited 0.
rtorrent-rutorrent       | [fix-attrs.d] applying ownership & permissions fixes...
rtorrent-rutorrent       | [fix-attrs.d] done.
rtorrent-rutorrent       | [cont-init.d] executing container initialization scripts...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 00-fix-logs.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 01-fix-uidgid.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: executing...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 02-fix-perms.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: executing...
rtorrent-rutorrent       | Setting timezone to Australia/Sydney...
rtorrent-rutorrent       | Setting PHP-FPM configuration...
rtorrent-rutorrent       | Setting PHP INI configuration...
rtorrent-rutorrent       | Setting OpCache configuration...
rtorrent-rutorrent       | Setting Nginx configuration...
rtorrent-rutorrent       | Setting Nginx XMLRPC over SCGI configuration...
rtorrent-rutorrent       | Setting Nginx ruTorrent configuration...
rtorrent-rutorrent       | Setting Nginx WebDAV configuration...
rtorrent-rutorrent       | Update healthcheck script...
rtorrent-rutorrent       | Initializing files and folders...
rtorrent-rutorrent       | rpc.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | rutorrent.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | webdav.htpasswd is empty, removing authentication...
rtorrent-rutorrent       | Checking rTorrent local configuration...
rtorrent-rutorrent       | Checking rTorrent configuration...
rtorrent-rutorrent       | Bootstrapping ruTorrent configuration...
rtorrent-rutorrent       | Setting custom config for create plugin...
rtorrent-rutorrent       | Checking ruTorrent custom plugins...
rtorrent-rutorrent       | Checking ruTorrent plugins configuration...
rtorrent-rutorrent       | Checking ruTorrent custom themes...
rtorrent-rutorrent       | Setting GeoIP2 databases for geoip2 plugin...
rtorrent-rutorrent       | Fixing perms...
rtorrent-rutorrent       | [cont-init.d] 03-config.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: executing...
rtorrent-rutorrent       | [cont-init.d] 04-create-services.sh: exited 0.
rtorrent-rutorrent       | [cont-init.d] ~-socklog: executing...
rtorrent-rutorrent       | [cont-init.d] ~-socklog: exited 0.
rtorrent-rutorrent       | [cont-init.d] done.
rtorrent-rutorrent       | [services.d] starting services
rtorrent-rutorrent       | [11-May-2024 08:59:43] NOTICE: fpm is running, pid 511
rtorrent-rutorrent       | [11-May-2024 08:59:43] NOTICE: ready to handle connections
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: using the "epoll" event method
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: nginx/1.24.0
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: OS: Linux 5.15.0-106-generic
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: getrlimit(RLIMIT_NOFILE): 32000:40000
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: start worker processes
rtorrent-rutorrent       | [services.d] done.
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: start worker process 535
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: start worker process 536
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: start worker process 537
rtorrent-rutorrent       | 2024/05/11 08:59:43 [notice] 518#518: start worker process 538
rtorrent-rutorrent       | <IP_ADDRESS> - - [11/May/2024:08:59:46 +1000] "GET /plugins/diskspace/action.php?_=1715381573883 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent main: Starting thread.
rtorrent-rutorrent-logs  |<PHONE_NUMBER> N rtorrent scgi: Starting thread.
rtorrent-rutorrent       | <IP_ADDRESS> - - [11/May/2024:08:59:57 +1000] "GET /plugins/diskspace/action.php?_=1715381573884 HTTP/1.1" 200 45 "http://<IP_ADDRESS>:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<IP_ADDRESS> Safari/537.36"

After 3 restarts, I now have only 61 torrents loaded...

@AntAreS24 Sorry for the delayed response. This looks like a configuration or hardware issue with your NAS. Possible causes include memory failures, disk failures, inaccessible file paths etc.
I can not be of any more assistance to you. We have successfully resolved all of the issues with the docker container version upgrade. This next thing I would recommend is a memory test to detect possible bad sectors with RAM.

@stickz, understand. Thank you for the help so far.
I did notice that, when I restart only same of them are ".torrent".
.session > ls -la *.torrent
-rw-r--r-- 1 user user  29433 May 18 14:29 0A21C1F19331BA4849F4E2ECD9955E623DBB3285.torrent
-rw-r--r-- 1 user user 392454 May 18 14:29 0CD638BA2DA2AE82777B558FB38B64F86A6F215F.torrent
-rw-r--r-- 1 user user   8429 May 18 14:29 36267A4580F396A82A65997F36A214C4E8F8C312.torrent
-rw-r--r-- 1 user user  11462 May 18 14:29 57BD89B0F043DF7704C9C6129AC8808BEF99CE6E.torrent
-rw-r--r-- 1 user user 280342 May 18 14:29 5E61708E37D73826AE662096B4C9CBA2736C9B7F.torrent
-rw-r--r-- 1 user user  18629 May 18 14:29 899D2D9745119B054A8374A39C45FA9336A9F86D.torrent
-rw-r--r-- 1 user user  21428 May 18 14:29 9E33F537AE4545A168E49E7299AEE0AFF506FCD8.torrent
-rw-r--r-- 1 user user  28407 May 18 14:29 A614B18B50EC2966C0898D9A4A7F7609A6BA8742.torrent
-rw-r--r-- 1 user user  30800 May 18 14:29 B8D7837BB9FBDFED4B58B548124541F53638FBD1.torrent
-rw-r--r-- 1 user user  40541 May 18 14:29 BEAE0BCA1BEF3ADAA03AEE9291459235FB9F487F.torrent

While the rest is:
-rwxrwxr-x 1 user user  233 May 18 14:24 FF77629B4E2DBEB33A4DCC7B1C266D6E6D6CD16E.torrent.libtorrent_resume
-rwxrwxr-x 1 user user  14K May 18 14:24 FF77629B4E2DBEB33A4DCC7B1C266D6E6D6CD16E.torrent.new
-rwxrwxr-x 1 user user  821 May 18 14:24 FF77629B4E2DBEB33A4DCC7B1C266D6E6D6CD16E.torrent.rtorrent
-rwxrwxr-x 1 user user  233 May 18 14:24 FFB5B4A7585DC56F30D9CF8C230EF8593CF6CDF3.torrent.libtorrent_resume
-rwxrwxr-x 1 user user  15K May 18 14:24 FFB5B4A7585DC56F30D9CF8C230EF8593CF6CDF3.torrent.new
-rwxrwxr-x 1 user user  824 May 18 14:24 FFB5B4A7585DC56F30D9CF8C230EF8593CF6CDF3.torrent.rtorrent

Do you know this would happen, and how to recover from that?


V1.6.7 breaks serial

KENMBP:~ kennethlimcp$ particle serial identify
? Which device did you mean? (Use arrow keys)
❯ undefined - undefined
  undefined - undefined
  undefined - undefined
  undefined - undefined

Fixed with reverting and bumping to V1.6.8. Closing.


tools-java should issue an error for absolute FileName

Anchore Syft tool generates the following SPDX (tag:value):
FileName: /usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt
SPDXID: SPDXRef-File-...Actalis-Authentication-Root-CA.crt-b2e28e6876228bbb
FileType: TEXT
FileChecksum: SHA1: 511ca95607022a99ed8e68bd63f136c4854cefcb
LicenseConcluded: NOASSERTION
FileComment: layerID: sha256:3f946b95045046b182ad195bfdb24fe56dd6ea12d34e35a0995218d22c05102a

tools-python complains that it is invalid SPDX.
file name must not be an absolute path starting with "/", but is: /usr/share/ca-certificates/mozilla/Actalis_Authentication_Root_CA.crt

tools-java says that the SPDX file is valid
The SPDX spec says: "A relative filename".
So I would expect tools-java to mark the file as invalid.

I agree - the validation for the SPDX file path name is in the SPDX Java Library - so I'm transferring the issue there.


feat: Add network plan page

Summary

Add network plan page from https://snapshotx.xyz/#/network
Remove existing network plan page

How to test

Go to http://localhost:8080/#/network or https://snapshot-git-feat-network-plan-page-snapshot.vercel.app/#/network

Great works! Looks perfect to me, can you just add a link in the footer


How do I run this if I have it via Epic?

I would like to run this mod but I have the game via Epic. Is there a fix or anything I can do to get it up and running?
I also have a Quest 2 - Air Link, Virtual Desktop, Steam Link (Quest), and even the VR Air Bridge.

Did you ever get this sorted? Trying to figure out how to make it work with my Epic copy.

People have run this on Epic before: https://github.com/Okabintaro/SubmersedVR/issues/42#issuecomment-1605399270
I will try to add a guide for it in the future


Crash in BugsnagMetadata.m line 168

Describe the bug
Crash of unknown origin coming from Bugsnag. We have seen 2 crashes affecting 2 customers so far.
Steps to reproduce
Unknown
Environment

Bugsnag version: 6.2.3
CocoaPods version: 1.9.3
Carthage version (if any): n/a
iOS/tvOS/macOS version(s): 13.7.0
Simulator or physical device: iPhone 11 Pro Max
XCode version: 12.1
Swift version (if applicable): 5.1

Stack Trace

Stack trace:
Crashed: com.apple.main-thread
SIGSEGV 0x0000000ee9013f80
0  libobjc.A.dylib                0x1bb25ddc0 objc_release + 16
1  CoreFoundation                 0x1bb4733e8 __RELEASE_OBJECTS_IN_THE_ARRAY__ + 116
2  CoreFoundation                 0x1bb3fe72c -[__NSArrayM dealloc] + 172
3  CoreFoundation                 0x1bb55fd5c cow_cleanup + 172
4  CoreFoundation                 0x1bb401fac -[__NSDictionaryM dealloc] + 148
5  MyApp                           0x100c6f038 -[BugsnagMetadata addMetadata:withKey:toSection:] + 168 (BugsnagMetadata.m:168)
6  MyApp                           0x100c5e010 -[BugsnagClient serializeBreadcrumbs] + 1163 (BugsnagClient.m:1163)
7  MyApp                           0x100c5be40 -[BugsnagClient leaveBreadcrumbWithMessage:] + 834 (BugsnagClient.m:834)
8  MyApp                           0x100c548cc +[Bugsnag leaveBreadcrumbWithMessage:] + 175 (Bugsnag.m:175)
9  MyApp                           0x10174ce7c specialized BugsnagLogStoreWriter.writeToLog(level:message:parameters:) +<PHONE_NUMBER> (<compiler-generated>:4400172668)
10 MyApp                           0x10174d34c specialized BugsnagLogStoreWriter.write(level:message:parameters:) +<PHONE_NUMBER> (<compiler-generated>:4400173900)
11 MyApp                           0x10173ede0 AggregateLogStoreWriter.write(level:message:parameters:) +<PHONE_NUMBER> (<compiler-generated>:4400115168)
12 MyApp                           0x10173eea0 protocol witness for LogStoreWriter.write(level:message:parameters:) in conformance AggregateLogStoreWriter +<PHONE_NUMBER> (<compiler-generated>:4400115360)
13 MyApp                           0x101745558 Logger.log(level:_:parameters:) +<PHONE_NUMBER> (<compiler-generated>:4400141656)
14 MyApp                           0x10165f010 Type1.customerTappedCard() +<PHONE_NUMBER>
15 MyApp                           0x101660700 protocol witness for Type2.customerTappedCard() in conformance Type1 +<PHONE_NUMBER> (<compiler-generated>:4399204096)
16 MyApp                           0x101665b04 @objc Type3.didTapCard(_:) +<PHONE_NUMBER> (<compiler-generated>:4399225604)
17 UIKitCore                      0x1bf656aac -[UIApplication sendAction:to:from:forEvent:] + 100
18 UIKitCore                      0x1bf03f784 -[UIControl sendAction:to:forEvent:] + 208
19 UIKitCore                      0x1bf03faec -[UIControl _sendActionsForEvents:withEvent:] + 400
20 UIKitCore                      0x1bf03eb04 -[UIControl touchesEnded:withEvent:] + 520
21 MyApp                           0x10174f924 UIView.touchesEnded(_:with:) +<PHONE_NUMBER>
22 MyApp                           0x10174fab0 @objc UIView.touchesEnded(_:with:) +<PHONE_NUMBER>
23 UIKitCore                      0x1bf691e90 -[UIWindow _sendTouchesForEvent:] + 1024
24 UIKitCore                      0x1bf693670 -[UIWindow sendEvent:] + 3540
25 UIKitCore                      0x1bf66e840 -[UIApplication sendEvent:] + 348
26 UIKitCore                      0x1bf6f1da4 __dispatchPreprocessedEventFromEventQueue + 6688
27 UIKitCore                      0x1bf6f4988 __handleEventQueueInternal + 5368
28 UIKitCore                      0x1bf6ec8c8 __handleHIDEventFetcherDrain + 144
29 CoreFoundation                 0x1bb4a8d14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
30 CoreFoundation                 0x1bb4a8c68 __CFRunLoopDoSource0 + 84
31 CoreFoundation                 0x1bb4a83c4 __CFRunLoopDoSources0 + 188
32 CoreFoundation                 0x1bb4a31fc __CFRunLoopRun + 780
33 CoreFoundation                 0x1bb4a2bc8 CFRunLoopRunSpecific + 480
34 GraphicsServices               0x1c588b5cc GSEventRunModal + 164
35 UIKitCore                      0x1bf655744 UIApplicationMain + 1936
36 MyApp                           0x1003142e0 main + 63 (AppDelegate.swift:63)
37 libdyld.dylib                  0x1bb31f384 start + 4

Hi @sethfri,
Thanks for raising this, we will take a look and get back to you when we know more.

Hi @sethfri
Are you sure this occurred when using bugsnag-cocoa v6.2.3?
Since v6.2.3 -[BugsnagClient leaveBreadcrumbWithMessage:] no longer calls -[BugsnagClient serializeBreadcrumbs] so this crash shouldn't be possible.
It would indicate to us that an older version of bugsnag-cocoa is being used.

This is my bad, Matt, sorry. I thought this version of our app was using Bugsnag 6.2.3, but it's using 6.2.1. Closing this, as we're not seeing it in the latest version of the app using 6.2.3.


Need a  way to add attribute types

If there is a way to programmatically add new attributes to the attribute pane, please document.  In addition to attributes with type text, how about selects and radios?  Doing this programmatically would be sufficient.  Similar to the header control (h1, h2, h3 etc).

Documentation doesn't yet exist for this but its a priority for the next release. Attribute types are determined by the data type and structure of the attribute. For example if you add a required attribute with value false it will create an unchecked checkbox. Dropdowns like the one in the header control you mentioned use an array of objects in the (also undocumented) options structure for select, radio and checkbox groups and header control attribute looks like this.
attrs: {
  tag: [
    { value: 'h1', label: 'H1' },
    { value: 'h2', label: 'H2' },
    { value: 'h3', label: 'H3' },
    { value: 'h4', label: 'H4' },
  ],
},

There is no built-in way of adding an array based attribute however there is an action hook that to intercept the addAttribute handler so instantiating Formeo with the following would allow you to add your own select for options:
const options = {
  actions: {
    add: {
      attr: evt => {
        // create custom control
      }
    }
  }
}

new Formeo(options)

Is there a way to add the "tag" name show the same way that it does when you specify "Required" or "type". In bold next to the options?
This is how it displaying using your example:


Auto-Approve Dependabot

Let's find out how good our test suite is! 😈

@philsturgeon
How is this going to help us? Basically this auto approves, but somebody will need to merge this anyway. I would say — if we want to go in such way, we can configure DependaBot to auto merge the PRs

This will effectively save me some time.

We chatted about this on Slack but to move the thread forwards, approval and merging are two different things, approval is required for merging. Dependabot wil only be able to merge once the PR has been approved, so you want to enable both.

To get the full benefit, uncheck the security updates only. We only turned that on to temporarily reduce the number of PRs coming in, because we were manually having to update them.

Yeah we can merge it — I just want to check out the dependabot settings so we do not make mistakes and stuff with it. I'll approve/merge later today.

No need to put this in docs because users do not send dependabot PRs and therefore have no interaction with this logic.
--
Phil Sturgeon
@philsturgeon

On Aug 23, 2019, at 15:19, Vincenzo Chianese<EMAIL_ADDRESS>wrote:
Yeah we can merge it — I just want to check out the dependabot settings so we do not make mistakes and stuff with it. I'll approve/merge later today.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.


Create starting server code

USER STORY
As a developer, ISBAT to run a bare bones server
ACCEPTANCE CRITERIA
GIVEN
A developer
WHEN
They hit a health endpoint
THEN
a server should respond with 200 ok

This is going to be for the login server

Work done: Routing and server struct.
Work left: Be able to start a server to listen to the endpoint.


Revert "update VERSION"

Reverts kmesh-net/kmesh#896
This should be on release-0.5

/lgtm
/approve


Object.assign isn't suppported by internet explorer

First of all, thank you for your project. It's awesome and it helped me a lot. However, I've found a problem related to iE. Since Object.assign isn't supported by iE, my graphs weren't rendering in this case. I replaced that with JSON.parse, which returns an Object as well. Please let me know if I need to change or improve anything.

I am seeing the same issue in an IE11 vb.
Would it be advisable to use a polyfill?

@adamellsworth @lcpunch See https://github.com/gor181/react-chartjs-2/pull/103 I've got rid of the dependancy of Object.assign if you would like to verify.


emoji/icon is not shown with the message

the default thumbsup and thumbsdown does not appear in the slack message.
Setup: python 3.8, pytest-slack 2.3.1
Command: python -m pytest -vv -x scan.py --slack_hook=${SLACK_NBE_WEBHOOK}

@cjdcordeiro please provide a screenshot

sure:

Can confirm that this is still a problem


Adding Location and Line Number using CSV Imports

Issue Type

[X] Enhancement

Description
When uploading findings using CSV files I cannot get DefectDojo to import Location or Line Number. I tried different column headers in an attempt to get it to automatically populate. Some of the column headers I tried were: URL, Location, Files, File, and Line Number. I can edit the finding after I import findings to manually add the Location and Line Number but I would prefer to be able to import that information automatically from a CSV file. The scan type I am using is Generic Findings Import.
Install

[X] setup.bash

DefectDojo Version
1.5.2

@JohnWickAppSec that won't be a problem to add. Just curious, what scanner findings are you importing?

Thank you for responded so quickly! It would be great if you could add that functionality. It would save us a lot of time from manually adding the location and Line Number to each finding. Can you give me any estimate on when it would be added? Since the scanning tool we use is not supported by DefectDojo I was just trying to upload the scan findings in a CSV file using the column headers that are listed in the documentation.
Another thing I have noticed is that the column header Url does not seem to populate any field in DefectDojo. Url is listed as a supported header in the documentation but I have been unable to see where the information listed in that column header goes in DefectDojo.


Add fletcher checksum code

This is a first step towards being able to cache splines and quickly check if the cache is still valid.

Codecov Report

Merging #46 into master will increase coverage by 0.07%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master      #46      +/-   ##
==========================================
+ Coverage   94.91%   94.99%   +0.07%
==========================================
  Files          44       46       +2
  Lines        4407     4476      +69
==========================================
+ Hits         4183     4252      +69
  Misses        224      224

Impacted Files
Coverage Δ

test/unittests/unittest-fletcher.cpp
100% <100%> (ø)

test/unittests/unittest-coulomb-rec-parallel.cpp
99.45% <100%> (ø)
:arrow_up:

src/fletcher.h
100% <100%> (ø)

...est/unittests/unittest-dispersion-rec-parallel.cpp
99.45% <100%> (ø)
:arrow_up:

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 219602f...3e5c22f. Read the comment docs.


Add error 404 page

Hey,
I would like to add an error 404 page to the website.
Thanks and Regards,
Vibhuti Chandrakar

@VC6378 , you can work on this.


Filter custom-metrics APIService.

Fixes SRVKS-210.
The APIService for the custom-metrics API is dropped for now to not trigger SRVKS-186 unnecessarily.

Thanks! We'll try to do this better upstream... eventually.


Troubleshooting doc, point 10), should create 65536 subuids and subgids, no?

/kind bug

Setting up podman for first time on Fedora 30 Branched, and discovered I had to manually create subuids and subgids for my account, so I arbitrarily created 10,000 of each, only to have podman tell me I needed 65536 of them. I fixed that, and all worked. So the example in the troubleshooting doc at the very end of point 10), which creates only 1,000 of them, would seem to be doomed to failure, unless I am misreading something.

Well we have fixed podman in the upstream to remove the requirement of 65k UIDs.  So when Podman 1.2 ships you should not have this issue.

Ah, gotcha. Should have checked the history, would probably have noticed that.


chore(deps): update dependency @types/react-dom to v17.0.1

Closes

User facing changelog

Additional details

How has the user experience changed?

PR Tasks

[x] Have tests been added/updated?
[ ] Have docs been added/updated?
[ ] Have stories been added/updated?

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

:tada: This PR is included in version 1.2.0 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


[Components section] Content coming soon message implementation

Problem to solve
Currently, we have "Design and functional specifications, Development documentation, and Feedback" sections as the base content for the website page. The development team populated the page when a new component developed.
However, when adopters visit the website, they see a simple page without guidelines they are looking for and have no idea when DDS Team will provide the guideline or additional information about the component. We need to create a treatment to inform the adopter the rest of the guidance is in work progress to set the right expectation.
Steps:

Review the blue "Additional usage guidelines are coming soon" notification design with Jenny

Add the blue "Additional usage guidelines are coming soon" notification on the existing website page (see list below) updated and add it to the development master file implementation via Code as well.

Button group
Card group
Carousel
Content item — horizontal
Dotcom shell
Image
Layout
Pictogram item
Quote

Review PR with Jenny

Note:
👉 The blue inline notification treatment is a core Carbon component, and the detail can be viewed here.
Acceptance criteria

[x] Notification treatments are updated on all existing website pages
[x] Notification treatment is added to the development master file

Added the topic and Jenny to the March 8 engineering meeting agenda.

I did this work and hopefully correctly. Will be reviewing PR with Jenny. @RobertaJHahn I don't think we need to go over this the dev team. Thanks!
PR: https://github.com/carbon-design-system/carbon-for-ibm-dotcom-website/pull/898

@shixiedesign Thank you for working on it. I was going to do that later today before I log off.
I did not see the notification popping up on the Button Group page. You?
Also, I see the Notification treatment is added to the development master file is checked off. Where did you add that?

@shixiedesign This topic is included in the Monday, March 15, meeting agenda.

Went over this during Monday's engineering call. Kenny confirmed there's no "template" and sections of the page are just copied from other existing pages. Therefore I checked off "Notification treatment is added to the development master file".

Closing based on comments above.


Datadog: isActive() should react on num > 0

Signed-off-by: Zbynek Roubalik<EMAIL_ADDRESS>
I confused @arapulido on https://github.com/kedacore/keda/pull/2694 to include a wrong implementation of IsActive() function, fixing this here.
Checklist

[x] Commits are signed with Developer Certificate of Origin (DCO - learn more)

Relates #2657

/run-e2e datadog*

Mmm, I'm very confused about this. A metric can have a positive value, or a negative, so checking this doesn't give much information.
What's the goal?
I tested the code before this, and I was able to make to 0.
Can we wait until tomorrow morning before merging this, please?
I would like to do more testing and report

@arapulido this is just aligning the functionality with all the existing scalers, so the experience is consistent. isActive() should return true if there any activity on the scaler.  We are discussing on making this configurable (ie adding a new property for the activation threshold)

@arapulido this is just aligning the functionality with all the existing scalers, so the experience is consistent. isActive() should return true if there is any activity on the scaler. We are discussing on making this configurable (ie adding a new property for the activation threshold) -> #2800

OK, as discussed on Slack, happy to be consistent with the rest of scalers.


Automatic sending of CORS headers on stub responses

WireMock supports sending CORS headers for stub responses.
Add configuration for enable automatic sending of CORS headers on stub responses like in WM.
Use case
Consider developing SPA - for exaple react app. Application during development is avaiable on port 3000, but View as Published app is available on port 4502. It is not possible to handle it- because of CORS. You can add headers on mocks, but easier way would be to have possibility on tool by default

please describe real life use case

please describe real life use case

Implemented in 2.1.0


[backport/1.22] repo: Release v1.22.7

(minor changelog fix)
Signed-off-by: Ryan Northey<EMAIL_ADDRESS>
Commit Message:
Additional Description:
Risk Level:
Testing:
Docs Changes:
Release Notes:
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
[Optional Fixes commit #PR or SHA]
[Optional Deprecated:]
[Optional API Considerations:]

@phlax Any reason why release v1.22.7 has not been tagged yet?

1.22.7 has just been tagged
https://github.com/envoyproxy/envoy/releases/tag/v1.22.7
for full answer as to why it was delayed - see #25426


feat: Feature/intmdb 1219 awscdk l3 fargate integration

feat: aws l3 cdk for fargate integration
JIRA Ticket:  https://jira.mongodb.org/browse/INTMDB-1219
Type of change:

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as
expected)
[x] This change requires a documentation update

Required Checklist:

[x] I have signed the MongoDB CLA
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added any necessary documentation (if appropriate)
[x] I have run make fmt and formatted my code
[x] I have tested the CDK constructor in a CFN stack. See TESTING.md

Further comments

shall we add some tests?


When does git sync happen?

It is not clear to me when the sync will happen. Right now, if I change GIT_TAG, then I need to remove my build directory and run cmake again. What if the git repository is updated? Do I need to manually clean my build from time to time to be sure I am on the latest version?
NOTE: the example only works for the "master" branch of "google-test" (they apparently changed the structure a little bit).

Before GoogleTest shifted to github, its structure was different. When they moved to github, they combined gtest and gmock into the one git repository, resulting in the structure that is there now. All the tags in GoogleTest correspond to older releases which were from before the restructure, so they are probably not what you actually want to be using going forward, at least until a new release is made and a corresponding tag created for that new release. You could always use a specific git SHA1 until then if you want to lock down your build to a particular commit.
As for when the sync would happen, it should occur whenever you re-run the cmake stage. It won't happen just doing a build because the download check happens at cmake time (that's the whole point of the DownloadProject functionality).
You should not need to remove your build directory to get DownloadProject to check if an update is needed, just re-run cmake and don't use the UPDATE_DISCONNECTED option. You can disable that check with the UPDATE_DISCONNECTED option, as shown in the example. If you lock down to a specific git SHA1 or tag, then it makes sense to include this option, but if you want to follow a branch or master, then don't use UPDATE_DISCONNECTED.

Make perfect sense, thanks a lot!


Installing smaller subset of the libraries

It would be great if it was possible to install a smaller subset of the Qt libraries. For example if my application does not use QML there is no need to install it, or QtQuick or QtQuickControls.
This would speed up CI builds.

@agateau Could you mind to explain how to retrieve target package list form https://download.qt.io/online/qtsdkrepository/mac_x64/desktop/qt5_5150/Updates.xml
for a smaller subset?
For example, current implementation see line 6
<Name>qt.qt5.5150.clang_64</Name>

and then get a download target package list from line 18
<DownloadableArchives>
qtbase-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtconnectivity-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtdeclarative-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtgraphicaleffects-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtimageformats-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtmacextras-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtmultimedia-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtsensors-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtsvg-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qttranslations-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtwebchannel-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtwebsockets-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtxmlpatterns-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtlocation-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtserialport-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qttools-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtquickcontrols-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtquickcontrols2-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qt3d-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtwebview-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtserialbus-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtscxml-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtgamepad-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtspeech-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qtremoteobjects-MacOS-MacOS_10_13-Clang-MacOS-MacOS_10_13-X86_64.7z, qt-5.15.0-macx-clang.7z
</DownloadableArchives>

To reduce a list, we need some logic to do it.
It seems there are no subset definition in it.

I think the easiest solution is to provide a way for users to specify individual archives, and install all if not set. This way it is not up to aqtinstall to do the right thing.
In my case I think I would need only qtbase, qtimageformats, qtsvg, qttranslations, qttools, and probably qt (not sure what that one contains), so if I could call aqtinstall with a --archives option to pass the list or archives to install, similar to the --modules option, it would save quite some time.

v0.9.0b2 release includes --archives option and feature. Does it work for @agateau ?

Going to give it a try!

It works beautifully, thanks!
Installing only qtbase, qtimageformats, qtsvg, qttranslations and qttools reduced the duration of the "Qt install" step from 38s to 8s.

Thanks to this issue I learned of the existence and purpose of the --archives option. Thanks for adding this!
Since this issue showed up in a web search and served as good documentation for me, I thought I should add this subtle problem that I found. It has an easy solution, which I will also describe.
My environment is Ubuntu 18.
I began by running:
python3 -m aqt install --outputdir /tmp/myQt 5.15.0 linux desktop

I noticed that this was downloading qt3d and some other things I didn't need.
So then I discovered --archives and changed my command to:
  python3 -m aqt install --outputdir /tmp/myQt 5.15.0 linux desktop --archives \
   qtbase \
   qtconnectivity \
   qtdeclarative \
   qtquickcontrols \
   qtquickcontrols2 \
   qtsvg \
   qttools

However, at least on Ubuntu 18, that did not result in a fully working solution, because I saw errors like the following when trying to run uic and other tools:
error while loading shared libraries: libicui18n.so.56: cannot open shared object file: No such file or directory

I went back through the aqt logs and I noticed that when I invoked the NON-archives command, the downloads included 5.15.0-0-202005140804icu-linux-Rhel7.2-x64.7z.
When I manually downloaded and unzipped 5.15.0-0-202005140804icu-linux-Rhel7.2-x64.7z I could confirm that this contains the libicui18n.so.56 that I was lacking when I tried the --archives command.
This led me to what began as a "lucky guess."  I thought that maybe I can list icu as an archive name. It works!
So now my command uses --archives and also contains icu, and it is working:
  python3 -m aqt install --outputdir /tmp/myQt 5.15.0 linux desktop --archives \
   icu \
   qtbase \
   qtconnectivity \
   qtdeclarative \
   qtquickcontrols \
   qtquickcontrols2 \
   qtsvg \
   qttools

Thank you for this great tool!


Inquiry on the data

Hi, I have several questions for the data.

In the link in the https://forms.gle/XDrxSgoCXs3jzn8U7, there are downloading link for the data. But the data only contains the image data but not includes the labels. So if I want to use a certain benchmark, should I download the data in the grand challenge page but not the whole dataset indicated in the readme?
I find the data in this grand challenge pape (https://zenodo.org/records/5903037#.YfDOl-pBybh) contains the labels. However, I find the issue https://github.com/JunMa11/AbdomenCT-1K/issues/7 mentions that the data is not correct and you updated it in the baidu net disk (but the baidu net disk is broken). The date in the grand challenge page is Jul 27, 2021 (earlier that the date of the issue). So does the data of subtask2 on the grand challenge page correctly correspond to the setting in the paper?

Hi @Advocate99 ,
Sorry for the late reply.

We do have annotations. It is in Part 3. https://zenodo.org/records/5903769

The fixed data corresponds to the paper setting.

BTW, we also have two larger benchmarks for semi-supervised and partial-label learning.
https://flare22.grand-challenge.org/
https://codalab.lisn.upsaclay.fr/competitions/12239


Fix potential YAML parsing error

Fixed the name subnet name parameter in nodePools section so that YAML can parse. When you uncomment the name, a - is needed for successfully parsing YAML

Codecov Report

Merging #833 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #833   +/-   ##
=======================================
  Coverage   34.38%   34.38%
=======================================
  Files          57       57
  Lines        3743     3743
=======================================
  Hits         1287     1287
  Misses       2311     2311
  Partials      145      145

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 5780b59...be6f5fb. Read the comment docs.

Closing this in favor of #888.
Thanks anyway @sathiyas!


Viewing and Editing File Metadata YAML

I do not know if my question can be translated correctly by a translator, and I do not know if it is possible to do this at all, but I could not help but write this here.
It would be useful to be able to edit at least a limited number of YAML parameters from third-party file managers. And of course, output some parameters to the columns of file managers for sorting *.md files. At least, the title, tags, comments, description. Perhaps Markdown Shell Extensions will be able to solve this...
Thank you!

Sorry but this request is out of scope of this project.


Documentation on service instances list is unclear or has contradictions in managed and user-defined types

Issue
The documentation on the service instances list states the following:
This endpoint retrieves the service instances the user has access to. At the moment, this endpoint only returns managed service instances. This may change in the future.
But immediately it states that you can filter by type with the following query parameters
type string  Filter by type; valid values are managed and user-provided
Which suggest that this endpoint does return user-defined service instances
Context
Applies only to the service instances list endpoint
Steps to Reproduce
Check the documentation on service instances list
https://v3-apidocs.cloudfoundry.org/version/3.99.0/index.html#list-service-instances
Expected result
It should be clear if the endpoint does in fact return user-defined service instances or not and if true in which conditions it does. The current statement is misleading.

If the endpoint does indeed return user-defined service instances but only when querying them it should state that by default it does not return user-defined instances instead of stating that it never does.
If the endpoint does not return user-defined instances in any circumstance it should state that the type filter has no effect.
If the endpoint does return user-defined instances by default the statement should be removed.

Current result
It is impossible to know just by reading the docs which will be the output of this endpoint

You are linking to an old version of the docs.  Please check that you are referencing the latest version of the docs before submitting an issue (this was fixed in 3.102):
https://v3-apidocs.cloudfoundry.org/version/3.103.0/#list-service-instances
https://v3-apidocs.cloudfoundry.org/version/3.102.0/#list-service-instances


Add uuid command to get floodgate uuid from bedrock playername.

this is sick! But in the event where a player UUID can't be looked up because it wasn't in cache - maybe providing a solution (e.g. join any Geyser server to get cached) or a second way to lookup the xuid would be sick.. although the last one doesn't seem to be possible

ached) or a second way to lookup the xuid would be sick

Yea the latter would be a pain if you look at the current floodgate uuid converter. Yea might not be a bad idea to add some notice on the embed thanks for the suggestion.

Ive redone most code. using global status codes we determine which embed gets send.

damn, including a fix is actually sick
maybe it would be an idea to mention the fuc converter too as a potential fix?


Fix the web.config errors for the new Localization module

Unfortunately the XmlMerge in DNN does not allow a collision check when doing any other action than "update". This prompted two Localization modules to be present in the web.config for new installs which makes the site unuseable. This PR changes the action to be "update". Note that it means we don't control where in the modules pipeline the module sits. But this has become a moot point since we changed the event order for this module.
In the future we should adjust the XmlMerge class to cater for collision control for the other actions, IMHO.

#4264 removed the localization module from the config to start, so there shouldn't be duplicates now.

And I think we still want it to run as early as possible.

I agree with @bdukes here

Yeah I thought it was fixed, at least I don't have duplicates on a clean install from a build on the release branch... @donker was this tested after Brian's PR got merged ?

When I tested, Brian's PR hadn't been merged yet. Now it should be fine.


Document the dev workflow

We should mention how to incrementally compile changes after the webpack dev server is started.

Yes pls 👍

With 719f7b387aff86e401574af4e735650d6aa8f1bf I think this is mostly done. Only remaining this is to document how to initialize the Git submodule.


global error channel and destination specific error channel are picking messages alternatively

running test first time(or odd time) : destination specific error channel is getting error and sending it to output channel (expected behavior)
running test second time(or even time) : global error channel is getting error then destination specific error channel is getting error but not sending it to output channel (expected behavior)
Error handler class :
@EnableBinding(Processor.class)
public class ErrorHandler {

	@Autowired
	Deserializer deserializer;

	@ServiceActivator(inputChannel = "testhk24.hel1.errors" ,outputChannel="customDlqTopic", async="false", requiresReply="true", sendTimeout="0")
	public byte[] errorChannel(ErrorMessage em) {
		//em = null;
		byte[] arr = (byte[])((MessagingException)em.getPayload()).getFailedMessage().getPayload();
		System.out.println("error has been reported hel1 "+deserializer.deserializeMessage(arr).getEventJson()+" "+deserializer.deserializeMessage(arr).getEventJson() );
		return arr;
	}

	@ServiceActivator(inputChannel = "testhk24.hel2.errors" ,outputChannel="customDlqTopic2", async="false", requiresReply="true", sendTimeout="0")
	public byte[] errorChannel2(ErrorMessage em) {
		byte[] arr = (byte[])((MessagingException)em.getPayload()).getFailedMessage().getPayload();
		System.out.println("error has been reported hel2 "+deserializer.deserializeMessage(arr).getEventJson()+" "+deserializer.deserializeMessage(arr).getEventJson() );
		return arr;
		//em = null;
	}

	@ServiceActivator(inputChannel = "errorChannel", async="false", requiresReply="false", sendTimeout="0")
	public byte[] errorChannel3(ErrorMessage em) {
		byte[] arr = (byte[])((MessagingException)em.getPayload()).getFailedMessage().getPayload();
		System.out.println("global error has been reported "+deserializer.deserializeMessage(arr).getEventJson()+" "+deserializer.deserializeMessage(arr).getEventJson() );
		return arr;
		//em = null;
	}

@garyrussell ,
Pay attention to this, please:
@ServiceActivator(inputChannel = "testhk24.hel1.errors"

Can't it happen that @ServiceActivator is processed before Bindings and therefore that testhk24.hel1.errors is auto-created as DirectChannel instead of expected PublishSubscribeChannel?
Because then in the end we have:
if (defaultErrorChannel != null) {
	BridgeHandler errorBridge = new BridgeHandler();
	errorBridge.setOutputChannel(defaultErrorChannel);
	errorChannel.subscribe(errorBridge);

I mean we add one more subscriber to our errorChannel and have a round-robin balancing according a DirectChannel nature.

@vikrantch-hk ,
I think a workaround for you is like:
@Bean(name = "testhk24.hel1.errors")
SubscribableChannel myError|Channel() {
    return new PublishSubscribeChannel();
}

@artembilan thanks I'll try and let you know :)

@artembilan should I make errorChannel bean as PublishSubscribeChannel also

Well, it is as like that by default: https://docs.spring.io/spring-integration/docs/5.0.2.RELEASE/reference/html/messaging-channels-section.html#channel-special-channels

@artembilan now pattern of error channel calling is consistent but every alternate time destination error channel is not sending message to outputchannel

every alternate time destination error channel is not sending message to outputchannel

Sorry, that isn't clear for me what you mean.
Maybe you can turn on DEBUG for the org.springframework.integration category and take a look into logs how your messages are traveling. Especially I'm interested in the part of preSend on the testhk24.hel1.errors and above.

presend is getting called always for CUSTOM_DLQ_TOPIC1, CUSTOM_DLQ_TOPIC2 but flow doesn't go in stream listener for CUSTOM_DLQ_TOPIC1, CUSTOM_DLQ_TOPIC2 second time (every even time)

Hm. That sounds like a different story.
Have we fixed already your concern about odd-even on the testhk24.hel1.errors ?
So, let's close the ticket!
Maybe the same happens on your customDlqTopic, but that still looks like a different story.
Please, don't confuse us with complex configurations, like showing these two topics,
That's your application, but we have here a lot of different stuffs to deal with: simple code from your with proper description - quicker reaction from us and less comments like this mine for nothing.
Thanks for understanding

it's ultimately same issue error messages are being sent to output channels odd times only not even times

is there a way to by pass global errorchannel and handle channel specific errors in channel specific errorchannels only

So, you have several subscribers to that customDlqTopic as well.
Your last comment is not related. Anyway the answer is "No". By default global errorChannel has just LoggingHandler subscriber, nothing more. The problem is somehow with your DirectChannels and several subscriber for them. Nothing more is there about round-robin.

there is one subscriber for @ServiceActivator(inputChannel = "testhk24.hel2.errors" ,outputChannel="customDlqTopic2" , problem is every alternate time serviceactivator is not pushing error message to outputchannel topic

Well, you see you still don't format code properly... :sigh:
And GH issues are not a chat.
Please, share with us as simple Spring Cloud Stream app as possible with the detailed README how to reproduce and what is expected. We will pull it locally and play with the code, logs and debug mode to determine what's going on.
That's my vision because I don't feel the feature properly, so I don't have an immediate answer what and how should be configured.

@artembilan thanks a lot that's been a great help my topic stream listener wasn't configured properly now error channels behavior is consistent :)

Pay attention to this, please:

Sorry - I have been busy this week and missed this mention somehow.
@artembilan please open an issue; we should at least log a warning if the application has predeclared an unexpected channel type, and add a warning to the documentation.
I suppose another work-around would be to @Autowire the error channel and manually subscribe a MessageHandler to it.

I guess another option would be to NOT bridge it to the global errorChannel if it's not a pub/sub channel (and log a warn).


Feature requests: Autofill service data, default icons, reload YAML, ms delay

This is a collaborative of all the small kind/feature enhancements I've found scowering the issues board. Until a merge happens, I'll continually update this with smaller feature requests.
Current features and their origin thread:

#210
#233

all service calls no longer require an entity_id, you can now pass a light and the integration is smart enough to find the switch for you. This is probably the biggest feature, services.yaml has been updated to streamline the user experience tenfold, as it'll show selectors in the GUI when using services in scripts/automations.
Huge shoutout to @firstof9 and @Raman325 in the HASS discord for helping me figure this out.

#274 icons are implemented.
#104

You can now reload any changes to the yaml file without restarting your home assistant. Should show a 'reload' button in your integrations page or you can call the homeassistant reload integration service call.
See https://community.home-assistant.io/t/how-to-allow-custom-compontent-for-yaml-configuration-reloading/391190/4
Please feel free to clean up any of the code. I apologize for the numerous small commits I heavily relied on pre-commit to find syntax errors before each test.

Looks like you may need to update your tests.

Pushed some small changes and left some comments. I have to go now. Will try to continue later today or tomorrow 😄

I tried making the title a little bit more descriptive. Please change it as you see fit.

@basnijholt Great! Could you perhaps glance over my comment in #450?

@basnijholt Sorry for the mess! Are there any other PRs you believe I could clean up prior to review?

@all-contributors please add @firstof9 for code

@th3w1zard1, no worries at all! I don't mind making a few small changes. Hope you agreed with them 😄

I also released 1.6.0 just now. So if someone reports issues, we know where they come from :)

I enjoyed watching the commits roll out, the formatting is so clean and I can tell this was done right. I'm surprised at how fast you work. You even added that user error check I didn't bother to add, for when users have lights existing in multiple configs! I even left a reminder to myself 'don't bother checking if the light exists in multiple configs - that's a user error.'
Nice work!


[kyuubi #6032] Expose KyuubiOperation exec time metrics

:mag: Description
Issue References 🔗

This pull request fixes #6032
Describe Your Solution 🔧
KyuubiOperation (LaunchEngine, ExecutedCommandExec) supports exec_time metrics
Types of changes :bookmark:

[ ] 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 change)

Test Plan 🧪
Behavior Without This Pull Request :coffin:
Behavior With This Pull Request :tada:
Related Unit Tests

Checklist 📝

[ ] This patch was not authored or co-authored using Generative Tooling

Be nice. Be informative.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (4bd259a) 61.18% compared to head (8fb7e10) 61.08%.

Additional details and impacted files
@@             Coverage Diff              @@
##             master    #6038      +/-   ##
============================================
- Coverage     61.18%   61.08%   -0.11%
  Complexity       23       23
============================================
  Files           623      623
  Lines         37145    37142       -3
  Branches       5033     5033
============================================
- Hits          22726    22687      -39
- Misses        11979    12007      +28
- Partials       2440     2448       +8

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

@turboFei @pan3793 cc


QUESTION: How to get log output from the Python side?

Hi! Pythonia is amazing! Trying hard to make good use of it.
In attempting to integrate and debug Python libraries with my node code, I really need to be able to push Python objects to log to inspect. Currently, my naïve initial approach doesn't seem to result in anything visible at the console where I'm running the JS.
Is there any good way to send logs over from the Python side to be viewed (and stored) in the Node context, or do I need to reconstruct the context in a pure Python environment, do my Python logging and debugging there, and just come back to JS to execute? Thank you!

Can you explain what you mean by log output? The standard input and output should already be piped to the current console. If you mean you want to print out the value of a Python object, you need to
console(await obj.toString()). That will either call repr or str on the Python object, and return a string that can be outputted to the console.

Please reopen if you have more info to add


pthread cancel

Where is pthread_cancel? Why is it not implemented?

Hello @nslowell,
Not all interfaces specified by POSIX Threading standard are implemented, since this project is a "lab project" nor we could claim we are "POSIX compliant". Though, if features are needed, we are happy to investigate what it takes to implement. In this case pthread_cancel() implementation is proposed in this PR https://github.com/FreeRTOS/Lab-Project-FreeRTOS-POSIX/pull/3 and some feedback is provided in the last comment. (And you are welcome to submit PRs, happy to take a look.)

The reason it is not implemented is that cancellation points are exceedingly difficult to decypher. See https://lwn.net/Articles/683118/ for some more information. The TLDR; for that is that threads may only be cancelled when a specific set of conditions are met according to the Posix standard, this is called a cancellation point, one example is that a thread may not be cancelled while it is holding on to a mutex or semaphore, but it gets quite a bit more complex than this.
If you look at this man page you will see the list of functions we will have to change to manage the cancellation points.
Once we have completed this list we will be able to do pthread_cancel. It is a LOT of work.
Here is the list from the man-page:
Cancellation points
POSIX.1 specifies that certain functions must, and certain other
functions may, be cancellation points.  If a thread is cancelable,
its cancelability type is deferred, and a cancellation request is
pending for the thread, then the thread is canceled when it calls a
function that is a cancellation point.
   The following functions are required to be cancellation points by
   POSIX.1-2001 and/or POSIX.1-2008:

       accept()
       aio_suspend()
       clock_nanosleep()
       close()
       connect()
       creat()
       fcntl() F_SETLKW
       fdatasync()
       fsync()
       getmsg()
       getpmsg()
       lockf() F_LOCK
       mq_receive()
       mq_send()
       mq_timedreceive()
       mq_timedsend()
       msgrcv()
       msgsnd()
       msync()
       nanosleep()
       open()
       openat() [Added in POSIX.1-2008]
       pause()
       poll()
       pread()
       pselect()
       pthread_cond_timedwait()
       pthread_cond_wait()
       pthread_join()
       pthread_testcancel()
       putmsg()
       putpmsg()
       pwrite()
       read()
       readv()
       recv()
       recvfrom()
       recvmsg()
       select()
       sem_timedwait()
       sem_wait()
       send()
       sendmsg()
       sendto()
       sigpause() [POSIX.1-2001 only (moves to "may" list in POSIX.1-2008)]
       sigsuspend()
       sigtimedwait()
       sigwait()
       sigwaitinfo()
       sleep()
       system()
       tcdrain()
       usleep() [POSIX.1-2001 only (function removed in POSIX.1-2008)]
       wait()
       waitid()
       waitpid()
       write()
       writev()

   The following functions may be cancellation points according to
   POSIX.1-2001 and/or POSIX.1-2008:

       access()
       asctime()
       asctime_r()
       catclose()
       catgets()
       catopen()
       chmod() [Added in POSIX.1-2008]
       chown() [Added in POSIX.1-2008]
       closedir()
       closelog()
       ctermid()
       ctime()
       ctime_r()
       dbm_close()
       dbm_delete()
       dbm_fetch()
       dbm_nextkey()
       dbm_open()
       dbm_store()
       dlclose()
       dlopen()
       dprintf() [Added in POSIX.1-2008]
       endgrent()
       endhostent()
       endnetent()
       endprotoent()
       endpwent()
       endservent()
       endutxent()
       faccessat() [Added in POSIX.1-2008]
       fchmod() [Added in POSIX.1-2008]
       fchmodat() [Added in POSIX.1-2008]
       fchown() [Added in POSIX.1-2008]
       fchownat() [Added in POSIX.1-2008]
       fclose()
       fcntl() (for any value of cmd argument)
       fflush()
       fgetc()
       fgetpos()
       fgets()
       fgetwc()
       fgetws()
       fmtmsg()
       fopen()
       fpathconf()
       fprintf()
       fputc()
       fputs()
       fputwc()
       fputws()
       fread()
       freopen()
       fscanf()
       fseek()
       fseeko()
       fsetpos()
       fstat()
       fstatat() [Added in POSIX.1-2008]
       ftell()
       ftello()
       ftw()
       futimens() [Added in POSIX.1-2008]
       fwprintf()
       fwrite()
       fwscanf()
       getaddrinfo()
       getc()
       getc_unlocked()
       getchar()
       getchar_unlocked()
       getcwd()
       getdate()
       getdelim() [Added in POSIX.1-2008]
       getgrent()
       getgrgid()
       getgrgid_r()
       getgrnam()
       getgrnam_r()
       gethostbyaddr() [SUSv3 only (function removed in POSIX.1-2008)]
       gethostbyname() [SUSv3 only (function removed in POSIX.1-2008)]
       gethostent()
       gethostid()
       gethostname()
       getline() [Added in POSIX.1-2008]
       getlogin()
       getlogin_r()
       getnameinfo()
       getnetbyaddr()
       getnetbyname()
       getnetent()
       getopt() (if opterr is nonzero)
       getprotobyname()
       getprotobynumber()
       getprotoent()
       getpwent()
       getpwnam()
       getpwnam_r()
       getpwuid()
       getpwuid_r()
       gets()
       getservbyname()
       getservbyport()
       getservent()
       getutxent()
       getutxid()
       getutxline()
       getwc()
       getwchar()
       getwd() [SUSv3 only (function removed in POSIX.1-2008)]
       glob()
       iconv_close()
       iconv_open()
       ioctl()
       link()
       linkat() [Added in POSIX.1-2008]
       lio_listio() [Added in POSIX.1-2008]
       localtime()
       localtime_r()
       lockf() [Added in POSIX.1-2008]
       lseek()
       lstat()
       mkdir() [Added in POSIX.1-2008]
       mkdirat() [Added in POSIX.1-2008]
       mkdtemp() [Added in POSIX.1-2008]
       mkfifo() [Added in POSIX.1-2008]
       mkfifoat() [Added in POSIX.1-2008]
       mknod() [Added in POSIX.1-2008]
       mknodat() [Added in POSIX.1-2008]
       mkstemp()
       mktime()
       nftw()
       opendir()
       openlog()
       pathconf()
       pclose()
       perror()
       popen()
       posix_fadvise()
       posix_fallocate()
       posix_madvise()
       posix_openpt()
       posix_spawn()
       posix_spawnp()
       posix_trace_clear()
       posix_trace_close()
       posix_trace_create()
       posix_trace_create_withlog()
       posix_trace_eventtypelist_getnext_id()
       posix_trace_eventtypelist_rewind()
       posix_trace_flush()
       posix_trace_get_attr()
       posix_trace_get_filter()
       posix_trace_get_status()
       posix_trace_getnext_event()
       posix_trace_open()
       posix_trace_rewind()
       posix_trace_set_filter()
       posix_trace_shutdown()
       posix_trace_timedgetnext_event()
       posix_typed_mem_open()
       printf()
       psiginfo() [Added in POSIX.1-2008]
       psignal() [Added in POSIX.1-2008]
       pthread_rwlock_rdlock()
       pthread_rwlock_timedrdlock()
       pthread_rwlock_timedwrlock()
       pthread_rwlock_wrlock()
       putc()
       putc_unlocked()
       putchar()
       putchar_unlocked()
       puts()
       pututxline()
       putwc()
       putwchar()
       readdir()
       readdir_r()
       readlink() [Added in POSIX.1-2008]
       readlinkat() [Added in POSIX.1-2008]
       remove()
       rename()
       renameat() [Added in POSIX.1-2008]
       rewind()
       rewinddir()
       scandir() [Added in POSIX.1-2008]
       scanf()
       seekdir()
       semop()
       setgrent()
       sethostent()
       setnetent()
       setprotoent()
       setpwent()
       setservent()
       setutxent()
       sigpause() [Added in POSIX.1-2008]
       stat()
       strerror()
       strerror_r()
       strftime()
       symlink()
       symlinkat() [Added in POSIX.1-2008]
       sync()
       syslog()
       tmpfile()
       tmpnam()
       ttyname()
       ttyname_r()
       tzset()
       ungetc()
       ungetwc()
       unlink()
       unlinkat() [Added in POSIX.1-2008]
       utime() [Added in POSIX.1-2008]
       utimensat() [Added in POSIX.1-2008]
       utimes() [Added in POSIX.1-2008]
       vdprintf() [Added in POSIX.1-2008]
       vfprintf()
       vfwprintf()
       vprintf()
       vwprintf()
       wcsftime()
       wordexp()
       wprintf()
       wscanf()

Since I'm on this thread, here's my opinion.

Above list is quite interesting, as some of the interfaces are not practical for FreeRTOS.
Randomly picking one or two — read/readv read from a file; getpwnam/getpwnam_r search user database for a name. Either it's trying to expand from current POSIX threading implementation to include IO/file system/..., or there's some misunderstanding.

Having a complete POSIX support does not really intertwine with thread cancellation points/states/APIs. In this case, what it really takes to support thread cancellation is to update pthread data structure to track thread cancellation state. And update related APIs to set cancellation state at cancellation points.
For this point, see both:
Zephyr's approach https://github.com/zephyrproject-rtos/zephyr/blob/master/include/posix/pthread.h
TI-POSIX's approach http://software-dl.ti.com/simplelink/esd/simplelink_msp432_sdk/<IP_ADDRESS>/docs/tiposix/Users_Guide.html.

The design was shared in email some time ago, posting that would be a good starting point to get community contribution. And of course it is up to the FreeRTOS team to define the scope for FreeRTOS-POSIX, as POSIX alone is huge. I'm dropping from this conversation now.

@yuhui-zheng , I am not sure I understand what you mean with regard to "read/readv" applicability to FreeRTOS above? As you know a "stream" in C is called a "FILE" (for historical reasons) and functions like scanf and printf will typically make use of these IO streams, which seems very relevant to FreeRTOS. We use it with serial ports on devices all of the time?
I am also not sure what you mean by "In this case, what it really takes to support thread cancellation is to update pthread data structure to track thread cancellation state.", but your comments for sure has me hopeful. If you have a suggestion how we could implement this relatively simply (which it sure sounds like you have) then I would love to give it a try!
From what I can gather a call to pthread_cancel must cause a target thread to - at a later point in time, and in the context of the target thread (not the caller) kill itself, including running any pushed cleanup handlers. If the target thread is suspended at the time of the request, due to something like e.g. pthread_cond_wait, the target thread shoud be awakened and it should then cancel itself when next scheduled.
One curiosity here is that pthread_mutex_lock() is NOT a cancellation point, which means that if the target thread is blocked waiting on a mutex you will need a mechanism to unblock it conditionally depending on whether the mutex it is blocked by is a cancellation point mutex or a non-cancellation point mutex.
I am not saying that this is not possible, of course it is possible, but this seems rather hard to implement without doing a lot more than simply tracking cancellation state?