kube: add ability to scope to a single namespace

This follows up on https://github.com/istio/istio/issues/24640, bringing back lost functionality to listen to only a single namespace. This is behind a feature flag, and introduces the ability to watch a single namespace, which is useful for cases where we have multi-tenants running namespace scoped Istiods.
DiscoverySelectors is not sufficient due to the RBAC privileges required.

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

PR needs rebase.

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
3fba32e72ba64a4bf96664f69f8adabfe29de357
link
true
/test lint

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

integ-pilot-istiodremote-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote-mc

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

integ-pilot-istiodremote-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote-mc

unit-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

integ-pilot-istiodremote-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote-mc

unit-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests

integ-pilot-multicluster_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-multicluster

integ-ds_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ds

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests-arm64

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

lint_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test lint

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

integ-pilot-istiodremote-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote-mc

unit-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests

integ-pilot-multicluster_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-multicluster

integ-ds_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ds

release-test_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test release-test

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-basic-arm64_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-basic-arm64

integ-operator-controller_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-operator-controller

integ-cni_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-cni

integ-distroless_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-distroless

integ-telemetry_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry

integ-security_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security

integ-ipv6_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ipv6

analyze-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test analyze-tests

integ-helm_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-helm

integ-ambient_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ambient

integ-telemetry-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-mc

integ-pilot_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot

gencheck_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test gencheck

integ-telemetry-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-telemetry-istiodremote

integ-pilot-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote

integ-security-istiodremote_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-istiodremote

integ-pilot-istiodremote-mc_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-istiodremote-mc

unit-tests_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test unit-tests

integ-pilot-multicluster_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-pilot-multicluster

integ-ds_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-ds

release-test_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test release-test

integ-security-multicluster_istio
aa7a4cae94c9cc0e69bc35a975ce72b4ae152bf6
link
true
/test integ-security-multicluster

lint_istio
960dd5e6a602bb18a216da5e9e2aa90ca2923b1f
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

It seems you still need to handle namespace controller. which creates CA in all namespaces.

Good point... the main use case for this I think is to have multiple isolated Istio environment with low privilege so typically they would have that controller disabled. But should handle it

IMHO, in the real multi-tenants environment, each tenant usually has multiple namespaces. Currently, when DiscoverySelectors are configured, the resources in all namespaces will actually been listed and watched, and filtered on the client side, which still cosume a lot of unnecessary memory and CPU in big multi-tenants clusters.
For example, there are 10 multi-tenant shared clusters, each cluster has 100k pods, that is, a total of 1000k pods, there are 1k tenants, and each tenant has an average of 1k pods (using one or more namespaces across all clusters). Due to the large scale of the cluster, and istiod will list-watch all namespaces of all clusters on startup, which will cause istiod to receive a large amount of network traffic, even if DiscoverySelectors will filter out data of other tenants (let GC clean up automatically) , but GC is not real-time, even if a high memory limit is configured for istiod, it is easy to cause OOM(In our real multi-tenant environment, this is a key pain point). And if there are a lot of HPA configuration, auto-scaling occurs almost every minute, istiod still needs to consume a lot of memory continuously.
We did some hack on the code, and it works, istiod mem usage reduced from 10G to 500M on average on startup (varies depending on the number of pods of the tenant), its idea is to only list the namespaces of the tenants in XXInformer, and combine the results to return.
I think this idea can be generalized and let istiod natively support it. I noticed that you are refactoring the client template recently, we can add a similar informer constructor in it, list all concerned ns separately and merge the results and return, watch all concerned ns separately, and combine the results into a new watch.Interface and return.
If you think it's a good idea, I can draft a design doc and start implementing it.

I am personally anti-multi-namespace watches. Kubernetes supports watching 1 namespace or all namespaces. if we want multiple namespaces, we will quickly overwhelm the api-server with watches. If we have a handful (2-5, or so) - not so bad. But if its dynamically changing, adding a removing watches, having 100s of watches per type - very suspicious.

What evidence do we have that 100 namespaces doing this won't cause issues?
Istio watches roughly 20 types, that would be 2k watches per istiod
instances
On Tue, Mar 21, 2023, 7:40 PM roc @.***> wrote:

having 100s of watches per type
Yep, that's a problem. But in contrast, list-all is the most critical
problem in a large-scale clusters. For example, a cluster has 1000
namespaces, while there are only 2~4 namespaces per tenant, there are many
other similar clusters. Each tenant’s istiod needs to list-all on startup ,
to ensure that istiod starts successfully, it need a high memory limit
(maybe 20G+), otherwise it will be OOM killed, which is quite a waste of
memory.
Maybe we can just optimize the list, only list resources for each
namespace in serial which selected by DiscoverySelectors. Even if there
are 100s of namespaces, the serial list will not cause much pressure on the
apiserver, and even if the namespace is dynamically change, we only need to
list incremental resources or remove some cache which already handled in
our controller.
What do you think?
—
Reply to this email directly, view it on GitHub
https://github.com/istio/istio/pull/43935#issuecomment-1478842817, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AAEYGXLANHCW3Z5FMTGF6PLW5JRCZANCNFSM6AAAAAAV3BCTZI
.
You are receiving this because you were mentioned.Message ID:
@.***>

What evidence do we have that 100 namespaces doing this won't cause issues?

@howardjohn No, I'm not talking about watch, it is list-all.

Informer is list+watch, isn't it? we never do one without the other

Oh I see what you mean, we watch all namespaces but list a subset .. I am not sure how that will work with informers

IMO if this functionality is desired it should be added to k8s core to allow watching multiple namespaces with a single watch

Oh I see what you mean, we watch all namespaces but list a subset

Yes

IMO if this functionality is desired it should be added to k8s core to allow watching multiple namespaces with a single watch

I don't think it's possible. I have seen related issues before, and they think it is appropriate to do it on the client side.

Watching multi namespaces separately definitely cause additional load to kube-apiserver, for large scale cluster, this is not acceptable, especially multi-tenant env.  Discovery Selector is not perfect, but I think with strip unused fields, the raw objects watched would not cost much memory.

Istio is not for multi tenant design, there are many cluster scoped configurations that could conflict now. Kind of remember webhook configuration is one of those.

Watching multi namespaces separately definitely cause additional load to kube-apiserver, for large scale cluster, this is not acceptable, especially multi-tenant env. Discovery Selector is not perfect, but I think with strip unused fields, the raw objects watched would not cost much memory.

Yep, but now I am not worried about watch, it's the list-all which causes OOM on startup (maybe 20G+ memory with multiple large clusters).

there are many cluster scoped configurations that could conflict now.

I don't think it's a problem, multi-tenant istio usually have a hidden master cluster, which stores the CRDs per tenant, no conflict.

Kind of remember webhook configuration is one of those.

And webhook can also have a namespaceSelector

Perhaps the best solution for this kind of multi-tenancy of multiple large clusters is to introduce an intermediate component, which performs list-all and watch-all operations on all clusters, and implements the list and watch interfaces of the apiserver, and only returns part of the data to the tenant's istiod which they are interested in, and this is exactly what my team trying to do now.

It seems you still need to handle namespace controller. which creates CA in all namespaces.

handled now, thanks

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
8001fbbbb42079f787869171c04e2a138017007b
link
true
/test lint

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

@howardjohn: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

lint_istio
8001fbbbb42079f787869171c04e2a138017007b
link
true
/test lint

gencheck_istio
8001fbbbb42079f787869171c04e2a138017007b
link
true
/test gencheck

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

On the load/scale issue: I agree that in many K8S installs, having too many watchers is a problem. I also agree that a bigger problem is List operations with HUGE responses, there is paging and all - but it's absurd to send the entire database to a client and filter it on the client.
I also agree that multi-tenant Istio with v1 API/model is not very viable - injection is a major problem.
However:

ambient removes injection and most of the high-permission requirements.
if K8S can't handle the watches - a caching proxy can be used ( I'm sure they exist - if not we can probably write one in ecosystem, maybe with an extra XDS  adaptation on both sides so it can act as cache for both K8S and XDS and adapt between them). I played a bit with this - I think it's not a big project ( most difficulty is in having some access control).
IMHO the 'right' pattern for very large scale is on-demand, with very small responses and narrow watches. We can actually do this with ambient.
I proposed long ago ( but never got sufficient buy-in) to integrate with CNCF Eventing or similar pubsub adapters, which
may increase the 'watch' ability to insane scale ( if coupled with an cloud-scale pubsub implementation). This can be bridged in the cache above - and also eliminate a lot of multi-cluster related problems.

TL;DR - Istiod watching multiple namespaces, either by config or on-demand is not bad ( but maybe not in this PR and with more design agreement)

Perhaps the best solution for this kind of multi-tenancy of multiple large clusters is to introduce an intermediate component, which performs list-all and watch-all operations on all clusters, and implements the list and watch interfaces of the apiserver, and only returns part of the data to the tenant's istiod which they are interested in, and this is exactly what my team trying to do now.

Creating a middleware/proxy component sounds like a good conclusion, I think the same way. But as Costin mentioned, you'll have auth issues. Technically, when the set of namespaces changes, you'd have to make sure to re-authenticate your clients or you could leak data.
To give some context: In OpenShift Service Mesh, we currently support multi-tenant deployments with limited RBAC. Internally, we're using a library called maistra/xns-informer that to istiod "appears" to be a normal InformerFactory and behaves like a global watch, but internally creates separate watches per namespace. It does have performance issues, we regularly see customers with very big meshes (>500 namespaces) creating too much load on the API server.

On Thu, Mar 23, 2023 at 9:37 AM Daniel Grimm @.***>
wrote:

Perhaps the best solution for this kind of multi-tenancy of multiple large
clusters is to introduce an intermediate component, which performs list-all
and watch-all operations on all clusters, and implements the list and watch
interfaces of the apiserver, and only returns part of the data to the
tenant's istiod which they are interested in, and this is exactly what my
team trying to do now.
Creating a middleware/proxy component sounds like a good conclusion, I
think the same way. But as Costin mentioned, you'll have auth issues.
Technically, when the set of namespaces changes, you'd have to make sure to
re-authenticate your clients or you could leak data.

But not very hard problems - we can still read RBAC or apply policy.
Besides - it is a read-only gateway exposing info that is available anyways
in XDS and Istiod config dumps.
And the proxy is only if the APIserver has scale issues.

To give some context: In OpenShift Service Mesh, we currently support
multi-tenant deployments with limited RBAC. Internally, we're using a
library called maistra/xns-informer
https://github.com/maistra/xns-informer that to istiod "appears" to be
a normal InformerFactory and behaves like a global watch, but internally
creates separate watches per namespace. It does have performance issues, we
regularly see customers with very big meshes (>500 namespaces) creating too
much load on the API server.

That's as expected - and a proxy would help in the big meshes ( don't
forget we also watch multiple clusters ). I'm sure everyone has problems
with
a lot of watches at a certain scale - APIserver is not optimized or really
designed as pubsub.
Not sure if we are just in agreement but proposing different solutions, or
you are advocating for "watch all namespaces and deal with the huge list
response and waste" ?

Message ID: @.***>


Cannot install visualstudio2017buildtools

Installation of visualstudio2017buildtools fails in a container based off Windows Server Core, tag ltsc2016-amd64.  Docker running on Windows Server 2016.
choco install visualstudio2017buildtools -y results in checksum failure:
ERROR: Checksum for 'C:\Users\ContainerAdministrator\AppData\Local\Temp\chocolatey\visualstudio2017buildtools\<IP_ADDRESS>\vs_BuildTools.exe' did not meet '2331CAE21632689B1B4D4418DA67B7B490B661D0BB195AFFBFAE15927BC696B8' for checksum type 'SHA256'.
Consider passing the actual checksums through with --checksum --checksum64 once you validate the checksums are appropriate.
A less secure option is to pass --ignore-checksums if necessary.
The install of visualstudio2017buildtools was NOT successful.

Even if I pass --ignore-checksums, the installer fails with no clear indication why other than vs_BuildTools.exe exited with code -2147024770, including in the logs.
ERROR: Running ["C:\Users\ContainerAdministrator\AppData\Local\Temp\chocolatey\visualstudio2017buildtools\<IP_ADDRESS>\vs_BuildTools.exe" --quiet --norestart --wait] was not successful. Exit code was '-2147024770'. See log for possible error messages.
The install of visualstudio2017buildtools was NOT successful.
Error while running 'C:\ProgramData\chocolatey\lib\visualstudio2017buildtools\tools\ChocolateyInstall.ps1'.
See log for details.

The checksum in the <IP_ADDRESS> package is correct and matches the file at that url:
    -Url 'https://download.visualstudio.microsoft.com/download/pr/dd3eb7bc-5549-45f2-be9a-80984f4d4d90/2331cae21632689b1b4d4418da67b7b490b661d0bb195affbfae15927bc696b8/vs_BuildTools.exe' `
    -Checksum '2331CAE21632689B1B4D4418DA67B7B490B661D0BB195AFFBFAE15927BC696B8' `

If the installer gets corrupted somehow during download to your container, the failure is not surprising. You may look in the VS installer log files (%TEMP%\chocolatey\dd_*.log) to determine the exact cause.

-2147024770, or 0x8007007E, translates to ERROR_MOD_NOT_FOUND, "The specified module could not be found". So a DLL is missing or not registered properly. This may indicate many things:

corruption of the container base image;
corruption of the downloaded VS installer (very likely);
reboot required by some software/OS update installed earlier in the container (rebooting is not supported by Windows containers; one needs to use a base image which already contains that software, e.g. specific .NET version);
lack of some operating system features in the container (Microsoft does officially support installing the Build Tools in a container, but a different base image might be required).

Please note that I'm shooting in the dark here; I don't use containers and I have never tried to install the Build Tools in one.

Thanks for the responses.  I changed the container base image to the latest 4.8 .NET Framework SDK image and visualstudio2017buildtools installation succeeds.


Outdated explorer URLs in wiki

On this page: https://github.com/threefoldtech/js-sdk/blob/development/docs/wiki/identity.md
None of the listed explorer URLs are currently active.

These are explorer API root endpoints, not the explorer UI website

Yes, I know. I see that there shouldn't be a Swagger UI at each one. Still, mainnet is wrong... which I learned from you :wink:


Reorganize package

We should refactor the packaging to match cis-bidsify.

It looks like "addresses" isn't one of GitHub's keywords for issues, but #8 should have closed this.


DragListener transform can result in epsilon number bug

Over in https://github.com/phetsims/ratio-and-proportion/issues/467 I found that the DragListener transform that I add in RatioHalf has a capability to produce a rounding error when dragging against a draggable bounds edge.
More specifically, on this line:
https://github.com/phetsims/scenery/blob/3d12a43f51ed81024ff82deacffc02e60d615a56/js/listeners/DragListener.ts#L682
We can on one drag get 0 (at the dragBounds edge), and the next drag, we get 2.220446049250313e-16, and then the third drag we get 0 again.
@jonathanolson does this seem like a bug that is easy to fix?
You can reproduce this by applying this patch, then:

Index: js/common/view/RatioHalf.ts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/common/view/RatioHalf.ts b/js/common/view/RatioHalf.ts
--- a/js/common/view/RatioHalf.ts	(revision e5dc667ce548d4fdd2697d622cf1c4b1e0763863)
+++ b/js/common/view/RatioHalf.ts	(date<PHONE_NUMBER>879)
@@ -214,9 +214,15 @@
       reentrant: true,
       valueType: 'number',
       map: ( ratioTuple: RAPRatioTuple ) => ratioTuple.getForTerm( this.ratioTerm ),
-      inverseMap: ( term: number ) => this.ratioTerm === RatioTerm.ANTECEDENT ? this.ratio.tupleProperty.value.withAntecedent( term ) :
-                                      this.ratioTerm === RatioTerm.CONSEQUENT ? this.ratio.tupleProperty.value.withConsequent( term ) :
-                                      ( assert && assert( false, `unexpected ratioTerm ${this.ratioTerm}` ) ) as unknown as RAPRatioTuple
+      inverseMap: ( term: number ) => {
+        if ( term !== 0 && term < .00001 ) {
+          debugger;
+        }
+        return this.ratioTerm === RatioTerm.ANTECEDENT ? this.ratio.tupleProperty.value.withAntecedent( term ) :
+               this.ratioTerm === RatioTerm.CONSEQUENT ? this.ratio.tupleProperty.value.withConsequent( term ) :
+               ( assert && assert( false, `unexpected ratioTerm ${this.ratioTerm}` ) ) as unknown as RAPRatioTuple;
+
+      }
     } );

     const createObjectResponse = () => this.ratio.lockedProperty.value ? options.ratioDescriber.getProximityToChallengeRatio() :

ratio and proportion, first screen
open dev tools
drag a hand to the vertical edge.
keep producing new drags while dragging against the edge. It isn't always easy to reproduce. Sometimes it takes a couple of minutes of dragging the hand against the boundary (with lots of release/repress). I have also got it easier when I refresh.

I ran into this again in another spot with my drag listener in Ratio and Proportion. I found that rounding to my needed precision in mapPosition worked well, but I was also using a dragBoundsProperty, which DragListener forbids. I guess I should just use the dragBoundsProperty in my own map position, but I wanted to note here that this patch worked well. Why can we map position and then constrain in the bounds as two steps?
Index: js/listeners/DragListener.ts
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/js/listeners/DragListener.ts b/js/listeners/DragListener.ts
--- a/js/listeners/DragListener.ts	(revision 1fef460d6d0f3063ededcec4cefc4bd1db88967f)
+++ b/js/listeners/DragListener.ts	(date<PHONE_NUMBER>042)
@@ -260,11 +260,6 @@
     assert && assert( options.tandem instanceof Tandem, 'The provided tandem should be a Tandem' );
     assert && assert( !options.useParentOffset || options.positionProperty, 'If useParentOffset is set, a positionProperty is required' );

-    assert && assert(
-      !( options.mapPosition && options.dragBoundsProperty ),
-      'Only one of mapPosition and dragBoundsProperty can be provided, as they handle mapping of the drag point'
-    );
-
     // @ts-ignore TODO: See https://github.com/phetsims/chipper/issues/1128
     super( options );

@@ -625,14 +620,12 @@
    */
   protected mapModelPoint( modelPoint: Vector2 ): Vector2 {
     if ( this._mapPosition ) {
-      return this._mapPosition( modelPoint );
+      modelPoint = this._mapPosition( modelPoint );
     }
-    else if ( this._dragBoundsProperty.value ) {
+    if ( this._dragBoundsProperty.value ) {
       return this._dragBoundsProperty.value.closestPointTo( modelPoint );
     }
-    else {
-      return modelPoint;
-    }
+    return modelPoint;
   }

   /**

@jonathanolson can you take a look at this patch?

Yes, it looks like we can allow both, like the above patch.

Committed above. Thanks. I ended up keeping the workaround in here because I was able to reproduce the debugger statement with the new changes, but they still seemed like an improvement. I'm not working on this sim anymore, so I'm not going to dive into this issue anymore. I'm glad we could get the common code change committed though. Closing


/metrics and /opentsdb/api/put don't work with GRPC

#137 added support for publishing to cortex via GRPC when using /api/prom/push, but did not add it for the /metrics and /opentsdb/api/put.  As a result those endpoints are broken when cortex-gw is configured to use GRPC with a kubernetes:// or dns:// url.

The OpenTSDB compatibility came up again this evening with Verizon. They're looking to use the OpenTSDB compatibility to push Catchpoint API information into Cortex.


How do you use this?

There are no instructions for actually using this.

Download the release zip from https://github.com/ctcherry/tlself/releases/
Unpack the zip and put the resulting binary called "tlself" where-ever you want, its pretty self contained
Start up the app or website you are working on, on some port locally, let's say its running on port 3000 on localhost.
Make sure nothing is running on localhost 443.
In a separate terminal cd to where you have tlself unpacked and then run sudo BACKEND=<IP_ADDRESS>:3000 ./tlself it will prompt for your sudo password because it is listening on 443 which is a privileged port.
You now have a web server listening at https://localhost that will serve a trusted/valid https cert for your app you are working on locally.
If you want to use a domain other than "localhost" for testing, you can edit your /etc/hosts file and add it there, pointed to <IP_ADDRESS>. You can then access https://thedomainyouadded.com, tlself will automatically update the cert and it will be valid as well.
I hope this helps, let me know if you have any questions.


[Feature] Identify and apply changes on ray-cluster

Search before asking

[X] I had searched in the issues and found no similar feature requirement.

Description
when using helm upgrade on ray-cluster, the operator does not identify+apply changes.
instead - it does nothing.
workaround:
helm uninstall + helm install
Use case
change helm values -> helm upgrade
Related issues
No response
Are you willing to submit a PR?

[ ] Yes I am willing to submit a PR!

Do you have a reproduction script?

helm install --set image.tag=X ray-cluster ...
helm upgrade --set image.tag=Y ....
head pod doesn't get replaced...

When I tried to perform helm upgrade to modify the image tag, I noticed the following log:
{"level":"info","ts":"2024-11-16T02:14:55.421Z","logger":"controllers.RayCluster","msg":"reconcileHeadService","RayCluster":{"name":"raycluster-kuberay","namespace":"default"},"reconcileID":"a6147489-026b-411c-bc99-c4cd92ad2d0a","1 head service found":"raycluster-kuberay-head-svc"}
{"level":"info","ts":"2024-11-16T02:14:55.422Z","logger":"controllers.RayCluster","msg":"reconcilePods","RayCluster":{"name":"raycluster-kuberay","namespace":"default"},"reconcileID":"a6147489-026b-411c-bc99-c4cd92ad2d0a","Found 1 head Pod":"raycluster-kuberay-head-knskh","Pod status":"Running","Pod status reason":"","Pod restart policy":"Always","Ray container terminated status":"nil"}
{"level":"info","ts":"2024-11-16T02:14:55.422Z","logger":"controllers.RayCluster","msg":"reconcilePods","RayCluster":{"name":"raycluster-kuberay","namespace":"default"},"reconcileID":"a6147489-026b-411c-bc99-c4cd92ad2d0a","head Pod":"raycluster-kuberay-head-knskh","shouldDelete":false,"reason":"KubeRay does not need to delete the head Pod raycluster-kuberay-head-knskh. The Pod status is Running, and the Ray container terminated status is nil."}
{"level":"info","ts":"2024-11-16T02:14:55.422Z","logger":"controllers.RayCluster","msg":"reconcilePods","RayCluster":{"name":"raycluster-kuberay","namespace":"default"},"reconcileID":"a6147489-026b-411c-bc99-c4cd92ad2d0a","desired workerReplicas (always adhering to minReplicas/maxReplica)":1,"worker group":"workergroup","maxReplicas":3,"minReplicas":1,"replicas":1}
{"level":"info","ts":"2024-11-16T02:14:55.422Z","logger":"controllers.RayCluster","msg":"reconcilePods","RayCluster":{"name":"raycluster-kuberay","namespace":"default"},"reconcileID":"a6147489-026b-411c-bc99-c4cd92ad2d0a","worker Pod":"raycluster-kuberay-workergroup-worker-4xsf9","shouldDelete":false,"reason":"KubeRay does not need to delete the worker Pod raycluster-kuberay-workergroup-worker-4xsf9. The Pod status is Running, and the Ray container terminated status is nil."}

This causes the old RayCluster to not be deleted. @kevin85421 Do we need to implement this functionality?

It is expected beheavior that RayCluster does not automatically recreate Pods on changes to the API. However, it is supported to delete the old Pods and have KubeRay automatically recreate with the new spec. RayCluster automatically recreating Pods would be a new feature request we can consider.

We are introducing a spec.upgradeStrategy API to RayService, I think we can adapt something similar for RayCluster?

We are introducing a spec.upgradeStrategy API to RayService, I think we can adapt something similar for RayCluster?

That sounds like a good plan.
I'd expect the operator to replace the cluster on every change...

@kevin85421 @MortalHappiness what do we think about having the new upgrade strategy API in RayCluster too?

I think strategy==Recreate can be easily implemented, but it may be a little bit tricky to implement RollingUpgrade

We are introducing a spec.upgradeStrategy API to RayService, I think we can adapt something similar for RayCluster?

this makes sense to me

@kevin85421 With the similarity to the upgradeStrategy API in RayService, I would like to try taking a stab at this issue!

@chiayi SG. Thanks!


Chinese Localization of README

Crouton helps me a lot, but I wanna help more Chinese know about how to use it. So I plan to translate README and some of the Wiki into Chinese.  Considering about the Copyright ("All rights reserved" says README) , is it possible for me to do that?

Thx,This isgreat i need

GAY


minionclk v0.04

Clearing the screen on startDrawing(), to the date string on the bottom of the screen. This is currently not happening, unless the display is turned on at midnight.

Sorry for the delay - just been on holiday. Thanks!


update/reshow animation

Hello. First of all, I would like to thank you for your contribution to the community. Recently my client requested a feature to use this package of your library. And in the process of working, the customer asked me to add the click to reshow feature. I have updated the code for this feature. Hope to be approved

Thanks for proposing this PR. It helped me write #3, which closes #1 and should allow you to do what you wanted too.


SignalR Java client unable to open WebSocket

Describe the bug
I'm unable to connect to a ASP.NET Core SignalR hub from the Java client. I'll specify all versions of things below to hopefully make this more understandable.
Every time I start the HubConnection object, I get the following error:
Aug 08, 2019 4:21:12 PM com.microsoft.signalr.OkHttpWebSocketWrapper$SignalRWebSocketListener onFailure
SEVERE: WebSocket closed from an error: Expected HTTP 101 response but was '200 OK'.
Aug 08, 2019 4:21:12 PM com.microsoft.signalr.WebSocketTransport onClose
INFO: WebSocket connection stopping with code null and reason 'Expected HTTP 101 response but was '200 OK''.
Aug 08, 2019 4:21:12 PM com.microsoft.signalr.HubConnection stopConnection
SEVERE: HubConnection disconnected with an error Expected HTTP 101 response but was '200 OK'.
Aug 08, 2019 4:21:12 PM com.microsoft.signalr.HubConnection stopConnection
INFO: HubConnection stopped.

I've confirmed that WebSockets are enabled on the hub (as I can see it as an option returned during the negotiation phase), eg:
{
    "connectionId": "...",
    "availableTransports": [
        {
            "transport": "WebSockets",
            "transferFormats": [
                "Text",
                "Binary"
            ]
        },
        {
            "transport": "ServerSentEvents",
            "transferFormats": [
                "Text"
            ]
        },
        {
            "transport": "LongPolling",
            "transferFormats": [
                "Text",
                "Binary"
            ]
        }
    ]
}

I've also tried setting shouldSkipNegotiate() on the Java client, and making sure that only the WebSocket transport was configured for the hub, but that yielded the same result.

To Reproduce
Versions

Microsoft.AspNetCore.App 2.2.0
Microsoft.AspNetCore.SignalR 1.1.0
Java 1.8.0_77
com.microsoft.signalr 3.0.0-preview7.19365.7

Build a HubConnection object, with an access token provider. Eg:

hubConnection = HubConnectionBuilder.create("http://localhost:52929/rtc")
    	.withAccessTokenProvider(Single.defer(() -> {
    		String token = getToken("username", "password"); // token fetch logic
    		return Single.just(token);
    	}))
    	.build();

Start the HubConnection
Receive the error above

Expected behavior
I expect the client to connect to the hub, and receive messages.
Additional context
I originally picked this issue up while writing a module for a 3rd party product, with an embedded SignalR client. I've replicated this in a standalone Java program though, so I'm rolling with the standalone program until I can confirm it works without any interference from the 3rd party product.
Include the output of dotnet --info
.NET Core SDK (reflecting any global.json):
 Version:   2.2.401
 Commit:    729b316c13

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.17763
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\2.2.401\

Host (useful for support):
  Version: 2.2.6
  Commit:  7dac9b1b51

.NET Core SDKs installed:
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.401 [C:\Program Files\dotnet\sdk]
  2.1.403 [C:\Program Files\dotnet\sdk]
  2.1.502 [C:\Program Files\dotnet\sdk]
  2.1.700 [C:\Program Files\dotnet\sdk]
  2.2.101 [C:\Program Files\dotnet\sdk]
  2.2.103 [C:\Program Files\dotnet\sdk]
  2.2.300 [C:\Program Files\dotnet\sdk]
  2.2.401 [C:\Program Files\dotnet\sdk]

.NET Core runtimes installed:
  Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.3-servicing-26724-03 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.2.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]

Are you hosting the app with IIS? If so, have you enabled WebSockets in IIS?
Turn Windows Features on or Off > Internet Information Services > Application Development Features > WebSocket Protocol

Currently it's running in IIS Express for debugging. According to the docs, I don't need to enable WebSockets for that.

For sanity, could you try running without IIS/IIS Express?
And could you enable logs on the server and share them? https://docs.microsoft.com/en-us/aspnet/core/signalr/diagnostics?view=aspnetcore-2.2#server-side-logging

Sure. So try running in Kestrel perhaps?

Ok, so running the project in Kestrel works - as in, the Java client connects and can receive events. How confusing...
I ran it in IIS Express and confirmed it still doesn't work in that. Here is the log output from right after the request  for the JWT token is finished.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[1]
      Request starting HTTP/1.1 POST http://localhost:52929/rtc/negotiate  0
info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[2]
      Successfully validated the token.
info: Microsoft.AspNetCore.Authorization.DefaultAuthorizationService[1]
      Authorization was successful.
dbug: Microsoft.AspNetCore.Http.Connections.Internal.HttpConnectionManager[1]
      New connection rTXVegAZ03eH9EwEGm3voA created.
dbug: Microsoft.AspNetCore.Http.Connections.Internal.HttpConnectionDispatcher[10]
      Sending negotiation response.
info: Microsoft.AspNetCore.Hosting.Internal.WebHost[2]
      Request finished in 14.2698ms 200 application/json

There should be at least one more log for the websocket request that looks like:
Request starting HTTP/1.1 GET http://localhost:5000/rtc?id=P0RHQpOow62RHwQ-kgjQcA
and maybe the 200 response you're seeing from it?
We might need to start looking at grabbing a network trace to try and figure this out. If you do provide a trace you should try disabling the auth stuff so you don't accidentally leak any PII.

The log I posted above was all I had from the logging.
I tried getting fiddler set up just now, but was having a few issues with it. I'll have another crack on Monday though and post my findings back here.
Thanks for the help so far though!

Were you able to take another look at this?

Yes. Apologies for not replying yesterday, as I got pulled to a different team for the day.
I couldn't get Fiddler working, so captured it with Wireshark instead. I can see that it hits the negotiate endpoint ok, and gets an expected JSON object back:

But when it goes to start the WebSocket, it gets back a static page rather than a 101 Upgrade request.

PCAP of the negotiate onwards. I haven't included the token acquisition as that's working fine.
12973-1.zip

Further to this, when I remove
app.UseStaticFiles();

from the Startup.cs code, I get exactly the same response.

That page is from wwwroot/index.html. In production, it's replaced by a separate SPA, so my ASP.NET Core app is also configured to serve static files from the wwwroot directory.
Here's Startup.Configure:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IServiceProvider serviceProvider)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler(appBuilder =>
                {
                    appBuilder.Run(async context =>
                    {

                        var exceptionHandlerFeature = context.Features.Get<IExceptionHandlerFeature>();
                        if (exceptionHandlerFeature != null)
                        {
                            var logger = loggerFactory.CreateLogger("Global exception logger");
                            logger.LogError(500,
                                exceptionHandlerFeature.Error,
                                exceptionHandlerFeature.Error.ToString());
                        }

                        context.Response.StatusCode = 500;
                        await context.Response.WriteAsync("An unexpected fault happened. Please contact support");

                    });
                });
                app.UseHsts();
            }

            app.UseIpRateLimiting();

            app.UseAuthentication();
            app.UseSignalR(routes =>
            {
                routes.MapHub<RtcHub>("/rtc");
                routes.MapHub<MetadataHub>("/metadata");
            });
            //app.UseHttpsRedirection();

            // Configure timers for scheduled SignalR Sends...
            RtcHubContext = serviceProvider.GetService<IHubContext<RtcHub>>();
            MetadataHubContext = serviceProvider.GetService<IHubContext<MetadataHub>>();
            _vodSyncTimer = Timers.VodSyncTimer(300);
            _testPingTimer = Timers.TestPingTimer(30);
            _testMetadataTimer = Timers.TestMetadataTimer(10);

            app.UseHealthChecks("/Health");

            app.UseStaticFiles();

            app.UseCors();

            app.Use(async (context, next) =>
            {
                context.Response.GetTypedHeaders().CacheControl =
                    new Microsoft.Net.Http.Headers.CacheControlHeaderValue()
                    {
                        NoStore = true,
                        NoCache = true
                    };
                context.Response.Headers["Pragma"] = "no-cache";
                context.Response.Headers["Expires"] = "-1";
                await next();
            });

            app.UseMvc();
        }

I've tried removing app.UseStaticFiles(); but I still get the same issue though.

Ok I've got it now.
In my web.config file, I had a rule that handled HTML5 routes for the SPA website that it hosts. It had some exclusions in for the /api/* and /health endpoints, but not for the SignalR endpoints. Entirely my fault for this one.😞
<rule name="html5-routes" stopProcessing="true">
  <match url=".*" />
  <!-- Handle all paths except /api/ and pass the route onto the wwwroot/index.html -->
  <conditions logicalGrouping="MatchAll">
    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    <!-- Add rule to negate file requests e.g. css/html/images-->
    <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
    <!-- Add rule to negate directories-->
    <add input="{REQUEST_URI}" pattern="^/api/|^/health" negate="true" />
    <!-- Add rule to negate paths and let them through the MVC-->
    <add input="{HTTP_METHOD}" pattern="GET|HEAD" />
  </conditions>
  <action type="Rewrite" url="wwwroot/index.html" />
</rule>

After I added |^/rtc|^/metadata to the "Add rule to negate directories" section, it started working in IIS Express.


Optgroup disabled property is not supported

When an 'optgroup' is disabled it should also disable all the 'option' in that 'optgroup' (http://www.w3.org/wiki/HTML/Elements/optgroup).
Currently this is not supported in Select2 version 3.4.6. A disabled 'optgroup' looks like an enabled 'optgroup' and options in a disabled 'optgroup' can still be selected:
http://jsfiddle.net/swMBL/

I've updated the jsfiddle, because the referenced js/css weren't available anymore. Also it's still not working in version 3.5.2. As you can see in the fiddle, United Kingdom is not selectable because this option is disabled. But the options below the disabled optgroup Oceania are still selectable, but shouldn't be.
New Fiddle for version 3.4.6: http://jsfiddle.net/swMBL/1/
New fiddle for version 3.5.2: http://jsfiddle.net/swMBL/2/

This appears to still be an issue in 4.0: http://jsfiddle.net/swMBL/4/

I'm going to merge this ticket into https://github.com/select2/select2/issues/3347.


Authorized_user instead of Service Account JSON ?

Hi wp-stateless team !
First, i want to thank you for your work, the plugin work like a charm. But i have a "small" problem.
Our security team doesn't want we use the service account json from our gcp account for "security reason", it's only available inside our CI but not for us, developpers on our local machine.
Is there a way to use the authorized_user json ? It's something like this :
{
  "client_id": "xxxxxxxxxxxx.apps.googleusercontent.com",
  "client_secret": "x-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "refresh_token": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "type": "authorized_user"
}

Thanks in advance

Thanks for your suggestion. We'll look further into it in the future. Your support is greatly appreciated!


Feature Request: Use fixed assembly name when executing NetPad query.

Currently NetPad creates different assembly name each time a query is executed.
Test query
Assembly.GetExecutingAssembly().FullName.Dump();
Assembly.GetExecutingAssembly().CodeBase.Dump();

Output
`NetPad_CompiledAssembly_Script 1_b2b3d5aa-ffb7-4a2e-b122-55f0add3514a, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=null
`file:///C:/Users/admin/AppData/Local/Temp/NetPad/Processes/371cbddd-91b1-4c40-9943-70abbe1f6d60/Script_1.dll`

If it can use fixed assembly name (e.g. NetPadQuery)
It can access internal types of external DLLs. (If external DLL using InternalsVisibleToAttribute).
LINQPad supports this feature with [InternalsVisibleTo("LINQPadQuery")]

Sure, good idea. Will go out with next release!

PR merged. Similar to LINQPad, you'll be able to use:
[InternalsVisibleTo("NetPadScript")]


tensorflow/core/util/event.proto: File not found while building with custom C++ project

I'm building tensorflow inside a C++ project and link with it using bazel build script. I'm using the master version of tensorflow and here a the BUILD file
cc_library(
    name = "tf-net",
    hdrs = ["model.h"],
    srcs = [
        "model.cc",
    ],
    linkopts = ["-lm"],
    deps = [
        "@org_tensorflow//tensorflow/core:core_cpu",
        "@org_tensorflow//tensorflow/core:lib",
        "@org_tensorflow//tensorflow/core:tensorflow"
    ],
	visibility=["//visibility:public"]
)

This worked for previous version of tensorflow but now I get
tensorflow/core/util/event.proto: File not found.
tensorflow/core/debug/debug_service.proto: Import "tensorflow/core/util/event.proto" was not found or had errors.
tensorflow/core/debug/debug_service.proto:38:25: "Event" is not defined.

It seems that it tries to compile the proto file debug_service.proto but can't find the needed dependencies.

Could you please add dependency to @org_tensorflow//tensorflow/core:protos_all?
We have probably moved thing around.
Sherry

I have the same problem in a similar situation (though without the assurance that it used to work).
Adding the dependency on protos_all does not resolve it. (It can't find protos_all and suggests protos_all_cc but that doesn't help either)
After a little digging, I note that in the file
tensorflow/core/debug/BUILD
there is a line (85) which currently reads
":debug_service_proto_cc",  # TODO(cais): Confirm safe.
It seems that this line, and the whole debug_service_proto changeset, have been added, reverted, and unreverted over the last couple of months, and simply commenting out that line allows my build to complete.
I do not fully appreciate what that code does and am not suggesting this as a fix, (although for jrabary it might suffice as a workaround, infering that they are like me not using Cuda) but it may be useful for working out what a fix would look like.

@caisq Can you comment based on the "Confirm safe" TODO?

In my project the problem has disappeared with the newest head (having restored the line I mentioned commenting out)
I don't know whether @jrabary has the same experience.

@girving The "Confirm safe" TODO is now obsolete and will be removed on the next successful push from internal. @jrabary, does the problem persist if you use use the latest master HEAD?

Automatically closing due to lack of recent activity. We hope that you were able to resolve it on your own. However, since this is a support issue rather than a bug or feature request, you will probably get more information by posting it on StackOverflow.


Write a Rust program to find the largest two elements in an array

Description
Write a Rust program to find the largest two elements in an array
Input: arr[] = {12, 13, 1, 10, 34, 1}
Output: The largest two elements are 34 and 13

Input: arr[] = {10, 5, 10}
Output: The largest two elements are 10 and 5

Input: arr[] = {10, 10, 10}
Output: The largest two elements are 10 and 10

How to contribute

Comment !assign to assign this issue to yourself
Fork this repository
Create a new branch
Save the solution in program/program/find-the-largest-two-elements-in-an-array/find_the_largest_two_elements_in_an_array.rs
Commit the changes
Create a pull request

!assign


op_serializer fails on gates parameterized by algebraic expressions

For example, if i create a circuit including cirq.X ** a/2 where a is a sympy symbol, op_serializer.py fails in the _check_value method with the following error:
ValueError: Expected type convertible to float but was <class 'sympy.core.mul.Mul'>
@Strilanc do you know if not supporting this is intentional, or has it just never been added?

@dabacon any thoughts on this? I figure it might have something to do with what you guys want to support on the engine side of things.

@dabacon any thoughts on this? I figure it might have something to do with what you guys want to support on the engine side of things.

If your circuits have formulas you need to flatten them.  See https://github.com/quantumlib/Cirq/blob/master/cirq/study/flatten_expressions.py.
We can consider making this automatic by default, but we need to be careful with too much automagic that people don't understand.

related: #2358

This now uses the func arg language construction for a small subset of symbolic expressions.


API doc proposal

Wrote a proposal for API design
Included some endpoints that is necessary to update the state of the game and generation of events.
Some critical endpoints are still missing as the flow hasn't been decided yet.
For example:

How will a game be registered/created?
How will completed games be retrieved? Who can retrieve what games?
Tournament setup
Game state
Streaming

Looks good!


Documentation update in base_trainer.py

Types of changes

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

Checklist:

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?
[x] Have you added an explanation of what your changes do and why you'd like us to include them?
[ ] Have you written new tests for your core changes, as applicable?
[ ] Have you successfully ran tests with your changes locally?

Description

I have updated the documentation of base_trainer for #406 in places where it seemed reasonable to add documentation.
Motivation and Context

Changes fix #406
How has this been tested?

Since the changes are only in the documentation, I have not executed any tests for this issue.

Thanks for the comments. I have applied all the suggested changes. Additionally:

I have kept the 120 max line width, and also modified some pre-existing docstrings accordingly
Added more detailed descriptions in return sections, where applicable
Updated some docstrings that I've missed in the previous commit (e.g. criterion_preparation)


Cannot configure pprint result

Describe the bug
There is no option to configure the print in the different methods
Expected behavior
A parameter in all methods which prints results to configure it, and a global parameter to turn everything on or off

Trello card: [#114] Cannot configure pprint result


Error with stem!(sd)

I am trying the functions like remove_punctuation!(),remove_numbers!(sd) remove_pronouns!(sd), stem!(sd) etc, on version 0.3, which is generating the following error:
julia> stem!(sd)
ERROR: error compiling Stemmer: error compiling Stemmer: could not load module /home/abhijith/.julia/TextAnalysis/deps/usr/lib/libstemmer.so: /home/abhijith/.julia/TextAnalysis/deps/usr/lib/libstemmer.so: cannot open shared object file: No such file or directory
 in stemmer_for_document at /home/abhijith/.julia/TextAnalysis.jl/src/stemmer.jl:76
 in stem! at /home/abhijith/.julia/TextAnalysis.jl/src/stemmer.jl:80

This issue can be closed, I think. I can confirm that the stemmer works as expected. The error message is also clear.


Exclude not documented tweaks

This PR improves the --excludeNotDocumented behavior - it always includes all properties of the object type, if it has documentation (even if the properties do not have docs).
This seems to be an expected behavior for objects, which are used to document various structures in code, for example:
/**
 * Result type of `someMethod` (Object type has docs)
 */
export type SomeMethodResult = { noErrors : boolean, results : [] }

This behavior does not apply for classes/interfaces - for those if the property is not documented it is not included.

Thanks! Should have a release later today.


promise() does not return true for native promises

require('check-more-types').promise(new Promise(resolve => resolve())) // false

tyvm


Strange command detection issue?

Hello! I've recently started looking into other games besides KR, but encountered odd behavior when trying to use the program. If I'm in my KR folder, I can use the Decompile command with no issues. If I change folder to my Rance III folder, Decompile still works fine. But if I change to my Toushin Toshi folder, for some reason I get an error saying that 'there is no Decompile command'. I double-checked that the file path is correct for the SDK and xsys35 executable, tried restarting VSC, and restarting my computer. For some reason, when I change to the Toushin Toshi directory, it doesn't recognize Compile/Decompile commands. All 3 games are in folders located in the same location, so I don't see why there would be problems with just this specific folder. Could it be an issue with Toushin Toshi itself? Like the ain isn't compatible or something?

In my environment, the OUTPUT tab shows Error: there is no registered task type 'decompile'... (which is a bug and I should fix it), but decompile of Toushin Toshi succeeds and source code is generated in the src folder.
I see src folder in your screenshot as well, but no source files are created in it?
Also, decompilation log is output to the TERMINAL tab. Is anything logged there?

I've tried many times, but it never outputs any files into the src folder for me.

Unexpected loop structure

Ah okay, then this is a xsys35c issue, although I've transferred this issue to vscode-system3x as it looked like a VSCode extension issue. :smiley:
I was trying with Arunaru's translated version, but when I tried decompiling @RottenBlock's 1.5 patch I got the same error. Let me take a closer look.

By the way, what's the best place for me to ask questions about how things work? I had some questions about System4/alice tools, but wasn't sure where to ask, so I posted on nunuhara's wall on the wiki. https://alicesoft.fandom.com/wiki/User:ヌヌハラ

By the way, what's the best place for me to ask questions about how things work? I had some questions about System4/alice tools, but wasn't sure where to ask, so I posted on nunuhara's wall on the wiki. https://alicesoft.fandom.com/wiki/Message_Wall:ヌヌハラ

If you have questions about alice-tools, you should open an issue on https://github.com/nunuhara/alice-tools.
For general questions about how System4 works, I'm not sure there's a better place than the wiki.

I looked into the cause of the error. It appears that there is actually a broken loop structure in the bytecode.
The Unexpected loop structure error was occurring when decompiling address 0xa62 of END.SCO. The following is the byte code for the relevant part of END.SCO (from Toushin Toshi EN 1.5 Patch.zip).
0xa51: 7b 41 7f 67 0a 00 00  # while-loop command('<@'), condition = '1' (loop forever), end-address = 0xa67
0xa62: 3e 1b 09 00 00        # loop-end command ('}'), loop-start-address = 0x91b
0xa67: EOF

When the decompiler encounters a loop-end command, it tries to find the start of the corresponding loop. However, since address 0x91b is not a start of any loop command, the decompiler fails to recover the loop structure.
This is the corresponding part of the Arunaru's version of END.SCO.
0x91b: 7b 41 7f 27 09 00 00  # while-loop command ('<@'), condition = '1' (loop forever), end-address = 0x927
0x922: 3e 1b 09 00 00        # loop-end command ('}'), loop-start-address = 0x91b
0x927: EOF

loop-start-address = 0x91b is the start address of the previous while-loop command.
It appears that @RottenBlock forgot to update the loop address of the } command from 0x91b to 0xa51 when they created the patch. I don't know how they did it, as this patch was created before the existence of xsys35c.
This can be a problem at runtime as well. The code is intended to cause an infinite loop (to halt the game) after the ending, but the 1.5 patch jumps to 0x91b at the end of the loop, possibly causing unexpected behavior.

Ah ok, so it's not a decompiler problem then. Thanks for looking into it though! And the alice tools thing seems so obvious now lol. I saw that nunuhara makes commits to your stuff, and never thought to check their git account for the alice tools page.

Updated the patch. Funnily enough, I didn't actually create this error, though it's still my fault for not noticing it. It seems to have been created by Sys3Decompiler, which turns
	<@1: 	>
into
`{ 1, lbl927:

lbl91B:
*lbl927:`

I assume this means Sys3Decompiler will screw up every single <> loop. All the more reason to stick with xsys35 these days.

That makes sense. When I made my KR mod, I used Sys3Decompiler for the first 2 versions. On the third version, I switched to xsys35, and my files would give compile errors when I tried to use them. Ended up remaking the mod from scratch lol.

Confirmed that the decompiler works for the 1.51 patch. Thanks for the fix @RottenBlock!


ansi: speed up parsing by roughly 7.5x

This commit speeds up the parsing/processing of ANSI escape codes by roughly 7.5x. The speedup is mostly accomplished by replacing the regex with dedicated parsing logic (nextAnsiEscapeSequence()) and reducing the number of allocations in extractColor().
Benchmarks
name             old time/op    new time/op     delta
ExtractColor-16    4.89µs ± 5%     0.64µs ± 2%   -86.87%  (p=0.000 n=9+9)

name             old speed      new speed       delta
ExtractColor-16  25.6MB/s ± 5%  194.6MB/s ± 2%  +661.43%  (p=0.000 n=9+9)

name             old alloc/op   new alloc/op    delta
ExtractColor-16    1.37kB ± 0%     0.31kB ± 0%   -77.31%  (p=0.000 n=10+10)

name             old allocs/op  new allocs/op   delta
ExtractColor-16      48.0 ± 0%        4.0 ± 0%   -91.67%  (p=0.000 n=10+10)

TODO

ANSI performance can be further improved by reducing conversions between string and []byte, for example most callers of extractColor convert the string response to []byte:

core.go:72:74
core.go:79:81
terminal.go:539:540
terminal.go:1021:1024

Oops, will fix the tests.

Thanks, I'll review the changes when I get some time. Regarding TODO items, let's not try to optimize non-critical paths. We need to find a balance between performance and code readability/maintainability.

I can confirm this makes --ansi significantly faster 👍
ponies.txt
$ cat ponies.txt{,,,,,,,,,,,,,,,,,,,,,,} | fzf --ansi --reverse

$ cat ponies.txt{,,,,,,,,,,,,,,,,,,,,,,} | time fzf-without-patch --ansi -f x
        3.50 real         4.60 user         0.18 sys
$ cat ponies.txt{,,,,,,,,,,,,,,,,,,,,,,} | time fzf-with-patch --ansi -f x
        1.03 real         2.08 user         0.11 sys

Rebased to master.

Merged, thanks!


Unable to push the app to the teams channel via upload an custom app

Running into same issue in my dev tenant.

I was able to upload the solution file to powerapps and then install to the teams for Issue Reporting, but then I get

I was finally able to fix it. I uploaded the app as a solution file by goint to Teams App, clicking the plus, clicking PowerApps, going to build tab, uploaded solution. Waited.
Went into each module and hardcoded the global variables by editing the current code that looks like this. Working!
Set(
gblPlannerPlanId,
"put your planner id here"
),
Set(
gblPlannerGroupId,
"putyourgroupidhere"


Two word resources are not slugified

Description
I have a resource OrphanUpdate. When used in a template I need to do {{ runway:orphanupdate ... }} instead of {{ runway:orphan_update ... }} like I'd expect.
Steps to reproduce

Have a CamelCased resource FooBar
Attempt to reference in a template like {{ runway:foo_bar ... }}

Environment
Statamic 3.1.32 Pro
Laravel 8.53.1
PHP 8.0.9
aryehraber/statamic-captcha 1.5.2
aryehraber/statamic-uuid 2.0.3
doublethreedigital/runway 2.1.5
edalzell/forma 0.8.12
jonassiewertsen/statamic-livewire 2.6
statamic/seo-pro 2.2.1
transformstudios/events 2.2
transformstudios/front 1.2.1
transformstudios/magic-link dev-main
transformstudios/memorial dev-feature/orphan-portal
transformstudios/price-of dev-feature/orphan-portal
transformstudios/review 3.1
transformstudios/simple dev-main
transformstudios/stripe dev-main
transformstudios/takeover-redirects dev-main

Fixed in v2.1.6.


Multiple gosubs in sequence mess up return locations

To reproduce, run the following script:
level1:
  echo Entering level1.
  gosub level2
  echo Exiting level1.
  exit

level2:
  echo Entering level2.
  gosub level3
  echo Exiting level2.
  return
  echo ERROR: Overflow in level2.
  exit

level3:
  echo Entering level3.
  gosub level4
  gosub level4
  echo Exiting level3.
  return
  echo ERROR: Overflow in level3.
  exit

level4:
  echo Entering level4.
  echo Exiting level4.
  return
  echo ERROR: Overflow in level4.
  exit

The expected output should be:
Entering level1.
Entering level2.
Entering level3.
Entering level4.
Exiting level4.
Entering level4.
Exiting level4.
Exiting level3.
Exiting level2.
Exiting level1.

The actual output (with debugging enabled) is:
[test_sub_nesting(1)]: debuglevel 1
[test_sub_nesting(3)]: passing label level1
Entering level1.
[test_sub_nesting(5)]: gosub level2
[test_sub_nesting(9)]: passing label level2
Entering level2.
[test_sub_nesting(13)]: gosub level3
[test_sub_nesting(19)]: passing label level3
Entering level3.
[test_sub_nesting(23)]: gosub level4
[test_sub_nesting(32)]: passing label level4
Entering level4.
Exiting level4.
[test_sub_nesting(35)]: returning to line 23
[test_sub_nesting(26)]: gosub level4
[test_sub_nesting(32)]: passing label level4
Entering level4.
Exiting level4.
[test_sub_nesting(35)]: returning to line 26
Exiting level3.
[test_sub_nesting(28)]: returning to line 13
Exiting level2.
[test_sub_nesting(15)]: returning to line 13
ERROR: Overflow in level2.
[test_sub_nesting(17)]: exit

Note how it tried to return to line 13 twice in a row. The first time was correct, the second time was an error, and it should have been returning to the corresponding gosub on line 5.
This always seems to happen on the third context up from the deepest. In this example, the error happens in level 2 of 5. If I add another level, then the error happens on level 3 of 6.
I have isolated this to the case where there are two gosubs in a row, without being separated by a goto.
In other words, you can work around this problem (very painfully) with the following modifications to the script:
level1:
  echo Entering level1.
  gosub level2
  echo Exiting level1.
  exit

level2:
  goto level2_i  # Throw in an extraneous goto
level2_i:
  echo Entering level2.
  gosub level3
  echo Exiting level2.
  return
  echo ERROR: Overflow in level2.
  exit

level3:
  goto level3_i  # Another extraneous goto
level3_i:
  echo Entering level3.
  gosub level4
  goto level3_step2  # And yet another
level3_step2:
  gosub level4
  echo Exiting level3.
  return
  echo ERROR: Overflow in level3.
  exit

level4:
  echo Entering level4.
  echo Exiting level4.
  return
  echo ERROR: Overflow in level4.
  exit

This produces the correct output.
This bug is almost certainly caused by https://github.com/outlander-app/outlander-osx/blob/master/src/Outlander/Scripting/ScriptContext.swift#L211-219
If you are processing a gosub and the most recent thing that set gosubContext was also a gosub, then this method will push two contexts onto the stack instead of one, which would produce the behavior where two sequential returns both try to go back to the same line number.

Thanks for the report!  Are you currently using version 0.11.24 of Outlander?  This issue appears to be fixed in the recently released Outlander 2 Beta.
Outlander 2 has been re-written using Swift 5 and fixes a lot of issues found in 0.11.24.
https://github.com/outlander-app/outlander/releases


[R] Error when submitting profile without address

Note: I am using [R] for the testing on https://dao-dev.hypha.earth/
After closing the profile, the follwoing error occurs:
assertion failure with message: Owner [mem3.hypha] does not have a pair with key [ethaddress]

The profile page hasn't been changed. Also I don't think that's rigged for the dao dev.
Unless the same thing happen in production I would leave it.

The profile page hasn't been changed. Also I don't think that's rigged for the dao dev.
Unless the same thing happen in production I would leave it.

ok

ok