Error ORA-00600 when trying to run Oracle Database Container using lima on macOS

I have been trying to use lima and nerdctl to run an Oracle Database Container on macOS on Intel and hopefully later also Apple Silicon.
I have been using a default lima installation and imported the working (SingleInstance) images from from Docker.
The Docker container has been created using the "official" Oracle scripts and does run as expected under Docker Desktop.
I the just saved the container image and successfully loaded it using nerdctl.
After starting the container in lima the Oracle Database reports an error (ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_500d8c6800000000], [], [], [], [], [], [], [], [], [], []) that might be related to the required --tmpfs argument.
Any help or suggestions are most welcome!
1) run
$ lima nerdctl run --detach --name="oracledb" --network="oraclenet" --memory="4g" --publish="1521:1521" --volume="/dev/shm" --tmpfs="/dev/shm:rw,exec,size=1g" qualiant/database
d9f5f51d18fca73f5fecdc0aaa46456cca2f489f23832572332414d39d5ca60f

2) ps
$ lima nerdctl ps
CONTAINER ID    IMAGE                                 COMMAND                   CREATED               STATUS    PORTS                     NAMES
d9f5f51d18fc    docker.io/qualiant/database:latest    "/bin/sh -c exec $OR…"    2 minutes ago         Up        <IP_ADDRESS>:1521->1521/tcp    oracledb

3) logs
$ lima nerdctl logs oracledb
ORACLE EDITION: STANDARD
Start listener

LSNRCTL for Linux: Version <IP_ADDRESS>.0 - Production on 03-DEC-2021 14:25:17

Copyright (c) 1991, 2019, Oracle.  All rights reserved.

Starting /opt/oracle/product/19c/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version <IP_ADDRESS>.0 - Production
System parameter file is /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/d9f5f51d18fc/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<IP_ADDRESS>)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version <IP_ADDRESS>.0 - Production
Start Date                03-DEC-2021 14:25:18
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /opt/oracle/product/19c/dbhome_1/network/admin/listener.ora
Listener Log File         /opt/oracle/diag/tnslsnr/d9f5f51d18fc/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<IP_ADDRESS>)(PORT=1521)))
The listener supports no services
The command completed successfully
Start database

SQL*Plus: Release <IP_ADDRESS>.0 - Production on Fri Dec 3 14:25:18 2021
Version <IP_ADDRESS>.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> ORACLE instance started.

Total System Global Area<PHONE_NUMBER> bytes
Fixed Size		    9135368 bytes
Variable Size		  603979776 bytes
Database Buffers	  989855744 bytes
Redo Buffers		    7639040 bytes
Database mounted.
Database opened.
SQL>
Pluggable database altered.

SQL> Disconnected from Oracle Database 19c Standard Edition 2 Release <IP_ADDRESS>.0 - Production
Version <IP_ADDRESS>.0
The Oracle base remains unchanged with value /opt/oracle
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
2021-12-03T14:26:46.380586+00:00
TEST(3):Opening pdb with Resource Manager plan: DEFAULT_PLAN
TEST(3):joxcsys_required_dirobj_exists: directory object exists with required path /opt/oracle/product/19c/dbhome_1/javavm/admin/, pid 188 cid 3
Pluggable database TEST opened read write
Starting background process CJQ0
Completed: ALTER DATABASE OPEN
2021-12-03T14:26:47.199071+00:00
CJQ0 started with pid=47, OS id=441
   alter pluggable database all open
Completed:    alter pluggable database all open
2021-12-03T14:26:53.260261+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j000_488.trc  (incident=15791) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_b8e79c6800000000], [], [], [], [], [], [], [], [], [], []
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15791/ORCLCDB_j000_488_i15791.trc
2021-12-03T14:26:53.585472+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j005_498.trc  (incident=15831) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_500d8c6800000000], [], [], [], [], [], [], [], [], [], []
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15831/ORCLCDB_j005_498_i15831.trc
2021-12-03T14:26:53.749644+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j003_494.trc  (incident=15815) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_c0bb916800000000], [], [], [], [], [], [], [], [], [], []
2021-12-03T14:26:53.856622+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j001_490.trc  (incident=15799) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_e83b796800000000], [], [], [], [], [], [], [], [], [], []
2021-12-03T14:26:54.096470+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j006_500.trc  (incident=15839) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_e8b7856800000000], [], [], [], [], [], [], [], [], [], []
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15799/ORCLCDB_j001_490_i15799.trc
2021-12-03T14:26:54.129648+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j004_496.trc  (incident=15823) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_8024726800000000], [], [], [], [], [], [], [], [], [], []
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15815/ORCLCDB_j003_494_i15815.trc
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15839/ORCLCDB_j006_500_i15839.trc
TEST(3):Use ADRCI or Support Workbench to package the incident.
See Note 411.1 at My Oracle Support for error and packaging details.
2021-12-03T14:26:55.189291+00:00
Errors in file /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/trace/ORCLCDB_j004_496.trc  (incident=15824) (PDBNAME=TEST):
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_8024726800000000], [], [], [], [], [], [], [], [], [], []
TEST(3):Incident details in: /opt/oracle/diag/rdbms/orclcdb/ORCLCDB/incident/incdir_15824/ORCLCDB_j004_496_i15824.trc
2021-12-03T14:27:00.478702+00:00

From the error messages, seems like some perm issue.  Check all perms

The problem seems to be related to this sr https://github.com/containerd/nerdctl/issues/594

@yunus-qureshi The issue containerd/nerdctl#594 has now been fixed but I'm still get the same error message:
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_6030696600000000], [], [], [], [], [], [], [], [], [], []

The tmpfs devices now seems to be setup correctly:
/ $ lima nerdctl run --rm --tmpfs="/dev/shm:rw,exec,size=1g" alpine grep /dev/shm /proc/mounts
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime,size=1048576k,uid=501,gid=1000,inode64 0 0
/ $ docker run --rm --tmpfs="/dev/shm:rw,exec,size=1g" alpine grep /dev/shm /proc/mounts
tmpfs /dev/shm tmpfs rw,nosuid,nodev,relatime,size=1048576k 0 0

From the MOS: ORA-600 [pesldl03_MMap: Errno 1 Errmsg Operation Not Permitted] (Doc ID 1625010.1)
Ensure that the /dev/shm mount area is of type tmpfs and is mounted with the following options:
With rw and exec permissions set on it
Without noexec or nosuid set on it

@da-orcl I configured it with 4GB as this seems to be enough when running the same container in Docker
{
    "version": "0.9.2",
    "templates": [
        {
            "name": "almalinux",
            "location": "/usr/local/share/lima/examples/almalinux.yaml"
        },
        {
            "name": "alpine",
            "location": "/usr/local/share/lima/examples/alpine.yaml"
        },
        {
            "name": "archlinux",
            "location": "/usr/local/share/lima/examples/archlinux.yaml"
        },
        {
            "name": "buildkit",
            "location": "/usr/local/share/lima/examples/buildkit.yaml"
        },
        {
            "name": "debian",
            "location": "/usr/local/share/lima/examples/debian.yaml"
        },
        {
            "name": "default",
            "location": "/usr/local/share/lima/examples/default.yaml"
        },
        {
            "name": "docker",
            "location": "/usr/local/share/lima/examples/docker.yaml"
        },
        {
            "name": "faasd",
            "location": "/usr/local/share/lima/examples/faasd.yaml"
        },
        {
            "name": "fedora",
            "location": "/usr/local/share/lima/examples/fedora.yaml"
        },
        {
            "name": "k3s",
            "location": "/usr/local/share/lima/examples/k3s.yaml"
        },
        {
            "name": "k8s",
            "location": "/usr/local/share/lima/examples/k8s.yaml"
        },
        {
            "name": "nomad",
            "location": "/usr/local/share/lima/examples/nomad.yaml"
        },
        {
            "name": "opensuse",
            "location": "/usr/local/share/lima/examples/opensuse.yaml"
        },
        {
            "name": "oraclelinux",
            "location": "/usr/local/share/lima/examples/oraclelinux.yaml"
        },
        {
            "name": "podman",
            "location": "/usr/local/share/lima/examples/podman.yaml"
        },
        {
            "name": "rocky",
            "location": "/usr/local/share/lima/examples/rocky.yaml"
        },
        {
            "name": "singularity",
            "location": "/usr/local/share/lima/examples/singularity.yaml"
        },
        {
            "name": "ubuntu-lts",
            "location": "/usr/local/share/lima/examples/ubuntu-lts.yaml"
        },
        {
            "name": "ubuntu",
            "location": "/usr/local/share/lima/examples/ubuntu.yaml"
        },
        {
            "name": "vmnet",
            "location": "/usr/local/share/lima/examples/vmnet.yaml"
        }
    ],
    "defaultTemplate": {
        "arch": "x86_64",
        "images": [
            {
                "location": "https://cloud-images.ubuntu.com/releases/21.10/release-20220201/ubuntu-21.10-server-cloudimg-amd64.img",
                "arch": "x86_64",
                "digest": "sha256:73fe1785c60edeb506f191affff0440abcc2de02420bb70865d51d0ff9b28223"
            },
            {
                "location": "https://cloud-images.ubuntu.com/releases/21.10/release-20220201/ubuntu-21.10-server-cloudimg-arm64.img",
                "arch": "aarch64",
                "digest": "sha256:1b5b3fe616e1eea4176049d434a360344a7d471f799e151190f21b0a27f0b424"
            },
            {
                "location": "https://cloud-images.ubuntu.com/releases/21.10/release/ubuntu-21.10-server-cloudimg-amd64.img",
                "arch": "x86_64"
            },
            {
                "location": "https://cloud-images.ubuntu.com/releases/21.10/release/ubuntu-21.10-server-cloudimg-arm64.img",
                "arch": "aarch64"
            }
        ],
        "cpuType": {
            "aarch64": "cortex-a72",
            "x86_64": "host"
        },
        "cpus": 4,
        "memory": "4GiB",
        "disk": "100GiB",
        "mounts": [
            {
                "location": "~",
                "writable": false,
                "sshfs": {
                    "cache": true,
                    "followSymlinks": false
                }
            },
            {
                "location": "/tmp/lima",
                "writable": true,
                "sshfs": {
                    "cache": true,
                    "followSymlinks": false
                }
            }
        ],
        "ssh": {
            "localPort": 0,
            "loadDotSSHPubKeys": true,
            "forwardAgent": false
        },
        "firmware": {
            "legacyBIOS": false
        },
        "video": {
            "display": "none"
        },
        "containerd": {
            "system": false,
            "user": true,
            "archives": [
                {
                    "location": "https://github.com/containerd/nerdctl/releases/download/v0.18.0/nerdctl-full-0.18.0-linux-amd64.tar.gz",
                    "arch": "x86_64",
                    "digest": "sha256:62573b9e3bca6794502ad04ae77a2b12ec80aeaa21e8b9bbc5562f3e6348eb66"
                },
                {
                    "location": "https://github.com/containerd/nerdctl/releases/download/v0.18.0/nerdctl-full-0.18.0-linux-arm64.tar.gz",
                    "arch": "aarch64",
                    "digest": "sha256:6e3ca13479f0128e0ea3813bfba6a7ecc04707840f49ee248a64bfb2126bab4c"
                }
            ]
        },
        "network": {},
        "hostResolver": {
            "enabled": true,
            "ipv6": false
        },
        "propagateProxyEnv": true
    },
    "limaHome": "/Users/doberkofler/.lima"
}

@yunus-qureshi I do run the container exactly teh same way as i run it when using Docker where the problem does not appear. With rw and exec permissions set on and without noexec and nosuid.
lima nerdctl run --detach --name="oracledb" --memory="4g" --publish="31521:1521" --volume="/dev/shm" --tmpfs="/dev/shm:rw,exec,size=1g" oracle/database-prebuild:19.3.0-se2

As soon as I enable "native compilation" (ALTER SESSION SET plsql_compiler_flags = 'NATIVE';) and try to compile and procedural code, I get the following Oracle error:
ORA-04045: errors during recompilation/revalidation of LJ_UNITTEST.ODS_SYS_INSTUTIL
ORA-00600: internal error code, arguments: [pesldl02_Make_Object: shm_open failed: errno 13 errmsg Permissio], [/PESLD_ORCLCDB_3_2062f66800000000], [], [], [], [], [], [], [], [], [], []


Editor ruler is not re-positioned when GitLens adds left-hand panel to code tab

GitLens Version: 6.1.2
VSCode Version: Code 1.18.0 (dcee2202709a4f223185514b9275aa4229841aa7, 2017-11-08T21:22:49.932Z)
OS Version: Windows_NT x64 6.1.7601
Other VSCode Extensions:

Extension
Author (truncated)
Version

gitlens
eam
6.1.2

tslint
eg2
1.0.23

prettier-vscode
esb
0.26.0

auto-close-tag
for
0.5.3

auto-complete-tag
for
0.0.2

auto-rename-tag
for
0.0.15

python
ms-
0.8.0

PowerShell
ms-
1.5.1

angular2-inline
nat
0.0.17

Steps to Reproduce:
Note: I am not sure if the issue lies with vscode or gitlens.

Ensure the GitLens extension is installed and active.
Open a source file that has some Git history.
In VSCode 'User Settings', set "editor.rulers": [140]
Observe the ruler appears in the source tab and it is positioned correctly.
Select the 'Toggle File Blame Annotations' command, provided by the GitLens extension.
(There's a button on the toolbar at the top right of the screen)
This will insert a panel to the left of the code.  Content of the panel is, I believe, irrelevant.
Observe that the code has been shifted to the right to accommodate the extension's panel, but the editor ruler has not moved.  The editor ruler is now in the wrong position in relation to the code.

Expected behavior:
I was anticipating that the ruler would be shifted to the right, in the same way as the code.
Observed actual behavior:
The ruler remained in the same position after the extension had added a panel to the left of the code resulting in the ruler being positioned incorrectly in relation to the code.

Feels like this should be in the same ballpark as https://github.com/eamodio/vscode-gitlens/issues/91.

Yeah, it is somewhat similar to that issue. I opened https://github.com/Microsoft/vscode/issues/39165. If/when that issue is resolved there will unlikely be any changes required by GitLens, therefore I'm closing this issue. Thanks!


/usr/bin/env: ‘bash\r’: No such file or directory

during docker-compose up --build
backend_1 /usr/bin/env: ‘bash\r’: No such file or directory
...
backend_1 exited with code 127

May happen when installing on Windows due to wrong line endings in the .sh files.
Fixed by using dos2unix or changing line endings on the files located in projectname/backend/scripts

if someone wants to contribute – go for it :)


Split error implementations causes dependency chain issues

First off, thank you for all you do.
I have recently ran into a dependency chain issue where one of my dependencies uses nom with simple errors, while another dependency uses the same version of nom with verbose errors. This is causing a build break in whichever of the dependencies happens to be built later than the other.
I am not sure the best/right way to solve this conflict. Right now I am currently in a mode of forking nom and attempting to provide both distinct error implementations—including their own IResult—and then based on the feature flag promote one to be a default but ultimately supporting both simultaneously. I then am using cargo patch support to point to my fork instead. I have not completed this strategy so it's unknown yet if it will actually work out.
What would you recommend to a guy in my situation? :)

They are both using nom 3.2.1 (one binding on ^3 and another on ^3.2). The first is lettre that uses the simple errors and does re-export the nom error type...which makes sense since there's no lifetime issues for simple errors against &[u8] inputs. The other that is using verbose errors is cexpr used by bindgen.

I was successful in upgrading lettre to use nom v4 and having it export just nom::ErrorKind instead of the full nom::Err to avoid the input type lifetime issues that would ensue. Cargo patch saved the day again!


Weirdly duplicated select elements

When I initialized selectpicker two same dropdown button shown in modal. But there was only one select element.

Bug reports must include a live demo of the problem. Per our contributing guidelines, please create a reduced test case via Plunker, jsFiddle, CodePen or JS Bin, and report back with your link, Bootstrap version, bootstrap-select version, and specific browser and OS details.

Having same issue. This happened to me when using this class "selectpicker form-control select2" for the select element.

I'm experiencing duplicate select elements in the following circumstances.
Bootstrap 3.3.7
bootstrap-select v 1.13.16
Chrome browser Version 81.0.4044.122 (Official Build) (64-bit)
This happens within a bootstrap modal.  I have two tables, one which is hidden and has a row including a selectpicker which acts as a template, and another working table where the user can click a button to add a row.
When the user adds a row, the html of the row in the template table is prepended to the working table and I refresh the selectpicker in the working table (if I don't refresh, no options appear).  I then see two selectpickers, one below the other.  The top one displays the options when clicked, the bottom displays nothing when clicked.
Attached is a file that illustrates the issue (it's a .txt file).  After opening the file, click the Open Modal button, then click the plus sign icon to see the issue.
DuplicateSelectBug.txt


Improve handling of destinations

Intended functionality: A destination is a node in the road network that is for some reason interesting. It could be a place where to pickup goods or deliver them, it could be a energy charging point, or similar. A vehicle can park in a destination, and other vehicles can pass a parked vehicle. Outside destinations, it is not possible to park, and if a vehicle stops it cannot be passed.
There is a rudimentary generation of destinations in the code now. However, to be able to generate nice graphics, where the parked car is to the side of the road, destinations should only be possible to have where there is space to draw this. For instance, it should not be possible in a crossing or in an inward roadbend. The current algorithm for generating places is not totally accurate and should be improved. Also, the graphics for showing places need to be added, as well as the capability to park.

The destination generation has been fixed. Remains to add some traffic rules for destinations. A vehicle should never wait to get into a destination that is occupied, but if so it should drive on. A vehicle leaving a destination always needs to yield to all other traffic.

The rule to yield for all traffic when leaving a destination has been implemented. The part about vehicles not waiting to enter a destination that is already occupied is more interesting. It actually represents a failure of carrying out a plan, which should trigger a replanning of the agent. In principle, any precondition not being met can be seen as a failure. So either the plan should say what to do if precondition of one action is not fulfilled, or it should trigger a replanning mechanism.
In the case of parking, maybe that is a different capability than MoveCapability? And maybe that capability knows that if it cannot go into the parking, it should find the next one?

A ParkCapability has been implemented and seems to work. What it does is that if cannot park immediately, the precondition modifies the plan by inserting a move capability ahead of it.
However, there seems to be a bug in the generation of destinations. Sometimes, in crossings, a vehicle is seen moving into a lane in the wrong direction, and then immediately turning back. Probably, this is because there is a destination under that road.

The bug in destination generation has been fixed.


Reference JavaScript package page linked to a buggy npm version

Below this page , there's a reference section, captured in the screenshot, where the JavaScript package is an external link. However, the default link is linked to a buggy version (https://www.npmjs.com/package/@azure/storage-file-datalake/v/12.0.0-preview.6), which is very misleading for users who by default install this version and find that it's not working.
Could you pls update the link to the latest default version to avoid a misled user like me who spent quite some time only to figure out that it's the version issue.

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

ID: 8ab1d75b-3cbf-58f2-6d6f-8f7445fc27a7
Version Independent ID: 9d4e2945-27ec-b88e-7d20-0693df6982ea
Content: Azure Data Lake Storage Gen2 Introduction
Content Source: articles/storage/blobs/data-lake-storage-introduction.md
Service: storage
Sub-service: data-lake-storage-gen2
GitHub Login: @normesta
Microsoft Alias: normesta

@woohling
Thanks for your feedback! We will investigate and update as appropriate.

@woohling
Thanks for bringing this to our attention.
I'm going to assign this to the document author so they can take a look at it accordingly.
@normesta
Can you please check and add your comments on this doc update request as applicable.

Thank you for reporting this. I've fixed this entry to point to the correct version of the reference docs. That change should appear live by tomorrow AM.
#please-close


Allowing null invocations from tool actions

I wonder if we should actually make tools yield rather than return invocations, then they can do as may or as few as they like


Write Multiple Registers for slave not included

Function 0x10 (write multiple holding registers) is missing for the slave while function 0x06 (write single holding register) is there. Why? I mean, as long as you've chosen "03 Holding Register" at the "Function" section of the application, I think both functions should be available in order not to be a little bit too restricted when you're going to write registers as you are now.

Removed function restrictions on the ModbusSlave app


empty group repeat fails

let m = macro {
	rule { { $(case ($x ...)) ... } } => {
		$([$x (,) ...]) (;) ...
	}
}

m {

}

Throws an:
Error: ASSERT: must have a least one non-scalar in repeat

I'm mass closing issues due to the release of 1.0 obviating lots of bugs. If you feel this issue is something we still need to address feel free to reopen.


Question menu for moving/duplicating/deleting cuts off

Description
Panel cuts off question menu when window is intermediate size between full desktop and tablet view.
This was noticed in diary study session observation with client using a different tablet:

Steps to reproduce

Go to staging > Edit
Toggle to French
Adjust the window size
See how the menu gets cut off

Details

Browser: Chrome
Operating system: Mac
Environment: Staging
Language: French
Viewport: Desktop, partial width

Expected behaviour
Responsive menu that does not cut off text?
Screenshots or videos

Action: Modify the z-index to a higher level than the right panel


fix: Up tests to get gh app id and install id from env vars

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 66.742%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
295

Relevant Lines:
442

💛  - Coveralls


Off-grid nixpkgs feature

Issue description
This would issue would be a discussion/feature request.
Right now,as far as I am concerned, you cannot use nixpkgs to update an offgrip nixos system because it depends on internet.
I think this is a problem for off-grid systems because there is no easy way to update. On the other hand there is creating an ISO for installing where you can go around this.
The feature would be something like "nixos-prefetch" that gets all the downloadable things needed for a configuration/flake.
On the target machine you specify this route as cache and you can update without internet.
Posible solutions

Create a new off-grid nixpkgs where urls are transformed into paths to the packages
On the target machine you specify to use that nixpkgs and the rebuild should not fail.

Download all packages
On the target machine place the packages on cache.nixos.org

Technical details
I am not an expert on nixos, I don't know the viability of this options. This issue is mainly to open discussion.

I recently discovered that @pete3n had typed up some notes (+other links) on this here:

https://gist.github.com/pete3n/96a2ca4fecfe4a5c669f9580c306b80f

What you are going to require is a CI pipeline (which has access to the internet to pull down sources) that takes your [flake-based] system configurations and places the prebuilt derivations in your own self-hosted binary cache which your other machines pull down from. This pipeline would run every time there's a nix flake update to a new nixpkgs ref.
There's several options for serving the cache but personally, I like using attic for this:

https://github.com/zhaofengli/attic/

I have a feature request for guidance on a full cache without internet here: https://github.com/zhaofengli/attic/issues/82

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/potential-rfc-idea-expansion-of-the-dependency-tracking-system/43418/1

@jpds thanks. I have been occupied by other work projects, but I have the end goal of being able to deploy and rebuild flake based NixOS system configurations on air-gapped systems. Proxies and SSH based deployments help where you are allowed to have internet connected systems deploy configurations to offline systems, but I have not found a way to do truly air-gapped deployments.
To give a comparison, I have previously used tools like Apt Offline https://github.com/rickysarraf/apt-offline for Debian based systems to update packages on air-gapped systems.

This issue has been mentioned on NixOS Discourse. There might be relevant details there:
https://discourse.nixos.org/t/a-bit-conflicted-about-nixos/44168/2


Timeline with play and reverse function.

There is a timeline which has 3 different elements ( .square, .circle, .triangle) and try to move these to 250px right side when click "test" and move back to its original position when click "test" again.
So, I made this absoluteOffset timeline set autoplay false and made .test element can get click event. But, When we click .test element at first time, all of these elements moves to 250px right side at once and comes back to its position. This is not what I expected. After we click .test once, It is working fine as I expected. What's the problem on here? To get this effect, should I make another timeline to control movement to move elements to reverse?
This is my code example.
https://codepen.io/nosugarsociety/pen/eEbZdE

@nosugarsociety I have seen this problem before. The fix is quite simple really, however the sample code on the website does not work as we it to expect (i think it has something to do with the timeline).
Looks as if when both functions are ran, it cancels the play method and runs the reverse method first
In order to achieve what your looking for, you will have to check the "completed" variable and run the reverse function when the animation has completed.
see example below
    menuBtn.on('click',function () {        //menuAnimeT1 is the animejs  object with the timeline           menuAnimeT1.play();       //checks whether the animation has been completed and runs the reverse         if(menuAnimeT1.completed){             menuAnimeT1.reverse();         }

Hi! @Delanyo32 I appreciated your help on this. I have not really thought about 'completed' callback option. It works great as I expected.


lattice setup with nats server in gateway configuration mode

Description: Three nats server setup with gateway configuration mode.
Following error message is received from nats-server 1 where the following command of the example on lattice is run
RUST_LOG=cranelift_wasm=warn,info ./target/debug/wascc-host --manifest examples/lattice/host2.yaml
[ INFO ] Lattice Host: <IP_ADDRESS>
[ INFO ] Initialized Message Bus (lattice)
[INFO ] Loaded native capability provider 'waSCC Extras (Internal)' v0.9.0 (2) for wascc:extras/default
[ INFO ] Native capability provider '(default,wascc:extras)' ready
[ INFO ] waSCC Host Manifest loaded, CWD: "wascc-host"
[ INFO ] Loaded native capability provider 'Default waSCC HTTP Server Provider (Actix)' v0.7.0 (2) for wascc:http_server/default
[ INFO  wascc_httpsrv] Dispatcher configured.
[INFO ] Native capability provider '(default,wascc:http_server)' ready
thread 'nats_subscriber_2_wasmbus.provider.wascc.http_server.default' panicked at 'called Result::unwrap()on anErr value: "Failed to de-serialize: invalid type: map, expected a string"', src/bus/lattice.rs:92:25
Following error message is received from nats-server 2 where the following command of the example on lattice is run
RUST_BACKTRACE=full RUST_LOG=cranelift_wasm=warn,info ./target/debug/wascc-host --manifest examples/lattice/host1.yaml
...
[ INFO ] Lattice Host: <IP_ADDRESS>
[ INFO ] Initialized Message Bus (lattice)
[ INFO ] Host ID is NB...
[ INFO ] Loaded native capability provider 'waSCC Extras (Internal)' v0.10.0 (2) for wascc:extras/default
[ INFO ] Native capability provider '(default,wascc:extras)' ready
[ INFO ] waSCC Host Manifest loaded, CWD: "wascc-host"
[INFO ] Discovered capability attestations for actor MB... wascc:http_server
[INFO ] Attempting to bind actor MB... to default,wascc:http_server
[INFO ] Binding subject: wasmbus.provider.wascc.http_server.default
Error: Error(CapabilityProvider("Failed to configure default,wascc:http_server - I/O error: No response"))

Can you try this against what's currently in master versus what's in crates.io?

The failure is happening during binding. It looks as though the configuration is being sent from host2 to host1, but host1 isn't able to de-serialize the configuration. If you look closely, you can see that one of your hosts is running 0.9.0 and the other host is running 0.10.0, which would certainly account for the inability for the two hosts to talk to each other.

host2:
[ INFO ] Loaded native capability provider 'waSCC Extras (Internal)' v0.10.0 (2) for wascc:extras/defaul

host1:
[INFO ] Loaded native capability provider 'waSCC Extras (Internal)' v0.9.0 (2) for wascc:extras/default

0.9.0 and 0.10.0 are not compatible with each other.

Agree. I tried with the same version (0.9.0) from crate.io and i didn't get any error.
There is another issue which I am not sure if it's a problem. Let's say we start messaging capability on a host. If we want to deploy an actor that would like to use that capability, then the host having the actor needs to know the ip address of the host, which has the required capability, for binding purpose. Is there way to provide some abstraction and discovery mechanism so that we don't need to hard code the ip address?
Also killing a actor on a host doesn't clean the binding with the required capabilities on the host having the capability.

If an actor needs to send message to another actor, currently actor-sdk provides message broker module and APIs which requires access to wascc:messaging capability. Do we need some message broker to support lattice?

If you want one actor to call another, it can be done so using lattice if that call is out of process, or it can be done manually if it is done in-process. You'll need for the calling actor to be signed with a custom capability that is the public key of the callee actor for the security system to let this happen (there's another open issue for making this security more simplified as well).
The Gantry project has an example where a file stream actor makes a request of the catalog actor. This request can be in-process or it can be out-of-process using lattice, but again the module JWTs need to be signed to allow actor-to-actor invocations. You can see how the actor call takes place here.

I was trying out actor to actor communication with lattice. I sign actor A with public key of B and vice versa. Actor A sends a message to actor B on receiving a http request. To send a message from an actor A to actor B, following lines are added to the actor A.
let reply_to: Option<&str> = Some("wasmbus://PUBLIC_KEY_ACTOR_A");
let subject = String::from("wasmbus://PUBLIC_KEY_ACTOR_B");
let payload:Vec<u8>  = b"123".to_vec();
let _result = messaging::default().publish(&subject, reply_to, &payload);
Actor B has following lines.
actor_handlers! { codec::messaging::OP_DELIVER_MESSAGE => handle_event,
codec::core::OP_HEALTH_REQUEST => health }
fn handle_event(msg: codec::messaging::BrokerMessage) ->  HandlerResult<()> {
let _result = messaging::default().publish(&msg.reply_to, None, &msg.body);
Ok(())
}
I was wondering what I am doing wrong here.

Actor to actor communication never explicitly uses wasmbus prefixes or the messaging provider.
The "provider" you're consuming is the public key of the actor you're calling. Did you take a look at the example of actor to actor calls in the Gantry repo?
Also, in actor to actor comms, you choose your own operation name, you likely would not reuse one.
Just to reiterate - user/developer code should never publish directly to wasmbus via messaging, because the plumbing for wasmbus could change.
You want to use the untyped host binding from the actor sdk in actor a to call actor b:
untyped:: default ().call("public key of actor b", "operation name", .. payload ..)?;

The example is helpful. Just to make sure I understand it correctly, the call function is synchronous and single threaded, right? I wanted actor B to call back to actor A after actor A called actor B, but I couldn't use the call function in actor B as it lead to deadlock.


Undefined is not an object (React.PropTypes.func)

I'm using RN 0.49 and emoticons 1.0.7
_onEmoticonPress and _onBackspacePress are implemented
and showEmoticons has been defined in constructor
<Emoticons
   onEmoticonPress={this._onEmoticonPress.bind(this)}
   onBackspacePress={this._onBackspacePress.bind(this)}
   show={this.state.showEmoticons}
   concise={true}
   showHistoryBar={true}
   showPlusBar={true}
/>

refer to #14

Thank you.
After I changed all the files following the pull request and edited "DefaultTabBar.js" for using 'prop-types'
I got another error... It's the same problem (Due to PropTypes)
Seems like are the problems of react-native-scrollable-tab-view

Fixed by downgraded to RN 0.48.1


Force users to think about warnings

Right now, warnings happen and are logged, but can be lost in a stream of other info if the log level is high.
Using warnings.catch_warnings(record=True), we could print a summary at the end of each Tool's run() function, at minimum:
WARNING: 12 warnings were emitted. Please check the logs.

At maximum, we could even re-list the warnings.
See e.g. #2236 where a warning may be useful, but shouldn't always be ignored.

Having suffered under the yoke of the HAP warnings, I think having a summary of all warnings like hap-check provides is very useful, but it is also important that the user gets some sort of guidance on what to do with the list.
The ideal world would be that each warning comes with an explanation of why it is raised, an suggestions for further actions.
Maybe even a system for specifying analysis specific assumptions that would lead to warnings being silenced as the end up expected for a particular set of assumptions, but now I'm just dreaming.

The ideal world would be that each warning comes with an explanation of why it is raised, an suggestions for further actions.

That is similar to what we say in the Software Programming Standards document for exceptions. It should apply to warnings as well:

The exception description shall be written assuming the reader is not an expert in the software. Note that in the case of a problem, exception names and descriptions are what will be seen by the software end-user or operator, who are not experts in the software’s internal design. Therefore, the message shall help them to resolve the problem or to provide a useful bug report


typo in readme

In README.rst, first line says

Pinball is a scalable workflow managemer.

meant to say

management tool

?

Fixed. Thanks.


Update scalaz-core to 7.3.0

Updates org.scalaz:scalaz-core from 7.2.30 to 7.3.0.
GitHub Release Notes - Version Diff
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "org.scalaz", artifactId = "scalaz-core" } ]

labels: library-update, semver-minor

Superseded.


Allow selecting a not-yet-existing database on the data tab

So you can execute a create db+tables template.

On second thought, a database should always exist before running any queries. The way to create them is through the button on the first page.


Unable to disable default onTextInput handlers

Default textInputHandlers are nice but I found there's no public way to disable or override them.
For now I'm doing this to disable default handlers:
editor._eventManager._textInputHandler.destroy();

But there should be a public method in editor to do this. Maybe resetTextInputHandlers()?

Duplicate of #191, which I'm closing in favor of this issue since the discussion there references a style of adding expansions that no longer exists.
I'd be in favor of adding a resetTextInputHandlers since that seems like it would solve your immediate use case. I have a small amount of hesitation because it's not clear how much "core" functionality is or will be handled by those text input handlers.
As mentioned in #191, exporting the text handlers by name would make it easy to selectively remove them, e.g. unregisterTextInputHandler('heading').
Perhaps unregisterAllTextInputHandlers and unregisterTextInputHandler(name) are both worth adding?At the moment there are only three: unordered list, ordered list, and heading.

unregisterAllTextInputHandlers and unregisterTextInputHandler(name) sounds good! Since unregisterTextInputHandler(name) will require every handler provides a name, we probably can implement unregisterAllTextInputHandlers as first step. How do you think? (I understand you have many features to do, so I'm fine if you need my help on this.)

Yeah, if you have a chance to make a PR I'd be happy to merge it. I think we can both add the unregister all functionality and the unregister by name, we'll need to add names for the (3) existing input handlers. 3rd-party handlers can continue to be unnamed for now (they just won't be individually removable yet). After this lands we can add a deprecation for unnamed handlers.
--
twitter.com/bantic

On Aug 31, 2016, at 9:43 PM, Dale Ma<EMAIL_ADDRESS>wrote:
unregisterAllTextInputHandlers and unregisterTextInputHandler(name) sounds good! Since unregisterTextInputHandler(name) will require every handler provides a name, we probably can implement unregisterAllTextInputHandlers as first step. How do you think? (I understand you have many features to do, so I'm fine if you need my help on this.)
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or mute the thread.

Will make a PR by this weekend.


error<EMAIL_ADDRESS>The engine "node" is incompatible with this module. Expected version "^10.12.0 || >=12.0.0". Got "11.12.0"

Trying to create a new react project with the command npx create-react-app frontend fails with the following error:
Enviorment

React v17.0.1
npm v6.14.8
3.Node v11.12.0

I found nothing about<EMAIL_ADDRESS>module problem, tried updating npm and node but still the same.

have the same error.

Hello,
Like it said, you need node 10 OR >=12. Not 11.

Please upgrade node to a compatible version. We recommend the latest LTS version.


pin latest contrib, update all direct dependencies

Signed-off-by: Bernd Verst<EMAIL_ADDRESS>Description
Pins latest contrib and updates all direct dependencies.
The version downgrades are correct, please ignore. These are indirect dependencies that were erroneously upgraded in contrib previously.

/ok-to-test

/ok-to-test

/ok-to-test

/ok-to-test

@artursouza I had already run /ok-to-test and it succeeded.
What are all these new test scenarios you are adding here?

Thanks for rerunning the test. Looks like it was flakiness.

@artursouza I removed the failing Fossa check on this PR also.


java.lang.AbstractMethodError using scala 2.11.x

Hi,
I'm using a macro to create a simple def (just returning a new instance of the matching return type).
The example works as expected with sbt 0.13.15 / scala 2.12.2 / scalameta 1.7.0 / paradise 3.0.0-M8 / Idea 2017.1.1.
But when switching to scala 2.11.11 an exception will be thrown in the last println line:
a:example.Main$$anon$2@4a87761d
b:example.Main$$anon$3@cb0ed20
Exception in thread "main" java.lang.AbstractMethodError: example.Main$$anon$3.a()Lexample/A;
	at example.Main$.main(Example.scala:17)
	at example.Main.main(Example.scala)

Can anyone reproduce this?
package example

import scala.meta._

class Macro extends scala.annotation.StaticAnnotation {
  inline def apply(defn: Any): Any = meta {
    defn match {
      case q"def $name(...$paramss): ${tpe: Type.Name}" =>
        q"def $name(...$paramss): $tpe = new ${Ctor.Name(tpe.value)} {}"
    }
  }
}

package example

trait A

trait B {
  @Macro
  def a: A
}

object Main {
  val a: A = new A {}
  val b: B = new B {}

  def main(args: Array[String]): Unit = {
    println(s"a:$a")
    println(s"b:$b")
    println(s"b.a:${b.a}")
  }
}

What do you mean by switching? Changing the version number in the build file and compiling again?
Also, have you tried cleaning the project and rerunning? I have a suspicion this may be a binary incompatibility between how 2.11.x and 2.12.x compile traits.

Hi,
yes, I meant changing the version number and cleaning the build before recompile. I'm currently not affected of this, I have just reported it to support scalameta.


Support for Centos 7.9 Kernel version 3.10.0-1160

I have recently upgraded a Centos 7.9 machine to the latest kernel version: 3.10.0-1160
Unfortunately ROCm upgrade has failed.
According to:  https://github.com/RadeonOpenCompute/ROCm
Only CentOS 7.9 kernel 3.10.0-1127 is supported by ROCm
Are there any plans to support kernel version 3.10.0-1160?
Are there any alternatives to downgrading the kernel version?

Hi @orensg1, Thanks for reaching out.
I certainly understood the problem.
Yes, we validated 3.10.0-1127 with CentOS 7.9 and hence official support is given.
We started validating 3.10.0-1160 with our internal builds and things are pretty good. So next ROCm release will have official 3.10.0-1160 support.
Hope its clear.
Thank you.

Great, thank you.


No summary when test is finished

hello
I am running a load test. I get the metrics output when the users are hatched, but once the load test finishes the final summary output is not showing up.
[xxx@localhost goose_test]$ cargo run --release -- --running-metrics 2     Finished release [optimized] target(s) in 0.08s      Running target/release/goose_test --running-metrics 2`
=== PER TASK METRICS ===
Name                     |   # times run |        # fails |   task/s |  fail/s
1: LoadTest              |
1:                     |             0 |         0 (0%) |     0.00 |    0.00
Name                     |    Avg (ms) |        Min |         Max |     Median
1: LoadTest              |
1:                     |        0.00 |          0 |           0 |          0
Name                     |                                        Status codes
-------------------------+----------------------------------------------------
Aggregated               |
All 8 users hatched, resetting metrics (disable with --no-reset-metrics).
[xxx@localhost goose_test]$ `
I have this setup:
.set_default(GooseDefault::RunTime, 30)?         .set_default(GooseDefault::Host, HOST)?         .set_default(GooseDefault::ThrottleRequests, 5)?         .set_default(GooseDefault::StatusCodes, true)?
Thanks

Is it possible to include a complete minimal code example to duplicate this? I am unable to duplicate based on what you have provided.
Be sure when you invoke GooseAttack that it ends with .print();, such as from [the Goose Book example](file:///Users/jeremyandrews/devel/goose/src/docs/goose-book/book/getting-started/creating.html).
#[tokio::main]
async fn main() -> Result<(), GooseError> {
    GooseAttack::initialize()?
        .register_taskset(taskset!("LoadtestTasks")
            .register_task(task!(loadtest_index))
        )
        .execute()
        .await?
        .print();

    Ok(())
}```

Thanks for replying. Your guess is correct, I had missed adding .print(). Thanks


redis: user id should be 999

Which image/versions are related to this issue/feature request?
When switching to chainguard's redis image, I had to chown my volume to 65532:65532, while the official redis image uses 999:999: https://github.com/docker-library/redis/blob/master/7.0/Dockerfile#L4
Issue/Feature description
No response

@imjasonh to evaluate impact of this change (whether there are existing users)

We get a few hundred requests/day for cgr.dev/chainguard/redis
date	        count
2023-03-13	194
2023-03-12	166
2023-03-11	163
2023-03-10	217
2023-03-09	320
2023-03-08	206
2023-03-07	232
2023-03-06	252
2023-03-05	64
2023-03-04	64
2023-03-03	65
2023-03-02	70
2023-03-01	97
2023-02-28	97
2023-02-27	112
2023-02-26	79
2023-02-25	123
2023-02-24	162
2023-02-23	210
2023-02-22	170
2023-02-21	135
2023-02-20	113
2023-02-19	104
2023-02-18	201
2023-02-17	433
2023-02-16	6167
2023-02-15	2648
2023-02-14	960
2023-02-13	135

Full query
SELECT
  DATE(timestamp) AS date,
  COUNT(*) AS count
FROM
  `chainguard-images.logs.run_googleapis_com_requests_*`
WHERE
  REGEXP_EXTRACT(httpRequest.requestUrl, 'https://[a-z]+.dev/v2/(?:chainguard/)?([a-z]+)?') = 'redis'

  AND httpRequest.requestUrl LIKE 'https://%/v2/%/manifests/%'

  # Filter out attempted pushes and 404s
  AND httpRequest.requestMethod IN ('GET', 'HEAD')
  AND httpRequest.status < 400

  # Filter out spammy requests
  AND httpRequest.userAgent NOT LIKE '%go-containerregistry/v0.8.1-0.20220310143843-f1fa40b162a1%'
  AND httpRequest.userAgent NOT LIKE '%image-scraper%'
  AND httpRequest.userAgent NOT LIKE '%chainguard-prober%'
GROUP BY date ORDER BY date DESC

(Wow, what's up with Feb 16 huh? It was announced Jan 4.)
The 194 pulls today is out of 131130 total matching pulls today, about 0.1% of all of today's pulls (so far). I'm not sure if that's helpful context though, since our pulls are overrepresented by static,busybox,git.

Ok! That's better than I expected. We should be a bit careful about changing UID then :)
We can probably do something like have 2 users or similar and a switchover period. If this runs an entrypoint script maybe we can fudge it there.


CPU scaling degrades Actor ping-pong  performance on Linux

Description
To follow up on the discussion in https://github.com/swiftlang/swift-corelibs-libdispatch/issues/760, as mentioned by @ktoso here and @rjmccall here; I wanted to demonstrate how not controlling thread count can significantly impact dispatch performance on Linux.
Using a Mac Mini M4 Pro (14-core variant) running Ubuntu 24.04 LTS in a Multipass VM, I tested performance by varying the number of cores available to the VM (as I couldn't find a way to control this via environment variables) and running a basic minimal actor test below.
The results show that while macOS performance remains constant, the same code on Linux degrades as more CPU cores are added. The Linux VM with 14 cores performs several times worse than when run with 2 cores:

Raw data:

Pingers
macOS
linux14c
linux12c
linux8c
linux4c
linux2c

1
11,846,331
11,421,579
11,364,196
11,869,799
11,347,104
11,556,880

2
3,299,910
6,445,558
6,123,505
3,953,612
3,700,211
4,939,033

8
2,979,551
3,019,615
2,465,688
2,670,892
3,381,066
5,511,328

512
3,028,266
1,330,248
1,366,468
1,587,204
3,161,267
4,942,333

4,096
3,202,390
1,264,782
1,308,264
1,640,846
3,294,145
5,304,749

8,192
3,017,156
1,288,134
1,277,824
1,581,985
3,317,190
5,398,518

16,384
2,877,146
1,312,917
1,307,864
1,752,558
3,150,326
4,416,344

32,768
2,660,722
1,273,489
1,375,541
1,670,825
2,765,453
3,656,408

Performance on x86 processors also degrades as the number of CPU cores in the system increases.
Stack
DefaultActorImpl::unlock(bool); then into dispatch and futex calls in the kernel:
actor-latency-s   33229  3404.987861:     250000 task-clock:ppp:
        ffff800080132b5c try_to_wake_up+0x28c ([kernel.kallsyms])
        ffff8000801330e4 wake_up_q+0x6c ([kernel.kallsyms])
        ffff8000802064e4 futex_wake+0x1ac ([kernel.kallsyms])
        ffff800080202a24 do_futex+0x144 ([kernel.kallsyms])
        ffff800080202c40 __arm64_sys_futex+0xf8 ([kernel.kallsyms])
        ffff800080032994 invoke_syscall+0x7c ([kernel.kallsyms])
        ffff800080032a94 el0_svc_common.constprop.0+0x4c ([kernel.kallsyms])
        ffff800080032bb0 do_el0_svc+0x28 ([kernel.kallsyms])
        ffff80008165bfc4 el0_svc+0x44 ([kernel.kallsyms])
        ffff80008165c798 el0t_64_sync_handler+0x148 ([kernel.kallsyms])
        ffff800080011648 el0t_64_sync+0x1b0 ([kernel.kallsyms])
            e1c8590bdaf0 sem_post+0x80 (/usr/lib/aarch64-linux-gnu/libc.so.6)
            e1c858f3d550 _dispatch_sema4_signal+0x1c (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            e1c858f36290 _dispatch_semaphore_signal_slow+0x14 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            e1c858f31f5c _dispatch_root_queue_poke_slow+0x54 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            e1c859b83a70 (anonymous namespace)::DefaultActorImpl::unlock(bool)+0x164 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c859b833e8 swift_task_switchImpl(swift::AsyncContext*, void ( swiftasynccall*)(swift::AsyncContext* swift_async_context), swift::SerialExecutorRef)+0x19c (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c859b8240c swift::runJobInEstablishedExecutorContext(swift::Job*)+0x19c (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c859b83728 (anonymous namespace)::ProcessOutOfLineJob::process(swift::Job*)+0x1f0 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c859b82398 swift::runJobInEstablishedExecutorContext(swift::Job*)+0x128 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c859b82f0c swift_job_run+0x9c (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libswift_Concurrency.so)
            e1c858f2a744 _dispatch_continuation_pop+0xec (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            e1c858f2a574 _dispatch_async_redirect_invoke+0xb8 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            e1c858f3562c _dispatch_worker_thread+0x1b0 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)

Strangely DefaultActorImpl::unlock() is filtered out here but the rest is intact:

Reproduction
Steps to reproduce
The example from https://github.com/swiftlang/swift/issues/68299 is suitable for running on Linux with different CPU cores.

actor-latency-swift.swift

// https://github.com/snaury/coroactors/blob/main/src/comparisons/actor-latency-swift.swift
let clock = ContinuousClock.continuous

actor Pingable {
    private var counter: Int = 0

    func ping() -> Int {
        counter += 1
        return counter
    }

    func getCounter() -> Int {
        return counter
    }
}

actor Pinger {
    private var target: Pingable

    init(_ target: Pingable) {
        self.target = target
    }

    func run(_ n: Int, start: ContinuousClock.Instant, withLatencies: Bool = true) async -> Duration {
        var maxLatency: Duration = .seconds(0)
        if withLatencies {
            var end = clock.now
            maxLatency = end - start
            for _ in 0..<n {
                let callStart = end
                _ = await self.target.ping()
                let callEnd = clock.now
                let latency = callEnd - callStart
                if maxLatency < latency {
                    maxLatency = latency
                }
                end = callEnd
            }
        } else {
            for _ in 0..<n {
                _ = await self.target.ping()
            }
        }
        return maxLatency
    }
}

func main() async {
    var numPingers = 1
    var numPingables = 1
    var count = 10_000_000
    var withLatencies = true

    var i = 1
    let args = CommandLine.arguments
    while i < args.count {
        switch args[i] {
        case "-p":
            i += 1
            numPingers = Int(args[i])!
            numPingables = numPingers
        case "--pingers":
            i += 1
            numPingers = Int(args[i])!
        case "--pingables":
            i += 1
            numPingables = Int(args[i])!
        case "-c", "--count":
            i += 1
            count = Int(args[i])!
        case "--without-latencies":
            withLatencies = false
        default:
            precondition(false, "Unexpected argument \(args[i])")
        }
        i += 1
    }

    var pingables = [Pingable]()
    for _ in 0..<numPingables {
        pingables.append(Pingable())
    }
    var pingers = [Pinger]()
    for i in 0..<numPingers {
        pingers.append(Pinger(pingables[i % numPingables]))
    }

    //print("Warming up...")
    let r = count / numPingers / 100
    _ = await pingers[0].run(r, start: clock.now, withLatencies: withLatencies)

    //print("Starting...")
    let start = clock.now
    let maxLatency = await withTaskGroup(of: Duration.self) { group in
        let m = count % numPingers
        for i in 0..<numPingers {
            let n = (count / numPingers) + (i < m ? 1 : 0)
            let pinger = pingers[i]
            let wl = withLatencies
            group.addTask {
                return await pinger.run(n, start: start, withLatencies: wl)
            }
        }

        var maxLatency: Duration = .seconds(0)
        for await latency in group {
            if maxLatency < latency {
                maxLatency = latency
            }
        }
        return maxLatency
    }
    let end = clock.now

    var sum = 0
    for pingable in pingables {
        sum += await pingable.getCounter()
    }
    precondition(sum == r + count)

    let elapsed = end - start
    let elapsedSeconds = elapsed / Duration.seconds(1)
    let elapsedMs = Int(elapsedSeconds * 1000)
    let rps = Int(Double(count) / elapsedSeconds)
    let maxLatencyUs = maxLatency / Duration.microseconds(1)
    print("Finished in \(elapsedMs)ms (\(rps)/s), max latency = \(maxLatencyUs)us")
}

await main()

actor-latency-swift.sh
#!/bin/bash
#export LIBDISPATCH_COOPERATIVE_POOL_STRICT=1

swiftc -swift-version 6 -O actor-latency-swift.swift
for p in 1 2 8 512 4096 8192 16384 32768; do
    echo -n "$p pingers..."
    ./actor-latency-swift --pingables 1 --pingers $p -c 10000000
done

Expected behavior
Performance should not degrade when running on a host with more CPU cores; it should remain consistent, as it does on macOS
Environment
$ swift --version
Swift version 6.0.2 (swift-6.0.2-RELEASE)
Target: aarch64-unknown-linux-gnu

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.1 LTS
Release:        24.04
Codename:       noble

Additional information
No response

Okay, in the graph we have n tasks, each repeatedly jumping back and forth between a task-specific actor and an actor that's shared across all tasks. So it's a baseline expectation that this is going to scale badly because it's heavily contended on the shared actor, and we're trying to decide if this is surprisingly bad, even beyond that baseline. This is difficult, because there are a bunch of different reasons this could be scaling badly.
Since this benchmark is fundamentally heavily contended on a single resource, as the number of actual cores trying to do work increases, we do expect the costs of contention to increase, i.e. more time to be wasted trying to perform atomic sequences. So we always need to consider that part of the difference between OSes may just be that macOS Dispatch is more conservative about bringing up new threads and/or that the macOS kernel is more conservative about scheduling those threads onto cores, and that results in less contention because there are fewer cores involved.
We can also see from the stack trace that we're spending a lot of time in Linux's sem_post, mostly in the underlying futex implementation in the kernel. When a Swift task leaves an actor that's got more jobs to do, it schedules a job on the global thread pool to keep processing the actor. It's unsurprising that a thread pool would use a condition variable to manage idle threads, but it might be surprising that we're spending quite this much time in the condition variable. This could just be an artifact of the benchmark: we're doing relatively trivial amounts of work, so the heavy contention might just mean that all our jobs are very short outside of the contended sections. I suppose it's also possible that Linux's arm64 futex isn't very well tuned, at least in the kernel used by Ubuntu 24.04. More likely, the thread pool in Dispatch should just be doing a better job of avoiding the condition variable, e.g. by briefly polling the job queue before sleeping.
We could also try to improve throughput at a higher level by having processing jobs stay with the actor (when there are jobs to run there) instead of following the task like they normally do.

Thanks for chiming in @rjmccall much appreciated.
We agree that the benchmark is very artificial, it is largely a minimised case highlighting something we see in larger tests, so it is a bit extreme here perhaps, but hopefully still highlights the issue - it is clear the single actor will bound the scalability, we were more concerned about the regression when putting more CPU:s online and the fact that threads seems to be activated/parked too much  during heavier workloads.

More likely, the thread pool in Dispatch should just be doing a better job of avoiding the condition variable, e.g. by briefly polling the job queue before sleeping.

FWIW, this is exactly what we did a long time ago when helping porting libdispatch to Solaris, we put in a busy wait on the job queue before sleeping, which made a significant impact in both latency and throughput. We also supported up to N threads spinning as an option, which was useful as we had dedicated machines that only run our software (as is common in many enterprise deployments). Some deployments doesn't care about energy consumption (so much), but would rather trade that for absolute performance.

We could also try to improve throughput at a higher level by having processing jobs stay with the actor (when there are jobs to run there) instead of following the task like they normally do.

It'd be interesting to see the implications of that for sure.

Thanks @rjmccall for your detailed reply.
I modified the sample to include busy waiting for specific microsecond intervals. The results revealed the following behaviours. On Linux:

Dispatch initially creates threads equal to (number of online CPUs + 2)
For larger workloads (128+ microseconds and over 1 million iterations), dispatch gradually scales down the thread count
Thread creation is non-deterministic and varies between executions. On a 44-core server, tasks with 8μs of work resulted in anywhere from 12 to 19 threads being created

On macOS dispatch consistently creates 4 threads.
Notably, when the actor's workload is between 8-16 microseconds, the reduced thread count and context switching overhead events out  benchmark performance across all configurations:

Work Duration (µs)
macOS
Linux 12 cores
Linux 8 cores
Linux 4 cores
Linux 2 cores

0
2,271,424 (4)
1,525,708 (14)
1,666,315 (10)
2,694,728 (6)
2,760,723 (4)

1
597,680 (4)
321,175 (14)
338,059 (10)
423,585 (6)
654,123 (4)

2
323,101 (4)
192,648 (14)
202,441 (10)
249,950 (6)
309,921 (4)

4
217,865 (4)
110,849 (14)
116,749 (10)
132,877 (6)
208,692 (4)

8
113,926 (4)
74,747 (13)
75,848 (10)
83,902 (6)
104,977 (4)

16
59,694 (4)
53,217 (8)
53,052 (8)
53,300 (6)
53,947 (4)

32
30,542 (4)
29,256 (6)
29,285 (7)
29,305 (6)
29,303 (4)

64
15,390 (4)
15,094 (6)
15,104 (6)
15,088 (6)
15,094 (4)

Table contains now: operations / second (threads count)

The threads are all created in _dispatch_root_queue_poke_slow():
            f04dfc8c5fb8 pthread_create+0x4b8 (/usr/lib/aarch64-linux-gnu/libc.so.6)
            f04dfd8c2048 _dispatch_root_queue_poke_slow+0x140 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            f04dfd8c4d64 _dispatch_lane_concurrent_drain+0x328 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            f04dfd8bedfc _dispatch_lane_invoke+0x3f0 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)
            f04dfd8c562c _dispatch_worker_thread+0x1b0 (/usr/local/share/toolchains/6.0.2/usr/lib/swift/linux/libdispatch.so)

We could also try to improve throughput at a higher level by having processing jobs stay with the actor (when there are jobs to run there) instead of following the task like they normally do.

This would be great; because currently each actor call is currently a system context switch:
$ perf stat -- taskset --cpu-list 0-10,22-32 ./actor-latency-swift --pingables 1 --pingers 8 -w 1 -c 1000000
Finished in 5129ms (194960/s), max latency = 1348.722us

 Performance counter stats for 'taskset --cpu-list 0-10,22-32 ./actor-latency-swift --pingables 1 --pingers 8 -w 1 -c 1000000':

          21520.43 msec task-clock                       #    4.186 CPUs utilized
            993185      context-switches                 #   46.151 K/sec
             66919      cpu-migrations                   #    3.110 K/sec
               634      page-faults                      #   29.460 /sec
<PHONE_NUMBER>8      cycles                           #    1.041 GHz
<PHONE_NUMBER>9      instructions                     #    0.74  insn per cycle
<PHONE_NUMBER>      branches                         #  141.490 M/sec
          44113655      branch-misses                    #    1.45% of all branches

       5.141318343 seconds time elapsed

       8.609590000 seconds user
      14.337585000 seconds sys

Ubuntu 24.04 uses 6.8 which is a release from March 2024 so relatively fresh.
Updated reproducer:

actor-latency-swift.swift

// https://github.com/snaury/coroactors/blob/main/src/comparisons/actor-latency-swift.swift

import Foundation

let clock = ContinuousClock.continuous

actor Pingable {
    private var counter: Int = 0
    private var busyWork: UInt64 = 0

    init(busyWork: UInt64) {
        self.busyWork = busyWork
    }

    @inline(__always)
    func busyWait() {
        let target = clock.now + .microseconds(busyWork)
        repeat {
            // busy wait
        } while clock.now < target
    }

    func ping() -> Int {
        counter += 1
        busyWait()
        return counter
    }

    func getCounter() -> Int {
        counter
    }
}

actor Pinger {
    private var target: Pingable

    init(_ target: Pingable) {
        self.target = target
    }

    func run(_ n: Int, start: ContinuousClock.Instant, withLatencies: Bool = true) async -> Duration {
        var maxLatency: Duration = .seconds(0)
        if withLatencies {
            var end = clock.now
            maxLatency = end - start
            for _ in 0 ..< n {
                let callStart = end
                _ = await target.ping()
                let callEnd = clock.now
                let latency = callEnd - callStart
                if maxLatency < latency {
                    maxLatency = latency
                }
                end = callEnd
            }
        } else {
            for _ in 0 ..< n {
                _ = await target.ping()
            }
        }
        return maxLatency
    }
}

func getThreadCount() -> Int {
    #if os(macOS)
        return -1
    #elseif os(Linux)
        guard let stat = try? String(contentsOfFile: "/proc/self/stat", encoding: .utf8),
              let count = Int(stat.split(separator: " ")[19]) else { return -1 }
        return count
    #endif
}

func main() async {
    var numPingers = 1
    var numPingables = 1
    var count = 10_000_000
    var withLatencies = true
    var busyWork: UInt64 = 1

    var i = 1
    let args = CommandLine.arguments
    while i < args.count {
        switch args[i] {
        case "-p":
            i += 1
            numPingers = Int(args[i])!
            numPingables = numPingers
        case "--pingers":
            i += 1
            numPingers = Int(args[i])!
        case "--pingables":
            i += 1
            numPingables = Int(args[i])!
        case "-c", "--count":
            i += 1
            count = Int(args[i])!
        case "-w", "--works-for-micros":
            i += 1
            busyWork = UInt64(args[i])!
        case "--without-latencies":
            withLatencies = false
        default:
            preconditionFailure("Unexpected argument \(args[i])")
        }
        i += 1
    }

    var pingables = [Pingable]()
    for _ in 0 ..< numPingables {
        pingables.append(Pingable(busyWork: busyWork))
    }
    var pingers = [Pinger]()
    for i in 0 ..< numPingers {
        pingers.append(Pinger(pingables[i % numPingables]))
    }

    // print("Warming up...")
    let r = count / numPingers / 100
    _ = await pingers[0].run(r, start: clock.now, withLatencies: withLatencies)

    // print("Starting...")
    let start = clock.now
    let maxLatency = await withTaskGroup(of: Duration.self) { group in
        let m = count % numPingers
        for i in 0 ..< numPingers {
            let n = (count / numPingers) + (i < m ? 1 : 0)
            let pinger = pingers[i]
            let wl = withLatencies
            group.addTask {
                await pinger.run(n, start: start, withLatencies: wl)
            }
        }

        var maxLatency: Duration = .seconds(0)
        for await latency in group {
            if maxLatency < latency {
                maxLatency = latency
            }
        }
        return maxLatency
    }
    let end = clock.now

    var sum = 0
    for pingable in pingables {
        sum += await pingable.getCounter()
    }
    precondition(sum == r + count)

    let elapsed = end - start
    let elapsedSeconds = elapsed / Duration.seconds(1)
    let elapsedMs = Int(elapsedSeconds * 1000)
    let rps = Int(Double(count) / elapsedSeconds)
    let maxLatencyUs = maxLatency / Duration.microseconds(1)
    print("Finished in \(elapsedMs)ms (\(rps)/s), max latency = \(maxLatencyUs)us, actor busy work = \(busyWork)us, threads = \(getThreadCount())")
    // try! await Task.sleep(for: .seconds(60))
}

await main()

actor-latency-swift.sh
#!/bin/bash
swiftc -swift-version 6 -O actor-latency-swift.swift
for w in 0 1 2 4 8 16 32 64; do
    echo -n "${w}us work..."
    ./actor-latency-swift --pingables 1 --pingers 8 -w $w -c 1000000
done

This would be great; because currently each actor call is currently a system context switch:

Note that we have to add a job to the global thread pool either way, which will perform the same syscall.  Let me break this down.
As a reminder, tasks in your benchmark are pinging back and forth between working on the shared actor and working on an actor that's effectively task-specific.
In the current scheduling, threads in the global pool will typically:

get assigned to run a job to process the shared actor
dequeue the first task on the shared actor
run that task until it requests to switch to the task-specific actor
release the shared actor lock, schedule a new job to process the shared actor, and acquire the task-specific actor lock
run the task on the task-specific actor until it requests to switch to the shared actor
see that there's already a thread running the shared actor, enqueue the task on the actor, release the task-specific actor lock, and then suspend
The job scheduled in step 4 will then do the exact same thing.

If instead the thread followed the actor when there was more work to do, one thread in the global pool would:

get assigned to run a job to process the shared actor
dequeue the first task on the shared actor
run that task until it requests to switch to the task-specific actor
see that there are more tasks on the current actor, dequeue the next task, and schedule a new job to process the task-specific actor
go to step 3 with the next task

The job scheduled in step would then:

get assigned to run a job to process the task-specific actor
dequeue the first task on the task-specific actor
run that task until it requests to switch to the shared actor
see that there's already a thread running the shared actor, enqueue the task on the actor, release the task-specific actor lock, and then suspend

So many of the jobs are actually really short, which is usually bad, but we're at least burning through the actor queue faster because we're not spending any time waiting for a thread to take it over while it has active jobs.


VMware Instances not able to reach to management server

ISSUE TYPE

Bug Report

COMPONENT NAME

VR

CLOUDSTACK VERSION

Checked in 4.18 & 4.19

CONFIGURATION

OS / ENVIRONMENT

CloudStack with VMWare
SUMMARY

Management server is not reachable from the instances. This causes issues especially with CKS not being able to create load balancer.
STEPS TO REPRODUCE

1. Create an isolated network
2. Launch an instance
3. Try to connect to the management server from the instance

EXPECTED RESULTS

Able to reach the management server from the instance

ACTUAL RESULTS

Not able to reach the management server from the instance

@vishesh92
I have updated the title to emphysize this issue happens with VMware only
as Vishesh said, this causes CKS control nodes are not able to create lb rules as they cannot connect to cloudstack management server

We could add a policy routing rule in VR to forward the traffic to the management server/ enpoint.url from instances via public interface. CC @vishesh92 @weizhouapache

@rajujith ,
Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me.
cc @weizhouapache @vishesh92

@rajujith , Why do we want VMs be able to reach the MS? they could go through the north net if needed. It does not seem like a good idea to route them directly. I understand that it would be convenient for CKS nodes, but it does not seem like a good idea to me. cc @weizhouapache @vishesh92

@DaanHoogland, consider the management server URL public/intranet. It is expected that all intended users, including guest instances, should be able to access it from their client devices. In this specific case, the client is CKS. If there is a use case to allow access only from the CKS nodes but not regular guest instances even that could be implemented. The traffic traversal is CKS node -> guest interface -> VR public interface -> other hopes in the path -> management server public interface directly or via LB.  Since the guest instance traffic is not traversing the management networks I believe it is a regular traffic that can be allowed.

@DaanHoogland
To provide further context on this

Once a Kubernetes cluster is deployed on the vmware by cloudstack

End user downloads the kubernetes config to interact with the kubernetes cluster via the kubectl tool

End user populates the kubeconfig file so that kubectl tool can interact with the cluster

vi .kube/config

Check the status of the cluster and nodes

kubectl get nodes
NAME                       STATUS   ROLES           AGE     VERSION
test-control-19377251026   Ready    control-plane   4d22h   v1.28.4
test-node-19377261815      Ready    <none>          4d22h   v1.28.4

Deploy a sample application (example: nginx) on kubernetes cluster

kubectl apply -f nginx.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

Check the application status

 kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-86dcfdf4c6-fvjxp   1/1     Running   0          66m
nginx-deployment-86dcfdf4c6-jqjxw   1/1     Running   0          66m

Now end user want to access the application via public IP  ( public IP range ) which is provided by cloudstack

kubectl  expose deploy/nginx-deployment --port=80 --type=LoadBalancer

Now check the external public IP , it will be struck in pending state

k get svc
NAME               TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes         ClusterIP      <IP_ADDRESS>        <none>        443/TCP        4d22h
nginx-deployment   LoadBalancer   <IP_ADDRESS>   <pending>     80:32333/TCP   66m

This is because the controller pods( cloud-controller-manager and kube-controller-manager)

which are responsible for  assigning a public IP address to the application  fails
kube-system            kube-controller-manager-test-control-19377251026   1/1     Running   79 (6h15m ago)   4d22h   <IP_ADDRESS>   test-control-19377251026
kube-system            cloud-controller-manager-574bcb86c-9fcgd           1/1     Running   77 (8h ago)    5d1h

On checking the Logs of the cloud-controller pod, we can see a timeout issue.

k logs -f cloud-controller-manager-574bcb86c-9fcgd -n kube-system
47DXsoV%2BOnK945EvKkfLmLj4tU%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout, and error by node name: error retrieving node addresses: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listVirtualMachines&name=test-control-19377251026&response=json&signature=N6Ykg6Es%2BQWJYXIQ5KKXjyAHoiI%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
E1204 07:44:13.663811       1 controller.go:244] error processing service kube-system/nginx-lb (will retry): failed to ensure load balancer: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=ab9e4156d8f724ccfa61f379a8aaa0a6&listall=true&response=json&signature=MYL8q14GpEp5QxnRDg4nRXnkhQg%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
I1204 07:44:13.664131       1 event.go:278] Event(v1.ObjectReference{Kind:"Service", Namespace:"kube-system", Name:"nginx-lb", UID:"b9e4156d-8f72-4ccf-a61f-379a8aaa0a63", APIVersion:"v1", ResourceVersion:"937", FieldPath:""}): type: 'Warning' reason: 'SyncLoadBalancerFailed' Error syncing load balancer: failed to ensure load balancer: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=ab9e4156d8f724ccfa61f379a8aaa0a6&listall=true&response=json&signature=MYL8q14GpEp5QxnRDg4nRXnkhQg%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
I1204 07:44:13.665040       1 event.go:278] Event(v1.ObjectReference{Kind:"Service", Namespace:"default", Name:"nginx-deployment", UID:"efa6bff6-3d27-411f-a5be-2a94f7416df7", APIVersion:"v1", ResourceVersion:"995877", FieldPath:""}): type: 'Normal' reason: 'EnsuringLoadBalancer' Ensuring load balancer
E1204 07:44:39.309010       1 node_controller.go:237] error retrieving instance ID: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listVirtualMachines&name=test-node-19377261815&response=json&signature=1ONErKvq5OZxjpR26hzPmd8PLtY%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
E1204 07:44:43.665211       1 controller.go:244] error processing service default/nginx-deployment (will retry): failed to ensure load balancer: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=aefa6bff63d27411fa5be2a94f7416df&listall=true&response=json&signature=AHQ1nikqf3Vi7ISV9zwO%2FuxgjgU%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
I1204 07:44:43.665448       1 event.go:278] Event(v1.ObjectReference{Kind:"Service", Namespace:"default", Name:"nginx-deployment", UID:"efa6bff6-3d27-411f-a5be-2a94f7416df7", APIVersion:"v1", ResourceVersion:"995877", FieldPath:""}): type: 'Warning' reason: 'SyncLoadBalancerFailed' Error syncing load balancer: failed to ensure load balancer: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=aefa6bff63d27411fa5be2a94f7416df&listall=true&response=json&signature=AHQ1nikqf3Vi7ISV9zwO%2FuxgjgU%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
E1204 07:45:39.310773       1 node_controller.go:245] Error getting node addresses for node "test-node-19377261815": error fetching node by provider ID: error retrieving node addresses: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listVirtualMachines&id=&response=json&signature=547DXsoV%2BOnK945EvKkfLmLj4tU%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout, and error by node name: error retrieving node addresses: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listVirtualMachines&name=test-node-19377261815&response=json&signature=1ONErKvq5OZxjpR26hzPmd8PLtY%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
E1204 07:46:20.106490       1 controller.go:719] failed to check if load balancer exists for service kube-system/nginx-lb: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=ab9e4156d8f724ccfa61f379a8aaa0a6&listall=true&response=json&signature=MYL8q14GpEp5QxnRDg4nRXnkhQg%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
E1204 07:46:20.106727       1 controller.go:685] failed to update load balancer hosts for service kube-system/nginx-lb: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=ab9e4156d8f724ccfa61f379a8aaa0a6&listall=true&response=json&signature=MYL8q14GpEp5QxnRDg4nRXnkhQg%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout
I1204 07:46:20.107496       1 event.go:278] Event(v1.ObjectReference{Kind:"Service", Namespace:"kube-system", Name:"nginx-lb", UID:"b9e4156d-8f72-4ccf-a61f-379a8aaa0a63", APIVersion:"v1", ResourceVersion:"937", FieldPath:""}): type: 'Warning' reason: 'UpdateLoadBalancerFailed' Error updating load balancer with new hosts map[test-control-19377251026:{} test-node-19377261815:{}]: error retrieving load balancer rules: Get http://<IP_ADDRESS>:8080/client/api?apiKey=m8GvJ-HIcVY9XurofyAvOLn6mV7aAURljtgpCVH13b5O48ej_ewMNjNo32iKe64oeSuYrzI_gEgg7JCTo_UjPA&command=listLoadBalancerRules&keyword=ab9e4156d8f724ccfa61f379a8aaa0a6&listall=true&response=json&signature=MYL8q14GpEp5QxnRDg4nRXnkhQg%3D: dial tcp <IP_ADDRESS>:8080: i/o timeout

So basically a user on a vmware is unable to access the Kubernetes application via the  kubernetes loadbalancer service
The workaround is expose the application via NodePort service
Follow steps 1 to 6

Expose the application via node-port

kubectl  expose deploy/nginx-deployment --port=80 --type=Nodeport

NAME                TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes          ClusterIP      <IP_ADDRESS>        <none>        443/TCP        5d1h
nginx-deployment2   NodePort       <IP_ADDRESS>    <none>        80:32014/TCP   4s

Navigate to network and acquire a public IP

Allow the firewall port 80 on the public IP address

Add a loadbalcner rule mentioning the private node port

Add the kubernetes node

Access the application on the manually acquired  public IP on port 80

I think for now we can document this workaround for CKS deployments on vmware  and mention the loadbalancer service is not supported on vmware
cc @rajujith @vishesh92 @weizhouapache
Ref
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/
https://kubernetes.io/docs/concepts/services-networking/

So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache @vishesh92 ?

So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache @vishesh92 ?

We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules.
IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.

So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache @vishesh92 ?

We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules. IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.

How about setting a rule on the VR, only in the case the VM is a CKS control node?

So, for now we need to tell vmware/cks users to create loadbalancer rules by hand. Would that work, @weizhouapache @vishesh92 ?

We can tell users to create the LB rules by hand. But, the user would also have to ensure that the list of VMs stays up to date in the load balancer rules. IMO, for long term, solution is to allow connectivity between MS & nodes. As of now, this also prevents the user to run a VM which could runs some automation scripts to manage cloudstack resources.

How about setting a rule on the VR, only in the case the VM is a CKS control node?

@DaanHoogland
technically it is feasible, there are multiple options to achieve it.
however, from security concern, I would suggest not to enable it. The control IP of VR on VMware is private, uservm should not be able to use it.

ok, for 4.19.2 we will put the text in https://github.com/apache/cloudstack/issues/10012#issuecomment-2516911833 in the documentation and after that, convert this issue to a discussion on how to address it in the end.


fix version number for tarball packages

Something doesn't seem right. The artifact name produced is "onnxruntime-win-x64-0.3.0.$(OnnxRuntimeGitCommitHash).zip". Two things:

The git commit hash didn't get expanded.
I don't think we should put the git commit hash in the name of the pkg file. This will make the package name too long. Even our nuget pkg doesn't do this today. The nuget pkg file name is microsoft.ml.onnxruntime.0.2.1.nupkg and the commit hash is present inside this pkg. We can write the commit hash to a file and include it as part of the pkg. For example tensorflow names it's zip file as libtensorflow-cpu-windows-x86_64-1.12.0.zip (Notice the version number in the filename, without the commit hash - alas tensorflow doesn't include the commit hash in the pkg).

Something doesn't seem right. The artifact name produced is "onnxruntime-win-x64-0.3.0.$(OnnxRuntimeGitCommitHash).zip". Two things:
The git commit hash didn't get expanded.

This is fixed now.

I don't think we should put the git commit hash in the name of the pkg file. This will make the package name too long. Even our nuget pkg doesn't do this today. The nuget pkg file name is microsoft.ml.onnxruntime.0.2.1.nupkg and the commit hash is present inside this pkg. We can write the commit hash to a file and include it as part of the pkg. For example tensorflow names it's zip file as libtensorflow-cpu-windows-x86_64-1.12.0.zip (Notice the version number in the filename, without the commit hash - alas tensorflow doesn't include the commit hash in the pkg).

OK, I will make change accordingly then.


Fasthttp example

See #65
We can probably take the example code directly from my/euan's comment, or adapt our existing http example for fasthttp. It should end up looking more or less the same either way.

Hi, I've implemented the example as per @jrobsonchase / @euank's comments in #65


Sort contents of package.json files.

For @yunakim714 https://github.com/SalesforceCommerceCloud/pwa-kit/pull/1112#discussion_r1159957423
Done using sort-package-json.
Description

Types of Changes

[ ] Bug fix (non-breaking change that fixes an issue)
[ ] New feature (non-breaking change that adds functionality)
[ ] Documentation update
[ ] Breaking change (could cause existing functionality to not work as expected)
[ ] Other changes (non-breaking changes that does not fit any of the above)

Breaking changes include:

Removing a public function or component or prop
Adding a required argument to a function
Changing the data type of a function parameter or return value
Adding a new peer dependency to package.json

Changes

(change1)

How to Test-Drive This PR

(step1)

Checklists

General

[ ] Changes are covered by test cases
[ ] CHANGELOG.md updated with a short description of changes (not required for documentation updates)

Accessibility Compliance
You must check off all items in one of the follow two lists:

[ ] There are no changes to UI

or...

[ ] Changes were tested with a Screen Reader (iOS VoiceOver or Android Talkback) and had no issues
[ ] Changes comply with WCAG 2.0 guidelines levels A and AA
[ ] Changes to common UI patterns and interactions comply with WAI-ARIA best practices

Localization

[ ] Changes include a UI text update in the Retail React App (which requires translation)

😌


Add Deep Video Deinterlacing Train & Test code

Added a custom PyTorch implementation of this paper: https://arxiv.org/pdf/1708.00187.pdf
Original TF code: https://github.com/HENDRIX-ZT2/Deep-Video-Deinterlacing

Ok I have now fixed everything that had an issue. I do think we need to investigate why the padding is necessary though.

Add Deep Video Deinterlacing, still need to add reference paper in WIP in the Readme

Add Deep Video Deinterlacing, still need to add reference paper in WIP in the Readme


Build still not working on MacOS

Could you try to use double quotes to includes malloc.h ?
#include "malloc.h"

Check this issue out for fixing the MacOS Build
https://github.com/yzfedora/baidudl/issues/2

See #5


"Go to Symbol in File... " : start at symbol of current cursor position

It would be awesome, if the "Go to Symbol in File..." (ctrl+shift+o default shortcut) view would start at the focused symbol at cursor position.
Currently, nothing is selected and you have to navigate through the list entries or type part of the symbol. When you narrow the entries through typing, you loose the "big picture" with all symbols of the file and awareness of current position in the file.
I would like to use this view as quick navigation through the open file relative to the current cursor position.
This behaviour could be copied somehow from the outline view, which has the ability to follow the cursor.
Outline view also allows navigation through the file, but I would prefer not loosing the focus, if sidebar is hidden.

Saw, its a duplicate. #22689


select2 Uncaught TypeError: $select.select2 is not a function

hi,
after i insert {{ turbo() }} on head, my filter does not work.
Uncaught TypeError: $select.select2 is not a function
at addFilter (VM3174 bs4_filters.js:136)
at HTMLAnchorElement. (VM3174 bs4_filters.js:154)
at HTMLAnchorElement.dispatch (VM3159 jquery.min.js:2)
at HTMLAnchorElement.y.handle (VM3159 jquery.min.js:2)
addFilter @ bs4_filters.js?v=1.0.0:136
(anonymous) @ bs4_filters.js?v=1.0.0:154
dispatch @ jquery.min.js?v=2.1.4:2
y.handle @ jquery.min.js?v=2.1.4:2
could you please show me the correct way to do it?
Thanks
CM

hi,
i have found the solution where i place all my js on  tag
Thanks


Manage data.gov.uk resources with argo

There's not a lot of context here. It looks like you're adding a separate installation of Argo - what's the reason for that vs. just using a separate project on the existing Argo installation or managing the chart via helm upgrade (which I thought was the original intention)?

(ArgoCD is designed to be able to manage multiple clusters let alone multiple projects, namespaces etc.)

Oh I see, sorry misinterpreted this. I read "argo-bootstrap" as the chart that's installing Argo, but it's just a chart for installing the app-of-apps. That seems reasonable.

Thanks, I'll merge it in as Sam is off next week

Bit of background as to why we explain design choices in commit messages and PR descriptions on Replatforming team:

It's easily searchable and discoverable in the context when someone's trying to figure out the rationale behind the code in months/years to come (and sometimes that someone is yourself 😄).
It saves reviewers' time (i.e. your time!)
It tends to make us think in a bit more depth about our design choices and how understandable our solutions are likely to be to others.

If it seems like a hassle, try thinking of it as a small price to pay for not having to write ADRs (yuck!) This way we get the same or better maintainability benefits with less bureaucracy (and less bikeshedding!)


CentOS Stream 9 based base image

The base image, which we use for building

packit
worker
service/API
fedmsg
sandcastle
dashboard

images, is Fedora based.
Tomáš has suggested using CentOS Stream 9 instead so that we don't have to bump the base image (to newer Fedora) so often.
I checked what base image Software Collections use (we use their c9s based redis & postgres) and if I check the right place it's quay.io/centos/centos:stream9.
The aim of this spike is to check whether all the dependencies installed in our (above-mentioned) images are available for c9s as well and what's missing.

I hope that we could install most of them using PyPI & we could also lock down the deps to precise versions

How reasonable would be building them in Copr just for our images?

Given my suggestion I expect the cost of maintaining them in Copr to be higher than bumping the image. :/

On the other hand, I would not worry about the sandcastle image that much, we have a lot of build dependencies for our users included, once we move to Copr the list will shorten. I'd expect wheel, setuptools and maybe gobject-… to stay on the list.


Watch for edited resources in editor

So I am writing a C++ plugin for godot. The user assigns a material to my custom Spatial node. Now I want to be notified when this material is changed in the editor.
It seems the add_change_receptor API nor the CoreStringNames::get_singleton()->changed signal are emitted when say the materials albedo colour changes for example.
So my next avenue was to try to connect to the property editor "variant_changed" signal, but there seems to be no way to determine what object the Property editor is editing.
I would like some way to watch when the material is modified.

For change_receptors to work, the Resource must call _change_notify(string) when it's changed. See TileSet for example.
https://github.com/godotengine/godot/blob/0ee72fbd30b25ff397b570294c3cd2f65c176e34/scene/resources/tile_set.cpp#L310

yes, the material does not call this which i would expect when the colour is changed.

For the reference, the idea for 4.0 is to drop the change receptor API which is pretty hacky, and instead make the Inspector poll for changes constantly (which could then be notified to the EditorInterface/EditorInspector API I guess for plugin use).
14:36 <reduz> Akien: the change receptor API needs to go away
14:36 <reduz> and the inspector needs to constantly poll for changes
14:37 <reduz> this will simplify things enormously, the problem is that when I tried to do it, I found we merged plenty of PRs of contributors hacking the change receptors for other things not the inspector that will need to be rewritten in a different way and it was quite some work
14:37 <reduz> so I never got around to fix this
14:37 <reduz> it has been a problem for a long time now

_change_notify() was removed in master, but I don't know if an API for plugins is exposed yet.

@Calinou I'm not sure it relates to this issue. property_list_changed and _change_notify was for notifying the inspector that the object's properties changed.
But this issue is about the other side, where you have a reference to a resource, and want to know when it changed. The changed signal exists, but apparently is not always emitted. Alternatives exist but weren't working either in these cases.

It seems the add_change_receptor API nor the CoreStringNames::get_singleton()->changed signal are emitted when say the materials albedo colour changes for example.

I would like materials to give me this information too when they change, especially ShaderMaterials with custom properties

The changed signal exists, but apparently is not always emitted.

I think the signal should be emitted on all Resource changes. If it doesn't in some cases, it's a bug IMO.


Unable to compile; no valid source files were found.

Expected Behaviour
Use the plugin
Actual Behaviour
Running "responsive_images:dev" (responsive_images) task
Unable to compile; no valid source files were found.
Unable to compile; no valid source files were found.
Steps to Reproduce
Run
$ grunt
PC/Mac and Graphics Engine used
LInux Mint
GraphicsImage
ImagesMagick
Grunt Configuration
Gruntfile.js
module.exports = function(grunt) {
grunt.initConfig({
responsive_images: {
  dev: {
    options: {
      engine: 'im',
      sizes: [{
        name: 'small',
        width: '30%',
        suffix: '_small',
        quality: 20
      },{
        name: 'large',
        width: '50%',
        suffix: '_large',
        quality: 40
      }]
    },
    files: [{
      expand: true,
      src: ['*.{gif,jpg,png}'],
      cwd: 'images/',
      dest: 'images/'
    }]
  }
},
});
grunt.loadNpmTasks('grunt-responsive-images');
grunt.registerTask('default', ['responsive_images']);
};

package.json
{
"name": "project-server",
"version": "0.1.0",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-jshint": "~0.10.0",
"grunt-contrib-nodeunit": "~0.4.1",
"grunt-contrib-uglify": "~0.5.0",
"grunt-responsive-images": "^1.10.1"
}}

So,
 src: ['*.{gif,jpg,png}'],
      cwd: 'images/',
      dest: 'images/'

Attention to cwd value, it says that my current directory is /images, so whenever he tries to find the value for src, it will search under /images. BUT my files {.png,.jpeg} arent under /images.
Then, all I had to do was to comment the cwd value. And it worked fine!


Fix git clone instructions on README

Add the  --recurse-submodules --depth 1 arguments to the git clone
instructions in the README. This is needed to clone the docsy theme and
its dependencies.
See https://github.com/google/docsy-example
Fixes #44

@coreydaley does cloning the submodules fix your issue?

Yes, that worked for me.


forward function in PointNetSAModuleMSG

Hi,
Great work!
Your approach to 3d shape classification problem is quite unique.
I was trying to understand your code I am confused as there is no forward function in PointNetSAModuleMSG. So when in rscnn_cls the PointNetSA  MSG module is called with data where does it actually point in pointnet2_modules.py and how does it furthers passes data to rsconv function in pointnet2_utils.
Thanks!!

Hi, thanks for your interest.
The issue you raised could be a confusion of Python language. I guess you must fix this issue when knowing about Python better :) Also, you may need to check the code structure more carefully. It is in fact easy for understanding.
Have a nice experience of Python!