Rancher UI need not pass rancherVersion in its requests

What kind of request is this (question/bug/enhancement/feature request): bug
Steps to reproduce (least amount of steps as possible):
After the fix for this issue - https://github.com/rancher/rancher/issues/22835, UI need not pass rancherVersion in its requests as it is ignored.
Tested with a custom app chart.
App Versions:
0.1.0 - rancher_min_version: 2.3.0-rc1
0.1.2 - rancher_min_version: 2.3.0-rc1
0.1.6 - rancher_min_version: 2.3.0-rc1
0.2.1 - rancher_min_version: 2.3.0-rc1
0.3.0 - rancher_min_version: 2.4.0-rc1

When on 2.3.0-rc4,

Request: https://<rancher-server>/v3/templates/cattle-global-data:sowmya-test-fluentd-aggregator?rancherVersion=v2.0
Valid versions:

"versionLinks": {
"0.1.0": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.0",
"0.1.2": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.2",
"0.1.6": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.6",
"0.2.1": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.2.1",
}

Request: https://<rancher-server>/v3/templates/cattle-global-data:sowmya-test-fluentd-aggregator?rancherVersion=v2.3.0-rc4
Valid versions:

"versionLinks": {
"0.1.0": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.0",
"0.1.2": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.2",
"0.1.6": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.1.6",
"0.2.1": "…/v3/templateVersions/cattle-global-data:sowmya-test-fluentd-aggregator-0.2.1",
}

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI): v2.3.0-rc4
Installation option (single install/HA): single

verified on rancher:v2.3.0-rc6.
Request being sent through UI -
https://<rancher-server>/v3/templates/cattle-global-data:system-library-rancher-monitoring
Rancher version is not being passed.
Monitoring and istio shows only the valid chart version - 1 each - on the UI.
Monitoring - 0.0.4
Istio - 0.0.2 (Istio 1.3.0)


Nested hidden form fields causes JavaScript error in the CMS

It looks like when you have nested form fields that are not visible a script error is thrown form LeftAndMain.EditForm.js line 350 (in 3.3's version). In short when restoreFieldFocus() tries to find the next visible element it's assuming that the next visible element is the next parent .field which may not be true in the case of say a FieldGroup inside of a ToggleComposite which is collapsed.
It looks like this issue can occur in 3.2, 3.3 and 3.4.
I think the fix is as simple as adding a :visible flag to the selector where the nearest visible element is looked up. The diff below was made against 3.3.2, I can open a pull if the change makes sense.
diff --git a/admin/javascript/LeftAndMain.EditForm.js b/admin/javascript/LeftAndMain.EditForm.js
index a9ee20f..983c18f 100644
--- a/admin/javascript/LeftAndMain.EditForm.js
+++ b/admin/javascript/LeftAndMain.EditForm.js
@@ -318,7 +318,7 @@

                    //Fall back to nearest visible element if hidden (for select type fields)
                    if(!$(elementID).is(':visible')){
-                       elementID = '#' + $(elementID).closest('.field').attr('id');
+                       elementID = '#' + $(elementID).closest('.field:visible').attr('id');
                        scrollY = $(elementID).position().top;
                    }

That is the craziest way to get the element.
Can't that be condensed to to:
if(!$(elementID).is(':visible')){
    scrollY = $(elementID).closest('.field:visible').position().top;
}

Or is elementID needed later?

PS: looks like a good fix, can we get a PR against 3.2 please?

ya I thought it was a bit odd looking ;) lol will open a pull request shortly to address the primary issue. It looks like the elementID is actually used later to focus the element.

h'ok - thanks

there, opened a pull to 3.2... initially had it set to master so i closed that and re-opened (oops)

thanks!

Will this make 3.4.0? or will it need to wait until 3.4.1? Just trying to gauge how to set an expectation internally. I'm assuming 3.3.3 is several weeks out yet.

@dhensby FYI this impacts 3.3 branch and 3.4 branch as well.

We don't generally do merge-forwards of 3.2 to the 3.4-rc1 branch so I'd expect that this will be released in 3.4.1, 3.3.3, and 3.2.5.
If you need it sooner, you may want to try https://github.com/cweagans/composer-patches
You can use https://github.com/silverstripe/silverstripe-framework/commit/0dcffda0e82eac7b8b54c1dffd078ec4486490cf.patch as the patch URL to grab it straight from the source.


Item Shop Auto Deletion

Could you add a feature to auto delete yesterdays shop so its only the current shop! Not as default just another like an example !subscribe deleteold
maybe i dont know but just an idea!

It's kind of tricky to track the last message across process restarts or shard movement. I wonder if there's a way to find a message by id, then I could shovel it off to the channel database.
I'm not sure, I'll look into it at some point.


Suggest analogs for restricted packages

Is your feature request related to a problem? Please describe.
If some package is restricted to use, there is should be a possibility to specify some analogs
Describe the solution you'd like
Add analog and description fields to package target
{
  'restricted-packages': ['error', [{
    name: 'foo',
    description: 'This package has a vulnerability',
    analogs: ['bar']
  }]]
}

or
{
  'restricted-packages': ['error', [{
    name: 'foo',
    description: 'This package has a vulnerability, please use bar instaead'
  }]]
}

Hi there! Have a few questions since this seems to be the only open issue marked as good first issue.

I assume the issue is related to restricted-packages rule of stats-validator-plugin-webpack package. Is it correct?
what is the package target?
it's not clear (sorry, I'm new to the project) where and when analogs property supposed to be defined - in the rule description?
and what is the expected behavior - CLI should log an error in the updated form? I.e. lodash should not be used. becomes lodash should not be used. Try underscore instead?

Also is there a demo/development application I can use (analyze) while working on the feature? Also, if there are easier issues to start with please feel free to post those and share the link.
Thanks for the great work!

Hi! Thanks for your interest!

I assume the issue is related to restricted-packages rule of stats-validator-plugin-webpack package. Is it correct?

yep

what is the package target?

Package target is a description of a package that we want to find and restrict its usage. For example:
{
  "name": "lodash",
  "version": "<2"
}

This package target describes lodash@<2
Package targets should be described in the rule options in statoscope.config.js. For example:
module.exports = {
  validate: {
    rules: {
      'restricted-packages': ['error', [
        {name: 'lodash', version: "<2"},
        {name: 'rxjs'}
      ]]
    }
  }
}

Now, if Statoscope validator will meet lodash@<2 or any rxjs then validation will be failed.

it's not clear (sorry, I'm new to the project) where and when analogs property supposed to be defined - in the rule description?

Analogs should be described in the rule options in statoscope.config.js. If we have any analogs for the package that we want to restrict, then we describe these in a package target:
module.exports = {
  validate: {
    rules: {
      'restricted-packages': ['error', [
        {name: 'request', analogs: ['axios'], description: 'request is no longer support'}
      ]]
    }
  }
}

In this case, if our bundle uses request package, validation should be failed with the message:
error  request should not be used  webpack/restricted-packages
      request is no longer support
      Instances:
      - node_modules/request  1.1.0
      Consider using these pacakages:
      - axios

As you see, we just pass description and analogs into the rule message.
description may be used to describe why we restricted this package and in analogs field we describe any packages that may be used instead
Both of these fields are optional.

Also is there a demo/development application I can use (analyze) while working on the feature?

You could use this statoscope.config.js:
module.exports = {
  validate: {
    plugins: [['./packages/stats-validator-plugin-webpack', 'webpack']],
    reporters: [
      './packages/stats-validator-reporter-console',
      ['./packages/stats-validator-reporter-stats-report', { open: true }],
    ],
    rules: {
      'webpack/restricted-packages': ['error', [.....]],
    },
  },
};

With this config, statoscope validator will generate a UI report and open it in your browser, also you will see validation result in your console

Also, if there are easier issues to start with please feel free to post those and share the link.

Look at https://github.com/statoscope/statoscope/issues/122 ☺


Planetsynth can't find module support

Hi. I was trying today to test planetsynth today and couldn't manage to make it work. It won't import as appartenly it can't find the support module. I pasted the error below.
I've been digging around and I've found that the installation directory (python3.8/dist-packages...) only has the main.py file, and not any of the folders.

python3 plansyn.py
Traceback (most recent call last):
File "plansyn.py", line 4, in
from planetsynth import PlanetSynth
File "/usr/local/lib/python3.8/dist-packages/planetsynth/init.py", line 1, in
from planetsynth.main import PlanetSynth
File "/usr/local/lib/python3.8/dist-packages/planetsynth/main.py", line 7, in
from .support.constants import M_jup, R_jup, L_sun, sigma_b, G
ModuleNotFoundError: No module named 'planetsynth.support'

It runs if I execute it in the same folder I cloned it. Is it meant to be run this way?

Thanks for reporting this! There was an issue with the installation that is (hopefully) fixed in the latest version. You should now be able to run planetsynth from anywhere.


Wrong style of tree view in pull requests

Description
The side panel height of tree view in pull requests is very small in chrome and firefox.
Gitea Version
v1.19.0
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
https://try.gitea.io/risadmin/t25/commit/f8d30e30ce9b640979bd181c2a825dba7d311a4f

Git Version
2.40.0
Operating System
EndeavourOS
How are you running Gitea?
docker
Database
PostgreSQL

The fix for 1.19 (#23616) has been merged.
You can get 1.19 latest from https://dl.gitea.com/gitea/1.19/ , or docker gitea:1.19-dev
These contain the fix.
Duplicate of #23593


Marker Customization Swift

Hello,  I'm trying to implement Marker Customization described here ->https://github.com/googlemaps/google-maps-ios-utils/blob/master/CustomMarkers.md where explains how to implement in objective C.  My project uses swift and my knowlegde in objective C is very low.  I've tried to convert the example to swift, but the project doesn't build, trhows an error (see attatchment). With this message i've sent 2 files, an image with the error, and a file with a  partial example of my code.  is there an issue with my code or something else? Thanks in advance.
P.D.
When i implement Clustering without custom markers everything works fine.
i'm using swift 2.3,  cocoapods with static libraries (using bridge header file)
Google-Maps-iOS-Utils (1.1.2), GoogleMaps (2.1.0), and xcode Version 8.0 (8A218a).

example_swift_test.txt
POIItemClass.txt

Any chance of getting a minimal reproduction case uploaded a Github repo so that I can checkout your code and figure out what is going wrong?


Implement sagan with micro-services and Spring Cloud

Not urgent, but would be real nice for a reference implementation of somewhat complex micro-services based app with all the bells and whistles of Spring Cloud e.g. Eurika, Hystrix and co.

Hi @dima767
Right now Sagan is "made of" 2 services: the site application (the website itself) and the indexer (indexes documentation, blog posts, etc - into our ElasticSearch index); I haven't felt the need to decouple more/cut Sagan into smaller pieces.
I'm definitely considering using some pieces of Spring Cloud; for example, Hystrix could definitely help with calls to remote web services such as our search index, github or stackoverflow.
Did you have something special in mind?

Thanks for the reply. Nothing special in mind, just feel the need for the real world example/reference implementation of all the Spring Cloud and micro services stuff. The "buzz" around it is great, but all the smallish examples and guides just don't cut it. Need a real world, somewhat complex reference app.
Best,
D.

Well, I guess this issue could be closed.


[FEATURE] Support Longhorn v2 data engine - Experimental

Is your feature request related to a problem? Please describe.
Longhorn v2 engine use the raw device as backend device.
node-disk-manager now only supports provision filesystem for longhorn backend
we should add a capability to provision raw devices and fill related fields to longhorn node.
Describe the solution you'd like
Add another provision behavior for the raw device
Describe alternatives you've considered
Additional context
https://longhorn.io/docs/1.6.0/v2-data-engine/quick-start/#enable-v2-data-engine

1.5 will use Longhorn 1.8 or 1.9 which should have a more stable v2 engine.

Briefly list the following items for this feature:

[ ] OS side, we need hugepage and corresponding kernel module (REF: https://github.com/harvester/os2/pull/98)
[ ] NDM side, this is an entry point because we need to format the physical backend for the Longhorn v2 volume (NDM will decompose the provisioned for longhornv1, longhornv2 and lvm on v1.4.0)
[ ] UI part
[ ] MISC stuff (like the Longhorn v2 engine did not support live migration. We need to forbid this operation on the harvester side)

cc @Yu-Jack, @bk201, @innobead

Besides the above list, a few questions:
(1) Will v1 and v2 are supported at the same time? When true, which one will be the default one on Harvester. Is this a global setting or local setting against volume/disk or both ?
(2) From user perspective, what's the change when creating images/volumes/storageclass/vms?
(3) Upgrade path.
The require/HEP label was added, guess the HEP will have detailed user stories.

(1) Will v1 and v2 are supported at the same time? When true, which one will be the default one on Harvester. Is this a global setting or local setting against volume/disk or both ?

Yeah, we should have capability provision v1 or v2 in the same time (but will use different physical disk)
We should not have any setting for it. It is determined when adding storage.

(2) From user perspective, what's the change when creating images/volumes/storageclass/vms?
It should not have any change.

(3) Upgrade path.
It should not be affected.

I thought we would have more detailed information with HEP so we could discuss it later with HEP.

Yeah, we should have capability provision v1 or v2 in the same time (but will use different physical disk)
We should not have any setting for it. It is determined when adding storage.

What about during initial system installation when choosing the data disk?

I'm presently working on a HEP for this, but in the meantime wanted to post some notes in response to some items above.

OS side, we need hugepage and corresponding kernel module (REF: https://github.com/harvester/os2/pull/98)

We may not want to default to enabling hugepages everywhere, because if I'm reading https://www.kernel.org/doc/html/latest/admin-guide/mm/hugetlbpage.html correctly where it says "Pages that are used as huge pages are reserved inside the kernel and cannot be used for other purposes", this means we'd lose 2GiB RAM on every node, even if the V2 engine isn't enabled.

(1) Will v1 and v2 are supported at the same time? When true, which one will be the default one on Harvester. Is this a global setting or local setting against volume/disk or both ?

Yeah, we should have capability provision v1 or v2 in the same time (but will use different physical disk)
We should not have any setting for it. It is determined when adding storage.

What about during initial system installation when choosing the data disk?

We have to continue to support v1 at the same time as v2, and the default data disk needs to remain using the v1 engine. This is because VM images - and volumes based on VM images - use the Longhorn backing image feature, which is not yet supported by the v2 engine.

(2) From user perspective, what's the change when creating images/volumes/storageclass/vms?

Images remain using the v1 engine (at least for now), so no change there.
There needs to be a new storage class for the v2 engine. Maybe we can create one automatically to save the user having to do so.
When creating volumes, it's just a matter of choosing the v2 storage class.
No change to creating VMs (they use whatever volumes you tell them to).

Also, in case anyone wishes to manually enable the v2 data engine on an existing Harvester v1.3.x cluster, here's my notes:

You will need at least one extra disk on each node you wish to use the v2 engine on. The default data disk (/var/lib/harvester/defaultdisk) remains using the v1 engine and cannot be switched to v2.
You will want access to the Longhorn GUI. If you haven't already done so, you can get it from the Harvester GUI by going to Harvester > Admin User > Preferences > Enable Extension Developer Features, then Harvester > Support > Access Embedded Longhorn UI.
For each node:

Add /oem/93_spdk.yaml from https://github.com/harvester/os2/pull/98 and reboot to apply those settings
ssh in and run the longhorn environment check script bash -c "$(curl -sfL https://raw.githubusercontent.com/longhorn/longhorn/v1.6.2/scripts/environment_check.sh)" -s -s (yes, that's two -s on the end, necessary to enable the spdk checks which verify nvme and uio kernel modules are present, and hugepages are enabled). Everything should pass, except it'll complain cryptsetup isn't found. That's expected as we don't support encrypted volumes on Harvester yet.

Enable the v2 data engine. From the Longhorn GUI, that's Setting > General > V2 Data Engine checkbox. Note that this will allocate a whole CPU core to the v2 instance manager on each node.
Add the disk(s) to longhorn. This can be done via kubectl edit or the longhorn GUI as described in https://longhorn.io/docs/1.6.2/v2-data-engine/quick-start/#add-disks-to-nodelonghornio. I'd recommend using /dev/disk/by-id/... paths if possible.
Add a v2 storageclass. This can be done with kubectl apply as described at https://longhorn.io/docs/1.6.2/v2-data-engine/quick-start/#create-a-storageclass or you can use the Harvester GUI under Advanced > Storage Classes. You'll need to use the "Add Parameter" button to add the "dataEngine: v2" parameter. Also make sure "Migratable" is set to "No" (AFAIK that's not supported yet -- see https://github.com/longhorn/longhorn/issues/6361)
Now, any volume you create from the Harvester Volumes screen, using the storage class you created in the step above, will use the v2 data engine. You can then attach those v2 volumes to VMs and see how fast it goes :wink:
NOTE: you cannot use the v2 data engine for image storage (it does't support backing images yet). Images you upload/download into Harvester still use the v1 data engine. This means when you boot a VM from an image, its root disk is running on the v1 data engine. It's only additional volumes attached to the VMs that get to use v2.

Note the feature state is changed from "Preview" to "Experimental".

Test Plan (WIP)

2 nodes
3 nodes witness

Environment

harvester-v1.4.0-rc3

Profile:

ui-source: Auto

Prerequisite

 Prerequisite

Scenario
Toggle V2 Data Engine

 :white_circle: Enable on all nodes by longhorn-v2-data-engine-enabled setting

 :white_circle: Enable on some nodes by node.longhorn.io/disable-v2-data-engine label

 :white_circle: Switch ordering of 1) and 2) should not affect the result

Attach Disk using Longhorn V2 (CSI) Provisioner

 :white_circle: Node w/ V2 data engine enabled can attach disk using Longhorn V2 (CSI) Provisioner.

 :white_circle: Node w/o V2 data engine enabled can NOT attach disk using Longhorn V2 (CSI) Provisioner but only the default one.

Create Storage Class and Unbound Volume

 :white_circle: Create a storage class sc-lhv2 using Longhorn V2 (CSI) Provisioner

 :white_circle: Create a volume using sc-lhv2

 :white_circle: Volume replica behavior?

Bound Volume
pre-defined

 :white_circle: Create a VM with pre-defined lhv2 volume

Create VM
Gen test data with md5sum on disk-0 (default)
Gen test data with md5sum on disk-1 (lhv2)
Reboot VM, data does not broken

 :white_circle: Backup-Restore

 :white_circle: Snapshot-Restore

on-demand

 :white_circle: Create a VM with on-demand lhv2 volume

Create VM
Gen test data with md5sum on disk-0 (lhv2)
Gen test data with md5sum on disk-1 (default)
Reboot VM, data does not broken

 :white_circle: Backup-Restore

 :white_circle: Snapshot-Restore

Rancher Integration

 :white_circle: Provision RKE2 cluster by Rancher

Just leaving a note for testing, v2 volume performance should be faster than v1

Following scenarios test ok on local ipxe-example env.:

Toggle V2 Data Engine
Attach Disk using Longhorn V2 (CSI) Provisioner
Create Storage Class and Unbound Volume
Create VM

However ipxe-example env. has performance issue during test backup-restore
Will perform Backup Restore on baremetal env. and update later.
Environment

harvester-v1.4.0-rc4

Profile: 3 nodes AMD64 QEMU/KVM
ui-source: Auto

Prerequisite

 Setup a 3 nodes  cluster

 Extra disk w/ WWN on each nodes

Ref. https://github.com/harvester/harvester/issues/5446#issuecomment-2112177685

 Create image ubuntu-22.04-server-cloudimg-amd64.img

 Create VM network mgmt-vlan1

 Setup backup target

Test Scenarios
Toggle V2 Data Engine

 :green_circle: V2 engine should be diabled on each nodes by default

Harvester

Longhorn

/oem/99_settings.yaml

Kernel module vfio_pci, uio_pci_generic and nvme_tcp

/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

 :green_circle: Disable LHv2 engine on node-0 and node-2 in advance

Disable on node-0

Disable on node-2

 :green_circle: Enable LHv2 engine and should only take effect on node-1

Harvester

Longhorn

/oem/99_settings.yaml

Kernel module vfio_pci, uio_pci_generic and nvme_tcp

/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

 :green_circle: Enable on node-2 by removing label (left node-0 disabled)

/oem/99_settings.yaml

Kernel module vfio_pci, uio_pci_generic and nvme_tcp

/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages

Attach Disk using Longhorn V2 (CSI) Provisioner

 :yellow_circle: node-0 should NOT be able to attach disk using LHv2 Provisioner but LHv1

Not be able to provision LHv2 disk

Provision extra disk as LHv1

Works on virtual SCSI disk in ipxe-example env. but hit problem in baremetal one.
harvester/harvester/issues/6861

 :yellow_circle: Format extra disk on node-1 and node-2 before attach with LHv2 provisioner

Need to format manually cuz no Force Format option like LHv1
harvester/harvester/issues/6859

 :green_circle: node-1 and node-2 can attach disk using LHv2 Provisioner.

node-1

node-2

Longhorn

Create Storage Class and Unbound Volume

 :green_circle: Create a storage class lhv2-r2 using Longhorn V2 (CSI) Provisioner

The Migratable and Volume Encryption radio buttons should be automatically set to "No".

Created

 :green_circle: Create lhv2-r2 volume (New) predefined-lhv2

Harvester

Longhorn

Create VM

 :green_circle: Create a VM with extra volume predefined-lhv2

Create VM

Format predefined-lhv2 as EXT4

Gen test data with md5sum on both disks

Reboot VM, data does not broken

 :green_circle: Create a VM with extra volume ondemand-lhv2

Create VM

Format predefined-lhv2 as EXT4

Gen test data with md5sum on both disks

Reboot VM, data does not broken

Provide test result about backup-restore and Rancher integration with opened issue.
Environment

harvester-v1.4.0-rc4

Profile: 2 nodes AMD64 QEMU/KVM
ui-source: Auto

Prerequisite

 Setup a 2 nodes cluster

 Extra disk w/ WWN on each nodes

Ref. https://github.com/harvester/harvester/issues/5446#issuecomment-2112177685

Create image ubuntu-22.04-server-cloudimg-amd64.img

Create VM network mgmt-vlan1

 Setup backup target

 Enable LHv2 engine, and disable on node-0

Harvester

Longhorn

 Add disk w/ LHv2 provisioner on node-1 and create storage class for it

Disk

Storage Class

Test Scenarios
Create VM with LHv1 rootdisk and LHv2 extradisk

 :green_circle: vm-virtio

Mount disk

Gen test data

Reboot and data does not broken

 :green_circle: vm-sata

Mount disk

Gen test data

Reboot and data does not broken

 :green_circle: vm-scsi

Mount disk

Gen test data

Reboot and data does not broken

Backup Restore (node-0 disable LHv2)

 :black_circle: Snapshot VM and snapshot

Track on harvester/harvester/issues/6710

Not support yet

 :red_circle: Backup VM

longhorn-manager on node-0

longhorn-manager on node-1

Fail if node-0 not enable LHv2 engine
harvester/harvester/issues/6866

Backup Restore (All node enables LHv2)

 :green_circle: Backup VM

 :green_circle: Restore New

Restore

Running and data is not broken

Volume storage class is correct

 :green_circle: Restore Replace

Restore

Running and data is not broken

Volume storage class is correct

Migrate

 :black_circle: Live Migrate

Not support yet

 :green_circle: Stop and start on different node

Current VM running on node-0

Stop VM

Cordon node-0

Start VM, should Running on node-1 and data is not broken

Rancher Integration

 :green_circle: Provision RKE2 cluster with extra LHv1 disk

 :red_circle: Provision RKE2 cluster with extra LHv2 disk

virt-launcher stuck at ContainerCreating due to FailedMapVolume
harvester/harvester/issues/6868

 :white_circle: Scale Up and scale down

Provide some negtive tests, looks good.
Environment

harvester-v1.4.0-rc4

Profile: 2 nodes AMD64 QEMU/KVM
ui-source: Auto

Disable LHv2 engine on a node w/ running VM w/ LHv2 volume

 :green_circle: Disable LHv2 ening on the node VM Running

VM running on node-1

Volume status

Disbale LHv2 engine on node-1

 :green_circle: Disk should becomes not Ready and VM is not `Running` (Due to not support live migration yet)

Disk not Ready

Volume status

VM becomes Starting due to FailedAttachVolume

 :green_circle: Enable LHv2 Engine again

Enable LHv2 engine on node-1 again

LHv2 Disk should be Ready

 :yellow_circle: VM should be Running again

VM still Starting
`
Reboot VM bring it back and data looks fine

VM still Starting but reboot brings it back and data looks fine.

Unexpectedly delete LHv2 disk on a node which has running VM w/ LHv2 volume

 :green_circle: Remove LHv2 disk on the node which VM Running

VM on node-0

Volume status

Follow https://docs.harvesterhci.io/v1.4/host/#remove-disks to delete disk

 :green_circle: VM should still accessible but with unhealthy volume

Check VM status, still running and data not broken

Volume status

 :green_circle: Adding the LHv2 disk back, volume replica should be satisfied again.

Adding the disk back

Volume replica satisfy again

Upgrade from v1.3.2

Test along with single node upgrade release testing.

Close as the main feature works and trace related ticket respecctively.


Devices used for the  Wi-Fi RTT app

Hi,
could you please list in the readme the devices used?
For the smartphone there is an info (it uses Snapdragon 820), but for the Wi-Fi router used, there is no info.
Thank you

I was about the ask the same question. But we can find in closed issues https://github.com/Plinzen/android-rttmanager-sample/issues/1 that someone asked the same question a couple of weeks ago.
Unfortunatly Plinzen answerd that they are using a custom board from Intel for testing. But it's not public available.
Also, there is this demo video from intel, but it seems they are only speaking abount the network card and not the access point.
https://www.intel.com/content/www/us/en/wireless-network/indoor-wifi-location-tracking.html
I spent the afternoon searching for access point supporting 802.11mc. If you find some please let me know.

Yes, you're right. We've a custom Intel Board here for testing purposes.
If you have information about some routers which public available, I would be happy if you can share them.
Nevertheless, I'll update the documentation.


Picture doesn't get uploaded

Picture doesn't get uploaded on Firebase. I don't know what's wrong with my code. Here is the sample code that I'm using.
 //get the reference to stored file at database
                StorageReference filePath = mStorageReference.child("photos/"+imageUri.getLastPathSegment());

                //upload file to firebase
                filePath.putFile(imageUri).addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                       @SuppressWarnings("VisibleForTests") Uri downloadUrl = taskSnapshot.getDownloadUrl();
                        Message message = new Message(null, userName, downloadUrl.toString());
                        messagesDatabaseReference.push().setValue(message);
                        Toast.makeText(MainActivity.this, "Image Uploaded Successfully!", Toast.LENGTH_SHORT).show();
                    }
                });

@pavanchilukuri hey thanks for reporting the issue, I will check and update in a while. If you have a solution feel free to send a fix

Yes, actually I'm working on it. Meanwhile, please do let me know If you try to figure out.

I will fix soon if something Is wrong in my code .

Fixed it! This should be the code.
Removed the third else if statement and wrote it as separate if statement
  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == RC_SIGN_IN) {
            if (resultCode == RESULT_OK) {
                Log.d("TAG", "Signed in successful");
                Toast.makeText(MainActivity.this, "Welcome to BCM!", Toast.LENGTH_SHORT).show();
            } else if (resultCode == RESULT_CANCELED) {
                Toast.makeText(this, "Sign in cancelled", Toast.LENGTH_SHORT).show();
                finish();
            }

            if (requestCode == RC_PHOTO_PICKER && resultCode == RESULT_OK) {

                Log.d("TAG", "Entered photo picker method");
                Uri selectedImageUri = data.getData();

                // Get a reference to store file at photos/<FILENAME>
                StorageReference photoRef = mPhotosStorageReference.child(selectedImageUri.getLastPathSegment());

                //Upload file to Firebase Storage
                photoRef.putFile(selectedImageUri)
                        .addOnSuccessListener(this, new OnSuccessListener<UploadTask.TaskSnapshot>() {
                            @Override
                            public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                                Log.d("TAG", "in Success method");
                                //Toast.makeText(MainActivity.this, "Upload Successful", Toast.LENGTH_SHORT).show();
                              // When the image has successfully uploaded, we get its download URL
                                @SuppressWarnings("VisibleForTests")
                                Uri downloadUrl = taskSnapshot.getDownloadUrl();

                                // Set the download URL to the message box, so that the user can send it to the database
                                Message message = new Message(null, userName, downloadUrl.toString());
                                messagesDatabaseReference.push().setValue(message);
                            }
                        });
            }
        }
    }


version 2.3.0 blocks use of psr/log:3.0.0, which the latest version of monolog/monolog requires

version 2.3.0 composer.json adds a requirement of "psr/log": "^1.0".
This blocks use of "psr/log":"^3.0", which the latest version of monolog/monolog requires.
Is there some reason why the requirement is not "psr/log": "^1.0||^2.0||^3.0"?

No that is just an omission. Totally missed that in review, will fix tomorrow

Thanks.


Local property copies updating the original object automatically

Describe the problem or limitation you are having in your project:
Having to use syntax like:
position{
    x = 2
}

create a semantic difference between the properties of the Kotlin Script and the properties of the object the script is based on. This difference doesn't exist in Gdscript, so this particulary must disapear.
Describe how this feature / enhancement will help you overcome this problem or limitation:
This feature will allow you to write position.x = 2 without worrying about the local copy.
Show a mock up screenshots/video or a flow diagram explaining how your proposal will work:
/
Describe implementation detail for your proposal (in code), if possible:
The root of the problem is that a godot object doesn't return a pointer when getting a core property but a copy. If we try to update this copy, we have to call the setter either manually with:
it = position   //getter called, return a copy and assign it to the variable "it"
it.x = 2 //local copy updated
position = it  //setter called, varaible "it" copied into the object.

or with
position{ x = 2} where the setter is called automatically at the end of the lambda.
Sadly I don't know a way to get the pointer to the original core property.
I want to implement a mechanism calling the setter every time, we write something like:
position.x = 2.
It can be achieved in the following way:

Adding a optional "owner" pointer to the core wrappers. If the owner is not null, it means this core object is a copy of a property inside another Godot object. Otherwise, it just means this is a standalone core created in the script as parameter or  as a temporary object.
Adding a setter to every properties of a core object, this setter will check if the core object has a owner. If that's the case, the core object will copy itself into its owner.
The Api Generator must generate the code setting the owner when a copy is obtained from an object property getter.

If this enhancement will not be used often, can it be worked around with a few lines of code?:
/
Is there a reason why this should be in this project and not individually solved?:
It required to change the core wrappers and the api generator.

After debating, no simple solution worth being implemented was found.
Issue closed.
Maybe someone will have a brilliant idea someday.


VolumeMount Now Required For Deployments

Setup

Rancher version: v2.7-head (c35f112)
Browser type & version: Chrome Version 108.0.5359.94 (Official Build) (arm64)

Describe the bug
When trying to deploy an image on v2.7-head (c35f112), an error appears stating the volumeMount is a requirement. Previously this has not been a requirement and I haven't been able to find any ticket that changes this to a requirement. Once a volumeMount is set the deployment does process as expected.
Deployment.apps "test3" is invalid: [spec.template.spec.containers[0].volumeMounts[0].name: Required value, spec.template.spec.containers[0].volumeMounts[0].name: Not found: "", spec.template.spec.containers[0].volumeMounts[0].mountPath: Required value]
To Reproduce

Create a Rancher HA on v2.7-head
Create a downstream cluster (or do this on local)
In the left side nav, go to Workloads > Deployments
Click Create in the upper right of the page
Give the deployment a name and image (such as nginx:latest)
Click the Create button

Result
Error message appears stating a volumeMount is required to finish creating the deployment
Expected Result
Deployment is created whether or not there's a volumeMount.
Screenshots

Verified on v2.7-head 65089ee
Deployments are now successfully created with just a name and an image as it was previously.


Same play causes game to not progress.

Myself and one of the AIs both had only a pair of twos, so the game simply stopped progressing.

I am aware of this issue, but wasn't aware that it would completely stop the game. Thank you for letting me know, I'll try to fix it in my next update.

I believe that I have found and fixed the issue as of version 10.6.1. The chances of a perfect tie are very rare, but the game should not come to a complete stop if it ever happens again.


#2498 Add metadata for stateStore

Description
Add metadata into GetStateResponse and BulkStateItem.
Issue reference
https://github.com/dapr/dapr/issues/2498
Checklist
Please make sure you've  completed the relevant tasks for this PR, out of the following list:

[ ] Code compiles correctly
[ ] Created/updated tests
[ ] Unit tests passing
[ ] End-to-end tests passing
[ ] Extended the documentation / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Specification has been updated / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]
[ ] Provided sample for the feature / Created issue in the https://github.com/dapr/docs/ repo: dapr/docs#[issue number]

Is this implemented in the HTTP API also?

Is this implemented in the HTTP API also?

Maybe in some situation, the metadata can't transfer to app.  refer to: https://github.com/dapr/dapr/issues/2518

@cvictory we can now merge this PR, but there are conflicts here. Can you please resolve?

@cvictory we can now merge this PR, but there are conflicts here. Can you please resolve?

done


First video freezes due to race condition with loading of first videos

I noticed that sometimes when running the app, the first video froze after a few frames and the audio from the 2nd video started playing. After analyzing, it seems to be due to a race condition on initState of _FeedScreenState:
  void initState() {
    feedViewModel.loadVideo(0);
    feedViewModel.loadVideo(1);

    super.initState();
  }

  void loadVideo(int index) async {
    if (videoSource!.listVideos.length > index) {
      await videoSource!.listVideos[index].loadController();
      videoSource!.listVideos[index].controller?.play();
      notifyListeners();
    }
  }

Both videos are loaded asynchronously, and after loading the video starts to get played. If the 1st video gets loaded before the 2nd, then when the 2nd finishes loading we call controller.play() which starts playing the audio from the 2nd video.

Hi, did you fix the issue


Undo TableBlock work until some other critical changes are ready

This undoes #2295 so that we can proceed with deploying today.  I will push the latest work to a new branch, that @sebworks can potentially merge into his work in #2344.
Assignees: @rosskarchner @sebworks @chosak

(presuming Travis is OK) 👍


feat: Add search by title functionality

Title and Issue number

Title : [Challenges] Search by Challenge
Issue No. : https://github.com/sadanandpai/frontend-mini-challenges/issues/385
Checklist:

[x] I have mentioned the issue number in my Pull Request.
[x] I have commented my code, particularly in hard-to-understand areas
[] I have created a helpful and easy to understand README.md
[] I have updated the Index.html file for my contribution

Thank you @sadanandpai for reviewing the pr 😇


Cannot find ffmpeg [Unhandled Error Event]

Retriving the complete list, but downloading only the filst file in mp4 format !

You need to have ffmpeg installed on your system. Please go through the suggested solutions on https://github.com/vishaltelangre/music-dl/issues/10.


Generated stylesheet link is incorrect

Problem

I have a stylesheet, named whatever.css.
style = ["whatever.css"]

When adding routes however, let's say /blog/doesntmatter, the stylesheet path that the browser tries to load is /blog/doesntmatter/whatever.css, which is incorrect. In order to fix this, you can add a forward slash before the file name so the browser loads it from the path root instead of the current path
style = ["/whatever.css"]

However the dioxus cli strips that slash away in the generated index.html file, and thus this doesn't work anymore
Steps To Reproduce
Steps to reproduce the behavior:

Create new project and add a stylesheet (whatever.css)
In Dioxus.toml add the stylesheet with a forward slash before the file name (/whatever.css)
Run the app

Expected behavior
The generated html file should point to /whatever.css and not whatever.css
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment:

Dioxus version: [v0.3]
Rust version: [1.71.0-nightly (d0a4cbcee 2023-04-16)]
OS info: [Linux]
App platform: [web]

Questionnaire

[x] I'm interested in fixing this myself but don't know where to start
[ ] I would like to fix and I have a solution
[ ] I don't have time to fix this right now, but maybe later

It seems more intuitive to make styles act as paths to the styles instead of links to where the styles are served. In the future, we could use the Dioxus.toml format to allow including styles for desktop an mobile applications as well. These platforms only use local assets, so they would need to interpret styles as a list of paths instead of a list of urls where the assets are served.
If you are interested in implementing this, you can change how the styles are inserted into the final HTML here in the CLI

collect assets is a better way to include styles in the future that does not have this issue: https://github.com/DioxusLabs/collect-assets. Here is an example that uses collect assets to include a style from your local path in a cross platform way: https://github.com/DioxusLabs/dioxus/blob/b1921cf17d68f981be84c775bc9ab2894a18b8c9/examples/file_explorer.rs#L21


Unable to deploy NextJS Site

When following the docs directions for getting started with NextJS, I receive the following error below. This has been happening starting with version 0.0.119 all the way to the current version 0.0.128
Running "npx --yes<EMAIL_ADDRESS>build" script
Next.js v14.1.3
OpenNext v3.0.0-rc.5
┌─────────────────────────────────┐
│ OpenNext — Building Next.js app │
└─────────────────────────────────┘
><EMAIL_ADDRESS>build
> next build
   ▲ Next.js 14.1.3
   Creating an optimized production build ...
(node:24321) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:24337) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
 ✓ Compiled successfully
   Linting and checking validity of types ...
Failed to compile.
.sst/platform/src/components/aws/ssr-site.ts:1198:39
Type error: Type 'string | UnwrappedArray<string>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.
  1196 |             });
  1197 |           } else {
> 1198 |             invalidationPaths.push(...(invalidation?.paths || []));
       |                                       ^
  1199 |           }
  1200 |           if (invalidationPaths.length === 0) return;
  1201 |
node:internal/errors:956
  const err = new Error(message);
              ^
Error: Command failed: npm run build
    at genericNodeError (node:internal/errors:956:15)
    at wrappedFn (node:internal/errors:510:14)
    at checkExecSyncError (node:child_process:890:11)
    at Object.execSync (node:child_process:962:15)
    at buildNextjsApp (file:///Users/sunitkulkarni/.npm/_npx/243dd04f789c84f7/node_modules/open-next/dist/build.js:133:8)
    at build (file:///Users/sunitkulkarni/.npm/_npx/243dd04f789c84f7/node_modules/open-next/dist/build.js:36:11) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 24289,
  stdout: null,
  stderr: null
}
Node.js v21.5.0
(node:24256) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
|  Creating    sst:aws:Nextjs → QleoIon
(node:24256) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 22)
(node:24256) PromiseRejectionHandledWarning: Promise rejection was handled asynchronously (rejection id: 23)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → QleoIonAssets
|  Created     sst:aws:Nextjs → sst:aws:Bucket → QleoIonAssets (8ms)
|  Error
|  VisibleError: There was a problem building the "QleoIon" site.
|      at file:///Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/src/components/aws/ssr-site.ts:469:17
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:398:31
|      at Generator.next (<anonymous>)
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:21:71
|      at new Promise (<anonymous>)
|      at __awaiter (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:17:12)
|      at applyHelperAsync (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:239:12)
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:310:13 {
|    promise: Promise { <rejected> [Circular *1] }
|  }
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → random:index:RandomId → QleoIonAssetsId
|  Created     sst:aws:Nextjs → sst:aws:Bucket → random:index:RandomId → QleoIonAssetsId (4ms)
|  Creating    sst:aws:Nextjs → aws:cloudfront:OriginAccessIdentity → QleoIonOriginAccessIdentity
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketV2 → QleoIonAssetsBucket
|  Created     sst:aws:Nextjs → aws:cloudfront:OriginAccessIdentity → QleoIonOriginAccessIdentity (518ms)
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketV2 → QleoIonAssetsBucket (737ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → QleoIonAssetsPublicAccessBlock
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → QleoIonAssetsCors
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → QleoIonAssetsPublicAccessBlock (121ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPolicy → QleoIonAssetsPolicy
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPolicy → QleoIonAssetsPolicy (8.562s)
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → QleoIonAssetsCors (15.81s)

❌ Failed
   VisibleError: There was a problem building the "QleoIon" site.
       at file:///Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/src/components/aws/ssr-site.ts:469:17
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:398:31
       at Generator.next (<anonymous>)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:21:71
       at new Promise (<anonymous>)
       at __awaiter (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:17:12)
       at applyHelperAsync (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:239:12)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:310:13 {
     promise: Promise { <rejected> [Circular *1] }
   }

If you've already posted your issue on Discord, make sure to leave a link to it here.
https://discord.com/channels/983865673656705025/1177071497974648952/1214751817590640732

And here is my corresponding sst.config.ts file:
/// <reference path="./.sst/platform/config.d.ts" />

export default $config({
  app(input) {
    return {
      name: "next-ion",
      removalPolicy: input?.stage === "production" ? "retain" : "remove",
    };
  },
  async run() {
    const site = new sst.aws.Nextjs("QleoIon", {
      domain: {
        hostedZone: "dev.qleo.ai",
        domainName: "ion.dev.qleo.ai"
      }
    })

    return {
      url: site.url
    }
  },
});

Hi @Sunit-Kulkarni, if u run npx --yes<EMAIL_ADDRESS>build manually, does the build succeed?

@fwang Nope, looks like that step yielded the same error:
npx --yes<EMAIL_ADDRESS>build
Next.js v14.1.3
OpenNext v3.0.0-rc.5

┌─────────────────────────────────┐
│ OpenNext — Building Next.js app │
└─────────────────────────────────┘

><EMAIL_ADDRESS>build
> next build

   ▲ Next.js 14.1.3

   Creating an optimized production build ...
 ✓ Compiled successfully
   Linting and checking validity of types  ...Failed to compile.

.sst/platform/src/components/aws/ssr-site.ts:1198:39
Type error: Type 'string | UnwrappedArray<string>' can only be iterated through when using the '--downlevelIteration' flag or with a '--target' of 'es2015' or higher.

  1196 |             });
  1197 |           } else {
> 1198 |             invalidationPaths.push(...(invalidation?.paths || []));
       |                                       ^
  1199 |           }
  1200 |           if (invalidationPaths.length === 0) return;
  1201 |
   Linting and checking validity of types  .node:internal/errors:956
  const err = new Error(message);
              ^

Error: Command failed: npm run build
    at genericNodeError (node:internal/errors:956:15)
    at wrappedFn (node:internal/errors:510:14)
    at checkExecSyncError (node:child_process:890:11)
    at Object.execSync (node:child_process:962:15)
    at buildNextjsApp (file:///Users/sunitkulkarni/.npm/_npx/243dd04f789c84f7/node_modules/open-next/dist/build.js:133:8)
    at build (file:///Users/sunitkulkarni/.npm/_npx/243dd04f789c84f7/node_modules/open-next/dist/build.js:36:11) {
  status: 1,
  signal: null,
  output: [ null, null, null ],
  pid: 34095,
  stdout: null,
  stderr: null
}

Node.js v21.5.0

how did you setup the nextjs site?
in your tsconfig.json can you try adding sst.config.ts to the exclude list?

My first attempt at setting up the NextJS site was deploying a raw template from the npx create-next-app@latest with typescript enabled with my own custom domain. I also copied and pasted the getting started guide which includes the S3 bucket. Both yielded the same results above.
But now with the suggestion of excluding sst.config.ts in tsconfig.json, a new error occurs below:
SST ❍ ion 0.0.128  ready!

➜  App:        next-ion
   Stage:      sunitkulkarni

~  Deploying

|  Creating    sst:aws:Nextjs → MyWeb
|  Creating    sst:aws:Bucket → MyBucket
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → MyWebAssets
|  Created     sst:aws:Bucket → MyBucket (20ms)
|  Created     sst:aws:Nextjs → sst:aws:Bucket → MyWebAssets (410ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → random:index:RandomId → MyWebAssetsId
|  Creating    sst:aws:Bucket → random:index:RandomId → MyBucketId
|  Created     sst:aws:Nextjs → sst:aws:Bucket → random:index:RandomId → MyWebAssetsId (6ms)
|  Created     sst:aws:Bucket → random:index:RandomId → MyBucketId (6ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketV2 → MyWebAssetsBucket
|  Creating    sst:aws:Nextjs → aws:cloudfront:OriginAccessIdentity → MyWebOriginAccessIdentity
|  Creating    sst:aws:Bucket → aws:s3:BucketV2 → MyBucketBucket
|  Created     sst:aws:Nextjs → aws:cloudfront:OriginAccessIdentity → MyWebOriginAccessIdentity (427ms)
|  Created     sst:aws:Bucket → aws:s3:BucketV2 → MyBucketBucket (749ms)
|  Created     pulumi:pulumi:Stack → next-ion-sunitkulkarni (6.77s)
|  Creating    sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → MyBucketPublicAccessBlock
|  Error
|  TypeError: args.type.replaceAll is not a function
|      at file:///Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/src/components/link.ts:25:29
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:398:31
|      at Generator.next (<anonymous>)
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:21:71
|      at new Promise (<anonymous>)
|      at __awaiter (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:17:12)
|      at applyHelperAsync (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:239:12)
|      at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:310:13
|      at processTicksAndRejections (internal/process/task_queues.js:93:5)
|  Creating    sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → MyBucketCors
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketV2 → MyWebAssetsBucket (790ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → MyWebAssetsCors
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → MyWebAssetsPublicAccessBlock
|  Created     sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → MyBucketPublicAccessBlock (169ms)
|  Creating    sst:aws:Bucket → aws:s3:BucketPolicy → MyBucketPolicy
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → MyWebAssetsCors (199ms)
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPublicAccessBlock → MyWebAssetsPublicAccessBlock (322ms)
|  Creating    sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPolicy → MyWebAssetsPolicy
|  Created     sst:aws:Bucket → aws:s3:BucketPolicy → MyBucketPolicy (244ms)
|  Created     sst:aws:Nextjs → sst:aws:Bucket → aws:s3:BucketPolicy → MyWebAssetsPolicy (8.008s)
|  Created     sst:aws:Bucket → aws:s3:BucketCorsConfigurationV2 → MyBucketCors (15.891s)

❌ Failed
   TypeError: args.type.replaceAll is not a function
       at file:///Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/src/components/link.ts:25:29
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:398:31
       at Generator.next (<anonymous>)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:21:71
       at new Promise (<anonymous>)
       at __awaiter (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:17:12)
       at applyHelperAsync (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:239:12)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:310:13
       at processTicksAndRejections (internal/process/task_queues.js:93:5)
   TypeError: urn.split(...).at is not a function
       at file:///Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/src/components/link.ts:51:33
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:398:31
       at Generator.next (<anonymous>)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:21:71
       at new Promise (<anonymous>)
       at __awaiter (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:17:12)
       at applyHelperAsync (/Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/pulumi/output.js:239:12)
       at /Users/sunitkulkarni/QleoCode/next-ion/.sst/platform/node_modules/@pulumi/output.ts:310:13
       at processTicksAndRejections (internal/process/task_queues.js:93:5) {
     promise: Promise { <rejected> [Circular *1] }
   }

Another set of good news! I also tried it with bun from the outset. I first made a fresh repository with bun x create-next-app@latest, then ran sst init inside that repo. I then put the same custom domain I used above in my sst.config.ts parametrized with a .env file. I also added sst.config.ts to the exclude parameter in tsconfig.json. Then, I had run sst deploy, and my NextJS site using bun deployed successfully!

I solved the same issue with re-writing the tsconfig.include option. Mine looks like this to avoid .sst being type-checked (my next app has a src/ dir):
  "include": [
    "next-env.d.ts",
    "src/**/*.ts",
    "src/**/*.tsx",
    ".next/types/**/*.ts"
  ],

I have a similar issue, and it solved by adding exclude like this to tsconfig.json
  "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
  "exclude": ["node_modules", ".sst", ".open-next", "sst.config.ts"]

sst init does ensure sst.config.ts is excluded for nextjs projects so going to close this issue

@thdxr Just FYI, if I run
yarn create next-app # accepting all defaults
cd my-app
sst init # 0.0.131

sst does nothing else than creating a .sst directory and a non-nextjs-specific sst.config.js.
In particular, it doesn't change package.json or tsconfig.json.
I just mention this here because your answer seems to imply that it does more.


global: fix errors from npm audit

When you build assets, you see the following output:
found 7 vulnerabilities (2 moderate, 5 high)
  run `npm audit fix` to fix them, or `npm audit` for details

Should be fixed so we dont' see any audit output

Interesting related read: https://overreacted.io/npm-audit-broken-by-design/

Running invenio-cli assets build I am getting
found 6 vulnerabilities (2 moderate, 4 high)
  run `npm audit fix` to fix them, or `npm audit` for details

node-sass vulnerability
https://github.com/inveniosoftware/invenio-assets/pull/140


SnapshotPeople preprocessed dataset

Hello, I have another question:
I download the preprocessed SnapshotPeople dataset provided in the link, and I test it using the male-3-casual sample.
We use the data from InstantAvatar and finetuned their pre-processed poses to get SMPL-X fits.
First, I decode the 000.pkl file in the smplx_finetune/result directory, and I notice that the shapes of left_hand_pose and right_hand_pose are both (1, 12). However, theoretically, the left_hand_pose/right_hand_pose outputs of SMPL-X are typically (15, 3). I understand that enabling the parameter num_pca_comps=12 reduces the hand pose dimension from 15 to 12, but why is the other dimension 1 instead of 3?

Here is the code I used to get SMPL-X: https://github.com/david-svitov/HAHA/issues/10#issuecomment-2311634709
I hope it will answer all possible questions regarding SMPL-X parameters


feat(upgrade): add crd and k8s api resources

Signed-off-by: rajaSahil<EMAIL_ADDRESS>
Adds crd(UpgradeAction)
Adds rbac
Adds deployement, service for operator

NOTE:

There can be changes in the code while implementing different parts. Mainly addition of functions.

What is the plan with this crate, why do we need a library?

Suppose in future, we plan to build another operator for mayastor, we can simply include new bin dir and add that operator as a lib.

What is the plan with this crate, why do we need a library?

Suppose in future, we plan to build another operator for mayastor, we can simply include new bin dir and add that operator as a lib.

But we wouldn't need upgrade specific things in the library? The less we expose, the harder it is to misuse things.

bors try

bors try

bors merge

bors merge

bors merge

bors merge


Restoring checkpoint throws a 'FAILED PRECONDITION' error

Hi, I'm quite new to Orbax, and I am trying to use it to checkpoint my flax models. The contents of the checkpoint are vanilla flax TrainState objects, which I save as ckpt_manager.save(epoch, {'state': state}, metrics = {'accuracy': accuracy}).
I then try to restore the checkpoint with ckpt_manager.restore(ckpt_manager.best_step()), but I get back
ValueError: FAILED_PRECONDITION: Error opening "zarr" driver: Expected "compressor" of {"id":"gzip","level":1} but received: {"id":"zstd","level":1} [source locations='tensorstore[/driver/driver.cc:117](https://vscode-remote+ssh-002dremote-002balienware.vscode-resource.vscode-cdn.net/driver/driver.cc:117)'] [tensorstore_spec='{\"context\":{\"cache_pool\":{},\"data_copy_concurrency\":{},\"file_io_concurrency\":{\"limit\":128}},\"driver\":\"zarr\",\"kvstore\":{\"driver\":\"file\",\"path\":\"[/checkpoints/1352/default/state.opt_state.0.mu.params_1.Dense_0.kernel/](https://vscode-remote+ssh-002dremote-002balienware.vscode-resource.vscode-cdn.net/checkpoints/1352/default/state.opt_state.0.mu.params_1.Dense_0.kernel/)\"},\"metadata\":{\"compressor\":{\"id\":\"gzip\",\"level\":1}}}']
In my python environment I have installed the latest versions available on PyPi of both orbax and tensorstore. Thanks for your help!

Downgrading to orbax-checkpoint=0.2.2 solves the issue.


Add wrangler installation note for windows users

We had a PR in the old Workers Docs repo here for additional instructions for Windows users: https://github.com/cloudflare/workers-docs/pull/738
Opening an issue to update.

Unable to recreate when installing Wrangler in Windows -- let's close this for now and we can pick this up again if Windows users write in here or in https://github.com/cloudflare/wrangler with problems


[BUG] create new data with exist name

Describe the bug
When i want to create new item in data record with name was exist, app crash.
To Reproduce
Steps to reproduce the behavior:
Go to Process data settings
Click on Create and write name of new data item (for example "1234")
Click on Create
Repeat steps 2 and 3.

It's just a thrown exception that is next caught and processed.


Yolo v9 license and docker exist?

Hello author
This is great and interesting work.
I have questions. I found other yolov9 repo on github.
But this is similar with this repo but license is different, the other repo url on below:
https://github.com/WongKinYiu/yolov9
Can you help me what is real license on yolov9 ?
second question is
Do you have docker image in docker hub?

(Not an author of this repository and not legal advice.) Hi, the link you provided corresponds to the original implementation of YOLOv9, which itself corresponds to the paper "YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information" and is licensed under the GPL-3.0 license. All the most recent YOLO variants use a strong copyleft license like GPL-3.0 (v6, v7, v9...) and AGPL-3.0 (v5, v8, v10...). This repository is an ongoing effort to reimplement YOLOv7 and YOLOv9 under a more permissive open-source license. If I am not mistaken, the authors started from the YOLOX codebase, which is the most recent variant of YOLO to have a permissive license.

Check these two issue related to License of original YOLOv9 repo:

https://github.com/WongKinYiu/yolov9/issues/10
https://github.com/WongKinYiu/yolov9/issues/82

Hi kdhRGT,

As mentioned above, YOLOv9 is a paper, so there is no license associated with it. This repository is a paper implementation licensed under the MIT License

Additionally, the name yolo is already registered on DockerHub, which is why the image isn't available there under that name. I have pushed an image here, but please note that the code is not stable yet. Once a new name is determined, we will upload the image to DockerHub and PyPI.

Thank you for your understanding and patience.
Best regards,
Henry Tsui

Thank you so much about all reply ~!
Now I can understand well about history now.
Best regards.


Traversable says it only needs Foldable+Functor, but later on it requires Applicative

I am not fully understanding how Traversable should work, but it first states

A value that implements the Traversable specification must also implement the Functor and Foldable specifications.

But then it says:

of must return the Applicative that u contains.

Is this correct and am I misunderstanding what is described here, or is this incorrect?

There's no contradiction. But it's tough to understand without types.
The data type you're defining Traversable instance for does need to be a Functor and it also needs to be a Foldable. The data type you're defining Traversable instance for does NOT need to be an Applicative.
The function that you define to implement Traversable is sequence. In order to call sequence, the value of your data type MUST have be an Applicative. And, of must return the same Applicative as the value of your data type.
Again, this is much easier with types, but maybe some examples would help.

https://github.com/fantasyland/fantasy-land/blob/6692bb31e56c15766dcf274a2e0cfe3ed8bc80cc/id.js#L42-L46
https://github.com/fantasyland/fantasy-options/blob/56cd68872e681e7abe45d1d0304af53d7a819dcf/src/option.js#L70-L78
https://github.com/fantasyland/fantasy-eithers/blob/265680c3bcbf0246a2a14bca6ef683b4b55efc13/src/either.js#L52-L60

I see! Thank you for this clarification. So Traversable.sequence's behaviour is only specified when the contained data type is Applicative, i.e. has a valid definition of Applicative.of.

Exactly!


Formula creation without direct name specification

Say I have a DataFrame called mydata where names(mydata) is Symbol[5001] consisting of :y,  :x1, :x2, :x3, :x4, ... (the other 4995 symbols) ... , :x5000.
I want to fit models with the formula ModelFrame(y ~ x1, mydata), ModelFrame(y ~ x2, mydata), etc. until ModelFrame(y ~ x5000, mydata). ModelFrame can be switched to glm or lmm as I believe they use the same formula.jl code.
How do I create a model such that I can do something like ModelFrame(y ~ names(mydata)[x], mydata) where x is any number? This would allow looping over variables. However, I'm not really sure what type of variable is being given after the tilde because ModelFrame(y ~ names(mydata)[2], mydata), ModelFrame(y ~ Symbol(:x1), mydata), or ModelFrame(y ~"x1", mydata) don't work.

You should a question like this on discourse.julialang.org instead of here. The issue tracker is for bugs.


Unable to broadcast with add

Only W and H dimensions can be broadcasted during an add operation.  We need to support the other dimensions as well.
@pytest.mark.parametrize("h", [32])
@pytest.mark.parametrize("w", [2 * 32])
@pytest.mark.parametrize("scalar", [0.42])
def test_add_broadcasts(device, h, w, scalar):
    torch_a = torch.rand((1, 1, h, w), dtype=torch.bfloat16)
    torch_b = torch.rand((5, 64, h, w), dtype=torch.bfloat16)
    torch_output = torch.add(torch_a, torch_b)

    a = ttnn.from_torch(torch_a)
    a = ttnn.to_device(a, device)
    b = ttnn.from_torch(torch_b)
    b = ttnn.to_device(b, device)
    tt_output = ttnn.add(a, b)
    tt_output = ttnn.to_layout(tt_output, ttnn.ROW_MAJOR_LAYOUT)
    tt_output = ttnn.from_device(tt_output)
    tt_output = ttnn.to_torch(tt_output)

    assert_with_pcc(torch_output, tt_output, 0.9999)

This issue will be partially solved with ttnn.repeat given that this op supports interleaved tensors.   However because ttnn.repeat does not work for sharded tensors we cannot close this issue.

see the thread mentioned above.
Need to enable
ttnn.eq(
    ttnn.Tensor(<buffer is not allocated>, shape=Shape([1, 1, 2048, 2048]), dtype=DataType::BFLOAT16, layout=Layout::TILE),
    ttnn.Tensor(<buffer is not allocated>, shape=Shape([1, 1, 1[32], 1[32]]), dtype=DataType::BFLOAT16, layout=Layout::TILE))

I think this is closer to an eltwise-binary op @eyonland

Would it be better to close this ticket and instead create a new one specifically asking for ttnn.repeat to work with sharded tensors?

I see this was upgraded to P0.  As mentioned, this support requires a ttnn.repeat to support sharding in this current implementation.

This example highlighted above is in interleaved.
Could someone provide the specific shading specification.

I think I can add some auto formatting to interleaved such that we can always parse the input (for that it won't matter what sharing specification the input is in)
For native support it would be helpful to have the sharing spec.
I will have a PR up for formatting to interleaved soon.

I'm closing this issue and going to follow in a different issue specifically adding sharding to repeat.


how do i use dolby atmos quality and also how do I download the atmos quality also and also does this work with ytdlp and also how do i find specific albums

Which tool
how do i use dolby atmos quality and also how do I download the atmos quality also and also does this work with ytdlp and also how do i find specific playlist like this https://tidal.com/playlist/af989059-3068-4477-9e19-f279ffa4f8c2 as a example of a atmos playlist
Describe your question
how do i use dolby atmos quality and also how do I download the atmos quality also and also does this work with ytdlp and also how do i find specific playlist like this https://tidal.com/playlist/af989059-3068-4477-9e19-f279ffa4f8c2 as a example of a atmos playlist
Add screenshots
No response

Dolby Atmos is already embedded within the track; you can find it in the metadata section.
Playlist = https://tidal.401658.xyz/playlist/?id=af989059-3068-4477-9e19-f279ffa4f8c2
Track = https://tidal.401658.xyz/track/?id=296654139&quality=LOSSLESS
For more, read the docs = https://github.com/sachinsenal0x64/hifi-tui?tab=readme-ov-file#-api-documentation

why does audio file still show 2 channel when it should show around 6.1 and also how do you do sony 360 songs

Sony360 = https://tidal.401658.xyz/album/?id=157117504

Note:

Sony360 = https://tidal.401658.xyz/album/?id=157117504
Track = https://tidal.401658.xyz/track/?id=157117505&quality=LOSSLESS

then why do other tidal downloaders support surround

If stereo tracks like LOSSLESS or Hi_RES feel more “surround”

Note:

Sony360 = https://tidal.401658.xyz/album/?id=157117504
Track = https://tidal.401658.xyz/track/?id=157117505&quality=LOSSLESS

then why do other tidal downloaders support surround

If Tidal has 5.1 / 6.1 surround sound, then the HIFI API will return.

Anyway, I will add surround sound/stereo/mono options to the HIFI TUI in a future release.


Update code example in the README, bump dependencies

Problem
The code example in the README is out of date (and wouldn't even compile 🙀).
Solution
Add a call to getListeners before adding a PreparedListener. Add the PreparedListener as a lambda.
Also updated some dependencies (Gradle version, Truth, static analysis plugin) because Hal forced me to.
Test(s) added
No tests added because it's a README and a dependency bump
Paired with
No one

Need to merge master into develop...there has been a process change 😬


[mock-omaha-server] Fix dependencies for Fuchsia

Change the dependencies in Cargo.toml such that the resulting crate of the mock-omaha-server does not conflict with the dependency resolution of the Fuchsia third party repository at:
https://cs.opensource.google/fuchsia/fuchsia/+/main:third_party/rust_crates/
Bug: #16

Should also remove https://github.com/google/omaha-client/blob/fc7fcbdddbba0d8dfc0459cc31e1e46863d1e653/mock-omaha-server/src/main.rs#L10


Epic Games Launcher returns exit code 53 in Lutris

Describe the bug
It does not do anything visible, and exits with no useful debugging information.
To Reproduce
Steps to reproduce the behavior:

Run lutris
Run "Epic Games Store"

Expected behavior
It should run the launcher without crashing.
Additional context
I just ran sudo nixos-rebuild switch --upgrade successfully, so all the packages are up to date.
Full Lutris log:
$ lutris
/usr/bin/ldconfig: Can't open cache file /nix/store/pnd2kl27sag76h23wa5kl95a76n3k9i3-glibc-2.27/etc/ld.so.cache
: No such file or directory
2019-11-15 20:02:41,421: Failed to get libraries from ldconfig: Command '['/usr/bin/ldconfig', '-p']' returned non-zero exit status 1.
2019-11-15 20:02:41,967: Running Lutris 0.5.3
2019-11-15 20:02:41,968: Using NVIDIA drivers 435.21 for x86_64
2019-11-15 20:02:41,968: GPU: GeForce GTX 980 Ti
2019-11-15 20:02:41,968: GPU: 10DE:17C8 1043:855B using nvidia drivers
2019-11-15 20:02:41,968: i386 libGL.so.1 missing (needed by opengl)
2019-11-15 20:02:41,968: x86_64 libGL.so.1 missing (needed by opengl)
2019-11-15 20:02:41,968: i386 libvulkan.so.1 missing (needed by vulkan)
2019-11-15 20:02:41,968: x86_64 libvulkan.so.1 missing (needed by vulkan)
2019-11-15 20:02:41,987: Vulkan is supported
2019-11-15 20:02:41,987: Updating DXVK versions
2019-11-15 20:02:42,121: Connected to lutris.net as l0b0
2019-11-15 20:02:42,514: Updating D9VK versions
2019-11-15 20:02:45,318: Replacing /home/username/Games/epic-games-store/drive_c/windows/system32/dxgi with DXVK version
2019-11-15 20:02:45,318: Replacing /home/username/Games/epic-games-store/drive_c/windows/system32/d3d11 with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/system32/d3d10core with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/system32/d3d10_1 with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/system32/d3d10 with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/syswow64/dxgi with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/syswow64/d3d11 with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/syswow64/d3d10core with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/syswow64/d3d10_1 with DXVK version
2019-11-15 20:02:45,319: Replacing /home/username/Games/epic-games-store/drive_c/windows/syswow64/d3d10 with DXVK version
Running /home/username/.local/share/lutris/runners/wine/lutris-wf-nofshack-4.15-x86_64/bin/wine /home/username/Games/epic-games-store/drive_c/Program Files (x86)/Epic Games/Launcher/Portal/Binaries/Win32/EpicGamesLauncher.exe -opengl
esync: up and running.
Waiting on children
All children gone
Exit with returncode 53
2019-11-15 20:02:47,393: Game still running (state: running)
2019-11-15 20:02:47,393: Stopping Epic Games Store (wine)
2019-11-15 20:02:48,822: Shutting down Lutris

I tried installing all the Lutris Wine dependencies (except for libldap, which I couldn't find, resulting in my current configuration), but it still fails in the same way.
Metadata

system: "x86_64-linux"
host os: Linux 4.19.83, NixOS, 19.09.1223.cb2cdab7136 (Loris)
multi-user?: yes
sandbox: yes
version: nix-env (Nix) 2.3
channels(username): ""
channels(root): "nixos-19.09.1223.cb2cdab7136, nixos-unstable-20.03pre200231.7827d3f4497"
nixpkgs: /nix/var/nix/profiles/per-user/root/channels/nixos

Maintainer information:
# a list of nixpkgs attributes affected by the problem
attribute: lutris
# a list of nixos modules affected by the problem
module:

Works for me on unstable with latest Lutris package and Wine 5, playing Untitled Goose Game right now.


Prepping for Rusoto 0.33.0 release.

TODO:

[x] run integration tests (I think there's an expected failure or two 😢 ) - no failures! 🎉
[x] make sure the main README example still works
[ ] get an update to rusoto.org for the code sample and supported services (are there any new ones?)

Planning on getting the release out tonight. 👍

Hey this is great! Any benchmarks showing benefits from hyper upgrade? Also, does this still create its own reactor? When I'm counting threads I like to keep a single reactor loop and it'd be good to know how to reuse the existing reactor or skip its instantiation somehow.

I've not benchmarked the hyper upgrade. It does fix an issue with the underlying connection in the connection pool being unceremoniously terminated by AWS services. I've run into that when heavily using rusoto_s3 and it should be a thing of the past now. 😄
Perhaps @srijs could answer the reactor question - I don't know that off the top of my head.


Async support for StrictMock

StrictMock has tons of mechanics under the hood, and some of them might break with async.
Let's add test cases for async stuff at tests/strict_mock_testslide.py, such as:

async instance methods.
async static methods.
async class methods.

These tests should cover the same ground we already have there, such as signature validation.

Closed by #70.


build: pin npm to version 10.8.2

- What I did
build: pin npm to version 10.8.2 because of this which is caused by this
- How I did it
See commits
- How to verify it
Checks pass and dependabot checks pass

@cpswan Even though npm install will now fail with an ugly error unless you are running npm 10.8.2, the code scanner still pops it up as an issue. This feels like a code scanning tool issue to me? since I am now doing precisely what is recommended to package.json to ensure the specific version of npm is being used? However I've just pushed another commit as per this documentation which will ensure that package-lock.json is respected - it may be that that is the actual problem being flagged by the code scanning tool here.


AdError 1005: The ad source contains no more ads with the majority of ad requests

Description
When video starts playing it should show two prerolls, but in most cases an adserror is fired. My ad requests seems correct, they are played with success in the advanced example https://googleads.github.io/videojs-ima/examples/advanced/
Detailed log
I included only the relevant lines
--- 1st ad request ---
17:41:19.580 video-6.10.1.js:498 VIDEOJS: ADS: Play middleware has been registered with videojs
17:41:19.648 _bnPlayer.js:1042 VideoReady
17:41:22.260 video-6.10.1.js:498 VIDEOJS: ADS: Using playMiddleware to block content playback
17:41:22.262 video-6.10.1.js:498 VIDEOJS: ADS: Play call to Tech was terminated.
17:41:22.293 video-6.10.1.js:498 VIDEOJS: ADS: Received play event (BeforePreroll)
17:41:22.294 video-6.10.1.js:498 VIDEOJS: ADS: BeforePreroll -> Preroll
17:41:22.330 bridge3.213.1_debug_en.html:738  [  2.445s] [ima.loader.AdsLoaderWrapper] Requesting ads using new ads loader.
17:41:22.332 bridge3.213.1_debug_en.html:738  [  2.448s] [ima.loader.AdsLoaderWrapper] requestAds, processing external request.
17:41:22.333 bridge3.213.1_debug_en.html:738  [  2.449s] [ima.loader.SequentialAdsLoader] Enqueued new request.
17:41:22.334 bridge3.213.1_debug_en.html:738  [  2.449s] [ima.loader.SequentialAdsLoader] Starting request from queue.
17:41:22.334 bridge3.213.1_debug_en.html:738  [  2.450s] [ima.loader.AdsLoaderImpl] creating instance of GptRequestActivity.
17:41:22.336 bridge3.213.1_debug_en.html:738  [  2.451s] [ima.loader.AdXmlFetcher] fetch, starting GPT request activity.
17:41:22.437 bridge3.213.1_debug_en.html:738  [  2.552s] [ima.request.GptRequestActivity] Pre-request tasks timeout.
17:41:23.189 bridge3.213.1_debug_en.html:738  [  3.305s] [ima.loader.AdSourceFactory] Creating VastAdSource.
17:41:23.191 bridge3.213.1_debug_en.html:738  [  3.307s] [VastAdSource] getNextAd, this.currentAdSource: [object Object]
17:41:23.194 bridge3.213.1_debug_en.html:738  [  3.309s] [VastAdSource] hasMoreAds, this.ads.length: 0 , this.currentAdIndex: -1
17:41:23.202 bridge3.213.1_debug_en.html:738  [  3.317s] [VastAdSource] processCurrentAdSource_, set currentAdSource to null
17:41:23.203 bridge3.213.1_debug_en.html:738  [  3.318s] [VastAdSource] getNextAd, this.currentAdSource: null
17:41:23.204 bridge3.213.1_debug_en.html:738  [  3.320s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 0 , this.numAdsSent: 0
17:41:23.205 bridge3.213.1_debug_en.html:738  [  3.321s] [VastAdSource] processNextAd_, currentAdIndex: 1, ads.length: 2
17:41:23.207 bridge3.213.1_debug_en.html:738  [  3.322s] [VastAdSource] processWrapperAd, adsRequest.adTagUrl: https://googleads.g.doubleclick.net/pagead/ads?client=ca-video-pub-8483844807660429&slotname=2266179537&ad_type=standardvideo_text_image&description_url=http%3A%2F%2Fbr.blastingnews.com&max_ad_duration=60000&videoad_start_delay=0
17:41:23.296 video-6.10.1.js:498 VIDEOJS: ADS: adtimeout (Preroll)
17:41:23.303 video-6.10.1.js:498 VIDEOJS: ADS: Preroll -> ContentPlayback
17:41:23.473 bridge3.213.1_debug_en.html:738  [  3.588s] [ima.loader.AdSourceFactory] Creating VastAdSource.
17:41:23.473 bridge3.213.1_debug_en.html:738  [  3.589s] [VastAdSource] getNextAd, this.currentAdSource: [object Object]
17:41:23.474 bridge3.213.1_debug_en.html:738  [  3.589s] [VastAdSource] hasMoreAds, this.ads.length: 0 , this.currentAdIndex: -1
17:41:23.475 bridge3.213.1_debug_en.html:738  [  3.591s] [VastAdSource] processCurrentAdSource_, set currentAdSource to null
17:41:23.476 bridge3.213.1_debug_en.html:738  [  3.591s] [VastAdSource] getNextAd, this.currentAdSource: null
17:41:23.476 bridge3.213.1_debug_en.html:738  [  3.592s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:23.477 bridge3.213.1_debug_en.html:738  [  3.593s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:23.478 bridge3.213.1_debug_en.html:738  [  3.593s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:23.480 bridge3.213.1_debug_en.html:738  [  3.595s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:23.485 bridge3.213.1_debug_en.html:738  [  3.600s] [ima.loader.SequentialAdsLoader] Starting request from queue.
17:41:23.496 videojs.ima.js:1354 AdsLoader error: AdError 1005: The ad source contains no more ads.

--- 2nd ad request ---
17:41:23.520 bridge3.213.1_debug_en.html:738  [  3.636s] [ima.loader.AdsLoaderWrapper] Requesting ads using new ads loader.
17:41:23.522 bridge3.213.1_debug_en.html:738  [  3.638s] [ima.loader.AdsLoaderWrapper] requestAds, processing external request.
17:41:23.523 bridge3.213.1_debug_en.html:738  [  3.639s] [ima.loader.SequentialAdsLoader] Enqueued new request.
17:41:23.524 bridge3.213.1_debug_en.html:738  [  3.640s] [ima.loader.SequentialAdsLoader] Starting request from queue.
17:41:23.526 bridge3.213.1_debug_en.html:738  [  3.641s] [ima.loader.AdsLoaderImpl] creating instance of GptRequestActivity.
17:41:23.527 bridge3.213.1_debug_en.html:738  [  3.642s] [ima.loader.AdXmlFetcher] fetch, starting GPT request activity.
17:41:24.554 bridge3.213.1_debug_en.html:738  [  4.669s] [ima.request.GptRequestActivity] Pre-request tasks timeout.
17:41:24.908 bridge3.213.1_debug_en.html:738  [  5.023s] [ima.loader.AdSourceFactory] Creating WaterfallAdSource.
17:41:24.910 bridge3.213.1_debug_en.html:738  [  5.025s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: -1 , this.numAdsSent: 0
17:41:24.912 bridge3.213.1_debug_en.html:738  [  5.027s] [VastAdSource] getNextAd, this.currentAdSource: null
17:41:24.914 bridge3.213.1_debug_en.html:738  [  5.029s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: -1 , this.numAdsSent: 0
17:41:24.916 bridge3.213.1_debug_en.html:738  [  5.031s] [VastAdSource] processNextAd_, currentAdIndex: 0, ads.length: 2
17:41:24.918 bridge3.213.1_debug_en.html:738  [  5.033s] [VastAdSource] processWrapperAd, adsRequest.adTagUrl: https://an.facebook.com/v1/instream/vast.xml?placementid=459022437543956_1156329201146606&pageurl=https://test04.br.blastingnews.com/curiosidades/2017/06/lembra-do-jovem-formado-medico-em-greys-anatomy-o-destino-dele-foi-tragico-001751595.html
17:41:25.105 bridge3.213.1_debug_en.html:738  [  5.220s] [ima.loader.AdSourceFactory] Creating VastAdSource.
17:41:25.106 bridge3.213.1_debug_en.html:738  [  5.222s] [VastAdSource] getNextAd, this.currentAdSource: [object Object]
17:41:25.109 bridge3.213.1_debug_en.html:738  [  5.224s] [VastAdSource] hasMoreAds, this.ads.length: 0 , this.currentAdIndex: -1
17:41:25.116 bridge3.213.1_debug_en.html:738  [  5.232s] [VastAdSource] processCurrentAdSource_, set currentAdSource to null
17:41:25.117 bridge3.213.1_debug_en.html:738  [  5.232s] [VastAdSource] getNextAd, this.currentAdSource: null
17:41:25.118 bridge3.213.1_debug_en.html:738  [  5.234s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 0 , this.numAdsSent: 0
17:41:25.119 bridge3.213.1_debug_en.html:738  [  5.235s] [VastAdSource] processNextAd_, currentAdIndex: 1, ads.length: 2
17:41:25.120 bridge3.213.1_debug_en.html:738  [  5.236s] [VastAdSource] processWrapperAd, adsRequest.adTagUrl: https://googleads.g.doubleclick.net/pagead/ads?client=ca-video-pub-8483844807660429&slotname=2266179537&ad_type=standardvideo_text_image&description_url=http%3A%2F%2Fbr.blastingnews.com&max_ad_duration=60000&videoad_start_delay=0
17:41:25.398 bridge3.213.1_debug_en.html:738  [  5.513s] [ima.loader.AdSourceFactory] Creating VastAdSource.
17:41:25.399 bridge3.213.1_debug_en.html:738  [  5.514s] [VastAdSource] getNextAd, this.currentAdSource: [object Object]
17:41:25.399 bridge3.213.1_debug_en.html:738  [  5.515s] [VastAdSource] hasMoreAds, this.ads.length: 0 , this.currentAdIndex: -1
17:41:25.402 bridge3.213.1_debug_en.html:738  [  5.518s] [VastAdSource] processCurrentAdSource_, set currentAdSource to null
17:41:25.403 bridge3.213.1_debug_en.html:738  [  5.518s] [VastAdSource] getNextAd, this.currentAdSource: null
17:41:25.404 bridge3.213.1_debug_en.html:738  [  5.520s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:25.405 bridge3.213.1_debug_en.html:738  [  5.520s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:25.406 bridge3.213.1_debug_en.html:738  [  5.521s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:25.407 bridge3.213.1_debug_en.html:738  [  5.522s] [VastAdSource] hasMoreAds, this.ads.length: 2 , this.currentAdIndex: 1 , this.numAdsSent: 0
17:41:25.410 bridge3.213.1_debug_en.html:738  [  5.525s] [ima.loader.SequentialAdsLoader] Starting request from queue.
17:41:25.415 videojs.ima.js:1354 AdsLoader error: AdError 1005: The ad source contains no more ads.

Versions
videojs-contrib-ads version: 6.3.0
Video-js version: 6.10.1
videojs-ima version: 1.4.0
Platforms
Browsers: Safari 11 (always), Chrome 67 (sometimes)
OS/Devices: MacOS (and most likely Linux)
Any clue?

Can you share the page where you're seeing this error, and the VAST tag you're requesting? Thanks!

Unfortunately, the page where I am performing the tests is private and I can't share it with you. However, I can attach here the two ad requests.
First AD Request
https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=%2F11450147%2Fbr_politica_article_vmh-desktop1-prebid&gdfp_req=1&env=vp&output=xml_vast3&unviewed_position_start=1&url=https%3A%2F%2Ftest04.br.blastingnews.com%2Fpolitica%2F2017%2F06%2Fem-discurso-no-stf-ex-ministro-joaquim-barbosa-fala-em-revolucao-silenciosa-001758987.html%3Frelated_video_certified%3D1&description_url=https%3A%2F%2Ftest04.br.blastingnews.com%2Fpolitica%2F2017%2F06%2Fem-discurso-no-stf-ex-ministro-joaquim-barbosa-fala-em-revolucao-silenciosa-001758987.html%3Frelated_video_certified%3D1&correlator=3303689863801951&npa=0&vad_type=linear&vid_t=SPOILER%2F%20%27SEGUNDO%20SOL%27%3A%20Rochelle%20%20flagrada%20roubando&vid_kw=governo%2Ccorrupcao&cust_params=page%3Dnews%26Category%3Dbr_news%26Category_2%3Dpolitica%26Tag%3Dgoverno%2Ccorrupcao%26nid%3D1758987%26user_id%3Dempty%26player_size%3Dlarge%26author_id%3D1227895%26country%3Dbr%26loggedin%3D0%26subscribe%3D_6waGANfMnFXezCjLcpo3u2fNwpcCrHYBfNmAE17rc9R67_K6ZjPv58iwEbG9XKnppX92yU4lgvXwr-KGo3cw976W2pWdY_B7O2mKayBeY0WG8jmvP3XhyFSOUfDXNF1feK7-GdvEvhLe6qJN9vjeDKE4hWwUqpioT1YpBBSTC9c1_%26channel_url%3Dhttps%253A%252F%252Ftest04.br.blastingnews.com%252Fnews%252Ftag%252Flula%252F%26channel%3Dlula%26isdebug%3D1%26adt%3Dlow%26alc%3DveryLow%26dlm%3DveryLow%26drg%3DveryLow%26hat%3DveryLow%26off%3DveryLow%26vio%3DveryLow%26fr%3D0&sdkv=h.3.211.3&sdki=3c0d&scor=1937178832479196&adk=2342911798&u_so=l&osd=2&frm=0&sdr=1&is_amp=0&adsid=AKyF-ldLZOi0oNM7vyLa2kUJA6c45Vt3WEu8AV0rr6IPDgJ9hTRYrEMcyD6douHl1Q&jar=2018-6-7-15&vpa=click&vpmute=0&mpt=videojs-ima&mpv=1.4.0&afvsz=200x200%2C450x50%2C468x60%2C480x70&ged=ve4_td14_tt12_pd14_la0_er532.526.684.826_vi0.0.916.1905_vp100_eb24171

Second AD Request
https://pubads.g.doubleclick.net/gampad/ads?sz=640x480&iu=%2F11450147%2Fbr_politica_article_vmh-desktop2-prebid&gdfp_req=1&env=vp&output=xml_vast3&unviewed_position_start=1&url=https%3A%2F%2Ftest04.br.blastingnews.com%2Fpolitica%2F2017%2F06%2Fem-discurso-no-stf-ex-ministro-joaquim-barbosa-fala-em-revolucao-silenciosa-001758987.html%3Frelated_video_certified%3D1&description_url=https%3A%2F%2Ftest04.br.blastingnews.com%2Fpolitica%2F2017%2F06%2Fem-discurso-no-stf-ex-ministro-joaquim-barbosa-fala-em-revolucao-silenciosa-001758987.html%3Frelated_video_certified%3D1&correlator=3303689863801951&npa=0&vad_type=linear&vid_t=SPOILER%2F%20%27SEGUNDO%20SOL%27%3A%20Rochelle%20%20flagrada%20roubando&vid_kw=governo%2Ccorrupcao&cust_params=page%3Dnews%26Category%3Dbr_news%26Category_2%3Dpolitica%26Tag%3Dgoverno%2Ccorrupcao%26nid%3D1758987%26user_id%3Dempty%26player_size%3Dlarge%26author_id%3D1227895%26country%3Dbr%26loggedin%3D0%26subscribe%3D_6waGANfMnFXezCjLcpo3u2fNwpcCrHYBfNmAE17rc9R67_K6ZjPv58iwEbG9XKnppX92yU4lgvXwr-KGo3cw976W2pWdY_B7O2mKayBeY0WG8jmvP3XhyFSOUfDXNF1feK7-GdvEvhLe6qJN9vjeDKE4hWwUqpioT1YpBBSTC9c1_%26channel_url%3Dhttps%253A%252F%252Ftest04.br.blastingnews.com%252Fnews%252Ftag%252Flula%252F%26channel%3Dlula%26isdebug%3D1%26adt%3Dlow%26alc%3DveryLow%26dlm%3DveryLow%26drg%3DveryLow%26hat%3DveryLow%26off%3DveryLow%26vio%3DveryLow%26fr%3D0&sdkv=h.3.211.3&sdki=3c0d&scor=3118406721027303&adk=2342911798&u_so=l&osd=2&frm=0&sdr=1&is_amp=0&adsid=AKyF-ldLZOi0oNM7vyLa2kUJA6c45Vt3WEu8AV0rr6IPDgJ9hTRYrEMcyD6douHl1Q&jar=2018-6-7-15&vpa=click&vpmute=0&mpt=videojs-ima&mpv=1.4.0&afvsz=200x200%2C450x50%2C468x60%2C480x70&ged=ve4_td16_tt14_pd16_la2000_er<IP_ADDRESS>_vi0.0.916.1905_vp0_ts1_eb16491

Unfortunately if they're working in the advanced sample I can't debug without being able to see your implementation. Do you have any sharable pages where you're able to replicate? If you can share with me, just not with everyone, you can email<EMAIL_ADDRESS>and ask them to pass the info along to me.

Ok, I managed to set up a test page.
I tried on a Linux Mint system with Chrome 67 and it works, but on Mac High Sierra with Safari 11.1 no ads are shown (this time the error is 1009: The response does not contain any valid ads).
https://videojs-test.herokuapp.com/index.html

Hi @shawnbuso,
I have the same issue described by @Manugal .....any update?

Hi there,
If you're seeing "1009: The response does not contain any valid ads" then the issue is with your ad serving set-up. I tested the page you sent and saw the same error, and when that error happened the VAST response was coming back empty. If you have a DoubleClick account manager, you can reach out to them for help trafficking ads. If not, I'd suggest posting on the DFP help forum, where someone should be able to figure out what's going on with your trafficking.
Thanks,
Shawn

Ok, I'll try on DFP forum. Thank you very much for your support.

Hi Shawn,
Maybe I figured out where the problem reside. We are requesting, most of the time, skippable ad from our ad server and I noticed that they are not supported on Safari/iOS yet.
Is there a way, from videojs-ima to request non-skippable ads?

@Manugal, if you are getting the 1005 error, you can enable skippable ads on iOS by adding the playsinline attribute to your video element and calling adsLoader.getSettings().setDisableCustomPlaybackForIOS10Plus(true);
Playback will no longer be supported in fullscreen but this will enable skippable ads for iOS.
For more information you can refer to the IMA SDK docs article here:
https://developers.google.com/interactive-media-ads/docs/sdks/html5/skippable-ads

Inspecting more deeply the problem, I noticed that with some ad requests I get a VAST error code 900. What that's from?

@Manugal the 900 error is a catch-all that IMA uses for non-VAST errors. Since error 1005 is IMA-specific and not part of the VAST spec, we report a 900 VAST error when that error occurs.

I hope it will be helpful page for someone.
Resolve VAST and IMA SDK errors

I have the same issue, its basically "flaky",  some times it errors some times it works.  Is it basically a wrong error code being thrown and should be juts no ad available?


Clarify arguements param on manual job starts.

Fixes #490.
The "Manually Starting a Job" section on http://mesos.github.io/chronos/docs/api.html recommends using the 'arguments' parameter, but doesn't mention that 'shell' must be set to false for it to work. This should be clarified/fixed.

Thanks! :+1:


Sort 0's and 1's in array in C++

@subhamtheone Kindly assign me this issue under Hacktoberfest 2022.

Sir , Kindly label my issue as Hacktoberfest-accepted. Sent from Mail for Windows From: Subham DasSent: 13 October 2022 08:53 PMTo: subhamtheone/HacktoberFest_2022Cc: Sahil Srivastava; AssignSubject: Re: [subhamtheone/HacktoberFest_2022] Sort 0's and 1's in array in C++ (Issue #36) Assigned #36 to @sahilsrivastava25.—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were assigned.Message ID<EMAIL_ADDRESS>


Generating a source map

Is there a way to generate a source map when parsing YAML strings? Similar to what https://github.com/epoberezkin/json-source-map does?
I have a YAML editor, which is converted to JSON using this library, which is then validated against a JSON schema using ajv, so I would like to track back the validation errors to a line and column number in the original YAML string, so I can highlight it in the editor.

No way. This parser is not suited for such thing.

@marjan-georgiev there is a listener property on the loader options that provides meta-data from the parser as it goes -- but you have to manually build up a sourcemap using that. I'm working on using that for a specific use case I have, but presently it's a bit of a hack and doesn't solve the general case. If I get a solid middleware that does that I'll share it and see if js-yaml wants to include it here. I could see both sides as to whether it's in scope for this project or not.

We're very interested in this as well - @1e1f did you ever end up getting it to work?

@1e1f not sure what you meant with using the listener. It's not documented but it's on the code as a valid option: https://github.com/nodeca/js-yaml/blob/master/lib/js-yaml/loader.js#L140
Anyway, I've tried a quick test: jsyaml.safeLoad(file, { listener: callback }) but nothing happened. Is that what you meant?


How to build and parse message with extension?

Now I have defined several messages as following
message MsgHead
{
	extensions 80 to max;

	enum Type
	{
		REQ = 1;
		RESP = 2;
	}
	required string version = 1;
	required Type type = 2;
}

message Req
{
	extend MsgHead
	{
		required Req msg = 81; // unique message extend number
	}

	optional string id = 1;
	optional string ip_address = 2;
}

message Resp
{
	extend MsgHead
	{
		required Resp msg = 82;
	}

	optional string id = 1;
	optional string time = 2;
}

And I try to build the message Req and Resp
var builder = ProtoBuf.loadProtoFile('msg.proto');
var Header = builder.build('MsgHead');
var req = builder.build('Req');
var resp = builder.build('Resp');

		var req = new req({
			"id": "50",
			"ip_address": "<IP_ADDRESS>",
		});
		var msg_head = new Header();
		msg_head.set('version', '1.0');
		msg_head.set('type', 1);
		msg_head.set('.Req.msg', req);

It seems the above codes is not correct, and I try to find some example codes but failed.
Could you please give me some example codes for that? Also with the message parsing.
Thanks in advance.

See: https://github.com/dcodeIO/ProtoBuf.js/wiki/Changes-in-ProtoBuf.js-3.5

I want to get the Req message through
var req = msg_head.Extensions[req.msg];

Some API like this.
Is there any API like that?

With the above codes, I get the following error as following
{ version: '1.0',   type: 1,   '.Req.msg': { id: '90', ip_address: '<IP_ADDRESS>' },   '.Resp.msg': null } { [Error: Missing at least one required field for Message .MsgHead: .MsgHead..Re sp.msg]

I've been able to construct with the same example on that link: Protocol Buffer Polymorphism:
var animal  = new Animal({ type: Animal.Type.cat });
var cat = new Cat({ declawed: true });

animal.set('.Animal.cat', cat);

console.log(animal);
/*
{ type: 1,
  '.Animal.cat': { declawed: 1 },
  '.Animal.dog': null }
*/

var buff = resp.encodeDelimited().toBuffer();

There is an error in the proto of the mentioned link.. Both extensions are required and I think they should be optional.


chore: add RHDH scripts and add them as techdocs

Description
Adding the patch-package and RHDH setup scripts along with their documentation.
Update the techdocs configurations to use showcase docs rather than the mock docs.
Which issue(s) does this PR fix

Fixes RHIDP-3629

PR acceptance criteria
Please make sure that the following steps are complete:

[ ] GitHub Actions are completed and successful
[ ] Unit Tests are updated and passing
[ ] E2E Tests are updated and passing
[x] Documentation is updated if necessary (requirement for new features)
[ ] Add a screenshot if the change is UX/UI related

How to test changes / Special notes to the reviewer

It seems the RHDH theme is making the header sizes way too small:

Looks good but we might want to address some of those sonarcloud issues. https://sonarcloud.io/project/issues?issueStatuses=OPEN%2CCONFIRMED&pullRequest=1486&types=VULNERABILITY&severities=BLOCKER%2CCRITICAL%2CMAJOR%2CMINOR&inNewCodePeriod=true&sinceLeakPeriod=true&id=janus-idp_backstage-showcase
@kim-tsao WDYT?


Close a PostgreSQLConnection's channel on deinit.

Otherwise, the connection is never claused, and PostgreSQL might complain about too many open connections.

thanks!