Service xiaomi_clean_zone does not seem to work properly when templated

Home Assistant release with the issue:
0.92.2
Last working Home Assistant release (if known):
Unknown
Operating environment (Hass.io/Docker/Windows/etc.):
Hassbian (virtual environment)
Component/platform:
Xiaomi Vacuum (https://www.home-assistant.io/components/vacuum.xiaomi_miio/)
Description of problem:
Vacuum does not clean expected area
Error in log:
Error while executing automation automation.activate_zone_cleanup. Invalid data for call_service at pos 1: expected list for dictionary value @ data['zone']
Problem-relevant configuration.yaml entries and (fill out even if it seems unimportant):
input_select:
### Vacuum Areas to clean ###
  area_to_clean:
    name: Area to clean
    icon: mdi:map-marker
    options:
      - Choose area
      - Casa Toda
      - Sala
      - Tapete Sala
      - Mesa Jantar
      - Hall Entrada
      - Cozinha
      - Hall Quartos
      - WC Hall
      - Quarto Diogo
      - Tapete Diogo
      - Quarto Sara
      - Tapete Sara
      - Quarto
      - WC Quarto
      - Tapetes
      - Quartos
      - Sala e Hall

automation:
### Start Cleaning chosen area ###
  - alias: Activate Zone Cleanup
    initial_state: false
    trigger:
      platform: state
      entity_id: input_select.area_to_clean
      from: 'Choose area'
    action:
### In case all house is to be cleaned up, just start vacuum, don't do zone cleanup ###
      service_template: >-
        {% if (is_state("input_select.area_to_clean", "Casa Toda")) %}
          script.clean
        {% else %}
          script.vacuum_zone
        {% endif %}
      data_template:
### When vacuuming the carpets, set fan speed to Max ###
        fan_speed: >-
           {% if (is_state("input_select.area_to_clean", "Tapete Sala")) or (is_state("input_select.area_to_clean", "Tapete Diogo")) or (is_state("input_select.area_to_clean", "Tapete Sara")) or (is_state("input_select.area_to_clean", "Tapetes")) %}
              Max
           {% else %}
              Balanced
           {% endif %}
### Since moved to living room, house map has always been with rooms on the left (so no other coordinates yet) ###
        zone: >-
           {% if is_state("input_select.area_to_clean", "Sala") %}
              [[21358,21316,28308,25566]]
           {% elif is_state("input_select.area_to_clean", "Tapete Sala") %}
              [[22158,22942,25008,24992]]
           {% elif is_state("input_select.area_to_clean", "Mesa Jantar") %}
              [[25709,22393,28109,25093]]
           {% elif is_state("input_select.area_to_clean", "Hall Entrada") %}
              [[21055,18905,23605,21355]]
           {% elif is_state("input_select.area_to_clean", "Cozinha") %}
              [[23681,19213,28281,21013]]
           {% elif is_state("input_select.area_to_clean", "Hall Quartos") %}
              [[19070,19284,21020,21334]]
           {% elif is_state("input_select.area_to_clean", "WC Hall") %}
              [[19153,17636,20753,19286]]
           {% elif is_state("input_select.area_to_clean", "Quarto Diogo") %}
              [[14292,20592,19392,23292]]
           {% elif is_state("input_select.area_to_clean", "Tapete Diogo") %}
              [[15038,20666,17488,22266]]
           {% elif is_state("input_select.area_to_clean", "Quarto Sara") %}
              [[14316,17340,19316,19990]]
           {% elif is_state("input_select.area_to_clean", "Tapete Sara") %}
              [[15038,17775,17688,19625]]
           {% elif is_state("input_select.area_to_clean", "Quarto") %}
              [[19400,21400,20450,24300], [14618,23425,19418,26375]]
           {% elif is_state("input_select.area_to_clean", "WC Quarto") %}
              [[19632,24342,21182,26142]]
           {% elif is_state("input_select.area_to_clean", "Tapetes") %}
              [[22158,22942,25008,24992], [15038,20666,17488,22266], [15038,17775,17688,19625]]
           {% elif is_state("input_select.area_to_clean", "Quartos") %}
              [[14084,17727,21034,26177]]
           {% elif is_state("input_select.area_to_clean", "Sala e Hall") %}
              [[21166,18955,28266,25505]]
           {% endif %}
### When vacuuming the carpets, always vacuum twice in a row ###
        repeats: >
           {% if (is_state("input_select.area_to_clean", "Tapete Sala")) or (is_state("input_select.area_to_clean", "Tapete Diogo")) or (is_state("input_select.area_to_clean", "Tapete Sara")) or (is_state("input_select.area_to_clean", "Tapetes")) %}
              {{2|int}}
           {% else %}
              {{1|int}}
           {% endif %}

script:
### Zone cleanup with specific new service ###
  vacuum_zone:
    sequence:
      - service: vacuum.set_fan_speed
        data_template:
          entity_id: vacuum.aspirador
          fan_speed: "{{ fan_speed }}"
      - service: vacuum.xiaomi_clean_zone
        data_template:
          entity_id: vacuum.aspirador
          zone: "{{ zone }}"
          repeats: "{{ repeats }}"
      - service: automation.turn_off
        data:
          entity_id: automation.activate_zone_cleanup

### Cleaning whole house in Balanced mode ###
  clean:
    sequence:
      - service: vacuum.set_fan_speed
        data:
          entity_id: vacuum.aspirador
          fan_speed: Balanced
      - service: vacuum.start
        data:
          entity_id: vacuum.aspirador
      - service: automation.turn_off
        data:
          entity_id: automation.activate_zone_cleanup

Traceback (if applicable):
Service xiaomi_clean_zone has been recently added in version 0.89.0 via pull request #19777.
Additional information:
I've seen other people complaining about it (https://community.home-assistant.io/t/xiaomi-zone-cleaning-automation-rule-problem/110557), so I suppose it is not an issue with my config (according to documentation, zone is being provided as Inline array),

I use that feature without problems, but using the old generic service vacuum.send_command, with parameters like:
{
  "entity_id": "vacuum.xiaomi",
  "command": "app_zoned_clean",
  "params": [[23900, 24300, 29300, 25900, 2]],
}

And I use it from a python_script so all logic is in python, instead of inside the jinja template :)
I didn't try with this new specific service vacuum.xiaomi_clean_zone with parameters zone and repeats, but if it works ok, could be because of how the template renders the list and how it's parsed when passed as data argument (maybe it's converted as a string?).
Have you tried to make the same service call from the dev tab, using a JSON dict with the parameters? If works from there, it's definitely a template thing.

maybe it's converted as a string?

Almost sure that this is the problem, but not sure it is an issue, because templates are meant for text. In fact, you explicitly do {{ value | int }} or {{ value | float }} when you need a number, so I think you cannot fill that service call right now from a template...
But you can implement it easily with a python script:
input_select:
  vacuum_clean_combination:
    name: Selección de zona de aspirado
    options:
     - Nada
     - Cocina
     - Cocina y salón
     - Salón
     - Ir al salón
     - Mesa de centro
     - Ir al distribuidor
     - Zonas interiores
     - Zona office
     - Zona dormitorio y baño
    initial: Nada
    icon: mdi:robot-vacuum

This is my script to clean zones selected from an input_select:
INPUT_SELECT = 'input_select.vacuum_clean_combination'
VACUUM_ENTITY = 'vacuum.robot_aspirador'

make_the_call = True
room_selection = data.get("room")
call_kwargs = {"entity_id": VACUUM_ENTITY, "command": "app_zoned_clean"}

if room_selection == 'Cocina':
    call_kwargs["params"] = [[23900, 24300, 29300, 25900, 2]]
elif room_selection == 'Cocina y salón':
    call_kwargs["params"] = [[23900, 24300, 29300, 25900, 1], [29300, 24300, 31200, 26000, 1], [31200, 24000, 36500, 28100, 1]]
elif room_selection == 'Salón':
    call_kwargs["params"] = [[31200, 24000, 36500, 28100, 2]]
elif room_selection == 'Mesa de centro':
    call_kwargs["params"] = [[33700, 24000, 36700, 26500, 2]]
elif room_selection == 'Zonas interiores':
    call_kwargs["params"] = [[25300, 26000, 29500, 28750, 1], [29600, 26000, 30600, 29800, 1], [29600, 29700, 31100, 31400, 1], [31200, 28500, 37600, 31400, 1]]
elif room_selection == 'Zona office':
    call_kwargs["params"] = [[25500, 29000, 29500, 31800, 2]]
elif room_selection == 'Zona dormitorio y baño':
    call_kwargs["params"] = [[34000, 28500, 37600, 31500, 2], [31200, 29800, 33300, 31400, 1]]
elif room_selection == 'Ir al salón':
    call_kwargs["command"] = "app_goto_target"
    call_kwargs["params"] = [33700, 26500]
elif room_selection == 'Ir al distribuidor':
    call_kwargs["command"] = "app_goto_target"
    call_kwargs["params"] = [29800, 29100]
elif room_selection == 'Nada':
    make_the_call = False
else:
    logger.error("ROOM not recognized: %s", room_selection)
    make_the_call = False

if make_the_call:
    hass.services.call('vacuum', 'send_command', call_kwargs)

And the automations gets simplified:
automation:
- alias: Vacuum select rooms to clean
  id: 'select_rooms_to_clean'
  trigger:
    platform: state
    entity_id: input_select.vacuum_clean_combination
  action:
    - service: python_script.select_vacuum_cleaning
      data_template:
        room: '{{ trigger.to_state.state }}'

Hi,
I have the same problem.
I tried to launch zones with a script, but it gives an error
input_text:
  vacuum_zone:
    initial: ''

script:
  vacuum_zone_set:
    sequence:
      - service: input_text.set_value
        data_template:
          entity_id: input_text.vacuum_zone
          value: >
            {% if states.input_boolean.vacuum_zone_bedrooms.state == 'on' %}
              {% set vacuum_zone_bedrooms = '[21000,17700,24100,27400],[24000,24000,25200,27400]' %}
            {% else %}
              {% set vacuum_zone_bedrooms = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_diningroom.state == 'on' %}
              {% set vacuum_zone_diningroom = '[24100,18000,27300,23450]' %}
            {% else %}
              {% set vacuum_zone_diningroom = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_kitchen.state == 'on' %}
              {% set vacuum_zone_kitchen = '[27250,22500,28570,27950]' %}
            {% else %}
              {% set vacuum_zone_kitchen = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_office.state == 'on' %}
              {% set vacuum_zone_office = '[25500,23400,27200,27300]' %}
            {% else %}
              {% set vacuum_zone_office = '' %}
            {%endif%}
            [{{ (vacuum_zone_bedrooms ~ vacuum_zone_diningroom ~ vacuum_zone_kitchen ~ vacuum_zone_office) | replace("][","],[") }}]

  vacuum_zone_manual:
    sequence:
      - service_template: >
          {% if states.input_select.vacuum_fan_speed_manual.state == 'Silencio' %}
            script.vacuum_fan_quiet
          {% elif states.input_select.vacuum_fan_speed_manual.state == 'Estandar' %}
            script.vacuum_fan_balanced
          {% elif states.input_select.vacuum_fan_speed_manual.state == 'Turbo' %}
            script.vacuum_fan_turbo
          {% elif states.input_select.vacuum_fan_speed_manual.state == 'Máximo' %}
            script.vacuum_fan_max
          {% elif states.input_select.vacuum_fan_speed_manual.state == 'Fregado' %}
            script.vacuum_fan_mop
          {% endif %}
      - service: script.vacuum_zone_set
      - service: vacuum.xiaomi_clean_zone
        data_template:
          entity_id: vacuum.clin
          zone: {{ states('input_text.vacuum_zone') }}
          repeats: "{{ states('input_number.vacuum_passes_manual') | int }}"
      - delay: 00:01:00
      - wait_template: "{{is_state('vacuum.clin', 'docked')}}"
      - delay: 00:00:15
      - service: homeassistant.turn_off
        entity_id: group.vacuum_zone
      - service: input_number.set_value
        data:
          entity_id: input_number.vacuum_passes_manual
          value: 1
      - service: script.vacuum_fan_balanced
      - service: input_text.set_value
        data:
          entity_id: input_text.vacuum_zone
          value: ''

I have also tried to create zones in these ways:
          zone: >
            {% if states.input_boolean.vacuum_zone_bedrooms.state == 'on' %}
              {% set vacuum_zone_bedrooms = '[21000,17700,24100,27400],[24000,24000,25200,27400]' %}
            {% else %}
              {% set vacuum_zone_bedrooms = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_diningroom.state == 'on' %}
              {% set vacuum_zone_diningroom = '[24100,18000,27300,23450]' %}
            {% else %}
              {% set vacuum_zone_diningroom = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_kitchen.state == 'on' %}
              {% set vacuum_zone_kitchen = '[27250,22500,28570,27950]' %}
            {% else %}
              {% set vacuum_zone_kitchen = '' %}
            {%endif%}
            {% if states.input_boolean.vacuum_zone_office.state == 'on' %}
              {% set vacuum_zone_office = '[25500,23400,27200,27300]' %}
            {% else %}
              {% set vacuum_zone_office = '' %}
            {%endif%}
            [{{ (vacuum_zone_bedrooms ~ vacuum_zone_diningroom ~ vacuum_zone_kitchen ~ vacuum_zone_office) | replace("][","],[") }}]

          zone: >
            {% if states.input_boolean.vacuum_zone_bedrooms.state == 'on' %}
            - [21000,17700,24100,27400]
            - [24000,24000,25200,27400]
            {%endif%}
            {% if states.input_boolean.vacuum_zone_diningroom.state == 'on' %}
            - [24100,18000,27300,23450]
            {%endif%}
            {% if states.input_boolean.vacuum_zone_kitchen.state == 'on' %}
            - [27250,22500,28570,27950]
            {%endif%}
            {% if states.input_boolean.vacuum_zone_office.state == 'on' %}
            - [25500,23400,27200,27300]
            {%endif%}

And I always get an error:
voluptuous.error.MultipleInvalid: expected list for dictionary value @ data['zone'] or similar
I think it would be important to be able to adjust the cleaning zones

@marcogazzola @rytilahti @syssi Can any of you confirm if this expected behaviour or a bug?
Thanks in advance.

Same problem here.
I implemented python script but i lose the map in xiaomi app

Same problem here.
I implemented python script but i lose the map in xiaomi app

Python script is simply a workaround, not a fix...

Sorry that it has taken to some time to respond, it is just that I don't personally know enough of the details to make a decision here, so I hope someone with more experience and knowledge to chime in how this should be handled.
I haven't ever personally used that feature (nor automations that much), but is there no possibility to make it pass those parameters as a list, if that is the problem (parameters passed as strings to service calls)? If not, I think one way to fix that would be to use ast to parse the given string inside the service handler.

@marcogazzola @rytilahti @syssi Can any of you confirm if this expected behaviour or a bug?
Thanks in advance.

Can anyone check please, before this issue gets closed by inactivity?
Thanks again.

I assume a ninja templating expert is needed here. I cannot help. You must make sure the type (it must be a list) of the zone(s) is correct.

Last version of Home Assistant doesn't solve this yet.
@marcogazzola @rytilahti Can any of you help here?
Thanks in advance.


Support for "imports" and "exports" fields in package.json

I am using the "exports" field in package.json with self-referencing import the files. But coc-definition and coc-reference doesn't work with theme new fields.
Note: I was using jsconfig.json file to define my paths but switched to the new field because of FOMO... This was of defining alias or path was working with some tweak for webpack, babeljs, eslint. I thought they will work well with the new standard fields.
  "name": "-",
  "exports": {
    "./*": "./src/*"
  }

import whatEver from "-/some-file/in/src";

You need to configure jsconfig.json or tsconfig.json https://code.visualstudio.com/docs/languages/jsconfig

This is a feature request 👈

That should be done by tsserver, send your feature request to tsserver, or you can create plugin for tsserver.

or you can create plugin for tsserver

And I will call it Yatss which stands for "yet another tsserver" 😂

That should be done by tsserver, send your feature request to typescript team

Thank you! I will do that insha'Allah...


Updated to bat 0.11.0 + rewrote Dockerfile using Alpine as a base

bumped bat's version to 0.11.0 (latest) & updated README
rewrote Dockerfile to use Alpine 3.9 as a base, lowering uncompressed
image size to ~14.4MB from ~238MB using Ubuntu 16.04

Hey there @danlynn, thanks for maintaining this image.
I just re-pushed a leaner version of my original PR that now pulls bat straight from the official Alpine package repository rather than wrangling it from GitHub's releases, as it's now listed in bat's installation instructions - you can find the relevant issue here
Image size is the same as before (14.4MB uncompressed), but the Dockerfile is streamlined.
If you'd like, I'd be happy to list myself as a maintainer of the image. Otherwise, I'll leave it as is. Let me know if you'd like anything changed.


Adding uint64 check directly

You can use the Uint64 type directly and it's somewhat necessary for runtime metrics. Also remember to change the import name back to the original one.

Thanks for this pull request! A variant of this has been merged.


Does added polyline survive Activity (and thus custom View with id) recreation?

I wanted to check how added polylines survives Activity (and thus custom View with id) recreation because I couldn't find it in docs.
Where can I find this information? Maybe docs should be enhanced? So far I see that MapView does not override onSaveInstanceState.

@farmazon3000 Quick answer: I don't believe Polylines survive their MapView. That makes sense for most cases, doesn't it?
On the other hand, if you keep a List<GeoPoint>, even if you destroy the Polyline/MapView/Fragment/Activity, you can recreate a Polyline from scratch each time you need it. There's not that much metadata in the Polyline.

Yeap - however a nice behaving custom View should do that by itself. Or at least inform use (in logcat at least) that it's rude.


Bump rke to v1.1.19-rc1

Related Issue: https://github.com/rancher/rancher/issues/33835

Tested S3 backups on the Rancher cluster provisioned from this fork using the latest available KDM version and was able to successfully backup


URLs in bin view are wrong... add'l slash

The links in the bin list have an add'l slash, e.g., http://jsbin.com**//**sdfsds

Can I get a screenshot? I'm not sure what the "bin view" is.

I'm assuming xalosi/5/edit instead of https://jsbin.com/xalosi/5/edit in the My Bins view.

Closing as dupe of #3160.


Porting to ROS2

This ports rqt_graph to ROS2. Because rosgraph does not exist in ROS2, I grabbed and modified the rosgraph.impl.Graph code. Most new logic for ROS2 was put in the _graph_refresh method.

Does this work with Crystal or is it using any API introduced after the release? In case of the former should this package be released?

It uses the rclpy functions introduced in this PR (https://github.com/ros2/rclpy/pull/247):
node.get_publisher_names_and_types_by_node(node_name)
node.get_subscriber_names_and_types_by_node(node_name)
node.get_service_names_and_types_by_node(node_name)

:+1: That PR is part of the Crystal release. I will go ahead and run bloom for this repo then.

ros/rosdistro#20174


$cordovaPushV5 events issue

Hello,
I've been having issues with $cordovaPushV5 whilst trying and intercept event $cordovaPushV5:notificationReceived
From a bit of debugging it looks like no event handler is ever registered using
$rootScope.$on('$cordovaPushV5:notificationReceived', func(event, notification)).
As a result no such notificationReceived event is ever emitted.
Environment infos:
Ubuntu 15.10
Node v4.4.2
Cordova 6.1.0
ng-cordova 1.6.2 (isuue verified with 1.6.1 too)
The workaround for this is  using the push object from $cordovaPushV5.initialize, for registering the callback
 $cordovaPushV5.initialize(pushConfig)
                        .then(function (push) {
                            push.on('notification', function (notification) {
                                alert(JSON.stringify(notification));
                            });
                        });

I don't know what ng-cordova 1.6.2 is. Our latest version is 0.1.26-alpha. are you sure you're using the right package?

Sorry, I meant
phonegap-plugin-push  1.6.2 (and even 1.6.1)
ng-cordova 0.1.24-alpha to 0.1.26-alpha
First of all tried to inspect whether the issue was related to phonegap-push-plugin itself, but while debugging I noticed the real issue was with $cordovaPushV5
Hope this helps, should you need further info or test, just ask!

I am using
Node v4.4.2
Cordova 6.1.1
phonegap-plugin-push 1.6.2
ng-cordova 0.1.26-alpha
The following code works perfectly on iOS (you didn't state the mobile you're using):
$rootScope.$on('$cordovaPushV5:notificationReceived', function (event, notification) {
       console.log('$cordovaPushV5:notificationReceived event: ' + event);
       console.log('$cordovaPushV5:notificationReceived message: ' + notification);
}

@bestmazzo The callback registration logic has been changed in $cordovaPushV5,  $cordovaPushV5.onNotification is not only a callback, but also a callback registration function.
To get the event notification, you have to call $cordovaPushV5.onNotification() after $cordovaPushV5.initialize getting resolved.
Here is the $cordovaPushV5.onNotification code:
https://github.com/driftyco/ng-cordova/blob/master/dist/ng-cordova.js#L6231


increase publish fleet state frequency to 10hz

Implemented feature
This PR updates the wall timer inside fleet_state_publish_period to 0.1 seconds to increase fleet state publish frequency for smoother visualization.
This is to support the new demo fleet adapter PR open-rmf/rmf_demos#109.

I strongly recommend not to modify the implementation of this function. Instead, users should call this api to set the publish frequency to whatever they desire.
Then in the python fleet adapter, users should use this binding to set the publish frequency. Currently, the configuration is only checking if users want to publish FleetState and if so does not modify the default publish frequency as seen here. What we can do instead is modify the config so that it takes in a frequency value instead of boolean. Then call  fleet_handle.fleet_state_publish_period() with the config value. The last thing to ensure is that the fleet state update frequency and robot state update frequency are the same.
If that makes sense, we can close this PR

I see! Sorry for the confusion :facepalm: thanks for clarifying! I'm good with closing the PR.


[Bug] unknown field "schemaId""

Describe the bug
A clear and concise description of what the bug is.

streamlit application can't produce verifiable credential.

To Reproduce
Steps to reproduce the behavior:

Go to ssi.benri.io
Click on create did. create schema. create VC.
See error

"error":"invalid create credential request: json: unknown field "schemaId""

Expected behavior
Credential is issued.
Supporting Material

Which version of the SSI Service is being run?

Latest commit: 02e7659790f07e378a60bb0c2fed675b0fd88f32

@andorsk can you try updating the service to https://github.com/TBD54566975/ssi-service/commit/d6cf60a2a485a6e6ec2a468d7a3fde72d1f79120 ?

Doing now

@decentralgabe d6 is older than 02. That still ok?

https://github.com/TBD54566975/ssi-service/pull/384


config : specify default about optimization.nodeEnv

Refer : https://github.com/webpack/webpack/blob/65710679fbb46534ada2ea93257bbfea573fc288/lib/config/defaults.js#L695-L698

[x] Read and sign the [CLA][1]. PRs that haven't signed it won't be accepted.
[x] Make sure your PR complies with the [writer's guide][2].
[x] Review the diff carefully as sometimes this can reveal issues.
[x] Do not abandon your Pull Request: [Stale Pull Requests][3].

Thanks!


Allow escape to be used to close terminal

Fixes #33683
A keydown listener is added to detect the escape key being pressed as keypress will not detect the escape key.
Checks for the escape key in the listener so modifier keys will not be detected.

This is behaving as designed, merging this PR would break terminal applications that use escape, such as vim.
The correct way to do this is to add the following keybinding to your keybindings.json:
{ "key": "escape", "command": "workbench.action.closePanel" }

And then add the "workbench.action.closePanel" command to the "terminal.integrated.commandsToSkipShell" command whitelist that bypasses the terminal in your settings.json.

@Tyriar is #33683 a non-issue then?

Yes it is as designed, will comment there.

The general case of escape not triggering close panel is as designed. #33683 however appears to be saying that pressing the escape key while the "press any key to close it" message is displaying does not close the panel. So I think #33683 is valid.


Update sidebar icon

Obviously this is a personal preference so let me know if this is not what you want for this package. 🙂
I thought it would make it stand out a bit more from the usual sidebar elements.
Screenshot:

Have you had a chance to look at this?
I realize this is opinionated, so it's totally fair if this is not what you want for this package.

Thank you! It was due for an upgrade.


Subninja support and multithreaded loading

Fixes #109
Fixes #108
This PR ports over most of the enhancements that are in Android's fork of ninja to n2. N2 goes from taking ~16 seconds to parse the AOSP ninja files, to ~1 second. (at least on my work computer where available_parallelism returns 128) It still seems to be about ~0.1 seconds slower than the android fork of ninja, but it's at least in the range where it's a little difficult to measure.
A general list of the changes in this PR:

Add support for subninja, with scoped variables.
mmap input files instead of reading them into memory.
Remove the FileIds and the Vec of files, replacing them with Arc. Having to maintain a separate vec mapping FileIds to files is too expensive.
Use the DashMap crate to map from filename to File object, so that id_from_canonical can be called in parallel.
Use rayon for multithreading.
Split input files into chunks and parse the chunks in parallel
Parse subninjas in parallel. Subninja support was implemented because regular includes cannot be processed in parallel.
Revamp the evaluation of variable assignments. Now, every statement in the ninja file gets a "scope position". When evaluating global variables, they are evaluated relative to a certain scope position, so you can evaluate the variable at a particular point in the file, even if it is reassigned later.
Introduce "clumps" of parse results, as returning all the parsed statements in a flat vector causes too many large vector concatenations.
Box Build objects, as they are quite large, and Vecs of unboxed builds are too large and slow to concatenate.
Don't evaluate all the build bindings at load time. Only evaluate the input/output files, and defer evaluation of other bindings until the build is actually run.
Evalstrings are now just regular strings instead of Vecs of strings. This means when they're evaluated they're re-parsed. Doing it this way saves of the Vec allocations, and in the case of owned evalstrings, does one big string allocation instead of a bunch of little ones. There are a lot more owned evalstrings now due to deferred evaluation of build bindings, so it makes a bit of a difference.

One thing that the android fork has that I didn't include was precomputed hashes. The android fork has a HashedString and HashedStrView type that it uses to ensure hashes aren't recalculated. This is somewhat difficult to do in rust, you have to either make concessions about being able to look up map values by their borrowed representation, use the raw entry map apis on nightly rust, or use hashbrown's RawTable. And even when I was experimenting with RawTable it didn't seem to provide a noticeable speedup.
Some of these optimizations are memory optimizations. This turned out to be necessary because apparently the exit_group syscall that quits the process spends time cleaning up memory. The exit_group syscall was taking over a second to run before some of these optimizations.
I've also bumped the rust version needed to compile n2 from 1.70 to 1.73, to be able to use usize::next_multiple_of. But if we want to keep the rust version low I can just manually write a next_multiple_of.

Wow, impressive!  I was just wondering this weekend whether you were still tinkering in this area...
Some minor thoughts I had while skimming this:

I wonder if an arena would help with the all the alloc/dealloc traffic, in particular parsing creates a zillion Builds and we never want to free any except all at once
re scope positions, I don't understand what you've done yet but in ninja we had each scope contain a pointer to its immutable parent scope, so in a series like a = ...; { b = $a; } a = ... the nested bit in the middle would see only the first value of a
have you looked at the perf of how quickly it starts on build tasks?  I imagine your 10% is just parse-time perf, and I'm curious whether n2's hash-based dirty checking impacts you

I did briefly look into bumpalo, but didn't use it because dashmap and stdlib hashmaps don't support custom allocators. However the hashbrown crate supports them, so maybe that's worth trying... I did use std::mem::forget on the graph at the end of the program so we don't spend time deallocating it.
Yes, I think that's essentially the same thing. Though now with the multithreading every variable assignment, rule, build, pool, default, and subninja gets a scope position so all these things can be evaluated in parallel, not just subninjas.
I haven't profiled build task start time, that might be worth doing but it should be much smaller than the parse time. I'm not sure what 10% you're referring to though.

By the way, did you ever get the copy of the android ninja files I shared with you after you requested them in https://github.com/evmar/n2/pull/94? You should have a shared google drive zip.

By the way, did you ever get the copy of the android ninja files I shared with you after you requested them in https://github.com/evmar/n2/pull/94? You should have a shared google drive zip.

Thanks!  I grabbed a copy onto my Google Drive.
I haven't looked into the rest of this PR yet, sorry. :(  It seems pretty fancy though, do you think you'll use it for Android going forward?

I haven't looked into the rest of this PR yet, sorry. :( It seems pretty fancy though, do you think you'll use it for Android going forward?

Do you mean this PR or n2 in general? For the PR, yes, we definitely need some kind of load speed improvement, 16 seconds to start ninja would cause riots.
For n2 in general, I've started the process of forking it into android, but there are still a number of features that need to be added. I'm hoping to switch to it soon because there are some other teams who either want to add more ninja features, or who have already made their own forks with new features and are now contemplating merging their code back into the android fork. (e.g. abfs, a filesystem that communicates the files read by actions back to the build system) I also want to implement action sandboxing. I think it would be easier to scale to all these new features if they were written in rust as opposed to C++.

I am glad it is working out!  I agree that working from Rust will hopefully make it easier to extend.  One of my goals with n2 was to make it separable enough that it's hopefully easier to extend.
BTW I think you'll need #50 if you want to use n2 in production.  Or maybe even consider using a real database, I dunno -- the load time is in the critical path so I'm kind of fond of my tricky hack.
In any case I'd be happy to give advice on any pieces you end up needing to interact with, feel free to email about them or file bugs.  (In particular I have some ideas on how n2 might implement content hashing for files, which is useful both for dirty checking but also for interacting with cloud build systems, and how that can nicely fit into n2's model.)

BTW I think you'll need https://github.com/evmar/n2/issues/50 if you want to use n2 in production. Or maybe even consider using a real database, I dunno -- the load time is in the critical path so I'm kind of fond of my tricky hack.

Yeah I'm aware of that issue. Though what "tricky hack" are you talking about?

In any case I'd be happy to give advice on any pieces you end up needing to interact with, feel free to email about them or file bugs.

Thanks! Though I think I have a good idea about what needs to be done. What would be most helpful would be if you could review changes like this one faster, but I understand that's a lot of work to ask of you. So I'm going to try to get a fork going so we can get the fork up to speed faster.

In particular I have some ideas on how n2 might implement content hashing for files

Yeah I'd like to add that feature as well.

Though what "tricky hack" are you talking about?

The custom "database" defined in db.rs.  I think Ninja has some extra goop in it for the databasey corner cases, where like each row is suffixed with a parity check to catch partial writes to it.


Inconsistent lap_heart_rate_count

In #9, I fixed the issue with cumulative lap distance/calories/time. At the time, I didn't realize then that lap_heart_rate_count should also not be cumulative.
In ae98d942 you fixed lap_heart_rate_count in the TAG_LAP handler, but it looks like you did not fix it in the end-of-file cleanup block. Here's a patch to do that.

Thanks Dan.


Python multithreading print error with the integrated terminal

VSCode Version: Code 1.18.1 (929bacba01ef658b873545e26034d1a8067445e9, 2017-11-16T18:32:36.023Z)
OS Version: Windows_NT x64 10.0.16299
Extensions:

Extension
Author (truncated)
Version

code-gnu-global
aus
0.2.2

python
ms-
0.8.0

cpptools
ms-
0.14.4

Steps to Reproduce:

create python script:

from multiprocessing import Pool, cpu_count
import traceback
import sys

def printfunc(msg):
    for i in range(20):
        print "TEST "+ str(msg) +" Count:" + str(i)
    return 0

if __name__ == "__main__":
    try:
        testlist = list(range(1000))
        pool_size = cpu_count()
        pool = Pool(processes=pool_size)
        print "Pool Size:", pool_size
        pool.map(printfunc, testlist)
        pool.close()
        pool.join()
    except Exception,e:
        pool.terminate()
        traceback.print_exc()
        sys.exit(1)

execute the script  in integrated terminal will print error message like:

but the script has no errors execute in external terminal (cmd or powershell)

Reproduces without extensions: Yes

@ivankravets looks like this is the same as https://github.com/platformio/platformio-vscode-ide/issues/61?

@Tyriar Yes, the same. In our case, the problem is linked with urllib2 library. However, the root of a problem is the same IOError: [Errno 0] Error.
This is a very specific issue. I can't reproduce it on my Windows VMs :(

@ivankravets I've tested it in windows7 and the issue can't be reproduced. It seems to be related to the OS version. And the problem may happened after I update to Windows 10 1703.

Linux version and MacOS version seem no this issue, Windows version, I just only running on Windows 10, other Windows I haven't.

@Meano does Python's socket work for you? Could you try this script
from urllib2 import urlopen

url = "http://dl.platformio.org/packages/toolchain-xtensa-windows-1.40802.0.tar.gz"

r = urlopen(url)
i = 0
for chunk in r.read(1024):
    i += 1
    print i

It fails for me between 10-30 iterations.

Failed, print error.

Cool! Let's wait when @Tyriar will fix it. I don't know why Python users don't report this issue. Maybe, they don't use built-in terminal :)

@rprichard any idea what could be happening here? Interestingly it doesn't seen to happen with @ivankravets's pty.js fork which is still on<EMAIL_ADDRESS>

for num in range(0,1000):
    print str(num)

using python 2.7, integrated terminal is unusable now

@Tyriar: @segevfiner filed an upstream winpty issue (https://github.com/rprichard/winpty/issues/134). I looked into it, and it looks like a Windows bug, which I filed here: https://github.com/Microsoft/console/issues/40. I doubt winpty can work around this problem.
FWIW, the legacy console shouldn't be affected by this issue.
It looks like Python 3 is also unaffected. Maybe it uses WriteConsoleW instead of WriteFile.

Thanks, this is indeed a console issue that we've addressed, it's the same issue as #36630.

Thanks all! I'll close it out in favor of #36630 then.


Relax mode support?

Would like to see relax mode support. It could be really helpful for any relax player.

Next release


Fix auc calculation and add tests

Before submitting

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

What does this PR do?
Fixes #195
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Stable sort that we are trying to do doesn't work: https://colab.research.google.com/gist/maximsch2/4341c3b01482f8b38ea0f0ed70affd33/stable-sort-in-pytorch.ipynb

@maximsch2 I see your point that no matter what we do, we will never get stable sorting on cpu until torch v1.9 is released. Could you please add a note to the affected metrics, that users can expect slightly different results on cpu vs gpu.
Also add a TODO that this is something we probably should revisit in the future.

Hello @maximsch2! Thanks for updating this PR.

In the file tests/classification/test_auc.py:

Line 78:92: W291 trailing whitespace


MS Office Cann't Open the Excel files created by the excelize package

Here is the screenshot

But the output excel file can be open by WPS normally.
Here is the output file.
Batch-20220309180252.xlsx

The version of the package is :
github.com/xuri/excelize/v2 v2.3.2

Thanks for your issue. Can you show us a complete, standalone example program or reproducible demo? And provide your input file, or at least tell us about it?

func ConvertToExcel(dataMap map[string][][]string) (*bytes.Buffer, error) {
	formatRow := func(originData []string) []interface{} {
		result := make([]interface{}, 0)
		for _, item := range originData {
			result = append(result, item)
		}

		return result
	}

	file := excelize.NewFile()

	for templateName, data := range dataMap {
		_ = file.NewSheet(templateName)
		streamWriter, err := file.NewStreamWriter(templateName)
		if err != nil {
			logkit.Error("ConvertToExcel: NewStreamWriter failed",
				zap.Any("templateName", templateName),
				zap.Error(err))
			continue
		}

		for idx, originRow := range data {
			rowID := idx + 1
			row := formatRow(originRow)
			cell, _ := excelize.CoordinatesToCellName(1, rowID)
			if err := streamWriter.SetRow(cell, row); err != nil {
				logkit.Error(fmt.Sprintf("ConvertToExcel: NewStreamWriter write <row:%d> failed", rowID),
					zap.Any("templateName", templateName),
					zap.Error(err))
			}
		}

		err = streamWriter.Flush()
		if err != nil {
			logkit.Error(fmt.Sprintf("ConvertToExcel: NewStreamWriter write flush failed"),
				zap.Any("templateName", templateName),
				zap.Error(err))
		}
	}

	// delete the default sheet
	file.DeleteSheet("Sheet1")

	buf := &bytes.Buffer{}
	if err := file.Write(buf); err != nil {
		logkit.Error("file.Write failed",
			zap.Error(err))
		return nil, err
	}

	return buf, nil
}

and then
        // it will call the above function: ConvertToExcel
	buf, err := m.service.TaskProgressBatchExport(taskIDs)
	if err != nil {
		m.Error(ctx, err)
		return nil
	}

	contentLength := int64(len(buf.Bytes()))
	contentType := "application/octet-stream"
	filename := fmt.Sprintf("Batch-%s.xlsx", time.Now().Format(util.TimeLayoutYYYYMMDDHHmmss))
	extraHeaders := map[string]string{
		"Content-Disposition": `attachment; filename="` + filename + `"`,
	}
	return ginweb.FileResponse(http.StatusOK, contentLength, contentType, buf, extraHeaders)

I try to follow this issue https://github.com/qax-os/excelize/issues/148, and add Set("Content-Transfer-Encoding", "binary") to header, it doesn't work still.

Thanks for your feedback, could you provides a simple standalone example program or reproducible demo?

demo case
func ConvertToExcel(dataMap map[string][][]string) (*bytes.Buffer, error) {
	formatRow := func(originData []string) []interface{} {
		result := make([]interface{}, 0)
		for _, item := range originData {
			result = append(result, item)
		}

		return result
	}

	file := excelize.NewFile()

	for templateName, data := range dataMap {
		_ = file.NewSheet(templateName)
		streamWriter, err := file.NewStreamWriter(templateName)
		if err != nil {
			logkit.Error("ConvertToExcel: NewStreamWriter failed",
				zap.Any("templateName", templateName),
				zap.Error(err))
			continue
		}

		for idx, originRow := range data {
			rowID := idx + 1
			row := formatRow(originRow)
			cell, _ := excelize.CoordinatesToCellName(1, rowID)
			if err := streamWriter.SetRow(cell, row); err != nil {
				logkit.Error(fmt.Sprintf("ConvertToExcel: NewStreamWriter write <row:%d> failed", rowID),
					zap.Any("templateName", templateName),
					zap.Error(err))
			}
		}

		err = streamWriter.Flush()
		if err != nil {
			logkit.Error(fmt.Sprintf("ConvertToExcel: NewStreamWriter write flush failed"),
				zap.Any("templateName", templateName),
				zap.Error(err))
		}
	}

	file.DeleteSheet("Sheet1")
        // cannot be open with MS Office
	file.SaveAs("test3.xlsx")

	buf := &bytes.Buffer{}
	if err := file.Write(buf); err != nil {
		logkit.Error("file.Write failed",
			zap.Error(err))
		return nil, err
	}

	return buf, nil
}

func TestUnitConvertToExcel(t *testing.T) {
	var dataMap = map[string][][]string{
		"test1": {
			{"hello", "world"},
			{"hello", "world"},
		},
		"test2": {
			{"hello", "world"},
			{"hello", "world"},
		},
	}

	ConvertToExcel(dataMap)
}

using v2.5.0 doesn't work.
I converted the xlsx file into a zip file and opened the sheet xml file,
seems like the sheet xml file is missing a closing worksheet tag

Hi @ac5tin, thanks for your feedback, please give a try with the master branch code, and if it still not work please provide your input file attachment without confidential info if you can.

test.xlsx

The spreadsheet in the attachment can't open normally by Excel application. Please make sure your file is a valid spreadsheet.

@ac5tin, please try to upgrade to the master branch code and use the GetRow or rows iterator to stream read worksheet data.

@ac5tin, please try to upgrade to the master branch code and use the GetRows or rows iterator to stream read worksheet data.

How did you generate this file? If you are using the stream writer to create the spreadsheet, as the document says that you must call the Flush method to end the streaming writing process before saving the file, otherwise the crouped file will be generated. In addition, it works if you upgrade to the master branch code and use the GetRows or rows iterator to stream read worksheet data.

im using StreamWriter to create spreadsheet, then finally use writeToBuffer to get the final file binary

As previously I said, you should be called the Flush function before saving the file. Please also reference the example in the documentation. If is still have a problem, please show us a complete, standalone example program or reproducible demo.

Thanks for your feedback, did you called the Flush function before saving the file? Could you show us a complete, standalone example program or reproducible demo?

yes, can confirm after adding Flush, it works now. Thanks @xuri
:D


inspectrum: 20160403 -> 20170218

And as a dependency:
liquid-dsp: init at 20170307

I would vote bugfix one but it's up to someone that can merge this. Just voting 😀


MediaElement fallback - Wait for song to start playing before start XHR for drawing

Not an issue, but maybe a feature if you will, of course.
In my project I needed the songs to start as soon as possible, so I've used the MediaElement backend fallback, but I've notice that when you don't provide peaks two requests are done, the audio one and the XHR at the same time.
This means you always are downloading the double of the size of the song.
In my case, I hacked the WaveSurfer.util.ajax method in order to wait fo the song to start playing before triggering the XHR request.
I used a flag in the ready event (startedPlaying, false by default and true when ready event is triggered). Then, in the ajax method when startedPlayed is true, then I start the XHR.
This wait the browser downloads the temporary audio buffer that needs to play the song fast, and then I start XHR knowing that the user is listening the song, which is the most important in my case.
Excellent plugin!

You can use the Media Element backend with an existing <audio> element. So, to control the loading and playback:

Insert the audio tag with preload=true.
When the user presses the play button, play the audio and load this element into wavesurfer.js (just call the load method with a reference to the element instead of a URL).

Thanks for the feedback, @katspaugh but that's one of the things I've tried.
The problem is that when you don't provide peaks, an XHR start simultaneously with the Audio load, so the bandwidth is divided in those two requests. As you cannot set priority, I needed to give max priority to the actual audio in some way.
What I mentioned is a way to give preference to the audio to load before the the audio to be drawn. Of course, just an idea, or maybe a use case for my particular issue.
The component is excellent, by the way!

Then you can first load it with an empty array (fake peaks), and when the user starts playing, load the same audio element without the fake peaks. Or maybe you don't even need to initialize wavesurfer.js before the user presses the play button.

Good to know. Just sharing my experience and my use case, maybe other people have the same issues. Thanks!


refactor: replace libnpm with pacote

We don't need all the other pieces libnpm offers

Messages

:book:

:white_check_mark: All tests are passing
Nice one! All 42 tests are passing.

@types/pacote
Author: Unknown
Description: TypeScript definitions for pacote
Homepage: http://npmjs.com/package/@types/pacote

Createdover 1 year agoLast Updated17 days agoLicenseMITMaintainers1Releases4Direct Dependencies@types/node, @types/npm-registry-fetch, @types/npmlog and @types/ssri

README
Installation

npm install --save @types/pacote

Summary
This package contains type definitions for pacote (https://github.com/npm/pacote#readme).
Details
Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/pacote/v9.

New dependencies added: pacote and @types/pacote.

  Generated by :no_entry_sign: dangerJS against 12ce6dc11eb312478a71454cb1d386283d860ef3


Ga/Ja_safe flags clean-up done

Only other remnant of mittleff is probably something in the readme

Indeed - just remove the embedded dependency comment from the README.
codecov is very unhappy now...


Write more types!

Use newtype over the various Strings that are being passed around to make it difficult to mix them up.

Hey! I'd like to take a crack at this.  It should be a good way to acquaint myself with the code, then I am thinking about looking at #1

awesome! Feel free to put up a PR when you can :)
Another possible idea -- rather than smashing a bunch of strings together, come up with a limited data Syntax = ... type that represents the limited fragment of Haskell syntax we're working with, and write a reasonable render :: Syntax -> String function for code gen.

Ah, just now seeing this after I submitted my PR :)
I like this data Syntax = ...idea a lot, and I would like to give it a shot.
I will get to work on it tomorrow after class.  Signing off for now :)


Improve bottleneck analysis: language-specific suggestions

Problem
The bottleneck analysis only highlights bottlenecks. It would be good to include more concrete guidance.
Suggested solution

detect language based on known mnemonics:

event of category action processing
check for mnemonic in args array

differentiate depending on menemonics

Java: break up large targets (BUILD file modification)
Cpp: break up large files (source code modification)
other languages?

Example mnemonics:

CppCompile
GoCompilePkg
Javac
Rustc

Mnemonics could be extracted from commonly used rules for different languages.

https://stackoverflow.com/questions/44494170/is-there-a-way-to-see-the-mnemonics-of-bazel-actions-that-are-running gives suggestions on how to find mnemonics.


Modus Select: Use Modus Icon for chevron

Currently the Select  component uses the browsers chevron which can vary between browsers. We should consider hiding the default chevron and using a custom Modus Icon - like we do with Modus Bootstrap.
cc @ryan-henness-trimble

    appearance: none;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%231b1a26' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.5rem center;
    background-size: 16px 12px;
    padding-right: 1.5rem;


support custom nonce when transfer tx

Agreed, this makes sense.

it's already possible with offline-extrinsic macro though


Pasted result get mixed on Mac

Text is mixed up in the past, with Auto Paste on macOS. I get part of the sentences mixed up at the end of the paste for some long text.
Is anybody experiencing the same issue? I'm using my Mac OS Sonoma and on a Mac M1 x86 version of Whisper ?

This is most likely an issue with the enigo crate. I'll take a look into an alternative pasting method: instead of writing enigo.text, I'll try sending literal keystrokes for pasting!
In the meantime, disable this setting and manually paste. Sorry for the inconvenience!


TestMonitoringStackController/stack_spec_are_reflected_in_Prometheus is not stable and need enhance

Failed in git action job and e2e test failure will block release image to stage and development channnel
https://github.com/rhobs/observability-operator/actions/runs/5927795330/job/16072036007

reproduced the issue by change DefaultTestTimeout as 30, monitoringstack need more time to be ready


Fix publish by enabling the required features

PR author checklist:

[ ] Added changelog entry, using unclog.
[ ] Added tests: integration (for Hermes) or unit/mock tests (for modules).
[ ] Linked to GitHub issue.
[ ] Updated code comments and documentation (e.g., docs/).

Reviewer checklist:

[ ] Reviewed Files changed in the GitHub PR explorer.
[ ] Manually tested (in case integration/unit/mock tests are absent).

btw
ancas-macbook-pro:relayer-rest ancaz$ cargo build
warning: unused import: `RelaySummary`
 --> relayer/src/worker/packet.rs:9:43
  |
9 | use crate::link::{error::LinkError, Link, RelaySummary};
  |                                           ^^^^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

warning: unused variable: `path`
  --> relayer/src/worker/packet.rs:46:5
   |
46 |     path: Packet,
   |     ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: `ibc-relayer` (lib) generated 2 warnings
    Finished dev [unoptimized + debuginfo] target(s) in 0.55s


Integrated Containerized Dev Environment

This PR focuses on integrating a containerized development environment to streamline testing and development processes. Looking forward to your review.

Looks good, thorough, and complete. I didn't actually test the Dockerization, but should get around to that sometime this week.


Keda external metrics endpoint breaks after OpenShift cert rotation

A clear and concise description of what the bug is.
Expected Behavior
Keda's external metrics apiservice endpoint should continue to work on a long-running OpenShift cluster.
Actual Behavior
Keda's external metrics apiservice endpoint stops working as soon as OpenShift rotates certificates.
Steps to Reproduce the Problem

Install the KEDA operator
oc get apiservice v1beta1.external.metrics.k8s.io and verify Available is True.
Wait for OpenShift to rotate certificates - 24 hours after creation of a brand new cluster, periodically after that
oc get apiservice v1beta1.external.metrics.k8s.io and see Available is now False.

Specifications

KEDA OLM Operator Version 1.3.0
KEDA Version: (whatever's installed by 1.3.0 operator)
Platform & Version: Openshift Container Platform 4.3.8
Kubernetes Version: 1.16
OLM Version: OCP 4.3.8

$ oc get apiservice v1beta1.external.metrics.k8s.io
NAME                              SERVICE                       AVAILABLE                      AGE
v1beta1.external.metrics.k8s.io   keda/keda-metrics-apiserver   False (FailedDiscoveryCheck)   21d

$ oc logs -n keda deployment/keda-metrics-apiserver --tail 5
E0416 17:41:23.982673       1 authentication.go:65] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority
E0416 17:41:23.982705       1 authentication.go:65] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority
E0416 17:41:23.982785       1 authentication.go:65] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority
E0416 17:41:23.982673       1 authentication.go:65] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority
E0416 17:41:23.982891       1 authentication.go:65] Unable to authenticate the request due to an error: x509: certificate signed by unknown authority

If installing KEDA on an existing OpenShift cluster that's past the initial cert rotation at the 24 hour mark, rotation will happen at least once every 30 days. I'm not sure if there's a way to manually force rotation to happen on-demand.


Merge hanan router

This PR adds an experimental gridless router to ALIGN. The flow using this router is loosely connected with the router. It is a bottom-up router. This router generates LEF/DEF files for each hierarchy. The script bin/gen_rt_hier_gds.py can be used to convert these files to GDS if needed.
I will work on integrating this router completely with the ALIGN PnR DB in a separate PR.

This PR is ready to merge.


Add a strategy that could mitigate this risk

          Add a strategy that could mitigate this risk

Originally posted by @morganhah99 in https://github.com/aron-s/mywebclass-agile-docs/pull/1#discussion_r1127893175

Fixed in document branch.


Obsolete command

Describe the bug
I am building latest azure-cli:2.64.0 in docker with some additional steps and it seems some commands don't work anymore although it used to work until azure-cli:2.56.0 (the latest version I was using).
Related command
groupadd
Errors
/bin/sh: line 1: groupadd: command not found
Issue script & Debug output
Dockerfile:
FROM mcr.microsoft.com/azure-cli:2.64.0
Configure users and groups for non-privileged use
RUN groupadd user -g 1000 && adduser -h /home/user -s /bin/bash -G user -u 1000 -D user
&& groupadd vsts -g 1001 && adduser -h /home/vsts -s /bin/bash -G vsts -u 1001 -D vsts
Expected behavior
Adding the group and user.
Environment Summary
azure-cli                         2.63.0 *
core                              2.63.0 *
telemetry                          1.1.0
Extensions:
azure-devops                       1.0.1
Dependencies:
msal                              1.30.0
azure-mgmt-resource               23.1.1
Python location '/opt/az/bin/python3'
Extensions directory '/home/cloudtest/.azure/cliextensions'
Python (Linux) 3.11.8 (main, Jul 31 2024, 03:39:39) [GCC 11.4.0]
Additional context
Did you happen to change the kernel...I assume there are more commands that have been replaced, correct?

Thank you for opening this issue, we will look into it.

The base OS is changed to Azure Linux in 2.64.0
Please run tdnf install shadow-utils before using addgroup
PS: We'll move to Azure Linux 3 later and I don't know how to do this in Azure Linux 3. Please create an issue in https://github.com/microsoft/azurelinux/issues
Ref: https://github.com/microsoft/azurelinux/issues/3239


Kafka configuration example

As I see, according https://github.com/jaegertracing/jaeger/pull/880 now it is possible to use kafka as storage, but how?
Requirement - what kind of business use case are you trying to solve?
Use kafka as primary storage.
Problem - what in Jaeger blocks you from solving the requirement?
There is no docs about it. Only for elastic and cassandra as storage backend here:
https://www.jaegertracing.io/docs/deployment/

It is possible to use Kafka as a write only storage. We expect storage
forwarding to Cassandra/ES and read functionality to be available in the
coming weeks. Documentation for Kafka use is being tracked at
https://github.com/jaegertracing/documentation/issues/90
On Tue, Jul 24, 2018 at 10:10 AM Anton K<EMAIL_ADDRESS>wrote:

As I see, according #880
https://github.com/jaegertracing/jaeger/pull/880 now it is possible to
use kafka as storage, but how?
Requirement - what kind of business use case are you trying to solve?
Use kafka as primary storage.
Problem - what in Jaeger blocks you from solving the requirement?
There is no docs about it. Only for elastic and cassandra as storage
backend here:
https://www.jaegertracing.io/docs/deployment/
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/jaegertracing/jaeger/issues/955, or mute the thread
https://github.com/notifications/unsubscribe-auth/AAy18cccCEigsasEZ6dLWaqxvKtP1HE6ks5uJyrNgaJpZM4Vc0Tn
.

@vprithvi - I had a quick scan of the code. Am I right in thinking you can't currently pass more complex sarama configuration through yet such as SASL authentication etc? I'm looking to use this integration with Azure's Event Hubs Kafka API and require to override some of the default configurations. Is this something in flight or would you welcome a PR if I can find time to add it?

I do still intend to finish this (I have the code ready) - I'm just waiting on a bug fix in the service so I can properly test.

Docs can be found at https://www.jaegertracing.io/docs/1.18/deployment/#kafka


chrome.tabs.onUpdated listener firing curiously

in quick succession (within < 10 ms) with no change in actual state (TabChangeInfo only includes "status" and it's the same, "complete")
Perhaps due to calling setCoilUrlForPopupIfNeeded, which calls reloadTabState, which in turn calls some api.browserAction apis  ?? Workaround may be to keep state and only use those apis if something has changed ...
Can test theory by removing calls to setCoilUrlForPopupIfNeeded

This is likely of course because of Tab:Window relationship being 1:M

https://bugs.chromium.org/p/chromium/issues/detail?id=165854


String expressions fail when properties are in an object

Joe I like this tool!
I ran this unit test, which is similar to your existing unit test.  It always returns false/0
'filtrex: object string test': function(test) {
        test.equal(1, compileExpression('obj.foo == "hello"')({obj:{foo:'hello'}}));
        test.equal(0, compileExpression('obj.foo == "hello"')({obj:{foo:'bye'}}));
        test.equal(0, compileExpression('obj.foo != "hello"')({obj:{foo:'hello'}}));
        test.equal(1, compileExpression('obj.foo != "hello"')({obj:{foo:'bye'}}));
        test.equal(true, compileExpression('obj.foo in ("aa", "bb")')({obj:{foo:'aa'}}));
        test.equal(false, compileExpression('obj.foo in ("aa", "bb")')({obj:{foo:'c'}}));
        test.equal(false, compileExpression('obj.foo not in ("aa", "bb")')({obj:{foo:'aa'}}));
        test.equal(true, compileExpression('obj.foo not in ("aa", "bb")')({obj:{foo:'cc'}}));
    }

So Filtrex fails to match strings when they are nested inside an object.  Do you think this is a problem with Filtrex or with the underlying jison engine?

Filtrex does not support nested expressions. I haven't added it because there's a lot of edge cases I'd like to think through first.
To handle this, you'll have to write code that flattens your structure into a single nested object.
For example, convert this:
{
  obj: {
    foo:'a',
    bar:'b'
  }
}

into this:
{
  'obj.foo': 'a',
  'obj.bar': 'b'
}

For a temp solution you can use https://www.npmjs.com/package/flat package :)

Also, the new filtrex supports the of operator:
let f = compileExpression('version of software >= 1.4')
f({ software: {name: 'Foo', version: 2} }) // true
f({ software: {name: 'bar', version: 1} }) // false

Using version of software instead of software.version might feel backwards for a developer, but it is closer to plain English, so we went with that.


Benchmark results for >4 cores

I really liked the benchmarks presentation in https://github.com/crossbeam-rs/crossbeam-channel/tree/master/benchmarks
Would it be possible to get those results for >4 cores and threads?
Also, one small suggestion would be to indicate the hardware and OS configuration on which the benchmarks were tested.

I've added machine info to the readme.
Yes, it's not difficult to tweak the tests to use more threads. Every benchmark file has something like this near the top:
const THREADS: usize = 4;

Simply bumping the number up is enough.
Unfortunately, I don't have a machine with more than 4 threads at hand, but you're welcome to play with benchmarks on your machine. Let me know if you get any interesting results. :)

Closing the issue since it became stale. If anyone's got benchmark results with higher numbers of threads, let me know.


Add decrypt option to core.get() for disabling

I would still like to reproduce the other case, probably before merging

@mafintosh Ready!


Proposal for #86

A proposed implementation for #86 comment.

explained the reasoning for rejecting in  #86


[stable/grafana] - Add allowUiUpdates for Grafana 6.5

Starting with Grafana 6.5 allowUiUpdates option is present for provisioning configuration.
I've added it to the Chart.
Checklist

[x] DCO signed
[x] Chart Version bumped
[x] Variables are documented in the README.md
[x] Title of the PR starts with chart name (e.g. [stable/mychartname])

@Aracki please sign-off your commits to pass DCO check.

/assign

@davidkarlsen @zanhsieh sorry for the DCO check. I've did it now.

/ok-to-test

/retest

/test pull-charts-e2e

/lgtm

@zanhsieh Can you help me on how to resolve this e2e test failure?

This test-container fails:
I0101 17:45:48.702] ------------------------------------------------------------------------------------------------------------------------
I0101 17:45:48.703] ==> Logs of container grafana-o9jz2bbclz-test
I0101 17:45:48.703] ------------------------------------------------------------------------------------------------------------------------
I0101 17:45:49.016] 1..1
I0101 17:45:49.016] not ok 1 Test Health
I0101 17:45:49.016] # (in test file /tests/run.sh, line 4)
I0101 17:45:49.016] #   `code=$(curl -s -o /dev/null -I -w "%{http_code}" $url)' failed with status 7

/retest


Delete unused data members, and optimizing abstract interfaces

#135 Delete unused data members, and optimizing abstract interfaces

Codecov Report

Merging #136 (dee34c9) into develop (c8f6b55) will increase coverage by 0.01%.
The diff coverage is 0.00%.

@@             Coverage Diff             @@
##           develop     #136      +/-   ##
===========================================
+ Coverage    41.95%   41.97%   +0.01%
===========================================
  Files          118      118
  Lines         4900     4898       -2
  Branches       713      713
===========================================
  Hits          2056     2056
+ Misses        2490     2488       -2
  Partials       354      354

Impacted Files
Coverage Δ

...ache/rocketmq/mqtt/meta/raft/MqttStateMachine.java
0.00% <ø> (ø)

...qtt/meta/raft/processor/CounterStateProcessor.java
0.00% <0.00%> (ø)

...ketmq/mqtt/meta/raft/processor/StateProcessor.java
0.00% <ø> (ø)

:mega: Codecov can now indicate which changes are the most critical in Pull Requests. Learn more


Sitemap

@afred? There are other ways this could be done, either internally, or in the format of the sitemaps, but I don't want to complicate this unnecessarily. If the rendering is too slow in production, or we are nearing 50K records, ... we can revisit.

@mccalluc, looks fine to me. I moved the solr query into the controller. I imagine we'll want to eventually add exhibits, overrides, scholar collections, etc.

more about separation of concerns than code style. The view shouldn't really be responsible for knowing where/how to retrieve data. It should just know how to present it.
I assume we'll want to add exhibits, scholar collections, static pages, et al to the site map. It would be much cleaner to add those to the @id in the SitemapController#index than it would to merge them all together in the view.
I see your point about optimization. But if the general problem is "my view is trying to render a large dataset", then I'm wary about trying to optimize by making "smart" views that know how and where to fetch a singular copy of said dataset. I think that can come back to bite you.
Caching could be a solution. Particularly with sitemaps, it's pretty common to compile them into static pages when you deploy. This would work well for us since our content isn't that dynamic.

@afred?

@mccalluc good find! and :+1: for trying on Transcripts.


Argmax fails when size > 63

Tests and comments in PR
https://github.com/deeplearning4j/nd4j/pull/1621/files

Fixed


fix(progress-spinner): unable to change mode on spinner directive

Currently we have the mat-spinner directive which is a shortcut to a mat-progress-spinner with mode="indeterminate". Since the spinner inherits all of the inputs from the progress spinner, there's nothing stoping people from changing the mode back to determinate, however the element will look half-broken because the host bindings assume that the mode won't change. These changes update the host bindings to allow switching between modes.
Fixes #14511.

Good point. I've reworked it to only have the one class.

@crisbeto some teams have unit tests that depend on the presence of the .mat-spinner class; could you add that back?

Done.

Hello,
We had tested a mat-spinner with mode="determinate" and a value. So the progress-bar turn and have the width of the percentile of progress. We find this comportment is great.
Can we keep or formalize this 'feature' ?


Zooms original image in thumbnail gallery, not new image

I have a grid of div's. Each div opens a modal. Each modal has a simple thumbnail gallery (click thumbnail, main image is replaced).
Problem is that zoom is only working with the original main image. It doesn't realize there is a new main image after clicking a thumbnail so it continues to zoom the original image.
SEE FIDDLE: http://jsfiddle.net/zuhloobie/bcuh489d/1/
How do I fix that?
Thanks in advance!

You need to recall the zoom function somehow. If you have it in a directive figure out how to recall the directive so that the zoom function can be called again.

I think you need to update the source for the zoom image too. So for example after line 38 of query.zoom.js I added:
.attr('id','zoomimage')
I then used the id "zoom image" with some javascript or jquery so that onclick on the thumbnail its swaps the src for the zoom. Hopefully this makes sense. See what I did here: http://bit.ly/1T0TylS

Hi guys, I think I am having the same issue.
The zoom image is not changing after i click on of the image or thumbnail. Please see: https://kauppa.paljasjalkakengat.net/products/kiinalainen-gua-sha-kivi
I am following this guide for shopify: https://www.shopify.com/partners/blog/jquery-image-zoom
Can someone give me hint please what am I missing?
`
  `

@jmcausing
I think the problem is $(this).
Try it:
url: $('.image-zoom img').attr('data-zoom')