Add Logout button to Debug screen

Please verify the following:

[x] yarn test jest tests pass with new tests, if relevant

Describe your PR

Closes #2215
Moves Debug tab to the fourth position on the tab bar
Adds logout button to the Debug screen
Refactors logout function to store action for Welcome and Debug screen usage

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


chore/upgrade-ember-get-config-dependency-for-deprecation-fix

This PR bumps the minimum required version of ember-get-config to 0.3.0. This is required as 0.2.4 uses ember-cli-babel@6 which throws deprecation warnings when consumers of this project use Ember 3.28 (didn't drill into which specific version adds this deprecation warning).
This is the deprecation warning this PR fixes
WARNING: [DEPRECATION] [DEPRECATION] Usage of the Ember Global is deprecated. You should import the Ember module or the specific API instead.

See https://deprecations.emberjs.com/v3.x/#toc_ember-global for details.

Usages of the Ember Global may be caused by an outdated ember-cli-babel dependency. The following steps may help:

* Upgrade the following addons to the latest version:
  * ember-cli-mirage
  ...
### Important ###

In order to avoid repeatedly showing the same deprecation messages, no further deprecation messages will be shown for usages of the Ember Global until ember-cli-babel is upgraded to v7.26.6 or above.

To see all instances of this deprecation message, set the `EMBER_GLOBAL_DEPRECATIONS` environment variable to "all", e.g. `EMBER_GLOBAL_DEPRECATIONS=all ember test`.

### Details ###

Prior to v7.26.6, ember-cli-babel sometimes transpiled imports into the equivalent Ember Global API, potentially triggering this deprecation message indirectly, even when you did not observe these deprecated usages in your code.

The following outdated versions are found in your project:

  *<EMAIL_ADDRESS>    * Depends on<EMAIL_ADDRESS>    * Added by<EMAIL_ADDRESS>
Note: Addons marked as "Dormant" does not appear to have any JavaScript files. Therefore, even if they are using an old version ember-cli-babel, they are unlikely to be the culprit of this deprecation and can likely be ignored.

There was some related conversation over on https://github.com/miragejs/ember-cli-mirage/pull/2227#issuecomment-972557061 to this as well.
Functionally nothing should really change here besides ember-cli-mirage requiring a slightly newer version of the dependency but that was already an allowed one so not a biggie imo.

@rahulk94 the actual version should be determined by the consumer in the consuming app and restricting only to higher version of the addon makes it much harder to upgrade all the addons should any other addon use ember-get-config 0.2.*
In fact, it's better to loosen such restrictions to broaden support ranges and not force uses to resort to resolutions.

So are you saying that  what is was before "^0.2.4 || ^0.3.0" is what it should be?  Then the consumer add would add "ember-get-config": "^0.3.0", to its package.json?
I think the key might have been the update to the yarn.lock only.

Part of the problem here tbh is that ember-get-config hasn't had a 1.x release so the ^ doesn't end up working properly 🥲  (its coming after it gets embroider support https://github.com/mansona/ember-get-config/issues/21).

In fact, it's better to loosen such restrictions to broaden support ranges and not force uses to resort to resolutions.

I would think that tightening restrictions makes sense when resolving deprecations though as you want to force people to use newer stuff? Or were you getting more at the fact that this should instead be now ^0.3.0 || ^0.4.0 || ^0.5.0?

@rahulk94 I personally think this should be "^0.2.4 || ^0.3.0 || ^0.4.0 || ^0.5.0" or for brevity "0.2.4 - 0.5.0 just to give the users opportunity to specify any valid version.
As an example, we are stuck on "ember-get-config": "^0.2.4" due to another addon depending on ^0.2.4 and we need some major work to do for major version bump of that dependency so just bear for the time being with ^0.2.4 and all the noise of deprecations.
but in case any other dependency would restrict to ^0.3.0, it would make things quite difficult as we would need to upgrade bunch of things at the same time (just a note, we use https://github.com/ember-template-lint/ember-template-lint in our CI).
E.g. if ember-cli-mirage had "ember-get-config": "0.2.4 - 0.5.0"and in your app you have"ember-get-config": "0.2.4 - 0.5.0"` - then you would simply get the latest version.

"0.2.4 - 0.5.0" works for me.
@SergeAstapov or @cah-briangantzler do either of you know how to trigger the CI builds on this project? I can bump and test it locally / integration test with an app but yea I'm not sure how the Travis builds are done here (or do we need to move to Actions since I heard Travis ain't free anymore or have significantly cut back on their free tier?)

The travis builds no longer work. We are working on a PR to get the tests running using github actions.
MirageJS is currently at
"miragejs": "^0.1.31"

assuming we should be changing that to
"miragejs": "0.1.31 - 0.1.42"

as well

Dam it Travis 😢  I thought that was the case. Sweet well I see you're doing some stuff in other PRs so I'll park this for the moment but ping me and I can rebase this work on to master after the GitHub actions work has been done @cah-briangantzler (or any sooner if you think it makes sense). Btw ty for taking ownership of this project, very much appreciated.

You going to be updating this PR to "0.2.4 - 0.5.0"
As of yet I still dont have the authority to publish (It was all automated via travis 😞   ), so this still may set a while.

You going to be updating this PR to "0.2.4 - 0.5.0"

Yep I'll update it to this

Is this a breaking change?
I have a friend with an app in 2.18 using mirage. If he is using ember-get-config as a transitive dependency, upgrading could get him 0.5.0 which states  is dropped support for < 3.4 https://github.com/mansona/ember-get-config/releases/tag/v0.5.0 it would break his build. The fix is for them to add ember-get-config 0.4.0 or less to their package.json.
But since it requires more than just an update to ember-cli-mirage, does this merged PR represent a breaking change when we do the next release?

@cah-briangantzler it should not. the package manager should be able to properly resolve to the version of ember-get-config that already exists in the tree


Time stamp changes

TimeStamp is now stored as a Date. It encodes/decodes to a String with date format "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"

This looks great! One tweak then let's get this added.


⚠ Jenkins Plugins Artifactory has degraded performance

In db5924e, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 1332 ms

Resolved: Jenkins Plugins Artifactory performance has improved in e822bf5 after 12 minutes.


out of bound fix

Proposal
A) A16 Conclusion For the fix out of bound problem - this problem has two triggers - the experiment also illustrates the principle of prometheus -

When prometheus is running - the data will be stored in the /data/prome_db directory - wal is the temporary storage record file of the data collected by the tsdb head from the exporter - (the situation that triggers the bug - such as modifying the system time from 2023-03-22 To the future time 2024-03-22, the timestamp of these new indicator data will start from 2024-03-22 and be recorded in the wal or checkpoint file under wal)
When prometheus runs longer than 2 hours, it will write the tsdb head memory data to the permanent disk block block file - for example, the timestamp of the indicator data in the block is the time in the next 1 year - 2024-03-21 20:00: 00 Therefore - when prometheus starts - the memory database tsdb head requires that the newly added timestamp must be greater than this - otherwise, an out of bound error will be reported
-/data/prome_db/01HSHD0NXQKH1Y4V0AZ8J2V69P 2024-03-21 18:00:01 +0000 UTC 2024-03-21 20:00:00 +0000 UTC 1h59m58.514s
Solution - it is a tool - stop promehteus service - delete /data/prome_db/wal, /data/prome_db/ disk block block if the timestamp is newer than the current now() time, delete it - for example 01HSHD0NXQKH1Y4V0AZ8J2V69P - restart promethes

B) of course you can provide patch and it's complex solution
to drop the head wal of series and samples in future.  and patch for remove tsdb block which in future tine
C) simple solution and script to fix out of bound
import os
import re
import shutil
import subprocess
import time
import os
import subprocess
import time
import shutil
from datetime import datetime
import argparse
import re

def delete_newer_blocks(prometheus_data_path):
    # promtool 命令和数据目录
    promtool_cmd = "promtool"
    blocks_path = prometheus_data_path

    # 获取当前时间戳 (毫秒)
    current_timestamp = int(time.time() * 1000)

    # 执行 promtool 命令，获取 block 列表
    cmd = [promtool_cmd, "tsdb", "list", prometheus_data_path]
    print(f"Executing command: {' '.join(cmd)}")
    cmd_output = subprocess.check_output(cmd).decode('utf-8')

    # 解析命令输出，逐行处理
    for line in cmd_output.splitlines():
        # 跳过标题行
        if line.startswith("BLOCK") or line.startswith("====="):
            continue

        # 分割行数据
        fields = line.split()

        # 获取 block 目录、min 时间戳和 max 时间戳
        block_dir = fields[0]
        min_timestamp = int(fields[1])
        max_timestamp = int(fields[2])

        # 将时间戳转换为可读格式
        min_time_readable = datetime.fromtimestamp(min_timestamp / 1000).strftime('%Y-%m-%d %H:%M:%S')
        max_time_readable = datetime.fromtimestamp(max_timestamp / 1000).strftime('%Y-%m-%d %H:%M:%S')

        # 输出 block 目录、时间戳信息和可读时间格式
        print(f"Block directory: {block_dir}, Min time: {min_timestamp} ({min_time_readable}), Max time: {max_timestamp} ({max_time_readable})")

        # 如果 max 时间戳比当前时间新，删除 block 目录
        if max_timestamp > current_timestamp:
            block_path = os.path.join(blocks_path, block_dir)
            print(f"Removed newer block: {block_path}")
            shutil.rmtree(block_path)
        else:
            print(f"Keeping block: {block_dir}")

parser = argparse.ArgumentParser()
parser.add_argument('--storage_path', default=None, help='Prometheus database storage directory.')
args = parser.parse_args()

if args.storage_path:
    storage_path = args.storage_path
else:
    with open('/etc/default/prometheus', 'r') as f:
        contents = f.read()

    pattern = r'storage\.tsdb\.path=(\S+)'
    match = re.search(pattern, contents)
    if match:
        storage_path = match.group(1)
        print(storage_path)  # 输出 /data/prome_db
    else:
        print('未找到 storage.tsdb.path')

# 停止 prometheus 服务
print("停止 prometheus 服务")
subprocess.run(["systemctl", "stop", "prometheus"])

WAIT_TIME = 5
print(f"sleep {WAIT_TIME} seconds")
time.sleep(WAIT_TIME)

# 删除 wal 目录
print("删除 wal 目录")
wal_path = os.path.join(storage_path, "wal")
if os.path.exists(wal_path):
    shutil.rmtree(wal_path)

# 删除 chunks_head 目录
print("删除 chunks_head 目录")
chunks_head_path = os.path.join(storage_path, "chunks_head")
if os.path.exists(chunks_head_path):
    shutil.rmtree(chunks_head_path)

# 删除 lock 文件
print("删除 lock 文件")
lock_file = os.path.join(storage_path, "lock")
if os.path.isfile(lock_file):
    os.remove(lock_file)

# 删除 queries.active 文件
print("删除 queries.active 文件")
queries_active_file = os.path.join(storage_path, "queries.active")
if os.path.isfile(queries_active_file):
    os.remove(queries_active_file)

print("删除 未来时间戳的tsdb block")
delete_newer_blocks(storage_path)

#启动 prometheus 服务
print("启动 prometheus 服务")
subprocess.run(["systemctl", "start", "prometheus"])

This appears to be a suggestion to fix some problem.
I'm sorry but I did not understand it.
Prometheus has recently added "out-of-order" support, which also allows you to write data that previously would have errored as "out of bounds".

Following is example of out of bound and the script fix it
1）for example the time of system where prometheus run is not current time
[root@hs32 ~]# date
Tue Apr 25 00:48:42 CST 2023
2) change system time to current time and prometheus will out of bound error
[root@hs32 ~]# date -s '2023-04-24 16:44:00'
Mon Apr 24 16:44:00 CST 2023
[root@hs32 ~]#
3) the script fix the out of bound
[root@hs32 ~]# python3 ./prometheus_out_of_bound_fix.py
/data/prome_db
停止 prometheus 服务
sleep 5 seconds
删除 wal 目录
删除 chunks_head 目录
删除 lock 文件
删除 queries.active 文件
删除 未来时间戳的tsdb block
Executing command: promtool tsdb list /data/prome_db
Block directory: 01GS0PR2RBBFBQHHTAVFVZZ7ZV, Min time:<PHONE_NUMBER>985 (2023-02-02 15:39:59), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GS0PR2RBBFBQHHTAVFVZZ7ZV
Block directory: 01GTMV9ACZAXG9VZSYV866HS8R, Min time:<PHONE_NUMBER>486 (2023-02-11 20:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GTMV9ACZAXG9VZSYV866HS8R
Block directory: 01GW8ZTGFEY4YZX9HXMAQEEK0R, Min time:<PHONE_NUMBER>486 (2023-03-04 02:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GW8ZTGFEY4YZX9HXMAQEEK0R
Block directory: 01GXX4BNKTY30HR3QVAFJ5XGGN, Min time:<PHONE_NUMBER>486 (2023-03-24 08:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GXX4BNKTY30HR3QVAFJ5XGGN
Block directory: 01GYEGHDZ97H1QSJ69AK58RC8P, Min time:<PHONE_NUMBER>486 (2023-04-13 14:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYEGHDZ97H1QSJ69AK58RC8P
Block directory: 01GYM9YQB1MWMF9QG3S27FE2J1, Min time:<PHONE_NUMBER>486 (2023-04-20 08:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYM9YQB1MWMF9QG3S27FE2J1
Block directory: 01GYP7QJ6E1KCE0PTBS5ZM089Q, Min time:<PHONE_NUMBER>486 (2023-04-22 14:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYP7QJ6E1KCE0PTBS5ZM089Q
Block directory: 01GYR5H2SGV5SKB9QA452P3XWY, Min time:<PHONE_NUMBER>486 (2023-04-23 08:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYR5H2SGV5SKB9QA452P3XWY
Block directory: 01GYRT486FQ0KDMP64B09RGNVA, Min time:<PHONE_NUMBER>486 (2023-04-24 02:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYRT486FQ0KDMP64B09RGNVA
Block directory: 01GYSX3NR3WRE9VW90GNG7XBDV, Min time:<PHONE_NUMBER>000 (2023-04-24 08:00:00), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYSX3NR3WRE9VW90GNG7XBDV
Block directory: 01GYSX3NEDQ31WH28NZNY9X88C, Min time:<PHONE_NUMBER>486 (2023-04-24 14:00:01), Max time:<PHONE_NUMBER>000 (202
Keeping block: 01GYSX3NEDQ31WH28NZNY9X88C
启动 prometheus 服务

to explain you dont't understand and I add english comment for the code and maybe chinese comment is confused
import os
import re
import shutil
import subprocess
import time
import os
import subprocess
import time
import shutil
from datetime import datetime
import argparse
import re

def delete_newer_blocks(prometheus_data_path):
# promtool command and data directory
# promtool 命令和数据目录
promtool_cmd = "promtool"
blocks_path = prometheus_data_path
# Get the current timestamp (milliseconds)
# 获取当前时间戳 (毫秒)
current_timestamp = int(time.time() * 1000)

# Execute the promtool command to get the block list
# 执行 promtool 命令，获取 block 列表
cmd = [promtool_cmd, "tsdb", "list", prometheus_data_path]
print(f"Executing command: {' '.join(cmd)}")
cmd_output = subprocess.check_output(cmd).decode('utf-8')

# Parse the command output and process it line by line
# 解析命令输出，逐行处理
for line in cmd_output.splitlines():
    # Skip the header line
    # 跳过标题行
    if line.startswith("BLOCK") or line.startswith("====="):
        continue

    # Split the line data
    # 分割行数据
    fields = line.split()

    # Get the block directory, min timestamp, and max timestamp
    # 获取 block 目录、min 时间戳和 max 时间戳
    block_dir = fields[0]
    min_timestamp = int(fields[1])
    max_timestamp = int(fields[2])

    # Convert timestamps to readable format
    # 将时间戳转换为可读格式
    min_time_readable = datetime.fromtimestamp(min_timestamp / 1000).strftime('%Y-%m-%d %H:%M:%S')
    max_time_readable = datetime.fromtimestamp(max_timestamp / 1000).strftime('%Y-%m-%d %H:%M:%S')

    # Print the block directory, timestamp information, and readable time format
    # 输出 block 目录、时间戳信息和可读时间格式
    print(f"Block directory: {block_dir}, Min time: {min_timestamp} ({min_time_readable}), Max time: {max_timestamp} ({max_time_readable})")

    # If the max timestamp is newer than the current time, delete the block directory
    # 如果 max 时间戳比当前时间新，删除 block 目录
    if max_timestamp > current_timestamp:
        block_path = os.path.join(blocks_path, block_dir)
        print(f"Removed newer block: {block_path}")
        shutil.rmtree(block_path)
    else:
        print(f"Keeping block: {block_dir}")

parser = argparse.ArgumentParser()
parser.add_argument('--storage_path', default=None, help='Prometheus database storage directory.')
args = parser.parse_args()
if args.storage_path:
storage_path = args.storage_path
else:
with open('/etc/default/prometheus', 'r') as f:
contents = f.read()
pattern = r'storage\.tsdb\.path=(\S+)'
match = re.search(pattern, contents)
if match:
    storage_path = match.group(1)
    print(storage_path)  # Output /data/prome_db
    print("输出 /data/prome_db")
else:
    print('Storage.tsdb.path not found')
    print('未找到 storage.tsdb.path')

Stop the prometheus service

停止 prometheus 服务
print("Stopping prometheus service")
print("停止 prometheus 服务")
subprocess.run(["systemctl", "stop", "prometheus"])
WAIT_TIME = 5
print(f"Sleeping {WAIT_TIME} seconds")
print(f"sleep {WAIT_TIME} seconds")
time.sleep(WAIT_TIME)
Delete the wal directory
删除 wal 目录
print("Deleting wal directory")
print("删除 wal 目录")
wal_path = os.path.join(storage_path, "wal")
if os.path.exists(wal_path):
shutil.rmtree(wal_path)
Delete the chunks_head directory
删除 chunks_head 目录
print("Deleting chunks_head directory")
print("删除 chunks_head 目录")
chunks_head_path = os.path.join(storage_path, "chunks_head")
if os.path.exists(chunks_head_path):
shutil.rmtree(chunks_head_path)
Delete the lock file
删除 lock 文件
print("Deleting lock file")
print("删除 lock 文件")
lock_file = os.path.join(storage_path, "lock")
if os.path.isfile(lock_file):
os.remove(lock_file)
Delete the queries.active file
删除 queries.active 文件
print("Deleting queries.active file")
print("删除 queries.active 文件")
queries_active_file = os.path.join(storage_path, "queries.active")
if os.path.isfile(queries_active_file):
os.remove(queries_active_file)
print("Deleting TSDB blocks with future timestamps")
print("删除 未来时间戳的tsdb block")
delete_newer_blocks(storage_path)
Start the prometheus service
启动 prometheus 服务
print("Starting prometheus service")
print("启动 prometheus 服务")
subprocess.run(["systemctl", "start", "prometheus"])

This appears to be a suggestion to fix some problem. I'm sorry but I did not understand it.
Prometheus has recently added "out-of-order" support, which also allows you to write data that previously would have errored as "out of bounds".

so I don't know my script for fix out of bound is valuable ?
and if it's useful and I don't know where to put the script ?
I don't if you have similar patch or script solution for out of bound ?

OK I think I get a better idea where your problem arises - somehow you got future timestamps into TSDB, and then it won't accept data older than that.

the future time 2024-03-22

Do you know how this happened?  Typically Prometheus is used to ingest data "now".

This happen typically , ntp change the system time or manual change system time to future time (for example one day in future)
and prometheus tsdb begin ingest data of future timestame from scrape of exporter and run for more than 2 hours , for examples run few days
change system time back to now and out of bound happen

10 Experiment - I modified the system time to one year later - 2024 - performed a night of prometheus data writing - found that the disk database file 01HSHD0NXQKH1Y4V0AZ8J2V69P has been generated - then I need to dump the timestamps of indicators in these files - and then set the system time The modification will be in the normal time of 2023 - then it should trigger an out of bound error - then it is expected that 01HSHD0NXQKH1Y4V0AZ8J2V69P will not affect the tsdb head, and you only need to delete wal and chunks_head to restart prometheus and then import the time stamp into the tsdb head without the timestamp will not trigger out of bound errors
[root@hs25 prometheus_related]# promtool tsdb list -r /data/prome_db
BLOCK ULID                  MIN TIME                       MAX TIME                       DURATION       NUM SAMPLES  NUM CHUNKS   NUM SERIES   SIZE
01HSHKWG3KEGMM6QYVZH8SGZBA  2024-03-21 07:03:34 +0000 UTC  2024-03-21 18:00:00 +0000 UTC  10h56m25.094s  4448473      34754        3788         10MiB503KiB218B
01HSHD0NXQKH1Y4V0AZ8J2V69P  2024-03-21 18:00:01 +0000 UTC  2024-03-21 20:00:00 +0000 UTC  1h59m58.514s   911520       7596         3788         2MiB385KiB543B
01HSHKWD5QS2V5579H2CTPX4CR  2024-03-21 20:00:01 +0000 UTC  2024-03-21 22:00:00 +0000 UTC  1h59m58.514s   911520       7596         3788         2MiB438KiB914B
01HSHTR4DQ5C10CY8K32G9WJT8  2024-03-21 22:00:01 +0000 UTC  2024-03-22 00:00:00 +0000 UTC  1h59m58.514s   911520       7596         3788         2MiB323KiB702B
2 Then modify the system time to the correct time - date -s '2023-03-22 09:54:00' - produce an out of bound error

my above expirement comment is chinese and I just translate with google to english and maybe comment not accureate

OK, I think I understand, once you get some data with timestamps way off the current time, you can't get Prometheus to accept more data at the current time.
We could document this better, and add a possible recovery procedure to delete the head and WAL data as you suggest.
However, the new "out-of-order sample" feature will allow you to continue working without deleting data.

No further updates; closing.


HPA enablement for grafana

Bug description
I need to enable HPA configuration for grafana,prometheus, telemetry via istio. Can anybody please help me with the configuration that needs to be passed in values.yaml ?
Expected behavior
Enablement of HPA in grafana,prometheus, telemetry via installing istio
Steps to reproduce the bug
Normal helm command to install istio
Version (include the output of istioctl version --remote and kubectl version)
v2.11
How was Istio installed?
Normal helm command
Environment where bug was observed (cloud vendor, OS, etc)
This is not Bug. More of information that is required from my side.
Additionally, please consider attaching a cluster state archive by attaching
the dump file to this issue.

A quick grep shows we only have HPA for mixer (that is telemetry, what you want), ingress/egress, and pilot.
For telemetry, you should be able to enable it with  --set mixer.telemetry.autoscaleEnabled=true --set mixer.telemetry.autoscaleMax=5 --set mixer.telemetry.autoscaleMin=1. Telemetry is already enabled by default I think though.
For the other ones you want, you can easily just add your own, there is no need for it to be tied to the installer. See the docs here if you need help https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/. Or run kubectl get hpa -n istio-system and check out the existing ones as a reference.

A quick grep shows we only have HPA for mixer (that is telemetry, what you want), ingress/egress, and pilot.
For telemetry, you should be able to enable it with --set mixer.telemetry.autoscaleEnabled=true --set mixer.telemetry.autoscaleMax=5 --set mixer.telemetry.autoscaleMin=1. Telemetry is already enabled by default I think though.
For the other ones you want, you can easily just add your own, there is no need for it to be tied to the installer. See the docs here if you need help https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/. Or run kubectl get hpa -n istio-system and check out the existing ones as a reference.

Hi @howardjohn ,
Can you please let me know how can i do with the installer. Presently i just use the command helm install    istio-f values.yaml. How can i inject the auto scaling component configuration in the chart which is downloaded at the run time.

There is currently no way to get a HPA for grafana or prometheus with the installer. As I mentioned before you can easily add your own. For example:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prometheus
  namespace: istio-system
spec:
  maxReplicas: 2
  minReplicas: 1
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: prometheus
  targetCPUUtilizationPercentage: 80

There is currently no way to get a HPA for grafana or prometheus with the installer. As I mentioned before you can easily add your own. For example:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: prometheus
  namespace: istio-system
spec:
  maxReplicas: 2
  minReplicas: 1
  scaleTargetRef:
    apiVersion: extensions/v1beta1
    kind: Deployment
    name: prometheus
  targetCPUUtilizationPercentage: 80

Hi @howardjohn ,
Thanks for the reply. Is the process to implement this is like:
a) First I install the grafana and prometheus through the installer.
b) Then convert theabove HorizontalPodAutoscaler script to autoscaler.yaml and then apply through kubectl apply -f autoscaler.yaml right ?

yes
On Fri, Apr 26, 2019, 11:35 PM hitesh1907nayyar<EMAIL_ADDRESS>wrote:

There is currently no way to get a HPA for grafana or prometheus with the
installer. As I mentioned before you can easily add your own. For example:
apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata:
name: prometheus
namespace: istio-systemspec:
maxReplicas: 2
minReplicas: 1
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: prometheus
targetCPUUtilizationPercentage: 80
Hi @howardjohn https://github.com/howardjohn ,
Thanks for the reply. Is the process to implement this is like:
a) First I install the grafana and prometheus through the installer.
b) Then convert theabove HorizontalPodAutoscaler script to autoscaler.yaml
and then apply through kubectl apply -f autoscaler.yaml right ?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/issues/13617#issuecomment-487260219, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAEYGXMPLN3NLXKZZCAC5V3PSPX4NANCNFSM4HIPHETQ
.

Hi @howardjohn
Thanks for all your help.
In addition , can you please also help in let me know as how can i reconfigure hpa setting for telemetry using values.yaml. Presently it is having max 5 pods . I need to increase to 20. The method you mentioned is using set values. I need to have done this configuration through values.yaml

https://istio.io/docs/reference/config/installation-options/#mixer-options set mixer.telemetry.autoscaleMax

yes
…
On Fri, Apr 26, 2019, 11:35 PM hitesh1907nayyar @.***> wrote: There is currently no way to get a HPA for grafana or prometheus with the installer. As I mentioned before you can easily add your own. For example: apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: name: prometheus namespace: istio-systemspec: maxReplicas: 2 minReplicas: 1 scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: prometheus targetCPUUtilizationPercentage: 80 Hi @howardjohn https://github.com/howardjohn , Thanks for the reply. Is the process to implement this is like: a) First I install the grafana and prometheus through the installer. b) Then convert theabove HorizontalPodAutoscaler script to autoscaler.yaml and then apply through kubectl apply -f autoscaler.yaml right ? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#13617 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEYGXMPLN3NLXKZZCAC5V3PSPX4NANCNFSM4HIPHETQ .

Hi @howardjohn ,
Thanks for your reply. In additon to this i need to increase the cpu request for istio telemetry. How to acheive that. If i see the link  that you shared above then mixer.telemetry.resources.requests.cpu has 1000m but when i see my istio-telemetry POD using describe it shows me 10m
Ready:          True
Restart Count:  0
Requests:
cpu:     10m
Liveness:  http-get http://:9093/version delay=5s timeout=1s period=5s #success=1 #failure=3
Environment:
How to increase the cpu request in the configuration ?

yes
…
On Fri, Apr 26, 2019, 11:35 PM hitesh1907nayyar @.***> wrote: There is currently no way to get a HPA for grafana or prometheus with the installer. As I mentioned before you can easily add your own. For example: apiVersion: autoscaling/v1kind: HorizontalPodAutoscalermetadata: name: prometheus namespace: istio-systemspec: maxReplicas: 2 minReplicas: 1 scaleTargetRef: apiVersion: extensions/v1beta1 kind: Deployment name: prometheus targetCPUUtilizationPercentage: 80 Hi @howardjohn https://github.com/howardjohn , Thanks for the reply. Is the process to implement this is like: a) First I install the grafana and prometheus through the installer. b) Then convert theabove HorizontalPodAutoscaler script to autoscaler.yaml and then apply through kubectl apply -f autoscaler.yaml right ? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#13617 (comment)>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAEYGXMPLN3NLXKZZCAC5V3PSPX4NANCNFSM4HIPHETQ .

Hi @howardjohn ,
Thanks for your reply. In additon to this i need to increase the cpu request for istio telemetry. How to acheive that. If i see the link that you shared above then mixer.telemetry.resources.requests.cpu has 1000m but when i see my istio-telemetry POD using describe it shows me 10m
Ready: True
Restart Count: 0
Requests:
cpu: 10m
Liveness: http-get http://:9093/version delay=5s timeout=1s period=5s #success=1 #failure=3
Environment:
How to increase the cpu request in the configuration ?

@howardjohn
I am using this values.yaml for reference:
gateways:
istio-ingressgateway:
ports:
- port: 80
targetPort: 80
name: http2
nodePort: 31381
- port: 443
name: https
nodePort: 31390
mixer:
telemetry:
autoscaleMax:10
mixer:
telemetry:
resources:
requests:
cpu: 2000m
servicegraph:
enabled: true
grafana:
enabled: true
resources:
requests:
cpu: 100m
prometheus:
enabled: true
resources:
requests:
cpu: 100m
tracing:
enabled: true
pilot:
traceSampling: 100.0

Are you using Istio 1.0.x? If so you need to follow https://archive.istio.io/v1.0/docs/reference/config/installation-options/.
Note there are no configurable requests in the 1.0.x release it looks like.

Are you using Istio 1.0.x? If so you need to follow https://archive.istio.io/v1.0/docs/reference/config/installation-options/.
Note there are no configurable requests in the 1.0.x release it looks like.

Hi @howardjohn
Thanks for the reply. I was using 1.0.4 istio . I was able to resolve the issue. But now the problem is something else. I have enabled hpa for prometheus and grafana using kubectl. Even though it ran sucessfully as soon as I see the grafana dashboards then the chart appears to show inconsistent trends. All the graphs shows distorted results on every referesh. Can you suggest any approach to solve this ?

Best way to debug would be to run the same queries in Prometheus and see if those are consistent, so we can see if issue is in prom of grafana

Let's move this to a more appropriate location: discuss.istio.io.
I'm going to close this issue. Please follow up for support on the forums.


add hostname to output from app_env_wrapper

Fixes #
Contribution checklist
Aim to have all relevant checks ticked off before merging. See the developer's guide for more detail.

[ ] Documentation has been updated to reflect change.
[ ] New code has tests, and affected old tests have been updated.
[x] All tests and CI checks pass.
[ ] Added an entry to the top of docs/source/changelog.rst
[ ] Conda lock files have been updated if dependencies have changed.
[ ] Said whether Generative AI, such as GitHub Copilot, has been used in this PR.
[x] Marked the PR as ready to review.

Trivial change to add which machine/node app_env_wrapper is running in. This will help troubleshooting, particularly when the tasks are submitted via slurm/psb, without having to get the job-id and find the running node(s) from there.

Closing PR as not required.


Progress Tracker Bar Added

Key Features
Task Management: Users can add tasks, mark them as completed, and see their progress.
Progress Tracking: A dynamic progress bar reflects the percentage of completed tasks.
Responsive Design: The layout is designed using Tailwind CSS for a modern and responsive user experience.
Changes Made
Developed the HTML structure for tasks and calendar sections.
Styled components using Tailwind CSS for a clean look.
Added JavaScript functionality to handle task addition and progress updates.

I accepted previous pr , please resolve conflicts

Sure ,I'll do it As soon as possible..
Sent from Outlook for Androidhttps://aka.ms/AAb9ysg

From: Avinash Singh @.>
Sent: Friday, October 25, 2024 9:09:06 PM
To: avinash201199/To-Do-List @.>
Cc: Trishashetty11 @.>; Author @.>
Subject: Re: [avinash201199/To-Do-List] Progress Tracker Bar Added (PR #345)
I accepted previous pr , please resolve conflicts
—
Reply to this email directly, view it on GitHubhttps://github.com/avinash201199/To-Do-List/pull/345#issuecomment-2438153027, or unsubscribehttps://github.com/notifications/unsubscribe-auth/BFG3YLRBFGOPG2CL6KWM32DZ5JQZVAVCNFSM6AAAAABQRR55SGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMZYGE2TGMBSG4.
You are receiving this because you authored the thread.Message ID: @.***>

@avinash201199 I've Resolved the Conflicts.

@avinash201199 Please Merge this PR

Thank you for your contribution :)

reverting this pr as css file is removed


Trying out maestro-ng, getting: ConnectionError: ('Connection aborted.', BadStatusLine("''",))

Hi, I'm trying out maestro but having some trouble:
Here's my test maestro file:
name: APP_NAME

ships:
  vm:
    ip: xx.xx.xx.xx
    ssh_tunnel:
      user: root
      key: /path/to/my/key

services:
  wp:
    image: tutum/wordpress
      instances:
        wp:
          ship: vm

I've tried running maestro pull bug get ConnectionError: ('Connection aborted.', BadStatusLine("''",))
The error seems to come from docker-py. I'm running docker 1.7.1. Anyone experiencing similar issues?
Any help would be very appreciated.

Can you try without using an SSH tunnel? BadStatusLine is something that comes out of python-requests, so somehow the HTTP request made to the Docker daemon didn't work, so the first thing to try is a more "direct" connection to the daemon.

No response; closing.


could you make 'user-agent' as a parameter in  Market.fetch

I just found some platform , e.g. huobi pro, will forbid the current user-agent ‘ccxt/1.1.111 (+https://github.com/kroitor/ccxt) Python/3.6.1’ .
maybe it's better to give user-agent a default value if user doesn't specify any ua.

Thanks for opening this issue! We will make it optional, very soon.

This feature is on the way, building and testing now. Should be ready in 20-30 minutes.

Ok, this fix is ready now and available in the most recent version of the ccxt library. It will still set the User-Agent, but you can turn it off now, or redefine it as you wish. It is now optional.
@HaoH , I know you're using Python, therefore you need to update to version 1.1.126 from PyPI and after that you can change your User-Agent as written in the Manual:
import ccxt

huobi = ccxt.huobi ({
    'verbose': True,     # to see if a User-Agent is present or not
    'userAgent': False,  # False, None or an empty string '' to turn off
})

huobi2 = ccxt.huobi ({
    'verbose': True,     # to see if a User-Agent is present or not
    'userAgent': 'HaoH', # a non-empty string to redefine the default User-Agent
})

We would be thankful if you test and report here, whether this fix helped you or not.
I am closing this for now. If you still have problems connecting to Huobi even with the User-Agent switched off, then feel free to reopen this issue or open a new one. Thanks for your feedback!


Should accept a single file as input.

Currently, when a file is passed as an input argument, it writes an empty CSV.
It should checksum the file and write that to the CSV.

Addressed in #19


feat(editor): add refactoring.nvim

More on:
https://github.com/ThePrimeagen/refactoring.nvim#features

@rubiin I made the suggestions on the github site and thus when I pressed <Tab> it indented with 4 spaces instead of 2. Maybe you would like to do the indentation with 2 spaces for conformity.

@rubiin I made the suggestions on the github site and thus when I pressed <Tab> it indented with 4 spaces instead of 2. Maybe you would like to do the indentation with 2 spaces for conformity. Sorry about that.

fixed

Thanks!


DOCS: Improve docs related to text exclusion

Improves #185 by documenting things, but there are likely better
fixes later.
Does not fix that issue, just makes it more clear in the short term.
Review: worth a read to make sure it isn't too confusing.

I have updated this docs change with the current state: automatic prompt exclusion is off, how to turn it on, how it conflicts with the other settings.  If this is merged, I think you can make a release.  Well, I guess technically this wasn't a requirement...

This was helpful to me, thanks @rkdarst


Update logic into services

Fairly straight forward change that abstract away the need for services to store raw config, this is done for them as long as they are using our methods, if not, they will need to manually calls the needed calls we are doing (which is not a lot):
The summary is:

Each service will have a "hidden" (abstracted) storage for the raw service config, and helpers for that can be found in: packages/service-utils/src/raw_config.rs
The above is not magic, it is a regular Item storage for the raw service config, our helpers are using that storage to store and get the service config, on instantiation we call the save_raw_service_config which can be found here: packages/service-base/src/lib.rs
For update its a little bit more complex (not much), we created a trait so all optional service configs can implement, this is basically to expose a helper function: OptionalServiceConfigTrait can be found here:  packages/service-utils/src/lib.rs
Our macro, implements this trait and the update_raw function, we need to remember that we are talking about OptionalServiceConfig here, so everything is an option, so what we do is, we get the saved serviceConfig that is in storage, we loop over all fields checking if it is Some, if it is, we are updating the ServiceConfig with the value in it, and save the it back to storage.
This allows us to update the raw service config regardless of what the checked config is.
All is left to do is to call this update_raw method to actually run it, we are doing it in the updateConfig execute message: packages/service-base/src/lib.rs
The last thing to do is to expose a query that we can query this raw ServiceConfig, for that I reused the extend macro we have in the covenant, so now a service can use a macro to get the full list of queries he must implement for a service to be a valence service, there is also a helper to get the raw ServiceConfig so no logic need to be done for the service programmer to implement them, can be as east as copy and paste. (probably can even be handled as a service utils helper)

One thing I didn't like is how each service must implement the same default for our queries, I hack I found that will allow us to set this default is by creating our own query function much like we have for execute, the QueryMsg we take from the service, we turn into Binary, and try to parse into our own BaseQueryMsg which will hold the queries we have, so if the service doesn't implement its own custom queries, and we can't parse the msg into our required queries, we fail, this is hackish but can provide a neat way for us to provide a default for service instead of them doing it by themselves.
Also in the macro I also added ignore_optional, so if a ServiceConfig has a field that we don't want to update, we can add this attribute on top of it, for example:
pub struct ServiceConfig {
  #[ignore_optional]
  pub ignore: String,
  pub include: String,
}

This will result in:
pub struct OptionalServiceConfig {
  include: Option<String>
}

Renamed some of the stuff to better names, also added get_diff_update in the macro, so you can query for the current ServiceConfig do changes to it, and get ServiceConfigUpdate with only the changes using this method.

LGTM ! 🚀


Update azure-monitor-deploy.md

View Designer can no longer be used to create dashboards since November 2020, customers must use Workbooks from now on.

@JohanFreelancer9 Copy editing is needed for this PR. Thanks.

Copy review - @mibudure, kindly commit the suggested changes. Many thanks.

Thanks a lot Johan, commited the change.

@dstrome PR has been copyedited and is ready for final review, could you please check and merge? Thanks!

@dstrome PR has been copyedited and is ready for final review, could you please check and merge? Thanks!

Hello @dstrome , can you  share any update,  I see this still not merged.
Thank you,


fix Container min-height produces incorrect size when flex-wrap and…

fix Container min-height produces incorrect size when flex-wrap and Height is Auto

Could you help by providing some more detail on the root cause, and why this change fixes it?

Ah, that makes sense. If we have multiple lines, a line is allowed to be less than the min height of the parent container.
Looks like the algorithm is specified by https://www.w3.org/TR/css-flexbox-1/#algo-cross-line

If the flex container is single-line, then clamp the line’s cross-size to be within the container’s computed min and max cross sizes.

Let me read how we normally handle this for multi-line. Need to see if we can get rid of clamping entirely, or if we do it somewhere else again later.

Thank you for your response, and I look forward to your revisions.

Thank you for your response, and I look forward to your revisions.

https://github.com/facebook/yoga/commit/464d1668baeb2e448c12f3cc95990924972c2532 should be merged with a fix for this (but that change caused another slight issue that https://github.com/facebook/yoga/pull/1524 should address).


WebRTC stream freezes

Hello,
I'm writing a react native app using react-native-webrtc to communicate with go2rtc via frigate and home assistant. It works great in webrtc mode on my Tapo C210, Hikvision doorbell, but on my Annke FCD600 cameras with high resolution 3632 x 1632 in H264, the video stream freezes every seconds or even don't start at all (in debug log the stream receive mute event frequently and takes really long time to establish the connection, the bi directional audio stream is ok). If I reduces the bit rate drastically, then it works a little bit better but it still freezes from time to time, in night mode it freezes less than day mode. In the same time on all other cameras, it works great, if you guys have an idea how to debug this, I'll be very thankful. Basically, if i'm not mistaken Annke is just Hikvision rebranded, so I'm not sure what can be different between my Annke stream and Hikvision doorbell streams. I'm using go2rtc 1.8.5. Thank you in advance for your help.

The hikvision doorbell's video in 1920x1080 also freezes from time to time.

It depends if you using WebRTC inside or outside your network.

I have the same problem inside or outside my network. I checked the stream configuration when i'm inside my network, it's IP v6 UDP which is used. Anyway with Tapo C210 (2304 x 1296), I have the best streaming experience, never freezes inside or outside. For the moment, for my Annke cameras, I get the video stream from home assistant  in HLS mode (with 3, 4 seconds lag but no freezing) and audio + microphone stream via WebRTC as a work around. I really wish to be able to use WebRTC though but I don't know how to optimize to avoid freezing.

Have you read recommendations?
https://github.com/AlexxIT/go2rtc?tab=readme-ov-file#source-rtsp

Thanks, I prefix the rtsp stream with ffmpeg, it's still 'glitchy'
glichy_camera<EMAIL_ADDRESS>

I don't know how yet, but frigate on safari on my phone works better than react-native-webrtc. It's perhaps the library which has issues, but I still don't know why the tapo stream works well with react-native-webrtc but not the annke streams.

but in the same time, it's glitchy both on ios and android.

Have you tried very glitchy version?

I think about buying more robuste matos like ubiquiti wifi but the perf tests make me wonder, because the difference is not at all significant between wifi and ethernet for 358 Mbytes in 30 seconds.

You can disable UDP for WebRTC in latest go2rtc
https://github.com/AlexxIT/go2rtc/blob/master/internal/webrtc/README.md

yes, I confirm that no lag when it's tcp. Do you have an explanation ? My stress test seems to show that I don't have any issue in UDP with my Wifi but perhaps packets arrive a little bit more in disorder over Wifi and it makes react native webrtc too much effort to reorder packets ? In the same time TCP does not work when i'm not in my network as I block everything except for the port 80 and 443 for home assistant. I'll try from react native side to choose exclusively TCP when Home Assistant (and so Frigate) is in the same network as my cellphone. But when i'm outside of my network, do you have a solution ? Thanks.

Anyway the glitchy problem also applied to frigate from chrome on mac os, so it seems to be not related uniquely to react native webrtc.

A lot of people complain about WebRTC UDP for high bitrates on external access.
If the bitrate is very high and the channel is bad enough - you won't get a picture at all.
But I haven't heard of any complaints on the local network.
Better solution is to use UDP for local and TCP for external.
webrtc:
  listen: :8555/tcp  # this is default
  ice_servers: []  # this is disable STUN/UDP external access (enabled by default)
  candidates:
    - stun:8555  # this is add external TCP candidate for your public IP

Also you need to port forward 8555 TCP port you your router if you has public IP-address.


Apache Ivy support?

Hi,
Does setup-ant support apache Ivy?  I want to use Ivy on my ant build action.
Thanks

Yes, Ivy is included with the Ant optional tasks:
https://cedx.github.io/setup-ant/#/usage/inputs
See, for example, this project:
https://github.com/cedx/akismet.java
There is the usual ivy.xml file declaring your dependencies, and the optional-tasks input is enabled in the workflow file:
https://github.com/cedx/akismet.java/blob/main/.github/workflows/main.yaml#L14
https://github.com/cedx/akismet.java/blob/main/build.xml#L55


Issue with dumping assets to AWS S3

Hello,
I'm using assetic with Symfony2. We want to use to the AWS S3 for storing assets.
The setup is like this: http://www.symfony.club/symfony2-deploying-assets-to-cdn/ using the S3 StreamWapper service.
Assets:install works perfectly and all the files are copied to the S3 bucket.
But when using Assetic, I run into an issue:
joshua@Orion:/var/www/Sirius$ php app/console assetic:dump -e=prod
Dumping all =prod assets.
Debug mode is off.
12:34:38 [dir+] s3://sirius-assets/css
12:34:38 [file+] s3://sirius-assets/css/8599eb6.css
12:34:38 [dir+] s3://sirius-assets/images
12:34:38 [file+] s3://sirius-assets/images/00fc14d.png
12:34:38 [dir+] s3://sirius-assets/images
[RuntimeException]
Unable to create directory s3://sirius-assets/images
The first 2 assets are uploaded perfectly, but the problem arises with the second image, for some reason assetic tries to create a new 'images' folder, which already exists, and then fails...
EDIT: I found a simple solution:
Use Assetic to dump local first and then copy them to AWS using their SDK Streamwrapper

@kriswallsmith : I believe issues like this should be closed.


Engagement List page - redesign with permissions

AS an Staff user
I want the engagement page list view to show different actions
depending on the role of the user
UI Based ticket

Hey team! Please add your planning poker estimate with Zenhub @djnunez-aot @jadmsaadaot @saravanpa-aot @VineetBala-AOT

DESIGN THE TABLE

duplicate of 1239


Kiali labels

closes #370

@jadeyliu939 Please test it with kiali.

This PR removes the label (if present) as soon as the experiment is created. It creates it when the experiment completes.

When experiment is running ( created / started), the Traffic Shifting option is disabled

And when experiment had ended ( completed or deleted), the Traffic Shifting option is enabled ( with update).


remove primary and secondary jks from security resources/config folder

These files are used by the light-oauth2 and kafka-oauth only.

 remove primary and secondary jks from security resources/config folder light-4j master

 remove primary and secondary jks from security resources/config folder light-4j master


Kodi checker initial state bug

If you have a video playing and then start Hyperion it doesn't "grab video" I just get the background effect.

Is this new  since rework? I think kodi push no information? What shows the log?

Dont known- latest git pull
I'm not near the pi, but there were 3 log entries on startup with the kodi data in it.
Stop movie, back to menu, start movie and it worked fine

I think stop and start a movie should be enough. I bet Hyperion don't get the appropriate status on startup. I will test this.

It wasn't menu mode - it was the background effect.
Grab menu, screensaver, audio etc... Are all on

I told a lie - grab pause is false.
I'm 99% sure the movie wasn't paused tho.
I can't retest now - I can take a look in a day or so

Thanks !

Thank you.


refactor(blockifier): make VersionedConstantsOverrides fields optional

I plan to make PyVersionedConstantsOverrides fields optional as well.

This change is

crates/blockifier/src/versioned_constants_test.rs line 58 at r1 (raw file):

    assert_eq!(result.validate_max_n_steps, updated_validate_max_n_steps);
    assert_eq!(result.max_recursion_depth, updated_max_recursion_depth);
}

Add one more test for the None case. i.e. test the scenario the removed latest_constants_with_overrides solved.

crates/blockifier/src/versioned_constants.rs line 319 at r1 (raw file):
Previously, ArniStarkware (Arnon Hod) wrote…
Non-blocking. We can do the following. write a macro that gets the field name and does the override if need be.

But no need.

crates/blockifier/src/versioned_constants.rs line 837 at r3 (raw file):

                "Maximum number of steps the validation function is allowed to run.",
                ParamPrivacyInput::Public,
            ),

I think this will solve all of our issues.
The corresponding #is_none flag will be turned on because of this is what the default of VersionedConstantsOverrides does!
Suggestion:
            ser_optional_param(
                "validate_max_n_steps",
                &self.validate_max_n_steps,
                "Maximum number of steps the validation function is allowed to run.",
                ParamPrivacyInput::Public,
            ),


BUG: fix the Ui of GSOD screen

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?

Record

[X] I agree to follow this project's Code of Conduct
[ ] I'm a GSSOC'24 contributor
[ ] I want to work on this issue

@andoriyaprashant Please assign this issue to me. I would like to work on it.

https://github.com/andoriyaprashant/OpSo/assets/122019171/bcb116bc-d687-4646-8479-79f2a8dbbb20
Any suggestion for changing the UI of this screen or it is suitable?

@SumitPareek2401  No, this is fine. Go ahead and open the pull request. I will review the changes in the code and then merge it.

okay


chore(master): release 0.1.1

:robot: I have created a release beep boop
0.1.1 (2022-06-27)
Miscellaneous Chores

initial release (98074dc)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/indykite/metadata-publisher/releases/tag/v0.1.1 :sunflower:


Adding the minimum version check in Vagrantfile

Signed-off-by: Harshal Patil<EMAIL_ADDRESS>

LGTM. Thanks!


'Error splitting video (ffmpeg returned 1) ' occurs while using 'split_video_ffmpeg'

Description:
Here is my spliting code:
from scenedetect import open_video, SceneManager, split_video_ffmpeg
from scenedetect.detectors import ContentDetector
from scenedetect.video_splitter import split_video_ffmpeg

def split_video_into_scenes(video_path, threshold=27.0):
    # Open our video, create a scene manager, and add a detector.
    video = open_video(video_path)
    scene_manager = SceneManager()
    scene_manager.add_detector(
        ContentDetector(threshold=threshold))
    scene_manager.detect_scenes(video, show_progress=True)
    scene_list = scene_manager.get_scene_list()
    # import pdb; pdb.set_trace()
    split_video_ffmpeg(input_video_path=video_path, scene_list=scene_list, output_dir='test4longsplit', show_progress=True)

if __name__ == '__main__':
    video_path = 'sampled_videos/tokyo-walk.mp4'
    split_video_into_scenes(video_path=video_path)

Command:
I run the python python scene_detect.py in command line
Output:
And I got the error like this:
  Detected: 1 | Progress: 100%|██████████| 1799/1799 [00:03<00:00, 583.63frames/s]
  0%|          | 0/1799 [00:00<?, ?frame/s]Error splitting video (ffmpeg returned 1).
  0%|          | 0/1799 [00:00<?, ?frame/s]

How can I solve it?
Environment:
System Info
OS           Linux-3.10.0-957.el7.x86_64-x86_64-with-glibc2.17
Python       3.9.18
Packages
av           12.0.4
click        8.1.7
cv2          4.9.0
moviepy      Not Installed
numpy        1.26.4
platformdirs 4.2.0
scenedetect  0.6.3
tqdm         4.66.2
Tools
ffmpeg       9c33b2f
mkvmerge     Not Installed
Media/Files:
Video link: https://cdn.openai.com/sora/videos/tokyo-walk.mp4

Hi @Breakthrough, thanks for your great work! Can you help me?😭

@MqLeet in v0.6.1 I added -map 0 to the ffmpeg args as part of fixing #271.  It seems to cause issues for this particular video, I am not entirely sure why though.
You can override the default ffmpeg arguments by setting the arg_override parameter of split_video_ffmpeg().
Can you remove the -map 0 from the defaults and try to see if that works?  Thanks!

@MqLeet thank you for sharing the sample, that was really helpful.  Running through ffprobe I see the following streams:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'tokyo-walk.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf60.3.100
  Duration: 00:00:59.97, start: 0.000000, bitrate: 6462 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 6459 kb/s, 30 fps, 30 tbr, 15360 tbn (default)
    Metadata:
      handler_name    : Core Media Video
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.3.100 libx264
      timecode        : 00:00:00:00
  Stream #0:1[0x2](eng): Data: none (tmcd / 0x64636D74)
    Metadata:
      handler_name    : Core Media Video
      timecode        : 00:00:00:00
Unsupported codec with id 0 for input stream 1

I was able to rework the set of mappings from -map 0 to -map 0:v -map 0:a? -map 0:s? to get it to work.
Initially I thought the video mapping would need to be -map 0:v:0 (only select the first video stream), but selecting all video streams seems to work as well.  I'm not sure why it works since it seems to interpret both streams as videos.  Thanks for the report though, I'll make sure to update the default args in the next release.
Open items before closing:

[ ] Decide on a default video mapping: -map 0:v (all video streams) vs. -map 0:v:0 (only first stream)

-map 0:v matches current behavior, but might fail if one of the video streams is unsupported.
-map 0:v:0 would only take a single video stream if multiple are present, which reduces the chances of failures, and only selects the stream PySceneDetect processed. This may be the best option for compatibility, but would require anyone dealing with multiple video streams to override the default set of arguments.

[ ] Update the default arguments + test

@MqLeet in v0.6.1 I added -map 0 to the ffmpeg args as part of fixing #271. It seems to cause issues for this particular video, I am not entirely sure why though.
You can override the default ffmpeg arguments by setting the arg_override parameter of split_video_ffmpeg().
Can you remove the -map 0 from the defaults and try to see if that works? Thanks!

Hi @Breakthrough , after removing "-map 0" , bug fixed!

Thanks for your great work!

Keeping this issue open until the items in  the previous comment are resolved.  I think changing these options should be considered in order to improve compatibility out-of-the-box, but still want to verify the new mapping I've proposed.

Hi @Breakthrough I am sorry if this is a duplicate, hope to get redirected. But the same issue persists for me for
scenedetect[opencv-headless]==0.6.3 , scenedetect==0.6.3 and scenedetect==0.6.2.
I have used with arg_override and without arg_override both. Here's my complete code.
from scenedetect import split_video_ffmpeg, FrameTimecode
from scenedetect import SceneManager
from scenedetect import VideoManager
from scenedetect.detectors import ContentDetector

def find_scenes(video_paths:str,threshold=30.0):
        video_manager = VideoManager(video_paths)
        scene_manager = SceneManager()
        scene_manager.add_detector(
            ContentDetector(threshold=threshold))
        video_manager.set_downscale_factor()
        video_manager.start()
        scene_manager.detect_scenes(frame_source=video_manager, show_progress=False)
        return scene_manager.get_scene_list()

timecode_pairs = find_scenes(vid)

split_video_ffmpeg(vid,
                   timecode_pairs,
                   output_file_template=split_videos_save_path+'/'+'$SCENE_NUMBER.mkv',
                   arg_override='-map 0 -c:v libx264 -preset fast -crf 21 -c:a aac')

And still get the error.
INFO:pyscenedetect:Splitting input video using ffmpeg, output path template:   F:/Jawas_Scenes_Split/$SCENE_NUMBER.mkv ERROR:pyscenedetect:Error splitting video (ffmpeg returned 1). 1

A single stream is likely the most common use case, so I will choose that for a default.

hello
I too am experiencing the same problem.
If you run the code below, an error will appear.

I also modified DEFAULT_FFMPEG_ARGS like this. But still the problem persists.

What should I do?
Thank you for your reply.

@yongyongdown try setting show_output=True when calling split_video_ffmpeg to get more information about the error.  That will let you know why ffmpeg does not like the input.  Can you try that and post it here?

@Breakthrough

run it,

nothing special log
but, I don't know where I saw this code, but when I run it, it works fine.

The first code removes map from arg_override,
The code that works well is the one with only -map 0 added.
I'm not sure why, but I hope this helps resolve the error.

It looks like you are using a very old version of ffmpeg which is probably why the default arguments aren't working.  What version of PySceneDetect are you using?  Can you also try with a newer version of ffmpeg?

I used ffmpeg == 3.4, pyscenedetect == 0.6.4
I don't think I am using an old version. In any case, the issue has been resolved, but please let me know if you need any information

On Ubuntu, you need to switch channels from stable (ffmpeg 4.3 ~2020) to latest/edge


How do you insert the tracing context into the grpc request?

https://github.com/open-telemetry/opentelemetry-js/blob/dadcad7ea2d915d5db2865609e6181b768b642c7/examples/grpc/server.js#L3
What if your backend is in a totally different project and you can't conveniently import the tracer file that you use in the client?
How does tracing context get put on a grpc request and extracted in a grpc server?
My question is specific to the client being implemented in JS. imagine a React front end talking to a grpc server with grpc-web

Most backends are in different applications. It is actually not important or even likely that the tracer imported is the same tracer. The propagation works by inserting a formatted piece of metadata into the grpc payload (this is done by the @opentelemetry/plugin-grpc plugin). The same plugin then extracts the value from the metadata when an incoming request is received.

It is actually not important or even likely that the tracer imported is the same tracer.

Right, so I just want to make sure I understand the significance of https://github.com/open-telemetry/opentelemetry-js/blob/dadcad7ea2d915d5db2865609e6181b768b642c7/examples/grpc/server.js#L3

ok, i misunderstood something in the tracer. I'm sorry.
I see what is going on, that line just returns a tracer with that name. thank you!

For anyone that comes here, I would like to use something like the grpc plugin that automatically populates the formatted piece of metadata into the grpc payload. However I'm looking at grpc-web for right now. Hopefully simply injecting the span's context into the carrier ({}) and then using that on the metadata will be just as if i used the plugin.

@yehudamakarov Also using react with grpc-web backend. Curious if you got this working. I believe there should be an issue for a grpc-web core plugin. I'll create it, but would like to connect if you're working on it.

I haven’t implemented this as of yet. Although I may start trying now that you mention this.

@yehudamakarov see https://github.com/open-telemetry/opentelemetry-js/issues/1618


Column alias is gone?

In the newest release (0.8.0) it seems like the alias field is not present anymore.

The aliases i had in place are working correctly but i cannot create new ones.
Is it an intended change?
Thank you in advance

Yes. With recent versions of Grafana, this is now built into Grafana itself. You can either use the Organize fields transformation, or override the display name using field options. Please try it out and let me know if it works for you.

Yes. With recent versions of Grafana, this is now built into Grafana itself. You can either use the Organize fields transformation, or override the display name using field options. Please try it out and let me know if it works for you.

Hello @marcusolsson, you are indeed right!
I was able to change the field name using an override!
Transformation doesn't seem to be an option tho

Thank you very much for the lighting fast feedback and mostly for this awesome plugin :)

Hello @marcusolsson, you are indeed right!
I was able to change the field name using an override!
Transformation doesn't seem to be an option tho

Thank you very much for the lighting fast feedback and mostly for this awesome plugin :)

Glad you got it to work! And thanks for the kind words!

Glad you got it to work! And thanks for the kind words!


Add val dataset option for multimodal

Currently in exec.py only train and test dataset is taken by predictor. We can add a feature to add the val_data in fit_args if val dataset is available: https://github.com/autogluon/autogluon-bench/blob/94eaa63cec4781cfddba4b9429976533f6d3564a/src/autogluon/bench/frameworks/multimodal/exec.py#L140.

https://github.com/autogluon/autogluon-bench/pull/30


Fix Mellanox CI build command

Following https://github.com/antrea-io/antrea/pull/2609, docker build
for the ubuntu image now requires the GO_VERSION to be passed, which
broke the Mellanox CI. This patch changes the Mellanox CI so that it would
use make build-ubuntu instead of using the docker build command so that
all changes to Makefile would not break CI.

Codecov Report

Merging #2633 (42d5e70) into main (7f448b0) will decrease coverage by 17.74%.
The diff coverage is n/a.

@@             Coverage Diff             @@
##             main    #2633       +/-   ##
===========================================
- Coverage   59.44%   41.69%   -17.75%
===========================================
  Files         286      157      -129
  Lines       23053    19207     -3846
===========================================
- Hits        13703     8008     -5695
- Misses       7925    10470     +2545
+ Partials     1425      729      -696

Flag
Coverage Δ

kind-e2e-tests
?

unit-tests
41.69% <ø> (-0.01%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

pkg/ovs/openflow/default.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/util/runtime/runtime.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/agent/config/node_config.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/agent/cniserver/pod_configuration_linux.go
0.00% <0.00%> (-100.00%)
:arrow_down:

pkg/apis/controlplane/v1beta1/register.go
0.00% <0.00%> (-92.86%)
:arrow_down:

pkg/ovs/openflow/logs.go
9.52% <0.00%> (-90.48%)
:arrow_down:

pkg/apis/controlplane/register.go
0.00% <0.00%> (-90.00%)
:arrow_down:

pkg/agent/nodeportlocal/k8s/annotations.go
0.00% <0.00%> (-83.88%)
:arrow_down:

pkg/agent/agent_linux.go
0.00% <0.00%> (-80.00%)
:arrow_down:

pkg/agent/client.go
0.00% <0.00%> (-77.42%)
:arrow_down:

... and 229 more

/test-hw-offload

@antoninbas hi, can you have a look at this, thanks.

/test-hw-offload

@AbdYsn could you sign your commit? The DCO check is failing

Done

/test-hw-offload

/skip-all


Nuget Package (net5.0) is missing portable.BouncyCastle dependency

I solved the issue by installing the nuget package portable.BouncyCastle.
In the photo below is shown that the package is missing in net5.0.

Hi @Mrizzi-96 , thank you for reporting this problem.
The library does not need a dependency to BouncyCastle when targeting .NET (5 or greater), because for recent version of .NET it uses the apis under the System.Security.Cryptography namespace instead.
If you are targeting .NET5 you should be able to remove this dependency. Can you tell me something more about your project and what error did you get without this dependency?

Hi have a simliar issue: in a .NET 6 sometimes it throws this exception:
Validation failed with error Could not load file or assembly 'BouncyCastle.Crypto, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0e99375e54769942'. The system cannot find the file specified. System.IO.FileNotFoundException: Could not load file or assembly 'BouncyCastle.Crypto, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0e99375e54769942'. The system cannot find the file specified.  File name: 'BouncyCastle.Crypto, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=0e99375e54769942'     at DgcReader.RuleValidators.Italy.CertificateExtendedKeyUsageUtils.GetExtendedKeyUsages(SignatureValidationResult signatureValidation, ILogger logger)     at DgcReader.RuleValidators.Italy.DgcItalianRulesValidator.IsRecoveryPvSignature(SignatureValidationResult signatureValidationResult)     at DgcReader.RuleValidators.Italy.DgcItalianRulesValidator.CheckRecoveryStatements(EuDGC dgc, ItalianRulesValidationResult result, IEnumerable1 rules, SignatureValidationResult signatureValidation, ValidationMode validationMode)     at DgcReader.RuleValidators.Italy.DgcItalianRulesValidator.GetRulesValidationResult(EuDGC dgc, DateTimeOffset validationInstant, ValidationMode validationMode, SignatureValidationResult signatureValidationResult, BlacklistValidationResult blacklistValidationResult, CancellationToken cancellationToken)`

Thank you @FrancescoBonizzi , I will investigate this behavior as soon as possible.
Can you give me some details about how dependencies are configured in your projects?
Are you referencing the library this way:
└─ Application project (.net 6)
    └─ Class Library (.netstandard2.0)
        └─ DgcReader libraries

or this way:
└─ Application project (.net 6)
    ├─ DgcReader libraries
    └─ Class Library (.netstandard2.0)
        └─ DgcReader libraries

Hi @DevTrevi , @FrancescoBonizzi,
The error I mentioned is the same one that @FrancescoBonizzi had. The difference lies in the fact that my project is fully written in .NET 5.0, and does not reference other projects written in .NET standard 2.0.
Henceforth, my file structure looks like this:

The library in the red square was added manually.
Hope this helps!

Thanks @FrancescoBonizzi  and @Mrizzi-96 for the informations, I will look into this problem as soon as I can


A bug Update dataclasses.py

What does this PR do?

Fixes # (issue)
Before submitting

[x] This PR fixes a typo or improves the docs (you can dismiss the other checks if that's the case).
[ ] Did you read the contributor guideline,
Pull Request section?
[ ] Was this discussed/approved via a Github issue or the forum? Please add a link
to it if that's the case.
[ ] Did you make sure to update the documentation with your changes? Here are the
documentation guidelines, and
here are tips on formatting docstrings.
[ ] Did you write any new necessary tests?

Who can review?
Anyone in the community is free to review the PR once the tests have passed. Feel free to tag
members/contributors who may be interested in your PR.

(As if there's somewhere breaking it has that, it needs to be fixed)

When I using the initial code
root@d6f55527739f:/workspace/sa/LLM_test/FastChat# bash run_yuan_fp8_test.sh
The following values were not passed to `accelerate launch` and had defaults used instead:
        `--num_processes` was set to a value of `1`
        `--num_machines` was set to a value of `1`
        `--dynamo_backend` was set to a value of `'no'`
To avoid this warning pass in values for each of the problematic parameters or run `accelerate config`.
[2024-01-19 00:25:33,433] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)

Loading checkpoint shards: 100%|████████████████████████████████████████████████████████████████████| 3/3 [00:02<00:00,  1.36it/s]Traceback (most recent call last):
  File "/workspace/sa/LLM_test/FastChat/fastchat/train/train_yuan_fp8.py", line 199, in <module>
    train()
  File "/workspace/sa/LLM_test/FastChat/fastchat/train/train_yuan_fp8.py", line 93, in train
    kwargs = FP8RecipeKwargs(backend="msamp", opt_level="O1")
  File "<string>", line 11, in __init__
  File "/usr/local/lib/python3.10/dist-packages/accelerate/utils/dataclasses.py", line 248, in __post_init__
    raise ValueError("`backend` must be 'MSAMP' or 'TE' (TransformerEngine).")
ValueError: `backend` must be 'MSAMP' or 'TE' (TransformerEngine).
Traceback (most recent call last):
  File "/usr/local/bin/accelerate", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/accelerate/commands/accelerate_cli.py", line 47, in main
    args.func(args)
  File "/usr/local/lib/python3.10/dist-packages/accelerate/commands/launch.py", line 1023, in launch_command
    simple_launcher(args)
  File "/usr/local/lib/python3.10/dist-packages/accelerate/commands/launch.py", line 643, in simple_launcher
    raise subprocess.CalledProcessError(returncode=process.returncode, cmd=cmd)
subprocess.CalledProcessError: Command '['/usr/bin/python', 'fastchat/train/train_yuan_fp8.py', '--model_name_or_path', '../LLM_models/yuan2-2B/', '--trust_remote_code', 'True', '--data_path', './data/multiturn_chat_faststyle_0.8M.json', '--bf16', 'True', '--output_dir', './checkpoints_yuan2_2b', '--lazy_preprocess', 'True', '--gradient_checkpointing', 'True']' returned non-zero exit status 1

vim /usr/local/lib/python3.10/dist-packages/accelerate/utils/dataclasses.py +248
update upper to lower, it did work
root@d6f55527739f:/workspace/sa/LLM_test/FastChat# vim /usr/local/lib/python3.10/dist-packages/accelerate/utils/dataclasses.py +248
root@d6f55527739f:/workspace/sa/LLM_test/FastChat# bash run_yuan_fp8_test.sh
The following values were not passed to `accelerate launch` and had defaults used instead:
        `--num_processes` was set to a value of `1`
        `--num_machines` was set to a value of `1`
        `--dynamo_backend` was set to a value of `'no'`
To avoid this warning pass in values for each of the problematic parameters or run `accelerate config`.
[2024-01-19 00:28:13,713] [INFO] [real_accelerator.py:161:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3/3 [00:02<00:00,  1.38it/s]
You are using the legacy behaviour of the <class 'transformers.models.llama.tokenization_llama.LlamaTokenizer'>. This means that tokens that come after special tokens will not be properly handled. We recommend you to read the related pull request available at https://github.com/huggingface/transformers/pull/24565
  0%|                                                                                | 0/53818 [00:00<?, ?it/s]

Thanks for the explanation! Wound up going with https://github.com/huggingface/accelerate/pull/2355


PointingContainer not filled by HessioEventSource

The PointingContainer is empty for HESSIOEventSource

It's deprecated, I think.  The pointing positions are not top-level, but can be different for each camera due to mispointing or divergent pointing, slewing etc.  So we should get rid of it. It think there was an issue about that, but can't find it. In any case, the pointing container should never be used.

As discussed  in Dortmund, we will use the per-telescope pointing container.


US 02.02.01

As an attendee, I want to upload a profile picture for a more personalized experience.
Acceptance Criteria

[x] Attendees have access to a user-friendly interface for uploading a profile picture within their profile settings.

[x] The system provides clear guidelines on acceptable image formats (e.g., JPG, PNG) and size limits.

[x] Upon uploading, attendees can preview their profile picture before finalizing.

[x] Attendees can easily update or remove their profile picture at any time.

[x] If an upload fails due to format or size issues, attendees receive a clear error message with instructions for correction.

[x] Attendees receive feedback confirming the successful upload and display of their new profile picture.

Completed


Message gets redelivered in loop during the time of high CPU processing on the client side

This is the flow of the issue

A queue message which requires high amount of CPU processing reaches the client.
Client is not able to respond to the heartbeat from the broker.
Broker redelivers the same message and also gives "unexpected ACK" error as the ack Id changes on redelivery of same message and previous ack id becomes invalid
This seems to happen again and again for a while
I receive connect time out error around - 250000 times after the first message acknowledges
Consumer count shows up as 0 in broker console, for all queues in the nodeJs application, not only the one which the messages were being sent to
Consumers are not able to reconnect back, broker always shows consumers as 0

When I disable both heartbeat everything seems to work fine
When I disable the broker to client heartbeat, message occasionally redelivers but the consumers still go to 0 in the broker console
I can't disable the heartbeat to make it work as it has it's own advantages
In all of these cases I am receiving high amounts of connect time out error.
During low or average CPU loads on the nodejs server, everthing seems to work fine. Issue is only when the load is high
This is the code for connection
const stompit = require('stompit')
const keys = require('./keys')
const logger = require('../utils/logger.util')
const reconnectOptions = {
  useExponentialBackOff: true
}
let ssl = !!parseInt(keys.activeMQ.ssl)
const serverPrimary = {
  host: keys.activeMQ.host,
  port: keys.activeMQ.port,
  ssl: ssl,
  connectHeaders: {
    host: '/',
    login: keys.activeMQ.username,
    passcode: keys.activeMQ.password,
    'heart-beat': '5000,5000',
  },
}

const serverFailover = {
  host: keys.activeMQ.host1,
  port: keys.activeMQ.port,
  ssl: ssl,

  connectHeaders: {
    host: '/',
    login: keys.activeMQ.username,
    passcode: keys.activeMQ.password,
    'heart-beat': '5000,5000',
  },
}
connManager = new stompit.ConnectFailover(
  [serverPrimary, serverFailover],
  reconnectOptions,
)

connManager.on('error', function (e) {
  const connectArgs = e.connectArgs
  const address = connectArgs.host + ':' + connectArgs.port
  logger.error({ error: e, customMessage: address })
})

channelPool = new stompit.ChannelPool(connManager)
module.exports = channelPool

@gdaws Could you please help me out on this. I have been stuck on this for weeks
Main issues being

Redelivery in loop of the same message on loss of heartbeat from the application during high load
Consumers becoming 0 in broker console. Hence new messages piling up on the broker
Consumer Connection doesn't reestablish after broker console becomes 0.

Hi,
I have the same problem. I reproduced with a timeout after 20s (> heartbeat).

Hello, i tried to migrate to activemq artemis version and it seems to work fine

I have the exact same problem too. Any resolutions for ActiveMQ classic version?


Multicast traffic cannot pass through bridge of virt-launcher pod.

Is this a BUG REPORT or FEATURE REQUEST?:

Uncomment only one, leave it on its own line:

/kind bug

/kind enhancement

What happened:
Multicast traffic can not pass from/to VM via virt-launcher pod network.
What you expected to happen:
All kind of traffic can pass transparently from/to VM via virt-launcher pod network
How to reproduce it (as minimally and precisely as possible):
Create 2 VM and configure direct L2 link between them, use connection type 'bridge' and configure some multicast protocol(LLDP for example). You will see that traffic goes out of VM but doesn't pass via virt-launcher pod.
Anything else we need to know?:
Possible solution is to add following flag into  virt-launcher pod bridge
echo 65528 > /sys/class/net/virbr0/bridge/group_fwd_mask
Environment:

KubeVirt version (use virtctl version):
Client Version: version.Info{GitVersion:"v0.16.0", GitCommit:"06d91198bededc7a9353ac774221c83580ee3373", GitTreeState:"clean", BuildDate:"2019-04-05T15:24:49Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{GitVersion:"v0.16.0-gb37c22bbf", GitCommit:"$Format:%H$", GitTreeState:"", BuildDate:"2019-04-18T08:47:30Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Kubernetes version (use kubectl version):
[root@zeus06 cnv-tests]# kubectl version
Client Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.0+d4cacc0", GitCommit:"d4cacc0", GitTreeState:"clean", BuildDate:"2018-12-06T18:30:39Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.4+0ba401e", GitCommit:"0ba401e", GitTreeState:"clean", BuildDate:"2019-03-31T22:28:12Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}
VM or VMI specifications:
VM-A

apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
metadata:
  name: vma
  namespace: myproject
spec:
  running: false
  template:
    spec:
      domain:
        devices:
          disks:
            - name: containerdisk
              disk:
                bus: virtio
            - name: cloudinitdisk
              disk:
                bus: virtio
          interfaces:
            - name: default
              bridge: {}
            - name: br1
              bridge: {}
        resources:
          requests:
            memory: 1G
        cpu:
          cores: 2
      volumes:
        - name: containerdisk
          containerDisk:
            image: kubevirt/fedora30-cloud-container-disk-demo:latest
        - name: cloudinitdisk
          cloudInitNoCloud:
            userData: |-
              #cloud-config
              password: fedora
              chpasswd: { expire: False }
      networks:
        - name: default
          pod: {}
        - multus:
            networkName: br1
          name: br1

VM-B
apiVersion: kubevirt.io/v1alpha3
kind: VirtualMachine
metadata:
metadata:
  name: vmb
  namespace: myproject
spec:
  running: false
  template:
    spec:
      domain:
        devices:
          disks:
            - name: containerdisk
              disk:
                bus: virtio
            - name: cloudinitdisk
              disk:
                bus: virtio
          interfaces:
            - name: default
              bridge: {}
            - name: br1
              bridge: {}
        resources:
          requests:
            memory: 1G
        cpu:
          cores: 2
      volumes:
        - name: containerdisk
          containerDisk:
            image: kubevirt/fedora30-cloud-container-disk-demo:latest
        - name: cloudinitdisk
          cloudInitNoCloud:
            userData: |-
              #cloud-config
              password: fedora
              chpasswd: { expire: False }
      networks:
        - name: default
          pod: {}
        - multus:
            networkName: br1
          name: br1

Cloud provider or hardware configuration:
Hardware
OS (e.g. from /etc/os-release):
cat /etc/os-release
NAME=Fedora
VERSION="29 (Twenty Nine)"
ID=fedora
VERSION_ID=29
VERSION_CODENAME=""
PLATFORM_ID="platform:f29"
PRETTY_NAME="Fedora 29 (Twenty Nine)"
ANSI_COLOR="0;34"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:29"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f29/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=29
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=29
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
Kernel (e.g. uname -a):
5.0.6-200.fc29.x86_64 #1 SMP Wed Apr 3 15:09:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Install tools:
Others:

@schseba what do we want to do? Permit by default or make it a flag on the api?

Sounds like the pod network let's it through, so should we. Right?

I think this depends on the used network provider.
But whenever multicast is getting to the pod network (inside the pod), then
it means that the provider also supported it, thus sounds reasonable to
also pass it to VM.

This issue is related to Linux bridges silently drop LLDP messages (sent to the LLDP_Multicast address 01-80-C2-00-00-0E) and other control frames in the 01-80-C2-00-00-xx range.
https://thenetworkway.wordpress.com/2016/01/04/lldp-traffic-and-linux-bridges/

This is an issue we're been fighting with for awhile but I haven't had the time to really implement a solution. @renner-osi Did some base work for a passthrough interface type where we create a device and pass it through. Last I heard we got this working however we are lacking some device plugin code to properly handle creating  and managing the device. I'll see what I can scrounge up and see if I can put together a proper PR to address this. Unless @SchSeba you have another plan in mind?

Update: I take a look on this and the problem is because the pod is not privileged we can't change the file group forward mask for the bridge.
error output:
{"component":"virt-launcher","level":"fatal","msg":"failed to prepared pod networking","pos":"podinterface.go:88","reason":"open /sys/class/net/k6t-eth0/bridge/group_fwd_mask: read-only file system","timestamp":"2019-06-10T12:18:43.006218Z"}
panic: open /sys/class/net/k6t-eth0/bridge/group_fwd_mask: read-only file system

goroutine 25 [running]:
kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/network.(*PodInterface).Plug(0x22576b0, 0xc000c48000, 0xc000b86240, 0xc00049bb60, 0xc000318000, 0x14ade7d, 0x4, 0x10, 0x12c8fe0)
	pkg/virt-launcher/virtwrap/network/podinterface.go:89 +0x536
kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/network.SetupNetworkInterfaces(0xc000c48000, 0xc000318000, 0x0, 0x7)
	pkg/virt-launcher/virtwrap/network/network.go:83 +0x520
kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap.(*LibvirtDomainManager).preStartHook(0xc0000806c0, 0xc000c48000, 0xc000318000, 0x16669c0, 0x0, 0x163a5e0)
	pkg/virt-launcher/virtwrap/manager.go:728 +0x3ad
kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap.(*LibvirtDomainManager).SyncVMI(0xc0000806c0, 0xc000c48000, 0xc0003c8500, 0x0, 0x0, 0x0)
	pkg/virt-launcher/virtwrap/manager.go:881 +0x5e2
kubevirt.io/kubevirt/pkg/virt-launcher/virtwrap/cmd-server.(*Launcher).SyncVirtualMachine(0xc000623fa0, 0x16541c0, 0xc00049a780, 0xc00049a7b0, 0xc000623fa0, 0xc00049a6f0, 0x132f6e0)
	pkg/virt-launcher/virtwrap/cmd-server/server.go:159 +0x81
kubevirt.io/kubevirt/pkg/handler-launcher-com/cmd/v1._Cmd_SyncVirtualMachine_Handler(0x13f6480, 0xc000623fa0, 0x16541c0, 0xc00049a780, 0xc000218cd0, 0x0, 0x0, 0x0, 0xc00034b800, 0x7e7)
	bazel-out/k8-fastbuild/bin/pkg/handler-launcher-com/cmd/v1/linux_amd64_stripped/kubevirt_cmd_go_proto%/kubevirt.io/kubevirt/pkg/handler-launcher-com/cmd/v1/cmd.pb.go:515 +0x23e
google.golang.org/grpc.(*Server).processUnaryRPC(0xc00046ad80, 0x165fd60, 0xc000483b00, 0xc000b8a200, 0xc00002a9f0, 0x2193600, 0x0, 0x0, 0x0)
	external/org_golang_google_grpc/server.go:971 +0x4a2
google.golang.org/grpc.(*Server).handleStream(0xc00046ad80, 0x165fd60, 0xc000483b00, 0xc000b8a200, 0x0)
	external/org_golang_google_grpc/server.go:1250 +0xd61
google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc0006461f0, 0xc00046ad80, 0x165fd60, 0xc000483b00, 0xc000b8a200)
	external/org_golang_google_grpc/server.go:690 +0x9f
created by google.golang.org/grpc.(*Server).serveStreams.func1
	external/org_golang_google_grpc/server.go:688 +0xa1
{"component":"virt-launcher","level":"error","msg":"dirty virt-launcher shutdown","pos":"virt-launcher.go:558","reason":"exit status 2","timestamp":"2019-06-10T12:18:43.028453Z"}

I think we should consider to back into @rmohr Idea to move the network preparation into the virt-handler.
PR: https://github.com/kubevirt/kubevirt/pull/1404
@vladikr @booxter @phoracek @dankenigsberg what you think about that?

Note that with group forward mask its not going to be a perfect passthrough and allow all kinds of traffic unless
A slight catch is that in the default kernel distribution, bitmask values for the first three MAC addresses (-00, -01 and -02) are restricted, meaning we still cannot use this trick to enable STP and LACP protocols in our labs

STP I don't think anyone could care less about but LACP is how you do bonding.

LACP will not work if we add the 65528 to the bridge config?

Not without patching the kernel.

This issue subject about multicast and the content about LLDP is confusing.
LLDP and other similar protocols (e.g STP) use reserved mac addresses which are required by the standards not to be forwarded beyond a bridge or a local LAN (the same exist at the L3 level for protocols like VRRP and alike).
Regular multicast data forwarding is one thing, control frames like the ones LLDP is using is a different story.
I would not recommend forwarding LLDP frames over bridges, it is explicitly and intentionally blocked by the standard.
Quoting from the 802.1AD standard notes about the MAC multicast address:

This address was selected in order to make it possible to transmit an LLDP frame containing information specific  to  a  single  individual  LAN,  and  for  that  information  not  to  be  propagated  further  than  the  extent  of  that individual LAN, to avoid the meaning of that information being misinterpreted. For example, a TLV containing the auto-negotiation status of an IEEE 802.3™ LAN would be open to misinterpretation if it were to be propagated via a Bridge onto a second IEEE 802.3 LAN, and would be meaningless if propagated onto a LAN based on a different MAC technology.  This  is  the  “LLDP_Multicast  address”  that  was  used  in  IEEE  Std  802.1AB-2005.  This  address  was
erroneously  omitted  from  the  table  of  S-VLAN  component  Reserved  addresses  added  to  IEEE  Std  802.1Q  by IEEEStd  802.1ad-2005,  but  has  been  added  to  that  table  by  IEEE  Std  802.1aj™-2009 [B1]  and  is  included  in subsequent revisions of IEEE Std 802.1Q.

There are cases where exceptions may exists, but even there the risk something wrong will be interpreted exists. One would expect LLDP to work with SRIOV VF, however, this is also questionable as an SRIOV enabled device uses an internal bridge for its operation and it may or may not forward such control frames. If it does, logic on what is supported probably exists (for example, sending LLDP frames from the VF out sounds unreasonable).

I agree that a linux bridge is not the proper transport for this type of traffic.

/remove-lifecycle stale


Enable pinch zoom on mobile

I just noticed the line above, there are several mistakes:
        {
          action: 'geo_action_select',
          input: { right: true },
          name: 'button edit',
          owner: 'geo.MapIteractor',
        },

correct action is geo_action.select  (., not _)
owner is misspelled.

What is the impact of these?

🤷

What is the impact of these?

geo_action_select is the same as geo_action.select - we should probably update it
https://github.com/OpenGeoscience/geojs/blob/fe0b1399af1787f1d038be460bfa5ea0d2f1e67a/src/action.js#L13
The owner is a reference that can be used when intercepting actions.  Doesn't really affect us at the moment but should be updated.

@BryonLewis are you wanting me to try to also make those changes? I feel like that is probably better on a separate PR

@BryonLewis are you wanting me to try to also make those changes? I feel like that is probably better on a separate PR

I'm making a note of those items to be in a different PR.  I haven't had time yet to pull and do testing of this PR, but will be able to later.


Repl.exe cannot be run from outside Infrastructure folder

Merge Clojure.dll and AOT'd namespaces into Repl.exe so it no longer depends on where its called in the filesystem.

that's a bit weird

you mean so we can take it out of arcadia and call it anywhere? or that we can run it in place but with our cwd anywhere?

steps to reproduce this:
cd ~
bash /path/to/repl

I found this issue when I was trying to modify @timsgardner's emacs code to have it hook inf-clojure into the c# repl instead of the node repl.
(defun unity-node-repl ()
  (inf-clojure "bash /path/to/my/project/repl")
  (unity-repl-mode)
  (add-to-list 'comint-preoutput-filter-functions
	       'unity-repl-node-preoutput)
(setq comint-process-echoes 't))

since that  executes outside of the Infrastructure folder, it was throwing errors about not being able to find the assembled files it needs.

and there's no way to correctly set the cwd C#-side?
If merging in some dll's is the easiest way to fix this and doesn't have unintended consequences, let's just do that, though.

@gdeer81 just pushed a potential fix to c93912e. Does that work for you?

 Pass Through Socket REPL

Repl.exe was a client for legacy UDP REPL which was removed from the beta branch. Going forward our REPLs are the Socket REPL and nREPL, neither of which need an external client program.


Update existing operators

Many of the operators listed here and that show up in operatorhub.io are older versions than those released by the corresponding projects. For example, consider anchore-engine which at the time this issue is file has 0.1.1 as the latest listed here. In the upstream project 0.1.7 has been released along with all the patch versions in between.
For end users who are searching for details on operators, it would be great if we could see the latest version and more versions. Automation to update the things more regularly would help ease the issue.

I'm coming from https://github.com/operator-framework/operator-lifecycle-manager/issues/1742 and this is a real concern, many operators are outdated

I'm coming from https://github.com/operator-framework/operator-lifecycle-manager/issues/1742 and this is a real concern, many operators are outdated


[Windows] Can't capture

From the Log:

KShare - Failed to save picture: Синтаксическая ошибка в имени файла, имени папки или метке тома.

No I dea how to force KShare to log in english :/
Here is an approximate translation:

KShare - Failed to save picture: Syntactic error in file name, directory name or volume label.

Those errors are reported by your OS. KShare is English only at current time.
What's the Windows name limitation? It sounds like that's the problem.
Try changing the Filename scheme in Settings.

I wish there was a preview of what name/path it tries to create

That's a nice idea. I can do that one day.
Screenshot %(yyyy-MM-dd HH-mm-ss)date.%ext
Try this as the scheme. : seems reserved in Windows for some reason.

right,

:

is borbidden

I'll keep this open until I change the default name scheme. Thanks for letting me know

np ;D

Fix: 52b6872f8561be83f7c245b560748a37c8c60360


add ipynb - text transformers

Before submitting

[x] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
adding https://github.com/PyTorchLightning/pytorch-lightning/blob/master/notebooks/04-transformers-text-classification.ipynb
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hello @Borda! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file starters/transformers-text-classification/text-transformers.py:

Line 102:121: E501 line too long (130 > 120 characters)
Line 276:121: E501 line too long (730 > 120 characters)
Line 584:121: E501 line too long (121 > 120 characters)


Tick send error SendError(true) after a while

I have an application using tokio-cron-scheduler. However, after the application starting and running for a while, the cron scheduler no longer work and print Tick send error SendError(true) to the console every 500ms.
I did some investigation on it, here is the source code where produce the error:
loop {
        if let Err(e) = tx.send(true) {
            let shutdown = { *(shutdown.read().await) };
            if shutdown {
                return;
            }
            error!("Tick send error {:?}", e);
        }
        tokio::time::sleep(Duration::from_millis(500)).await;
    }

tokio::sync::broadcast::Sender documentation says

An unsuccessful send would be one where all associated [Receiver] handles have already been dropped.

I have no idea why this occurs. Would you please provide some hints or suggestions for how to debug this error? Since my application is a little complex, so I'm sorry that I can't provide a minimal example to reproduce the issue.
Thanks a lot!

Hi @jukanntenn
Yes, an MPSC receiver channel was dropped somewhere causing this. Can be that your job scheduler variable ran out of scope. It is a bit hard to debug without the code though.