failed opening store | error="invalid database" in docker swarm

Before you start please confirm the following.

[X] Yes, I've searched similar issues on GitHub.
[X] Yes, I've checked whether this issue is covered in the Portainer documentation or knowledge base.

Problem Description
Hello,
I have a 3 node Docker Swarm (all are Master Nodes) and I am using cephfs mounts (mounted in /var/data) on all my swarm nodes for docker volume syncing between my nodes.
Mount command in /etc/fstab:
<EMAIL_ADDRESS>  /var/data   ceph   mon_addr=<IP_ADDRESS>:6789/<IP_ADDRESS>:6789/<IP_ADDRESS>:6789,noatime,_netdev   0   0

I am using a slightly modified version of https://downloads.portainer.io/ee2-21/portainer-agent-stack.yml
My portainer.yaml file:
version: '3.2'

services:
  agent:
    image: portainer/agent:2.21.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ee:2.21.1
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "9000:9000"
      - "8000:8000"
    volumes:
      - /var/data/portainer:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

If I am deploying the service (sudo docker stack deploy portainer -c portainer.yaml) for the first time everything is fine.
But if I shutdown the node where the portainer_portainer (Web-GUI container) is running the service is deploying the portainer_portainer container on one of the two remaining nodes in my docker swarm. But then I get the following error:
Command I used to log the events of the container:
sudo docker service logs portainer_portainer -f
Output:
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"

My guess is an incorrect permissions on the directories /var/data and /var/data/portainer
Here are the permissions for the folder /var/data and /var/data/portainer (755) owner and group of all file is root:
user@dockerswm1:~$ sudo ls -la /var/data
total 4
drwxr-xr-x  3 root root    1 Sep 13 23:46 .
drwxr-xr-x 14 root root 4096 Sep 13 23:40 ..
drwxr-xr-x  2 root root    0 Sep 13 23:46 portainer

file permissions inside /var/data/portainer:
user@dockerswm1:~$ sudo ls -la /var/data/portainer
total 65
drwxr-xr-x 8 root root     9 Sep 13 23:50 .
drwxr-xr-x 3 root root     1 Sep 13 23:46 ..
drwx------ 2 root root     0 Sep 13 23:50 bin
drwx------ 2 root root     2 Sep 13 23:50 certs
drwx------ 2 root root     1 Sep 13 23:50 chisel
drwx------ 2 root root     0 Sep 13 23:50 compose
drwx------ 2 root root     1 Sep 13 23:50 docker_config
-rw------- 1 root root 65536 Sep 13 23:50 portainer.db
-rw------- 1 root root   227 Sep 13 23:50 portainer.key
-rw------- 1 root root   190 Sep 13 23:50 portainer.pub
drwx------ 2 root root     0 Sep 13 23:50 tls

Expected Behavior
portainer_portainer container should find the portainer.db inside /var/data/portainer and start the container on another docker swarm node after one node in the docker swarm is shutdown
Actual Behavior
portainer_portainercontainer can not start on one of the two remaining nodes:
Command I used to log the events of the container:
sudo docker service logs portainer_portainer -f
Output:
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"

Steps to Reproduce
1. Build Docker Swarm
dockerswm1 (<IP_ADDRESS>) init Swarm
Initialize the Docker Swarm:
!!! Only on machine dockerswm1 !!!:
sudo docker swarm init --advertise-addr <IP_ADDRESS>

dockerswm2 (<IP_ADDRESS>) add to Swarm as Manager
Now the machine dockerswm2 is added to the swarm as an additional manager node:
Please add the machine as Master-Node to the docker swarm !!!
!!! Only on machine dockerswm2 !!!:
docker swarm join \
    --token SWMTKN-1-59egwe8qangbzbqb3ryawxzk3jn97ifahlsrw01yar60pmkr90-bdjfnkcflhooyafetgjod97sz \
    <IP_ADDRESS>:2377

dockerswm3 (<IP_ADDRESS>) add to Swarm as Manager
Now the machine dockerswm3 is added to the swarm as an additional manager node:
Please add the machine as Master-Node to the docker swarm !!!
!!! Only on machine dockerswm3 !!!:
docker swarm join \
    --token SWMTKN-1-59egwe8qangbzbqb3ryawxzk3jn97ifahlsrw01yar60pmkr90-bdjfnkcflhooyafetgjod97sz \
    <IP_ADDRESS>:2377

2. Setup ceph storage cluster
First we need to install the cephadm tool:
The following commands are repeated for the following systems
(dockerswm1;
dockerswm2;
dockerswm3):
sudo apt install -y cephadm

Install the ceph cli tool via cephadm tool:
The following commands are repeated for the following systems
(dockerswm1;
dockerswm2;
dockerswm3):
sudo apt install -y ceph-common

With the following command the cephadm tool is used for bootstraping a ceph cluster:
!!! Only on machine dockerswm1 !!!:
sudo cephadm bootstrap --mon-ip <IP_ADDRESS>

Now we add the other machines to the ceph cluster.
But before that we need to transfer three files from the master node (dockerswm1) to the two non-master nodes (dockerswm2 and dockerswm3):

Path on master
Path on non-master

/etc/ceph/ceph.client.admin.keyring
/etc/ceph/ceph.client.admin.keyring

/etc/ceph/ceph.conf
/etc/ceph/ceph.conf

/etc/ceph/ceph.pub
/root/.ssh/authorized_keys

Please replace root user with the username that can access the machine via ssh!!!
Please replace REMOTE_SSH_USER_PASSWORD with the password of the user that can access the machine via ssh!!!
!!! Only on machine dockerswm1 !!!:
sudo cat /etc/ceph/ceph.pub | ssh<EMAIL_ADDRESS>"tee /tmp/authorized_keys && echo 'REMOTE_SSH_USER_PASSWORD' | sudo -S sh -c 'mkdir -p /root/.ssh && cat /tmp/authorized_keys | tee -a /root/.ssh/authorized_keys > /dev/null && rm /tmp/authorized_keys'"
sudo cat /etc/ceph/ceph.pub | ssh<EMAIL_ADDRESS>"tee /tmp/authorized_keys && echo 'REMOTE_SSH_USER_PASSWORD' | sudo -S sh -c 'mkdir -p /root/.ssh && cat /tmp/authorized_keys | tee -a /root/.ssh/authorized_keys > /dev/null && rm /tmp/authorized_keys'"

sudo ceph orch host add dockerswm2 <IP_ADDRESS> --labels _admin
sudo ceph orch host add dockerswm3 <IP_ADDRESS> --labels _admin

Now we add OSDs to our ceph cluster.
!!! Only on machine dockerswm1 !!!:
sudo ceph orch apply osd --all-available-devices

This will identify any unpartitioned, unmounted disks attached to each participating node, and configure these disks as OSDs.

Now we create a cephfs volume in our cluster by running the following command:
!!! Only on machine dockerswm1 !!!:
sudo ceph fs volume create data

You can watch the progress by running sudo ceph fs ls (to see the fs is configured), and sudo ceph -s to wait for HEALTH_OK.

At last we mount the CephFS volume under /var/data on ervery docker swarm node:
The following commands are repeated for the following systems
(dockerswm1;
dockerswm2;
dockerswm3):
sudo mkdir /var/data
sudo sh -c 'echo "
# Mount cephfs volume
<EMAIL_ADDRESS>  /var/data   ceph   mon_addr=<IP_ADDRESS>:6789/<IP_ADDRESS>:6789/<IP_ADDRESS>:6789,noatime,_netdev   0   0" >> /etc/fstab'
sudo mount -a
sudo systemctl daemon-reload

You can now create new files in the directory /var/data, which will then be synchronized to all machines.

3. Install Portainer
Portainer is a container for managing Docker containers via a graphical web interface.
Create a folder for the Portainer container (persistend data) (container volume):
!!! Only on machine dockerswm1 !!!:
sudo mkdir /var/data/portainer

Now a YAML file (docker-compose) is created to start the Portainer container in the Swarm environment. Please use nano to create the file portainer.yaml file and fill it with the code contained in the following code block and save it.
!!! Only on machine dockerswm1 !!!:
nano portainer.yaml

Insert the following content into the nano editor, save the file and close the nano editor:
version: '3.2'

services:
  agent:
    image: portainer/agent:2.21.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ee:2.21.1
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "9000:9000"
      - "8000:8000"
    volumes:
      - /var/data/portainer:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

4. Shutdown docker node where the portainer_portainer container is currently running
!!! Only on machine dockerswm1 !!!:
sudo shutdown now

5. Portainer stack is restarting the portainer_portainer on one of the two remaining docker nodes but this error is appearing:
Command I used to log the events of the container:
sudo docker service logs portainer_portainer -f
Output:
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"

Portainer logs or screenshots
Command I used to log the events of the container:
sudo docker service logs portainer_portainer -f
Output:
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
portainer_portainer.1.qv1leusuuuig@dockerswm2    | 2024/09/13 09:11PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"

Portainer version
2.21.1
Portainer Edition
Business Edition (EE)
Platform and Version
Docker Swarm 27.2.1
OS and Architecture
Ubuntu 24.04
Browser
Firefox 130.0
What command did you use to deploy Portainer?
version: '3.2'

services:
  agent:
    image: portainer/agent:2.21.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ee:2.21.1
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "9000:9000"
      - "8000:8000"
    volumes:
      - /var/data/portainer:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

Additional Information
No response

Hi there,
I'm also setting up my own swarm cluster with a ceph backend (tho i'm using a docker plugin for the volumes).
And i'm currently facing the same issue where after a node change or a stack rm then redeploy.
I also tested the secret-key-name CLI option thinking it was an encryption issue but that didn't resolved the issue

Same here.  3 node proxmox cluster with ceph installed.  Dedicated SSD OSD for appdata on a 10gb dedicated subnet.  Portainer is getting corrupted 1-2 times per hour, depending if I'm installing/updating services or rebooting an occasional VM
This is absolutely not usable :(
Is there some setting in Cephfs that needs to be tweaked?

I'm running into the same issue, 3 node docker cluster with the portainer volume mounted on ceph
Has been running fine for about a year.

Same issue. 3 node cluster with CEPH.  Also tried with CONSTRAINTS to 1 node. No difference.

Ok so after some reserch, i found out it was the overlay2 docker storage driver that cause that issue. (thx LP for showing me the moby issue : https://github.com/moby/moby/issues/37012)
so to fix it i was in need to change the docker storage driver to fuse-overlayfs on all the nodes where portainer will be
For Ubuntu (since i'm on ubuntu) :
service docker stop
cp -au /var/lib/docker /var/lib/docker.bk
nano /etc/docker/daemon.json
{
  "storage-driver": "fuse-overlayfs"
}

apt install fuse-overlayfs
service docker start
and remake the volume just in case

I'm running into the same issue. switching to fuse doesn't appear to help.
administrator@docker-swarm-manager-00:/mnt/cephfs_nvme/docker/compose$ docker service logs system_portainer
system_portainer.1.ncm9ru41rkd0@docker-swarm-manager-00    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
system_portainer.1.vueng285z3tn@docker-swarm-manager-00    | 2024/10/09 02:23PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
system_portainer.1.ncm9ru41rkd0@docker-swarm-manager-00    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
system_portainer.1.ncm9ru41rkd0@docker-swarm-manager-00    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
system_portainer.1.vueng285z3tn@docker-swarm-manager-00    | 2024/10/09 02:23PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
system_portainer.1.vueng285z3tn@docker-swarm-manager-00    | 2024/10/09 02:23PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
system_portainer.1.ncm9ru41rkd0@docker-swarm-manager-00    | 2024/10/09 02:24PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"
system_portainer.1.vueng285z3tn@docker-swarm-manager-00    | 2024/10/09 02:23PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"
system_portainer.1.wq6mrxejo02d@docker-swarm-manager-01    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
system_portainer.1.wq6mrxejo02d@docker-swarm-manager-01    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
system_portainer.1.wq6mrxejo02d@docker-swarm-manager-01    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
system_portainer.1.wq6mrxejo02d@docker-swarm-manager-01    | 2024/10/09 02:24PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"
system_portainer.1.ry0n20d4iofi@docker-swarm-manager-02    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
system_portainer.1.ry0n20d4iofi@docker-swarm-manager-02    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
system_portainer.1.ry0n20d4iofi@docker-swarm-manager-02    | 2024/10/09 02:24PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
system_portainer.1.ry0n20d4iofi@docker-swarm-manager-02    | 2024/10/09 02:24PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"
system_portainer.1.8s86m67j8a4k@docker-swarm-manager-02    | 2024/10/09 02:25PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:370 > encryption key file not present | filename=portainer
system_portainer.1.8s86m67j8a4k@docker-swarm-manager-02    | 2024/10/09 02:25PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:393 > proceeding without encryption key |
system_portainer.1.8s86m67j8a4k@docker-swarm-manager-02    | 2024/10/09 02:25PM INF github.com/portainer/portainer/api/database/boltdb/db.go:125 > loading PortainerDB | filename=portainer.db
system_portainer.1.8s86m67j8a4k@docker-swarm-manager-02    | 2024/10/09 02:25PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:98 > failed opening store | error="invalid database"
administrator@docker-swarm-manager-00:/mnt/cephfs_nvme/docker/compose$ cat /etc/docker/daemon.json
{
    "data-root": "/docker",
    "storage-driver": "fuse-overlayfs",
    "dns": ["<IP_ADDRESS>", "<IP_ADDRESS>"]
}

hmm, strange, do you have removed the old invalid database after the fuse change ?
also are you using some options for your mount ?? if not try to add some options to remove all the async R/W
https://docs.ceph.com/en/reef/man/8/mount.ceph/

adding sync to the fstab line seems to have worked. I was able to shutdown and restart the container without encountering the db issue in the logs

unfortunately spoke to soon. after a reboot of the cluster it's failing again. it seems to be related to file locking but im not certain yet.

Hmmm, i did restart my full 3 node swarm multiple times and i don't have any issue with the restart.
I also think it's related to locks, maybe it work just fine one mine cuz it saved and unlocked the DB before i shut it down.
If you want to test here is all the options i have on my nodes noasyncreaddir,rbytes,wsync,read_from_replica=balance,sync, tho i don't think all of them do something.
And also i have edited one conf in the ceph cluster directly the fuse_disable_pagecache that i setup to true for the clients

If you want to test here is all the options i have on my nodes noasyncreaddir,rbytes,wsync,read_from_replica=balance,sync, tho i don't think all of them do something.
And also i have edited one conf in the ceph cluster directly the fuse_disable_pagecache that i setup to true for the clients

thanks for this info, I'll give these a shot and see if I can narrow it down.

Hmmm, i did restart my full 3 node swarm multiple times and i don't have any issue with the restart.
I also think it's related to locks, maybe it work just fine one mine cuz it saved and unlocked the DB before i shut it down.
If you want to test here is all the options i have on my nodes noasyncreaddir,rbytes,wsync,read_from_replica=balance,sync, tho i don't think all of them do something.
And also i have edited one conf in the ceph cluster directly the fuse_disable_pagecache that i setup to true for the clients

Sorry for my late response.
@ibaraki-douji,
I have now implemented your tips in my cluster:
(I have setup my cluter from the ground up)

Repeated all the steps below "1. Build Docker Swarm" from my initial bug report.

Put the following content in the config file (repeated on each node):
{
  "storage-driver": "fuse-overlayfs"
}

sudo apt install fuse-overlayfs (repeated on each node)

reboot each node.

Verified on each node that the fuse-overlayfs drivers are used:
sudo docker info --format '{{.Driver}}'

Output on is node is: fuse-overlayfs

Repeated all the steps below "2. Setup ceph storage cluster" from my initial bug report.

Added your suggested mount options in the /etc/fstab (repeated on each node):
sudo mkdir /var/data
sudo sh -c 'echo "
# Mount cephfs volume
<EMAIL_ADDRESS>  /var/data   ceph   mon_addr=<IP_ADDRESS>:6789/<IP_ADDRESS>:6789/<IP_ADDRESS>:6789,noatime,_netdev,noasyncreaddir,rbytes,wsync,read_from_replica=balance,sync   0   0" >> /etc/fstab'
sudo mount -a
sudo systemctl daemon-reload

Set ceph parameter fuse_disable_pagecache to true (ONLY ON ONE NODE):

sudo ceph config set client fuse_disable_pagecache true

This commmand need a client name (in my example it is called client). Is this client name correct ??? My three node have the following names (dockerswm1, dockerswm2 and dockerswm3)

Check if parameter is set (repeated on each node):
sudo ceph config dump | grep client

Output on is node is: client          advanced  fuse_disable_pagecache                 true

Repeated all the steps below "3. Install Portainer" from my initial bug report.

Unfortunately I get the same error with the portainer database after I shutdown the node where the docker service portainer_portainer was running:
`sudo docker service logs portainer_portainer -f
portainer_portainer.1.74733w2je0ce@dockerswm2    | 2024/10/13 07:20PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:332 > encryption key file not present | filename=portainer
portainer_portainer.1.74733w2je0ce@dockerswm2    | 2024/10/13 07:20PM INF github.com/portainer/portainer/api/cmd/portainer/main.go:356 > proceeding without encryption key |
portainer_portainer.1.74733w2je0ce@dockerswm2    | 2024/10/13 07:20PM INF github.com/portainer/portainer/api/database/boltdb/db.go:124 > loading PortainerDB | filename=portainer.db
portainer_portainer.1.74733w2je0ce@dockerswm2    | 2024/10/13 07:20PM FTL github.com/portainer/portainer/api/cmd/portainer/main.go:102 > failed opening store | error="invalid database"

Today I have build my docker swarm cluster from the ground up again. Now I am using the following tutorial:
https://www.youtube.com/watch?v=nmas_zbcMeU
But with microceph (ubuntu) I get the same error 🤔

same issue here; pve-cluster with 3 nodes and ceph. docker  27.3.1, portainer CE 2.21.4, ubuntu 24.04, ceph 18.2.4;
will give these "mitigations" a shot.

i have basically the exact same setup but with glusterfs as shared-fs backing the swarm, there the portainer-stuff works just fine. i wanted to migrate to ceph because a thousand other things dont work well.

I was doing the same thing until Gluster just didnt cut it anymore and i moved to Ceph. for what its worth, while this potential bug is evaluated, I moved Portainer to a raspberry pi I use for critical base services like DNS and just connected it using the Agent instead. I'd imagine you could easily run a copy of portainer on any old thing or even your primary workstation and tie it back using the agent temporarily. then once this is resolved we can all migrate our configs and portainer volumes back to the swarm.
I find it odd that this database in particular is having this issue on Ceph given that my postgres and sqlite db's are having no issues.

I was doing the same thing until Gluster just didnt cut it anymore and i moved to Ceph. for what its worth, while this potential bug is evaluated, I moved Portainer to a raspberry pi I use for critical base services like DNS and just connected it using the Agent instead. I'd imagine you could easily run a copy of portainer on any old thing or even your primary workstation and tie it back using the agent temporarily. then once this is resolved we can all migrate our configs and portainer volumes back to the swarm.
I find it odd that this database in particular is having this issue on Ceph given that my postgres and sqlite db's are having no issues.

also running an sqlite3 and mysql, no issues.
having an even bigger prod-cluster/swarm, currently in ceph-eval on a smaller test-setup.
this raspi workaround sounds neat but nothing for me. i can live with the bug and hope for a quick fix for now 😄

A notable thing to mention; I have 2 environments, one with a bare-metal CEPH cluster and one running on VM's (VirtIO KVM's) and this only seems to happen on the VM's.
OR it's only on the latest CEPH release since the bare-metal one is a few months behind.

A notable thing to mention; I have 2 environments, one with a bare-metal Ceph cluster and one running on VM's (VirtIO KVM's) and this only seems to happen on the VM's.
OR it's only on the latest Ceph release since the bare-metal one is a few months behind.

mine is bare-metal aswell; basically the way proxmox describes it. but also most recent version available on my setup.

A notable thing to mention; I have 2 environments, one with a bare-metal Ceph cluster and one running on VM's (VirtIO KVM's) and this only seems to happen on the VM's.
OR it's only on the latest Ceph release since the bare-metal one is a few months behind.

mine is bare-metal aswell; basically the way proxmox describes it. but also most recent version available on my setup.

And it's happening on that one aswell?
I simply have 3 nodes running normal Ceph (I mean not the pveceph one)  and have not been able to replicate it, but as I said, this is also not on the very latest docker / ceph release.

And it's happening on that one aswell?
I simply have 3 nodes running normal Ceph (I mean not the pveceph one) and have not been able to replicate it, but as I said, this is also not on the very latest docker / ceph release.
It is about 13 TB in size with constant load.

thats my only ceph-cluster, so yeah. i run ceph on my hypervisor hosts and a docker swarm distributed across these nodes.

Running docker inside 3 node proxmox LXC (data on ceph) i got the same issue. If I restart Portainer, database becomes corrupted.

Damnit. I've also just built a new ceph cluster with the intent to move over from (the otherwise seemingly abandonware'd) Gluster, and I've only just spun up Portainer on the clustered storage and I am hitting this issue.
Per suggestions from @ibaraki-douji I don't understand how changing the storage driver for the docker daemon has helped you but not others - any insight on why that might be? My understanding is that mostly controls the way the docker engine interacts with/mounts all container/image storage, rather than the individual volumes. And its the volumes that are stored on ceph, whereas the rest of the image/container is still on top of ext4/root filesystem.
Did anyone make any progress? @maxfield-allison you suggested you might be trying some things - did you find any solutions?
I am intrigued by these thoughts about permissions and root squashing... anyone hit anything there?

GlusterFS isn't abandoned? I'm running the Portainer DB on a GlusterFS volume.

Interestingly, I also had no issues with this on gluster, but I couldn't at all host sqlite dbs on gluster and ended up having to jsut store them locally which defeated the point of having a swarm cluster. so that's why this rebuild I went with ceph, as it looked like support was a lot better and there seemed to be a more current community around it all.
(Off topic but adding just to ensure I answer to the abandoned comment: Gluster releases (and activity on the github) seem to be few and far between (I haven't seen any in a year on ubuntu jammy), and lacking anything with much gravity, and the documentation+blogs all appeared quite stale. Additionally most content creators seem to have stopped producing any gluster content, instead recommending NAS solutions (or indeed: ceph))

So, I've done some testing.
I've got docker swarm and the portainer container working with a mildly modified plugin for using rbd (rados block device) hosted on ceph directly with an ext4 formatted block device. When Portainer spins up using that as its storage, the file layout and permissions look like so:
$ ls -lah /mnt/tmp-portainer0/
total 760K
drwxr-xr-x 9 root root 4.0K Dec 29 17:39 .
drwxr-xr-x 4 root root 4.0K Dec 29 13:57 ..
drwx------ 2 root root 4.0K Dec 29 17:39 bin
drwx------ 2 root root 4.0K Dec 29 17:39 certs
drwx------ 2 root root 4.0K Dec 29 17:39 chisel
drwx------ 2 root root 4.0K Dec 29 17:39 compose
drwx------ 2 root root 4.0K Dec 29 17:39 docker_config
drwx------ 2 root root  16K Dec 29 17:35 lost+found
-rw------- 1 root root 1.0M Dec 29 18:09 portainer.db
-rw------- 1 root root  227 Dec 29 17:39 portainer.key
-rw------- 1 root root  190 Dec 29 17:39 portainer.pub
drwx------ 2 root root 4.0K Dec 29 17:39 tls

But when it is provisioned with a mount directly to cephfs, the permissions look like this:
$ ls -lah /mnt/ceph-0fs0/docker2/portainer0-data/
total 65K
drwxr-xr-x 8 root root   9 Dec 29 13:37 .
drwxr-xr-x 5 root root   3 Dec 29 01:31 ..
drwxr--r-- 2 root root   0 Dec 29 13:37 bin
drwxr--r-- 2 root root   2 Dec 29 13:37 certs
drwxr--r-- 2 root root   1 Dec 29 13:37 chisel
drwxr--r-- 2 root root   0 Dec 29 13:37 compose
drwxr--r-- 2 root root   1 Dec 29 13:37 docker_config
-rwxr--r-- 1 root root 64K Dec 29 13:37 portainer.db
-rwxr--r-- 1 root root 227 Dec 29 13:37 portainer.key
-rwxr--r-- 1 root root 190 Dec 29 13:37 portainer.pub
drwxr--r-- 2 root root   0 Dec 29 13:37 tls

Notice the extra g=r and o=r (xx44) permissions? I noticed this because traefik was also complaining about the acme.json file being overpermissioned to 0744 when it should only be 0600.
So I guess the cephfs mount is not masking permissions correctly... I imagine this is user (me!) error, and there's a config item or mount permission that I need to change somewhere... does this ring any bells for anyone else to get me across the line here? Otherwise its not really much drama for me to now use rbd volumes for everything


Don't overload link_to

Overloading link_to makes more problems that it solves and the only thing it does it adding confusion as to why and how those helpers work. For example, copying the example code block from http://fullscreen.github.io/bh/#navbars and translating it to Haml results in this code:
= navbar id: 'navbar' do
  = vertical id: 'vertical', class: :en, data: {js: 1} do
    = link_to 'Home', '/'

  = horizontal class: :en, data: {js: 2} do
   = nav class: 'navbar-left' do
      = link_to 'Profile', '/#profile'
      = link_to 'Settings', '/#settings'

results in broken HTML:

Profile

Settings

Notice the unnecessary navbar-brand. This could've been easily avoided if all link types had their own helper method. It'd also be more obvious what exactly happens where and why. I believe this kind of bug was already reported in #118 but was not followed up.
Another good example is the opened issue, #129. It is currently impossible to do non-nav links without falling back to plain HTML/HAML.
I know this kind of change seems pretty big and it should be done in 2.x but if there's any good reason why overloading link_to seems preferable to custom-named helpers like dropdown_item then I'd be glad to hear it :)

I also have an issue with this. Every so often, for no apparent reason every link on a page gets wrapped in an li tag regardless of whether they are in a nav or not. I have been unable to track down the cause as no errors are given and it resolves when I restart the app server. Rather than overriding the link_to could there not be a different helper to be used when the wrapping is desired.
X

@d4rky-pl @fran-worley Would something like #114 work for you?

The problem with #114 is that it'd basically force you to write lots of bootstrap boilerplate code again (classes, , which I presumed this gem is helping you to avoid. Sure I could just use this and write my own helpers for everything but I could just as well fork this gem or go with my own solution if I do that.
That and I still believe overloading link_to is asking for problems. Do you have any particular use case where overloaded link_to is in any way superior to several, more explicit, custom-named helpers or was it just convenient for your code and you stuck with it? Genuinely curious.

I must agree with @d4rky-pl. Certainly for my use case it would make more sence to call a specificly named bootstrap link_to helper rather than overriding the default link_to helper.

:+1:
Sometimes, as has been noted above, bh incorrectly alters links on a page.  #114 would be an improvement but still cumbersome.  As @fran-worley said, having something like a bootstrap_link_to would be a big improvement.

Something in 1.3.4 broke most (all?) link_to calls: they all get wrapped in a li.

:+1:

Had also an issue most probably caused by this when I upgraded to 1.3.5. Some links suddenly had an additional 'navbar-brand' class.

+1

I'd consider this a critical bug. Can't believe it's still open or that there was a recent release that didn't fix this.


Only contentUri, no filePath when shared from some apps

While sharing files from whatsapp or filemanager, the object received by the function passed into getReceivedFiles has only contentUri, all other values such as filePath, extension, mimeType are null. If this is not a bug, a feature like resolving the content uri into file path can be added, which would be greatly helpful.

@NanduKkd When sharing from some of the apps like what's app  only we get content uri. whats app does not provide the file path. so this is not an issue

Then is there any way to get the file path from the content Uri? Help me please!

Any help?

@jaiprakashPal I wanted to copy the file into another path using rn-fetch-blob. I used the fetch function of js to get a blob and then converted it to base64 and saved that into another file:
async function copy_uri(uri){
	const blob = await (await fetch(uri)).blob()
	await new Promise(resolve => {
		var reader = new FileReader();
		reader.readAsDataURL(blob);
		reader.onloadend = () => {
			var base64data = reader.result;
			let pth = FetchBlob.fs.dirs.SDCardDir+'/mydir/copied.jpg'
			RNFetchBlob.fs.writeFile(pth, reader.result.substr(base64data.indexOf(',')+1), 'base64').then(() => {
				blob.close()
				resolve();
			});
		}
	})
}


General Grievance: Watch woehler.de

General Grievance requests the watch of the watch_keyword woehler\.de. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

woehler\.de has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Spevacus in Charcoal HQ


Force Node 8.13 in Alpine 3.8

Alpine 3.8 now ships Node 8.15 however we require Node 8.13. Is it possible to pin to this version?

I see that node:8.13-alpine actually exists... so nvm.


Remove support for PVC created by v1.0.0 CSI driver

currently, we have support for the mounting and deleting the PVC created by v1.0.0 CSI driver. we need to drop the support for the same.
we are yet to decide in which release we are deprecating and removing it

Please do keep a way to mount a CephFS volume by specifying monitor addresses and a root path (in NodeStageVolume/NodePublishVolume). We're relying on this functionality.

Please do keep a way to mount a CephFS volume by specifying monitor addresses and a root path (in NodeStageVolume/NodePublishVolume). We're relying on this functionality.

do you mean CephFS subvolume? we have an option to specify rootPath https://github.com/ceph/ceph-csi/blob/master/pkg/cephfs/volumeoptions.go#L344 in static PVC.
Am I missing something? can you please elaborate more

@Madhu-1 as far as I understand, removing support for v1 volumes means removing this:
https://github.com/ceph/ceph-csi/blob/58765e27a0f1c92062e5468cf97cbdb2c444ec9e/pkg/cephfs/nodeserver.go#L101-L106
There are cases where populating the CSI config file is difficult e.g. when Ceph clusters are managed externally and we don't know the list of monitor IPs beforehand. The CephFS subvolume might be provisioned from an external source and CephFS CSI node plugin should still be able to mount this volume into a workload.
I'd like to ask you guys to leave a way to pass in the rootPath you've mentioned and list of monitors via the NodeStageVolume volume context, bypassing the cluster ID -> monitors mapping.

There are cases where populating the CSI config file is difficult e.g. when Ceph clusters are managed externally and we don't know the list of monitor IPs beforehand. The CephFS subvolume might be provisioned from an external source and CephFS CSI node plugin should still be able to mount this volume into a workload.

@gman0 the nodeplugins also mount the CSI config file, and hence contain the required MON addresses to use.
Mentioning the MONs in the StorageClass needs to be done for all StorageClass's in use and further needs to be updated when MONs change. Instead, specifying this once in the CSI config, would enable global updates at a single point. (this is when considering external clusters as well).
Also, StorageClass is not editable, and hence to update MONs the admin would need to recreate the StorageClass with the new MON addresses.
The config map in kubernetes is also periodically updated, and hence does not need a restart of the nodeplugin (or the provisioner) to take in new values.
IMO, leveraging the CSI config for external clusters is preferred given the above.

@ShyamsundarR

Also, StorageClass is not editable, and hence to update MONs the admin would need to recreate the StorageClass with the new MON addresses.
The config map in kubernetes is also periodically updated, and hence does not need a restart of the nodeplugin (or the provisioner) to take in new values.
IMO, leveraging the CSI config for external clusters is preferred given the above.

I understand why it's done like this and I agree with the way it's handled for those use-cases.

the nodeplugins also mount the CSI config file, and hence contain the required MON addresses to use.
Mentioning the MONs in the StorageClass needs to be done for all StorageClass's in use and further needs to be updated when MONs change. Instead, specifying this once in the CSI config, would enable global updates at a single point. (this is when considering external clusters as well).

In the use-case I mentioned, the source of truth for monitor IPs is OpenStack Manila / Cinder, so the ConfigMap is left empty.
A 3rd party CSI plugin provisions a CephFS volume using the Manila service. When mounting the volume, we're given:

mon IPs
root path
cephx ID and key

Those are then passed to csi-cephfs Node Plugin via:

Node{Stage,Publish}VolumeRequest.volume_context
Node{Stage,Publish}VolumeRequest.secrets

csi-cephfs's StorageClass plays no role here, because the provisioning is done elsewhere. I'm totally fine with this being removed from recognized StorageClass parameters, since we're only considering the node plugin at this point.
Is there any way a stable interface with the node plugin could be maintained, so that the values of monitors, rootPath (and of course userID,  userKey) are honored when mounting? When present, they'd override the values from the config file.
I am more than happy to work on a PR, if you agree!

csi-cephfs's StorageClass plays no role here, because the provisioning is done elsewhere. I'm totally fine with this being removed from recognized StorageClass parameters, since we're only considering the node plugin at this point.

Understood.

Is there any way a stable interface with the node plugin could be maintained, so that the values of monitors, rootPath (and of course userID, userKey) are honored when mounting? When present, they'd override the values from the config file.

@Madhu-1 thoughts? I am fine with request made by @gman0 given the context and restrictions as above.

opened #1226 to remove the support but keeping the support request from @gman0 for cephfs mounting.

@gman0 does this mean after #1226 manila-csi won't be able to use ceph-csi?

@strigazi no, we're making sure it will keep working :)


could I enable gzip on router?

could I enable gzip on router?

请问有gzip middleware吗？

@rudian No, if you're interested, a PR will be appreciated.


How to make it working for multiple split logs

Hi
Does it support multiple split log files?

try to use gleam instead

try to use gleam instead

Thanks.


Split TSLint MSSDL Required Rules into separate config

This is so the TSA scans can use that file without also having the other rules (we scan many different repos using the same tslint config file and some of them have errors for non-MSSDL required rules. I plan on fixing these at some point but for the TSA scans it's just important to get the MSSDL ones enabled for now)

I ended up just adding the rules to each separate repo instead so this is no longer necessary.


Component for motors moving halfs of JF4M detector

%subj%
@JamesWrigley @takluyver

I assume you've tested this manually? It would be good to add some automated tests for it, like you did for the AGIPD 1M quadrant motors.
Other than that, I think this all looks fine.


Generate go wrappers using cgo instead of syscall

Summary of new and updated functionality:

Support Win, Linux and macOS
Support Linking to static and shared libraries
Support all inputs and outputs types. Limitation: Only one callback of each type can be used at the same time
Automatic memory management via runtime.SetFinalizer (manual management is still allowed)
Auto generated code is 100% idiomatic and type safe for almost all types
Better error management

Closes #93
Key features
Examples generated using from lib3mf.
Importing library
It is required to have the .dll, .so, .dylib, .a, ... located next to the executable or in a system wide folder. lib3mf_abi.h and lib3mf_types.h are necessary only when building the executable and they should be located next to the go binding file.
/*
#cgo LDFLAGS: -L./ -l3mf
#include "lib3mf_abi.h"
*/
import "C"

Automatic memory managment
The wrapped C pointer is stored in a Go struct and it uses some dark magic tricks together with runtime.SetFinalizer to release the C memory when Go garbage collector collect the Go struct. It is save to manually call Release to release the memory before the garbage collector passes.
type ref = C.Lib3MFHandle

// Base represents a Lib3MF class.
type Base struct {
  _     [0]func() // uncomparable; to make == not compile
  ref   ref       // identifies a C value, see ref type
  gcPtr *ref      // used to trigger the finalizer when the Value is not referenced any more
}

// NewBase creates a new Base.
// The wrapped C pointer will be freed when the Go pointer is finalized,
// but one can release it manually calling Release.
func NewBase(r ref) Base {
  gcPtr := new(ref)
  *gcPtr = r
  runtime.SetFinalizer(gcPtr, releaseC)
  return Base{ref: r, gcPtr: gcPtr}
}

// Release releases the C pointer.
func (inst Base) Release() error {
  err := Release(inst)
  *inst.gcPtr = nil
  return err
}

Error wrapping
The return errors are of type WrappedError, this way users can inspect which is the error code without losing the error message.
// WrappedError is an error that wraps a Lib3MF error.
type WrappedError struct {
  Code uint32
  Message string
}

func (e *WrappedError) Error() string {
  return fmt.Sprintf("lib3mf: %s (%d)", e.Message, e.Code)
}

C Callbacks
cgo cannot share Go pointers with C, and function are pointers, so it is somehow difficult to pass a function to C as parameter. It has to be done via a bridge C function and and exported Go function, and this is what has been implemented. There is one important limitation, as the Go bridge function is static and only one of each type can exist at the same time. It is somehow difficult to explain, so better document yourself at this blog.
When callbacks are present cfunc.go file is also created, as //export and C function declarations cannot coexist at the same time.
/*
#cgo LDFLAGS: -L./ -l3mf
#include "lib3mf_abi.h"

extern void progressCallback(bool *, Lib3MF_double, eLib3MFProgressIdentifier, Lib3MF_pvoid);
void Lib3MFProgressCallback_cgo(bool * pAbort, Lib3MF_double dProgressValue, eLib3MFProgressIdentifier eProgressIdentifier, Lib3MF_pvoid pUserData){
  progressCallback(pAbort, dProgressValue, eProgressIdentifier, pUserData);
}
*/
import "C"

...

// ProgressCallbackFunc a callback function.
type ProgressCallbackFunc = func(abort *bool, progressValue float64, progressIdentifier ProgressIdentifier, userData interface{})

var progressCallbackFunc ProgressCallbackFunc

//export progressCallback
func progressCallback(abort *C.bool, progressValue C.double, progressIdentifier C.eLib3MFProgressIdentifier, userData C.Lib3MF_pvoid) {
  if progressCallbackFunc == nil {
    return
  }
  progressCallbackFunc((*bool)(abort), (float64)(progressValue), (ProgressIdentifier)(progressIdentifier), *(*interface{})(unsafe.Pointer(userData)))
}

// SetProgressCallback set the progress callback for calls to this writer.
func (inst Writer) SetProgressCallback(progressCallback ProgressCallbackFunc, userData interface{}) (error) {
  ret := C.lib3mf_writer_setprogresscallback(inst.ref, (C.Lib3MFProgressCallback)(unsafe.Pointer(C.Lib3MFProgressCallback_cgo)), (C.Lib3MF_pvoid)(unsafe.Pointer(&userData)))
  if ret != 0 {
    return makeError(uint32(ret))
  }
  progressCallbackFunc = progressCallback
  return nil
}

You can see the full lib3mf auto generated code in https://github.com/qmuntal/go-lib3mf/blob/master/v2/lib3mf.go.

Closing as #121 is already in develop. I'll open a new PR with just the static/dynamic linking part.


Indicate state in Project and Form tables with icons

See project encryption status in project list
See form submission state (open/closed/closing) in form list
See form draft state (if it's unpublished and only a draft exists) in form list
Each new icon has a tooltip

The failing test has to do with what is shown in the "submissions" column for a form with no published version, only a draft. The release docs say the column should be empty, and the test expects a link to draft/testing. Which behavior do we want?

The failing test has to do with what is shown in the "submissions" column for a form with no published version, only a draft. The release docs say the column should be empty, and the test expects a link to draft/testing. Which behavior do we want?

I think we can make the change that the release criteria suggests and then update the failing test.

The icon for a closed form on the form list is still not ideal.
I see it should be the ban/not allowed 🚫 icon, but I'm going to wait for Matt's other icon-related PRs to get merged in first. Whatever it is changed to, it should be more consistent with form state icon in the "right now" section of the form overview. I can change that icon to 🚫, too?

Updated appearances:

Ban icon now in place!!
Forms table:

Form overview "right now" page also shows the same icon:


No more support for lumi.camera.aq1  - can u bring back the on/off switch ?

Many releases ago the lumi.camera.aq1 was configured but not working with the streaming.
It is correct to not have it fully supported.
Now it is marked as unsopported and no more configured.
"Xiaomi Miot Warning
Your camera lumi.camera.aq1 doesn't support streaming services.
你的摄像机不支持流服务。
https://github.com/al-one/hass-xiaomi-miot/issues/60#issuecomment-819435571"
Considering that the Switch camera on off was working correctly (i was able to use it to put the camera in the sleep mode), is it possible to have the camera "partially supported" ?
I need that on off camera switch .....

Try last commit: https://github.com/al-one/hass-xiaomi-miot/commit/732514323af833c229df7102b0485b89d34e7bbe


remove outdated years from copyright

rather than forgetting to update this every year, i prefer to not state years.

i am fine with that as well. @sagikazarmark do you agree?

Yup, I think that's what we do in other repos.

cool, updated.


GEODE-9396: hack upgrade test to repro with TLS

Hacked RollingUpgradeWithGfshDUnitTest to add TLS config for P2P and client-server messaging. Also made it do some P2P work.
Hacked GenerateSNIKeyAndTrustStores (creating GenerateSNIKeyAndTrustStores2) to generate key and trust stores. Manually copy those generated ones into the resources dir for RollingUpgradeWithGfshDUnitTest.
Run RollingUpgradeWithGfshDUnitTest.testRollingUpgradeWithDeployment test with JVM option:
-Djdk.tls.trustNameService=true
and env var:
GEODE_HOME=build/install/apache-geode

Then you can fiddle with the test's data() method to change the upgrade from version. And you can fiddle with the test's constructor to change the to version.
This test passes (unfortunately) when upgrading from latest develop to latest develop. It also passes when upgrading from 1.13.2 to latest develop. Still needs more work.

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, check Concourse for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

This PR has been untouched for several months, can it be closed?

closing as abandoned


Lookup Definition

I hope you don't mind me posting a feature suggestion.
It would be great if you can interface with the API to provide a "view definition" link when clicking on a CSS class name. This would work much like Visual Studio and C# Models work. You could pull up the resulting CSS file (or SCSS if there is a map) to the right.

That's a great feature suggestion, feel free to open new issues in case something new comes to your mind. Actually, I've already thought about adding it. Don't worry, it will be considered. Thanks for the suggestion.

https://github.com/Microsoft/vscode/issues/27892

@markadrake, I have an extension called CSS Peek on the Marketplace that seems to do that you're asking for.

algun avance con esto??? seria genial tenerlo dentro de este plugin para no tener que instalar otro como CSS Peek..

@zignd happy to collaborate and merge extensions. It's starting to get hard to maintain CSS Peek by myself


archive/zip: FileHeader.FileInfo().ModTime() should use Modified

Since Go 1.10, archive/zip.FileHeader contains a Modified field supporting extended timestamps. However, FileHeader.FileInfo() returns a os.FileInfo implementation whose ModTime() method still returns the legacy mod time. This should be changed to return Modified. A hint documenting that FileInfo() uses legacy fields would be nice for the time being.
As far as I can tell, headerFileInfo has direct access to the Modified field. Is there a reason why it wasn't included that I am missing, or was it just an oversight?

As far as I remember, this is discussed in https://github.com/golang/go/issues/18359

CC @dsnet @bradfitz

Already commented on the CL. I believe the change is in the right direction, but needs to have a fallback for the legacy timestamp fields.


Instead, if there is a plan to introduce replacements for them, could you please list the replacements in the page, keeping these old certificates listed there until Azure stops signing with them?
@shlipsey3 typically handles these issues.
Thank you,
Allan

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

ID: 2f62b7b9-f841-b6b2-4190-b0a589b41972
Version Independent ID: 4b6a351b-35e6-8865-c622-94e82d98d9a7
Content: Azure Certificate Authority details
Content Source: articles/security/fundamentals/azure-CA-details.md
Service: security
Sub-service: security-fundamentals
GitHub Login: @shlipsey3
Microsoft Alias: sarahlipsey

@alnvdl-work
Thanks for your feedback! We will investigate and update as appropriate.

@alnvdl-work
Thank you for bringing this to our attention.
I've delegated this to content author @shlipsey3, who will review it and offer their insightful opinions.

Hi there,
Thank you for your message. We are aware that some of the Certificate Authorities (CAs) listed are approaching their expiration dates. These CAs will remain on the list until they expire, at which point they will be removed. If you are concerned about upcoming versions of the CAs, they are included in this list. Please ensure that your records are updated with every CA presented here.

Updating this page is an ongoing effort.
#please-close

@shlipsey3 Hi, i can find Microsoft Azure TLS Issuing CA 1/2/5/6 have been replaced by new certs here:https://techcommunity.microsoft.com/t5/azure-storage-blog/azure-storage-tls-changes-intermediate-certificate-renewals/ba-p/3929149
However, we cannot find any information about Microsoft Azure ECC TLS Issuing CA 02.
What should we do?


[Bug Report]: Broken links pipeline fails

Describe the bug
See pipeline output:

✗ https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-connectivity-architecture#network-requirements: HTTP status client error (404 Not Found) for url (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-connectivity-architecture#network-requirements)

The linked URL seems to have been moved.
To reproduce
Just run the broken links pipeline!
Code snippet
No response
Relevant log output
No response

fixed by the linked PR #1350


Documentation should recommend use of "--" separator

I recently came across this package and it's excellent for my use case. However, because the documentation recommends:
dotenv -e .env2 <command with arguments>

I assumed I could simply run:
dotenv -e ../../../.env -- docker compose up -d

You can imagine my confusion to find that the "-d" flag was being ignored. I very nearly moved onto another package due to this issue.
To avoid similar foot guns, I would suggest updating the documentation to recommend:
dotenv -- <command with arguments>
dotenv -e .env2 -- <command with arguments>

Or to very clearly call out the foot guns when omitting "--" separator.

I think it makes sense to change it indeed! I'd love a PR for this!


ARROW-11671: [Rust][DataFusion] Clean up Expr doc comments and examples

When I was first using the Expr structures, I built them using expressions like
Expr::BinaryExpr {
  left: Box::new(Expr ...),
  right: Box::new(Expr ...),
  op: Operator::Eq
}

Then I found out about the much nicer syntax like
let expr = col("a").eq(col("b"))

I have seen this similar pattern with others who have been using the crate too (start with the more verbose syntax) and so I wanted to add some doc examples showing the simpler syntax

:+1: seems reasonable and more examples are always good


PEMM QA playbook revisions — apache config, python version

Revised apache config role as discussed (create & enable project-specific conf, disable default conf)
Revised apache config for working mod wsgi python app with virtualenv
Configures explicit virtualenv to only run on RedHat; use python version and pip to create with specified python version

Updates to refine crontab handling, add logging directory setup for pemm, and new pemm role to copy an encrypted credential file and check out an additional git repository.


PopupMenuButton inside listview.builder showing on the incorrect place

I have popupmenu button for every item in listview
whenever i scroll the list and then click on the popupicon it shows popup on wrong place(mainly on bottom right)
This is my flutter version
Flutter 2.3.0-0.1.pre • channel dev
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel dev, 2.3.0-0.1.pre, on Microsoft Windows [Version 10.0.19042.1165], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[√] Android Studio (version 4.1.0)
[√] VS Code (version 1.60.0)
[√] Connected device (4 available)
• No issues found!
Please help me out @ianloic @anaisbetts @sgraham @gmoothart @sethladd

i have clicked on horis icon(3 dots) and it is showing popup at bottom.
when scroll is not done and then when i click on icon then it shows popup on right place but after scroll is done it shows on wrong place

Hi @bipindubey-technoark, you appear to be on an older version of the dev channel.
Can you please upgrade and see if you still experience the issue.
Also, there's a new version of stable out at the moment. It might be worth looking into.
Thank you

Okay will try to update the flutter

I have upgraded the flutter by running flutter upgrade command
now its version is
Flutter 2.6.0-0.0.pre • channel dev
@danagbemava-nc

its not working after upgrading ,its giving build errors
now i am switching the channel to stable and then will see the output.
@danagbemava-nc

Hii @danagbemava-nc
flutter is upgraded to Flutter 2.5.0 • channel stable
but not i am getting build error

@danagbemava-nc i am getting this error

flutter packages get
Running "flutter pub get" in linkinvestor-flutterapp-v2...       1,353ms
The plugins advance_pdf_viewer, flutter_full_pdf_viewer use a deprecated version of the Android embedding.
To avoid unexpected runtime failures, or future build failures, try to see if these plugins support the Android V2 embedding. Otherwise, consider removing them since a future release of
Flutter will remove these deprecated APIs.
If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding: https://flutter.dev/go/android-plugin-migration.

Hi @bipindubey-technoark,
Can you try clearing your pub cache and running flutter pub get and running the project again and see if you still experience the build error?
Run this command to clear your cache: flutter pub cache clean

@danagbemava-nc I run above commands but nothing worked

@danagbemava-nc should i switch to master channel

it seems like this bug is fixed in master
I have gone through the issues posted here and same issue i got and there they said that issue is fixed in master channel

Check it out on master and let me know

I switched to master and its not working @danagbemava-nc

advance_pdf_viewer: ^2.0.0
flutter_full_pdf_viewer: ^1.0.6

I using above version
Its showing error in this 2 packages
This is the error
The plugins advance_pdf_viewer, flutter_full_pdf_viewer use a deprecated version of the Android embedding.
To avoid unexpected runtime failures, or future build failures, try to see if these plugins support the Android V2 embedding. Otherwise, consider removing them since a future release of
Flutter will remove these deprecated APIs.
If you are plugin author, take a look at the docs for migrating the plugin to the V2 embedding: https://flutter.dev/go/android-plugin-migration.

Hi @bipindubey-technoark, let me trouble you a little.
Can you create a project and see if you're able to build it?
If so, can you try copying over the files from the current project and see if you're able to build it?

I have done that
created new project and added those 2 dependencies which are causing issue
. its still not working
@danagbemava-nc

@bipindubey-technoark, we seem to have gone off-topic for a bit.
If advance_pdf_viewer, flutter_full_pdf_viewer are preventing the app from building, I would advise you file an issue with their repos.

i have clicked on horis icon(3 dots) and it is showing popup at bottom.
when scroll is not done and then when i click on icon then it shows popup on right place but after scroll is done it shows on wrong place
Thanks

Kindly use a sample app to confirm if you're still experiencing this issue with any of the latest versions of flutter.
Thank you

Hii @danagbemava-nc
I have created issue in advance_pdf_viewer repo as well. there also multiple people facing this issue.
I am sending the link

My link where i have create issues
https://github.com/lohanidamodar/pdf_viewer/issues/82

other people issue
https://github.com/lohanidamodar/pdf_viewer/issues/83

@danagbemava-nc  Everyone are facing this issue after upgrading the flutter

@bipindubey-technoark please provide a complete minimal reproducible sample.
Thank you

Just add popup in listviewbuilder.
PopupMenu.dart
Widget getPopupMenu(actions) {
  return Container(
    alignment: Alignment.centerRight,
    decoration: BoxDecoration(
        // borderRadius: BorderRadius.all(Radius.circular(20)),
        // color: colorGray
        ),
    child: PopupMenuButton(
      elevation: 50,
      onSelected: (result) {
        print(result);
      },
      offset: Offset.zero,
      itemBuilder: (context) {
        var list = List<PopupMenuEntry<Object>>();
        actions.asMap().forEach(
              (index, action) => list.add(
                PopupMenuItem(
                  value: index,
                  child: GestureDetector(
                    onTap: action['onTap'],
                    child: Row(children: [
                      Container(
                        margin: EdgeInsets.only(right: 12),
                        child: Icon(Icons.edit, color: colorBlueDark),
                      ),
                      Text(
                        action['text'],
                        style: TextStyle(color: colorBlueDark),
                      ),
                    ]),
                  ),
                ),
              ),
            );
        // list.add(
        //   PopupMenuItem(
        //     child: Row(children: [
        //       Container(
        //           margin: EdgeInsets.only(right: 12),
        //           child: Icon(Icons['icon'], color: colorBlueDark)),
        //       Text(strEdit, style: TextStyle(color: colorBlueDark)),
        //     ]),
        //   ),
        // );
        // list.add(PopupMenuDivider(height: 8));
        return list;
      },
      icon: Icon(
        Icons.more_horiz,
        size: 24,
        color: colorBlueDark,
      ),
    ),
  );
}

call that popupmenu in listview.builder
ListView.builder(
                    shrinkWrap: true,
                    itemCount: postsData.length,
                    itemBuilder: (BuildContext context, int index) {
                      return Container(child:Positioned(
                            child: getPopupMenu(([
                              {
                                'icon': Icons.edit,
                                'text': strEdit,
                                'onTap': () {
                                  Navigator.pop(context, 0);
                                  editablePost = {
                                    'content': postsData[index]['content'],
                                    'media': postsData[index]['media'],
                                    'type': postsData[index]['mediaType'],
                                    'id': postsData[index]['id']
                                  };
                                  createEditPostDialog(
                                      context,
                                      userData,
                                      _editPostFormKey,
                                      editFeedsController,
                                      editablePost,
                                      videoPath,
                                      handleEditPost);
                                }
                              },
                              {
                                'icon': Icons.highlight_remove,
                                'text': strRemove,
                                'onTap': () {
                                  handleDeletePost(postsData[index]['id']);
                                  Navigator.pop(context, 1);
                                }
                              }
                            ])),
                          );
                    },
                  ))

Hii @danagbemava-nc
flutter is upgraded to Flutter 2.5.0 • channel stable

but not i am getting build error

@bipindubey-technoark  The error says the issue is because of the photo_view_gesture_detector.dart because of the incompatible type of
PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'
This has been fixed in photoView: 0.12.0 changelog
So running your app on flutter 2.5.0 should not be a problem

@bipindubey-technoark, I had to make some changes to the snippets you provided because you had certain variables that I did not have. However, I am unable to reproduce the issue.
This looks to me like the issue might be with how your layout is structured.
See attached video.

code sample
import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: HomeWidget(),
    ),
  );
}

class HomeWidget extends StatelessWidget {
  Widget getPopupMenu(actions) {
    return Container(
      alignment: Alignment.centerRight,
      child: PopupMenuButton(
        elevation: 50,
        onSelected: (result) {
          print(result);
        },
        itemBuilder: (context) {
          var list = <PopupMenuEntry<Object>>[];
          actions.asMap().forEach(
                (index, action) => list.add(
                  PopupMenuItem(
                    value: index,
                    child: GestureDetector(
                      onTap: action['onTap'],
                      child: Row(children: [
                        Container(
                          margin: EdgeInsets.only(right: 12),
                          child: Icon(Icons.edit, color: Colors.blue),
                        ),
                        Text(
                          action['text'],
                          style: TextStyle(color: Colors.blue),
                        ),
                      ]),
                    ),
                  ),
                ),
              );
          return list;
        },
        icon: Icon(
          Icons.more_horiz,
          size: 24,
          color: Colors.blue,
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ListView.builder(
        shrinkWrap: true,
        itemCount: 5,
        itemBuilder: (BuildContext context, int index) {
          return getPopupMenu(([
            {
              'icon': Icons.edit,
              'text': 'Edit',
              'onTap': () {
                Navigator.pop(context, 0);
              }
            },
            {
              'icon': Icons.highlight_remove,
              'text': 'Remove',
              'onTap': () {
                Navigator.pop(context, 1);
              }
            }
          ]));
        },
      ),
    );
  }
}

video
https://user-images.githubusercontent.com/88313112/133425920-ff374f55-5bdd-4529-8c61-d74d48cd6360.mp4

I would also like to point out that the reason we request for a minimal complete reproducible sample is not because we cannot write the code to do so, but because you might have a use case that we're not aware of which would affect our reproduction.
If you feel that the sample I used is not enough to reproduce your issue, kindly provide a minimal complete reproducible code sample
Thank you

Hii @danagbemava-nc
flutter is upgraded to Flutter 2.5.0 • channel stable

but not i am getting build error

@bipindubey-technoark The error says the issue is because of the photo_view_gesture_detector.dart because of the incompatible type
PointerEvent' can't be assigned to the parameter type 'PointerDownEvent'
This has been fixed in photoView: 0.12.0 changelog
So running your app on flutter 2.5.0 should not be a problem

I have not used photoView package in my application how it can solve my problem?

@bipindubey-technoark, I had to make some changes to the snippets you provided because you had certain variables that I did not have. However, I am unable to reproduce the issue.
This looks to me like the issue might be with how your layout is structured.
See attached video.
code sample
import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: HomeWidget(),
    ),
  );
}

class HomeWidget extends StatelessWidget {
  Widget getPopupMenu(actions) {
    return Container(
      alignment: Alignment.centerRight,
      child: PopupMenuButton(
        elevation: 50,
        onSelected: (result) {
          print(result);
        },
        itemBuilder: (context) {
          var list = <PopupMenuEntry<Object>>[];
          actions.asMap().forEach(
                (index, action) => list.add(
                  PopupMenuItem(
                    value: index,
                    child: GestureDetector(
                      onTap: action['onTap'],
                      child: Row(children: [
                        Container(
                          margin: EdgeInsets.only(right: 12),
                          child: Icon(Icons.edit, color: Colors.blue),
                        ),
                        Text(
                          action['text'],
                          style: TextStyle(color: Colors.blue),
                        ),
                      ]),
                    ),
                  ),
                ),
              );
          return list;
        },
        icon: Icon(
          Icons.more_horiz,
          size: 24,
          color: Colors.blue,
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ListView.builder(
        shrinkWrap: true,
        itemCount: 5,
        itemBuilder: (BuildContext context, int index) {
          return getPopupMenu(([
            {
              'icon': Icons.edit,
              'text': 'Edit',
              'onTap': () {
                Navigator.pop(context, 0);
              }
            },
            {
              'icon': Icons.highlight_remove,
              'text': 'Remove',
              'onTap': () {
                Navigator.pop(context, 1);
              }
            }
          ]));
        },
      ),
    );
  }
}

video
telegram-cloud-document-4-5913596433839163611.mp4
I would also like to point out that the reason we request for a minimal complete reproducible sample is not because we cannot write the code to do so, but because you might have a use case that we're not aware of which would affect our reproduction.
If you feel that the sample I used is not enough to reproduce your issue, kindly provide a minimal complete reproducible code sample
Thank you

Hii @danagbemava-nc just do 1 thing
add atleast 30 items in listview or give padding between list so that there will be scroll. after scroll click on 3 dots icon.
error occurs after scroll done then it doesn't show popup on right position.
initiallly it shows popup on right position when we dont scroll
after scroll it doesnt show popup on right position

Hi @bipindubey-technoark, I still cannot reproduce this issue.
I made the number of items 30, scrolled a little and it was working fine.
See attached video.
https://user-images.githubusercontent.com/88313112/133614558-eb867fc2-5cd2-4055-acc7-63261c05a319.mp4

@danagbemava-nc thanks
then i have to find the issue by myself
for just confirmation i am sending my pubspec.yaml file can you try to change with this and then try again
version: 1.0.0+1

environment:
    sdk: '>=2.7.0 <3.0.0'

dependencies:
    flutter:
        sdk: flutter

    # The following adds the Cupertino Icons font to your application.
    # Use with the CupertinoIcons class for iOS style icons.
    cupertino_icons: ^1.0.0
    intl: ^0.17.0
    image_picker: ^0.8.4
    flutter_slidable: ^0.6.0
    google_maps_flutter: ^2.0.8
    flutter_polyline_points: ^1.0.0
    advance_pdf_viewer: ^2.0.0
    shared_preferences: ^2.0.7
    fluttertoast: ^8.0.8
    http: ^0.13.3
    email_validator: ^2.0.1
    loading: ^1.0.2
    country_state_city_picker: ^1.2.7
    timeago: ^3.1.0
    video_player: ^2.1.15
    csc_picker: ^0.2.3
    http_auth: ^1.0.0
    webview_flutter: ^2.0.2
    open_file: ^3.2.1
    path_provider: ^2.0.3
    url_launcher: ^6.0.0
    native_pdf_view: ^4.1.0
    flutter_full_pdf_viewer: ^1.0.6
    link_text: ^0.2.0
    photo_view: ^0.12.0

Hi @bipindubey-technoark, even after adding the dependencies, I still cannot reproduce the issue.

This looks to me like the issue might be with how your layout is structured.

As I stated here, if possible, please share the full layout that you have that contains the popupMenuButton, so that we can look at it and see if we can fix it.
Thank you

It is working now i dont know why.
I have done flutter clean and reinstalled fresh packages.


Can I modify the usage policy so that it is not sent immediately when I click the icon?

The current way to use the extension is to click the small icon to immediately send the current page to the inbox, but sometimes it may be accidentally touched or for other reasons.
Can it be made into the following form: when you click on the small icon, a pop-up window will be displayed, which lists the brief information sent, such as the recipient's email address, title, content and other metadata, and can support editing of the sent content.

The current way to use the extension is to click the small icon to immediately send the current page to the inbox, but sometimes it may be accidentally touched or for other reasons.

You could unset the default inbox to disable the 1-click sending feature
https://github.com/user-attachments/assets/cc59a944-6bfc-4059-a462-2a550149887a
Let me know if you have any thought about this.

Can it be made into the following form: when you click on the small icon, a pop-up window will be displayed, which lists the brief information sent, such as the recipient's email address, title, content and other metadata, and can support editing of the sent content.

Great idea! I'm glad to include those features in the upcoming releases.


feat(ui): implement dark mode

This is looking great, some initial comments, and expect more to come.
Npm Icon
I find this jarring, it seems to be off to one side.
@kreshnnikgashi I think we should just remove the npm icon now and direct only to the GitHub - wdyt?

Config Icon
Using the user icon could be confusing to developers as we also have a user for the login, Let's keep anything user-related to the cloud and keep this as a cog only.

Editor Color
I think the purple in the dark background is hard to see, try something a little bit lighter.

I see we are having issues with the modal colors, I think we should change the modal background to be the same as the trace views, so that we dont have to invert the pilll or background colors, wdyt? @kreshnnikgashi

I see we are having issues with the modal colors, I think we should change the modal background to be the same as the trace views, so that we dont have to invert the pilll or background colors, wdyt? @kreshnnikgashi

I agree @danstarns

I see we are having issues with the modal colors, I think we should change the modal background to be the same as the trace views, so that we dont have to invert the pilll or background colors, wdyt? @kreshnnikgashi

I agree @danstarns  - should this be the case for all modals or only for trace viewer ?

I see we are having issues with the modal colors, I think we should change the modal background to be the same as the trace views, so that we dont have to invert the pilll or background colors, wdyt? @kreshnnikgashi

I agree @danstarns - should this be the case for all modals or just for trace viewer ?

For all modals!


Error: Cannot commit optuna session

Describe the bug
Ran into the error in screenshot below.

Seems like a strange error to run into.. I'm running an optimisation with the sliders below as input, and with 6 objectives. After roughly 460 trials I ran into this error. I restarted Rhino and ran it again and the error occurred again after a few trials.

To Reproduce
Unfortunately I can't share the model for testing... But maybe you can help me debug it? How can I see the session details that it's trying to commit? Is it even possible since it's occurring in optuna?
Environment

OS: Windows
Rhino Version: 7
Tunny Version: 0.6.0

Thanks @Knuttatutta.
This problem occurs when saving Optuna optimization results to RDB.
I am aware of the occurrence of this error as I am experiencing the same error with my own optimization.
Currently Tunny is using Optuna's feature to save in sqlite format and this seems to be the cause. However, I am not sure yet. Optuna supports saving in file formats other than sqlite, so I am considering including the use of that as well.
Could you please answer the following questions to confirm the error?

Are you including geometry in the optimization Attribute?
What is the size of the optimization result file (fish.db by default)?

Okay great that you are aware already of this. And sorry for duplicating the issue, didn't notice the other one!
So when I ran into this error there are no attributes at all given, so no geometries. And the size of the Fish.db file was around 19 MB at the time it happened I think. Later I have ran other studies, so it's currently 25 MB.
I do see that optuna has released version 3.1.0 that includes updates to the storage backend, so could be worth taking a look into that maybe?

Thank you for the answers to my questions.
I thought the error was caused by the large amount of attribute information, but it seems not.
In optuna 3.1 a new storage format, JournalStorage, has been implemented and after trying it out I do not expect this problem to occur because unlike sqlite it is simply ASCII JSON.
https://optuna.readthedocs.io/en/stable/reference/generated/optuna.storages.JournalStorage.html#optuna.storages.JournalStorage
So I think switching to it is a good solution to this problem. However, there are many parts of Tunny's UI that are written assuming the use of sqlite, so I have not been able to work on them.

hi @Knuttatutta ,
This is a workaround for this problem, but I have implemented an in-memory mode of optimization in conjunction with previous requests for higher speed.
In-memory mode, as the name implies, does not save the optimization files during optimization, so the problem that is the subject of this issue should not occur.
In this mode, the results are saved only once, when the optimization is finished.
If you want to try it, use the following build with CI as it is a development release.
https://github.com/hrntsm/Tunny/actions/runs/4144729424
Of course, I will continue to work toward a substantive solution to the problem.

Hi @hrntsm ,
I was trying out the in memory mode, and it does make the optimisation go faster, and I indeed don't run into the error while optimising, but unfortunately I did run into the error at the end when it does save all the data to the database file, as you can see in the picture below. This happened when I manually stopped the optimisation instead of waiting it to finish the trials, but I don't expect that to make a difference since in the end I expect it to attempt to save the data in the same way.

Hi @Knuttatutta,
In addition to the existing sqlite-based storage, journal storage, a new format in Optuna v3.1, is now supported.
JournalStorage by setting the save format to .log as follows.

I tried with the gh file which had an error after about 500 trials with the previous sqlite storage, but by using JournalStorage, I confirmed that there was no problem until 3000 trials. Maybe the optimization will continue to progress without problems after this.
You can try the CI build below. Could you check to see if JournalStorage solves this problem in your environment as well?
https://github.com/hrntsm/Tunny/actions/runs/4324035857

Hi @hrntsm ,
Great, I'll try it out right away!
Is JournalStorage also supported by the dashboard? So can I run the optimisation not in memory and use the dashboard while it's running?

Hi @Knuttatutta, Thanks for checking it out right away.

Is JournalStorage also supported by the dashboard? So can I run the optimisation not in memory and use the dashboard while it's running?

Yes, Dashboard is supported even when using JournalStorage; once you press the "Open Optuna-Dashboard" button, it will work regardless of storage.

So I'm getting the following error when stopping the optimisation manually.

Thanks for sending me the error screen! I was able to pinpoint the cause right away.
It was caused by Tunny's UI accessing the log file before Optuna's optimization and saving process to the log file was completely finished.
I fixed it so that even when other processes are accessing the log file, the UI accessing the log file does not cause an error.
How would this version work?
https://github.com/hrntsm/Tunny/actions/runs/4328908737

Hi, @hrntsm
So I can confirm that with the JournalStorage I don't run into any issues with storing the data, and the dashboard also works fine!

Thanks @Knuttatutta  for checking!
Thanks to your help I have been able to solve this issue, which has been a problem for a long time.
Please let me know if there is anything else I can do to improve it.

@hrntsm thank you for fixing it!
Happy to help, especially since Tunny appears to be the tool we want to use in some of our design exploration/optimisation workflows


How about performance if state alway update whole view?

Hi. I'm wondering about the pattern you are using with State.
Anytime state is changed from ViewModel Fragment/Activity should be triggered observed function. It gonna update whole view, state, recyclerview,... Do you have any idea to deal with that ?

The project has been upgraded to version 2.0.
I will be migrating UI to Jetpack Compose and this should provide a better UI update mechanism (performance wise).


DRILL-8054: Add SAS Format Plugin

DRILL-8054: Add SAS Format Plugin
Description
This format plugin adds the ability to read SAS files.  Once merged, Drill will be able to read the same file types as Pandas.
Documentation
Docs available in README.
Testing
Added unit tests.

@dzamo @luocooong
Thank you for the quick review.  I addressed all your review comments.


Error on shutdown when adding the monitor

2017-12-27 13:35:38,132 asyncio ERROR Task was destroyed but it is pending!
task: <Task pending coro=<make_periodic_memcollect_task..collector() running at /usr/local/lib/python3.5/dist-packages/sanic_prometheus/metrics.py:42> wait_for=>
the error disappear when monitor(app).expose_endpoint() is not used

@ram-argus Did you tried the last release with a fix from #4 ?

wow, already fixed. thanks!


Add spec text

Merging so that the spec text can be viewed. Please still add reviews, and I'll address in follow ups.

The spec also always throws in the callable branch - 1.b. makes an Abstract Closure and does nothing with it.

Also, LeadingQhitespaceString references an S that doesn’t exist - and I’m not sure the prose is clear enough to explain what the AO should be doing. It’d probably be better to do something more explicit.

The spec also always throws in the callable branch - 1.b. makes an Abstract Closure and does nothing with it.

Fixed locally. I have a large refactor coming to split the huge DedentStringsArray into smaller AOs.

Also, LeadingWhitespaceSubstring references an S that doesn’t exist

Fixed.

and I’m not sure the prose is clear enough to explain what the AO should be doing. It’d probably be better to do something more explicit.

I took this wording from TrimString. I'm open to anything that lets me say "if this is Unicode white space".

IsAllWhitespace’s name says to me that it’s true when the string contains nothing but whitespace

That's the intention.

Pushed AOs and fixes in f9d3621.

If that's the intention, can it just call TrimString and assert that it receives an empty string back?


Tribute to your great coding style

Dear Ray,
I don't expect you to take this pull request seriously. I unfortunately went completely overboard in modifying and expanding your original code, breaking it, fixing it again, and now it would just be rude to submit this... Atomic commits and such... :-|
But I would like to thank you for your great submission to the world of Free software, and I learned a lot modifying your code base. Really respect your bash-fu. I hope you're not offended by the thing I made it into, but I wanted you to know it exists.
Cheers and kudos,
Peter

OK, closing this now. See: http://github.com/pepa65/tldr-bash-client


Not able to build a new mail server from UX

Hi,
I have just installed postal and trying to configure it, while creating new server i am getting this new error. We encountered same kind of error earlier doing "postal initialize"  did some changes in ''/usr/share/mysql/charsets/Index.xml' managed to get passed it, not able to figure out why this is happening again since utf8 entry already exists in Index.xml. I am a perl programmer and new to this postal and ruby, help would be appreciated.
Thankyou

[2918] [2017-10-04T17:24:10.258] INFO -- : Started POST "/org/test-org/servers" for <IP_ADDRESS> at 2017-10-04 17:24:10 +0530
[2918] [2017-10-04T17:24:10.262] INFO -- : Processing by ServersController#create as JSON
[2918] [2017-10-04T17:24:10.262] INFO -- :   Parameters: {"utf8"=>"✓", "server"=>{"name"=>"POSTAL MAIL SERVER", "permalink"=>"", "mode"=>"Development"}, "commit"=>"Build server", "org_permalink"=>"test-org"}
Character set 'utf8' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
[2918] [2017-10-04T17:24:10.301] INFO -- : Completed 500 Internal Server Error in 39ms (ActiveRecord: 10.0ms)
[2918] [2017-10-04T17:24:10.303] FATAL -- :
[2918] [2017-10-04T17:24:10.303] FATAL -- : Mysql2::Error (Can't initialize character set utf8 (path: /usr/share/mysql/charsets/)):
[2918] [2017-10-04T17:24:10.303] FATAL -- :
[2918] [2017-10-04T17:24:10.304] FATAL -- : lib/postal/message_db/mysql.rb:10:in `new'

Did you install Postal on a fresh Ubuntu 16.04 server?

We are working on centos 6.9

Can you please suggest any help related to my current configuration as I was provided new centos instead of Ubuntu cannot afford to spend time again for reinstalling on new Ubuntu.

Unfortunately Postal is primarily developed for Ubuntu 16.04 so support will be difficult.
I can tell you that by default it installs and runs on MariaDB 10.1.28 so it might be that your local MySQL server is either out of date or configured differently by default. If you can get access to a different/newer database server, you could move the databases to it and update postal.yml to look at the different database server.
As per https://github.com/atech/postal/issues/338 there are a few quirks on Centos 7 but you might have a better time on that version of Centos if you have to use Centos.

Hey Will, its working now did a fresh installation on new centos 6.9, earlier i might have configured mysql differently.

@deepakmonster I have a similar issue but Under Ubunut 18. Isn't Ubuntu 18 supported yet?

@GhaziTriki it should work but there are a few quirks, have a look at #777 and #755

Amazing support.
After checking the logs I have this error.
[web.1:4362] [2019-11-25T12:28:00.606] INFO -- : Completed 500 Internal Server Error in 15ms (ActiveRecord: 4.3ms)
[web.1:4362] [2019-11-25T12:28:00.607] FATAL -- :
[web.1:4362] [2019-11-25T12:28:00.607] FATAL -- : Mysql2::Error (Access denied for user 'postal'@'localhost' to database 'postal-server-11'):
[web.1:4362] [2019-11-25T12:28:00.607] FATAL -- :
[web.1:4362] [2019-11-25T12:28:00.607] FATAL -- : lib/postal/message_db/database.rb:319:in `query_on_connection'
lib/postal/message_db/database.rb:311:in `block in query'
lib/postal/message_db/mysql.rb:20:in `client'
lib/postal/message_db/database.rb:342:in `with_mysql'
lib/postal/message_db/database.rb:310:in `query'
lib/postal/message_db/provisioner.rb:46:in `drop'
lib/postal/message_db/provisioner.rb:13:in `provision'
app/models/server.rb:86:in `block in <class:Server>'
app/controllers/servers_controller.rb:36:in `create'

I am sure I put the right password and suer with the right permissions.

The issue I have seems to be related to those #648 & #840

By the way I use mariaDB.

if restarting your postal/server doesn't help, please open a new issue


Update hooked-wallet.js

@davidp94 should this be closed?

@davidp94 should this be closed?

Yes

Yes