esp32 mqtt over ssl issue (IDFGH-3851)

hai ,
i am trying implement mqtt over ssl and espi-df v4.0 dev.
tried with (examples/protocols/mqtt/ssl) example code
with default key is not connecting to server
when i am trying with my server and key i am getting the following error.
E (40589) esp-tls: mbedtls_x509_crt_parse returned -0x262e
E (40599) esp-tls: Failed to open new connection
E (40599) TRANS_SSL: Failed to open a new connection
E (40599) MQTT_CLIENT: Error transport connect
how to implement mqtt over ssl and what are the steps to folllow ?
help me out solve this.
thankyou,
Sowmiya

Hi,

tried with (examples/protocols/mqtt/ssl) example code
with default key is not connecting to server

Are you saying the example doesnt work in when connecting to the example server? Or that it doesnt work when switching to your server?

when i am trying with my server and key i am getting the following error.
E (40589) esp-tls: mbedtls_x509_crt_parse returned -0x262e

Like the error says, it failed to parse your certificate. Make sure that your certificate is parseable (e.g. test it using openssl/online checker) and that you are embedding it correctly in your app.

tired with default key and url which is in example code     mqtts://mqtt_eclipse_org port : 8883 but it not connecting to server
after tried with my sever and key   below is my error
E (4755) esp-tls: mbedtls_ssl_handshake returned -0x2700
I (4755) esp-tls: Failed to verify peer certificate!
I (4755) esp-tls: verification info:! The certificate Common Name (CN) does not match with the expected CN
E (4775) esp-tls: Failed to open new connection
E (4775) TRANS_SSL: Failed to open a new connection
E (4785) MQTT_CLIENT: Error transport connect
here i attached my code with the changes with key hardcoded . strucking in this place what are the changes to do in ssl example ?
what is the mistake here ? help me out to solve this..
#include <stdio.h>
#include <stdint.h>
#include <stddef.h>
#include <string.h>
#include "esp_wifi.h"
#include "esp_system.h"
#include "nvs_flash.h"
#include "esp_event_loop.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/semphr.h"
#include "freertos/queue.h"
#include "freertos/event_groups.h"
#include "lwip/sockets.h"
#include "lwip/dns.h"
#include "lwip/netdb.h"
#include "esp_log.h"
#include "mqtt_client.h"
#include <time.h>
#include <sys/time.h>
#include "esp_log.h"
#include "esp_attr.h"
#include "esp_sleep.h"
#include "nvs_flash.h"
#include "lwip/err.h"
#include "lwip/apps/sntp.h"
static const char *TAG = "MQTTS_EXAMPLE";
static EventGroupHandle_t wifi_event_group;
const static int CONNECTED_BIT = BIT0;
static esp_err_t wifi_event_handler(void *ctx, system_event_t *event)
{
switch (event->event_id) {
case SYSTEM_EVENT_STA_START:
esp_wifi_connect();
break;
case SYSTEM_EVENT_STA_GOT_IP:
xEventGroupSetBits(wifi_event_group, CONNECTED_BIT);
        break;
    case SYSTEM_EVENT_STA_DISCONNECTED:
        esp_wifi_connect();
        xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
        break;
    default:
        break;
}
return ESP_OK;

}
static void wifi_init(void)
{
tcpip_adapter_init();
wifi_event_group = xEventGroupCreate();
ESP_ERROR_CHECK(esp_event_loop_init(wifi_event_handler, NULL));
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
wifi_config_t wifi_config = {
.sta = {
.ssid = "test",                //CONFIG_WIFI_SSID,
.password = "test@123",             // CONFIG_WIFI_PASSWORD,
},
};
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA));
ESP_ERROR_CHECK(esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config));
ESP_LOGI(TAG, "start the WIFI SSID:[%s]", CONFIG_WIFI_SSID);
ESP_ERROR_CHECK(esp_wifi_start());
ESP_LOGI(TAG, "Waiting for wifi");
xEventGroupWaitBits(wifi_event_group, CONNECTED_BIT, false, true, portMAX_DELAY);
}
const char * mqtt_eclipse_org_pem_start = "-----BEGIN CERTIFICATE-----\n"
"MIIDXDCCAkSgAwIBAgIEXzpExDANBgkqhkiG9w0BAQsFADBwMQswCQYDVQQGEwJp\n"
"bjELMAkGA1UECAwCdG4xDjAMBgNVBAcMBWNoZW5uMRUwEwYDVQQKDAxUdHJhY2tl\n"
"cndhdk4xFjAUBgNVBAsMDVR0cmFja2Vyd2F2ZU8xFTATBgNVBAMMDFR0cmFja2Vy\n"
"d2F2ZTAeFw0yMDA4MTcwODUwMTJaFw0zMDA4MTcwODUwMTJaMHAxCzAJBgNVBAYT\n"
"AmluMQswCQYDVQQIDAJ0bjEOMAwGA1UEBwwFY2hlbm4xFTATBgNVBAoMDFR0cmFj\n"
"a2Vyd2F2TjEWMBQGA1UECwwNVHRyYWNrZXJ3YXZlTzEVMBMGA1UEAwwMVHRyYWNr\n"
"ZXJ3YXZlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAweu0v4B5twHc\n"
"ZYAJA9vqqbFfLCm3+cD4cBME3ZNz2QKyA9r9IaPGL0Pw76NUy/vODILPwUvILuej\n"
"dMnxwQEldNvzr/jM1uR9wIyueucB4PpI0QIa48nqyQpvgOgrY09S/gvaL7OCLmNF\n"
"oPJKeiNeAHsrG61ZqCzza4FUFS2ib2ojLxT7cI9t9MHF0TsiEmjHp4VP02vDtU3/\n"
"EYyY8BX6wYqBsd9E+5oUPesH5Sn0jtlPZ5DqQnp4ZQuMpCAUb9PmQbLPpI5Zbdob\n"
"5MxtTpbeROEyNA4WsAplcYYnbH2egRAHsNxeN9y6sacmxXST3UmUJ6uzkLg0Ig2I\n"
"gII1nuwJLwIDAQABMA0GCSqGSIb3DQEBCwUAA4IBAQCT7sMnm3pSmk/kk0kPIr78\n"
"yEO/rNj8jpOyhpihbx9+Bs3gIPnfgVza6yUN3UtagGW1L45o/UiIi5cTYwxqzfjI\n"
"UgL2+G3+KG2e4QtXDdK0uxnDhCsSqS++qZd/CSyaMn3owM7YUsEBEzzWUuo7yEZc\n"
"e9pFDlr2gEbPaVo2uoNW/G9vvHwk4TdJpudLG798xEfh4pyBBdkrauMVUuxNqCnw\n"
"+oMXcGp1n66FUcQI78tsTuTsnGgRIAPK8wx7gcmI6Z2zmZKHXjk9lvUJOmNGaunG\n"
"N4Ej1yzZ71brH5TxUnmB7XASWmkpp6nT1hcVVqPwp1K0uXwMJY8XrqTANbdXEOnf\n"
"-----END CERTIFICATE-----\n";
/*#if CONFIG_BROKER_CERTIFICATE_OVERRIDDEN == 1
static const uint8_t mqtt_eclipse_org_pem_start[]  = "-----BEGIN CERTIFICATE-----\n" CONFIG_BROKER_CERTIFICATE_OVERRIDE "\n-----END CERTIFICATE-----";
#else
extern const uint8_t mqtt_eclipse_org_pem_start[]   asm("_binary_mqtt_eclipse_org_pem_start");
#endif
extern const uint8_t mqtt_eclipse_org_pem_end[]   asm("_binary_mqtt_eclipse_org_pem_end");
*/
static esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event)
{
esp_mqtt_client_handle_t client = event->client;
int msg_id;
// your_context_t *context = event->context;
switch (event->event_id) {
case MQTT_EVENT_CONNECTED:
ESP_LOGI(TAG, "MQTT_EVENT_CONNECTED");
msg_id = esp_mqtt_client_subscribe(client, "/topic/qos0", 0);
ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);
        msg_id = esp_mqtt_client_subscribe(client, "/topic/qos1", 1);
        ESP_LOGI(TAG, "sent subscribe successful, msg_id=%d", msg_id);

        msg_id = esp_mqtt_client_unsubscribe(client, "/topic/qos1");
        ESP_LOGI(TAG, "sent unsubscribe successful, msg_id=%d", msg_id);
        break;
    case MQTT_EVENT_DISCONNECTED:
        ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
        break;

    case MQTT_EVENT_SUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_SUBSCRIBED, msg_id=%d", event->msg_id);
        msg_id = esp_mqtt_client_publish(client, "/topic/qos0", "data", 0, 0, 0);
        ESP_LOGI(TAG, "sent publish successful, msg_id=%d", msg_id);
        break;
    case MQTT_EVENT_UNSUBSCRIBED:
        ESP_LOGI(TAG, "MQTT_EVENT_UNSUBSCRIBED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_PUBLISHED:
        ESP_LOGI(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
        break;
    case MQTT_EVENT_DATA:
        ESP_LOGI(TAG, "MQTT_EVENT_DATA");
        printf("TOPIC=%.*s\r\n", event->topic_len, event->topic);
        printf("DATA=%.*s\r\n", event->data_len, event->data);
        break;
    case MQTT_EVENT_ERROR:
        ESP_LOGI(TAG, "MQTT_EVENT_ERROR");

//            if (event->error_handle->error_type == MQTT_ERROR_TYPE_CONNECTION_REFUSED) {
//                ESP_LOGI(TAG, "Connection refused error: 0x%x", event->error_handle->connect_return_code);
//            }
break;
default:
ESP_LOGI(TAG, "Other event id:%d", event->event_id);
break;
}
return ESP_OK;
}
static void mqtt_app_start(void)
{
const esp_mqtt_client_config_t mqtt_cfg = {
.uri = "mqtts://xx.xx.xx.xx:8883",                   //CONFIG_BROKER_URI,
.event_handle = mqtt_event_handler,
.cert_pem = mqtt_eclipse_org_pem_start,
.transport = MQTT_TRANSPORT_OVER_SSL,
};
ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size());
esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(client);

}
void app_main()
{
ESP_LOGI(TAG, "[APP] Startup..");
ESP_LOGI(TAG, "[APP] Free memory: %d bytes", esp_get_free_heap_size());
ESP_LOGI(TAG, "[APP] IDF version: %s", esp_get_idf_version());
esp_log_level_set("*", ESP_LOG_INFO);
esp_log_level_set("MQTT_CLIENT", ESP_LOG_VERBOSE);
esp_log_level_set("TRANSPORT_TCP", ESP_LOG_VERBOSE);
esp_log_level_set("TRANSPORT_SSL", ESP_LOG_VERBOSE);
esp_log_level_set("TRANSPORT", ESP_LOG_VERBOSE);
esp_log_level_set("OUTBOX", ESP_LOG_VERBOSE);
 nvs_flash_init();
wifi_init();

mqtt_app_start();
}

I (5663) event: sta ip: <IP_ADDRESS>, mask: <IP_ADDRESS>, gw: <IP_ADDRESS>
I (5663) MQTTS_EXAMPLE: [APP] Free memory: 4370172 bytes
I (5663) system_api: Base MAC address is not set, read default base MAC address from BLK0 of EFUSE
I (5673) MQTTS_EXAMPLE: Other event id:7
I (5873) mbedtls: ssl_tls.c:8021 => handshake
I (5873) mbedtls: ssl_cli.c:3405 client state: 0
I (5873) mbedtls: ssl_tls.c:2751 => flush output
I (5883) mbedtls: ssl_tls.c:2763 <= flush output
I (5883) mbedtls: ssl_cli.c:3405 client state: 1
I (5893) mbedtls: ssl_tls.c:2751 => flush output
I (5893) mbedtls: ssl_tls.c:2763 <= flush output
I (5903) mbedtls: ssl_cli.c:774 => write client hello
I (5913) mbedtls: ssl_tls.c:3180 => write handshake message
I (5913) mbedtls: ssl_tls.c:3337 => write record
I (5923) mbedtls: ssl_tls.c:2751 => flush output
I (5923) mbedtls: ssl_tls.c:2770 message length: 242, out_left: 242
I (5933) mbedtls: ssl_tls.c:2775 ssl->f_send() returned 242 (-0xffffff0e)
I (5943) mbedtls: ssl_tls.c:2803 <= flush output
I (5943) mbedtls: ssl_tls.c:3470 <= write record
I (5953) mbedtls: ssl_tls.c:3314 <= write handshake message
I (5953) mbedtls: ssl_cli.c:1106 <= write client hello
I (5963) mbedtls: ssl_cli.c:3405 client state: 2
I (5963) mbedtls: ssl_tls.c:2751 => flush output
I (5973) mbedtls: ssl_tls.c:2763 <= flush output
I (5983) mbedtls: ssl_cli.c:1499 => parse server hello
I (5983) mbedtls: ssl_tls.c:4305 => read record
I (5993) mbedtls: ssl_tls.c:2532 => fetch input
I (5993) mbedtls: ssl_tls.c:2693 in_left: 0, nb_want: 5
I (6183) mbedtls: ssl_tls.c:2717 in_left: 0, nb_want: 5
I (6183) mbedtls: ssl_tls.c:2718 ssl->f_recv(_timeout)() returned 5 (-0xfffffffb)
I (6183) mbedtls: ssl_tls.c:2738 <= fetch input
I (6193) mbedtls: ssl_tls.c:2532 => fetch input
I (6193) mbedtls: ssl_tls.c:2693 in_left: 5, nb_want: 70
I (6203) mbedtls: ssl_tls.c:2717 in_left: 5, nb_want: 70
I (6203) mbedtls: ssl_tls.c:2718 ssl->f_recv(_timeout)() returned 65 (-0xffffffbf)
I (6213) mbedtls: ssl_tls.c:2738 <= fetch input
I (6223) mbedtls: ssl_tls.c:4379 <= read record
I (6223) mbedtls: ssl_cli.c:1781 server hello, total extension length: 21
I (6233) mbedtls: ssl_cli.c:1970 <= parse server hello
I (6243) mbedtls: ssl_cli.c:3405 client state: 3
I (6243) mbedtls: ssl_tls.c:2751 => flush output
I (6253) mbedtls: ssl_tls.c:2763 <= flush output
I (6253) mbedtls: ssl_tls.c:5440 => parse certificate
I (6263) mbedtls: ssl_tls.c:4305 => read record
I (6263) mbedtls: ssl_tls.c:2532 => fetch input
I (6273) mbedtls: ssl_tls.c:2693 in_left: 0, nb_want: 5
I (6283) mbedtls: ssl_tls.c:2717 in_left: 0, nb_want: 5
I (6283) mbedtls: ssl_tls.c:2718 ssl->f_recv(_timeout)() returned 5 (-0xfffffffb)
I (6293) mbedtls: ssl_tls.c:2738 <= fetch input
I (6303) mbedtls: ssl_tls.c:2532 => fetch input
I (6303) mbedtls: ssl_tls.c:2693 in_left: 5, nb_want: 879
I (6313) mbedtls: ssl_tls.c:2717 in_left: 5, nb_want: 879
I (6313) mbedtls: ssl_tls.c:2718 ssl->f_recv(_timeout)() returned 874 (-0xfffffc96)
I (6323) mbedtls: ssl_tls.c:2738 <= fetch input
I (6343) mbedtls: ssl_tls.c:4379 <= read record
W (6343) mbedtls: ssl_tls.c:5713 x509_verify_cert() returned -9984 (-0x2700)
I (6343) mbedtls: ssl_tls.c:5244 => send alert message
I (6353) mbedtls: ssl_tls.c:3337 => write record
I (6353) mbedtls: ssl_tls.c:2751 => flush output
I (6363) mbedtls: ssl_tls.c:2770 message length: 7, out_left: 7
I (6373) mbedtls: ssl_tls.c:2775 ssl->f_send() returned 7 (-0xfffffff9)
I (6373) mbedtls: ssl_tls.c:2803 <= flush output
I (6383) mbedtls: ssl_tls.c:3470 <= write record
I (6383) mbedtls: ssl_tls.c:5257 <= send alert message
I (6393) mbedtls: ssl_tls.c:5810 <= parse certificate
I (6393) mbedtls: ssl_tls.c:8031 <= handshake
E (6403) esp-tls: mbedtls_ssl_handshake returned -0x2700
I (6413) esp-tls: Failed to verify peer certificate!
I (6413) esp-tls: verification info:   ! The certificate Common Name (CN) does not match with the expected CN
! The certificate validi
E (6433) esp-tls: Failed to open new connection
E (6433) TRANS_SSL: Failed to open a new connection
E (6433) MQTT_CLIENT: Error transport connect
I (6443) MQTTS_EXAMPLE: MQTT_EVENT_DISCONNECTED
here is my log when i hardcoded key for my server.
awaiting for ur reply...
thanks,
Sowmiya

Now you are posting a different error though?  -0x2700 vs -0x262e, did you fix your original problem then?
The new error message pretty much says what your problem is, The certificate Common Name (CN) does not match with the expected CN
The common name of the certificate needs to match the host you are connecting to. My guess is that you are connecting using an IP, so whatever you have as a common name doesn't match this.

yaah thank you for your quick reply , i am connecting with an ip, same ip as the host name on server side too still i m getting the same issue strucking here for the past one week .
the steps followed  :

default key which is not working for me without doing any changes on code.
my sever ip and ca is connecting with mqtt.fx and not into my idf and above is my code i done the changes using tls1.2
then is there any mistake on code side
tried with some online different online server  same connecting with mqtt.fx getting same error on idf.
could you please share me if any sample code for this if i m doing anything wrong here?

I just tested the mqtt/ssl example (commit id: 820621687ce04b3c8) and it connects just fine (no changes except the wifi password). If you are saying that you can't even get the example to work then you should start troubleshooting here before trying to change anything. Then there must be something wrong with your Wifi connection/firewall etc.

MQTT.fx might not be as strict with checking the certificate as IDF (mbedtls) is. If you are are connecting directly using an IP address, but your certificate specifies a name as the common name then this will not work.

1.default url and key which is in example code is not connecting with mqtt.fx also  but my server ip and key connecting with mqtt i dont know what is the mistake i am doing here .
2.i am connecting device with my wifi mobile network.
could you please share me the ssl code which you tested ?

I already linked it: https://github.com/espressif/esp-idf/commit/820621687ce04b3c85276ca0eb3fe72479573cfd

yaah got it , default not connecting with
mqtt_eclipse_org.txt
mqtt.fx , is that default key is valid ?  it is in pem format

Are you asking me why you cant connect with mqtt.fx using that certificate? If yes, then I have no idea, you need get help from the mqtt.fx guys then....
And yes, it's a valid certificate. You can even go to https://mqtt.eclipse.org/ and look at the certificate chain they are using and compare it if you want to. If you want to know if it's a valid .pem certificate then just check it yourself? There's a bunch of online certificate parsers out there.
In general, github issues are not the place to ask general "how do I do this" type of questions, we recommend using our forum: https://www.esp32.com/ for that.

That's good!
There's an option to turn off common name checking in MQTT added recently (https://github.com/espressif/esp-mqtt/commit/5e8950e681e5419d85e0ffc0d72a78cdeb894fd7). But the IDF repo still doesn't reference this commit (there's an in-progress MR to update it).

Not in the lastest IDF yet, but soon.

As of ffd7f39189278924fe81c94187167073342ba6a7 it's now possible to disable common name checking. Of course we still recommend keeping it on to avoid potential MITM attacks.
Closing issue.

Thanks for your reply, i am using dev 4.0 now i have to to update same version git for this feature ?

@sowmimalu release/v4.0 currently doesnt have the update yet, but hopefully it shouldnt take too long before it's backported and published here.

which git version i should now for this update ?

which git release version i should update for this now ?

master, but you could also checkout the latest mqtt submodule yourself if you wanna keep using release/v4.0

yaah , but i need to disable the common name checking option in ssl

could you please share the git link of master which is the latest release ?

Not sure which you are asking for, latest commit on esp-idf master is https://github.com/espressif/esp-idf/commit/8bc19ba893e5544d571a753d82b44a84799b94b1, lastet esp-mqtt commit is https://github.com/espressif/esp-mqtt/commit/fcd7f0d0839a1054084220f5786722e135c6e660

because of , currently i am using v4.0 dev there is no option to disable common name checking , for this i need  to update the latest commit


refactor: derive currentWorkspace in workspaces_service

Description

Issues Resolved

Screenshot

Testing the changes

Check List

[ ] All tests pass

[ ] yarn test:jest
[ ] yarn test:jest_integration
[ ] yarn test:ftr

[ ] New functionality includes testing.
[ ] New functionality has been documented.
[ ] Update CHANGELOG.md
[ ] Commits are signed per the DCO using --signoff

Codecov Report

Merging #126 (c5d2586) into workspace (220bb9d) will decrease coverage by 18.41%.
The diff coverage is 9.09%.

@@              Coverage Diff               @@
##           workspace     #126       +/-   ##
==============================================
- Coverage      65.77%   47.36%   -18.41%
==============================================
  Files           3337     2583      -754
  Lines          64497    52066    -12431
  Branches       10267     8367     -1900
==============================================
- Hits           42421    24661    -17760
- Misses         19500    25930     +6430
+ Partials        2576     1475     -1101

Flag
Coverage Δ

Linux_1
34.74% <9.09%> (-0.01%)
:arrow_down:

Linux_3
42.63% <9.09%> (-0.02%)
:arrow_down:

Windows_1
?

Windows_2
?

Windows_3
?

Windows_4
?

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

Files Changed
Coverage Δ

src/core/public/workspace/workspaces_service.ts
0.00% <0.00%> (-47.37%)
:arrow_down:

...c/core/public/workspace/workspaces_service.mock.ts
100.00% <100.00%> (ø)

... and 1387 files with indirect coverage changes
:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more


ramen_last_sync_timestamp_seconds metric

ramen_last_sync_timestamp_seconds

Type: Gauge

Can go down in a resync case, or where it is not yet established post relocate

Labels:

resource_type: [drpc|vrg|volume(pvc)]

future: will there be a volumegroup type?
Label based on resource reporting the metric, and for the resource it is reporting it for

name: Name of the resource
namespace: Namespace of the resource
schedule_interval: [|...]

Use-case:

Historical data on RPO breaches
Can plot hot/cold periods to plan for actions like relocate
Can alert when resource is off target from a schedule_interval perspective

Code mechanics:

last[Group]SyncTime

Updated when a VR reports the same causing a reconcile of VRG (and hence DRPC)

Report each time status is updated for a resource

Or just each time anyway, as it is a local cache, and the collector will pick up the current value, so an in memory update for all practical purposes

When an action is in progress, this reporting has to be stopped/stalled to the last known time

Technically the lastSyncTime should remain where it is, and then reset to "0" and then reset to the point when it syncs

Need to check history of the same during relocate operation

Report per-volume from VRG
Report lastGroupSyncTime from VRG

For metrics data on a managed cluster

Report  lastGroupSyncTime from DRPC

For data on the hub

Code mechanics:

lastSyncTime or lastGroupSyncTime is reported as a metric in places where it is updated in the code

References:

Naming and labels: https://prometheus.io/docs/practices/naming/
More on labels:

https://prometheus.io/docs/practices/instrumentation/#use-labels
https://prometheus.io/docs/practices/instrumentation/#do-not-overuse-labels

Timestamp guidelines: https://prometheus.io/docs/practices/instrumentation/#timestamps-not-time-since
Metric types: https://prometheus.io/docs/concepts/metric_types/

UI Requirements:

To raise the SLA alert, We need to compare the SLA taken with the scheduled interval. For that this one metric is not enough. We need another metric that has DRPolicy scheduled interval as metrics values and both metrics should have a DRPolicy name to join and display alert.
While generating the alert, the user should know for which application they are getting the alert, just adding DRPC info as a label won't be enough.
One possible solution is, the UI can provide the application name and application type as annotations or labels in DRPC CR.  So the DR operator can easily add this info as a metrics label. and while raising alert, we can easily add this info inside the alert description.
When an alert is notified through the alert managers (which is configured by the user manually) they will get meaning full alert.

cc: @ShyamsundarR and @rakeshgm

As per discussion with @rakeshgm UI has to read the lastUpdateTime using Prometheus query(time() - ramen_last_sync_timestamp_seconds). Ref: https://prometheus.io/docs/practices/instrumentation/#timestamps-not-time-since.
One issue with this approach is, if the ramen metrics exporter takes time to push metrics due to the temporary operator down, then the SLA calculation will for wrong. because here UI will consider the metrics reported time as last update time.

Alert rule:
Recording rule SLA: (time() - ramen_last_sync_timestamp_seconds) / on(drPolicyName) group_left( (dr_policy_sync_interval_seconds)
SLA > 1 and SLA < 2 - Warning
SLA >= 2 -  Critical

A metric as per the initial description is complete, additionally the metric carries a label policyname with a value that is the DRPolicy name.
Another metric has been added as follows to help correlate as a single prometheus query for alerts or graphs for a given DRPolicy as follows:
ramen_policy_schedule_interval_seconds
Labels:
  - policyname: DRPolicy name
Type: Gauge
Metric: <scheduling interval in seconds>

(time()-ramen_last_sync_timestamp_seconds) / on(policyname) group_left() (ramen_policy_schedule_interval_seconds)

This is now done. Marking this as closed.


As a Unity Project Manager, I want to know how much i'm spending on shared services.

Similar to #54 but for shared services.

Algorithm Catalog
Data Catalog

@mike-gangl I'm sure there is a way to do this, but I have some hesitations about how this would happen.  AWS reports cost for atomic units of resource (for example a single instance of a DynamoDB, or a S3 bucket, etc..).  I'm not sure if this is the case, but if multiple projects have entries in the same Data Catalog, for example, and that's hosted by a database, there might not be a clear way to divide the costs up.  However, perhaps the easy way is to simply divide the cost of a shared resource by the number of projects.  So if a database costs $5 per month, and there are 5 projects, then each project would pay $1.  I think these shared services are intended to be pretty light-weight (not hold the actual data, but just references and metadata), so this actually may be close to a fair thing to do.  Anyway, further strategy/discussion is needed here.

agreed @galenatjpl , it's not my intention to bill a project here, just to know how much the resource is costing us for a reporting point of view. If, say, the API Gateway or the data catalog become very expensive, we'd have to look into billing units for those

This might be addressed in #54 because that has been made less venue specific and more about the work we need to get done. We will keep this open until we get to this, and close if we already did tag allocations.

I marked this as "done" on the project board, since we have a solution (i.e. mostly #54) that allows for costing in a non-specific way using tags on the Kion dashboard, and we have proven that to work.

closing


How to authenticate in multi-tenant systems?

Hello,
It looks like the default implementation relies on the username being a unique field. In my case, I can have multiple users with the same username (but the client / username combination will be unique).
{"username":"myuseraccount","password":"mysecretpassword","client":"1500"}

What would I need to change so that I can add another parameter, like above, when making the initial authentication request?

I managed it writing a custom UserProvider, made it implements Lexik\Bundle\JWTAuthenticationBundle\Security\User\PayloadAwareUserProviderInterface.
In the new loadUserByUsernameAndPayload method you'll be given the username along the payload, there it is you can store arbitrary data inside it, like your client id.
Then you just have to find your user with username/clientId pair.
Add a listener to add client id on newly created jwt and you're good.
(listener  for event lexik_jwt_authentication.on_jwt_created)
Quite full example below:
namespace AppBundle;

use AppBundle\Entity\User;
use AppBundle\Repository\UserRepository;
use Lexik\Bundle\JWTAuthenticationBundle\Security\User\PayloadAwareUserProviderInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
use Symfony\Component\Security\Core\User\UserInterface;

class MyCustomProvider implements PayloadAwareUserProviderInterface
{
    /**
     * @var UserRepository
     */
    private $userRepository;

    /**
     * @var array
     */
    private $cache = [];

    /**
     * @var RequestStack
     */
    private $requestStack;

    public function __construct(UserRepository $userRepository, RequestStack $requestStack)
    {
        $this->userRepository = $userRepository;
        $this->requestStack = $requestStack;
    }

    public function loadUserByUsernameAndPayload($username, array $payload)
    {
        if (isset($this->cache[$username])) {
            return $this->cache[$username];
        }

        if (!isset($payload['clientId'])) {
            // Fetch from where ever you want, for example through the requestStack
            $payload['clientId'] = $this->requestStack->getCurrentRequest()->attributes->get('clientId');
        }

        $user = $this->userRepository->findOneBy([
            'username' => $username,
            'client' => $payload['clientId'],
        ]);

        if (null === $user) {
            throw new UsernameNotFoundException();
        }

        return $this->cache[$username] = $user;
    }

    public function loadUserByUsername($username)
    {
        return $this->loadUserByUsernameAndPayload($username, []);
    }

    public function refreshUser(UserInterface $user)
    {
        return $user;
    }

    public function supportsClass($class)
    {
        return User::class === $class;
    }
}

# security.yml

security:
    providers:
        custom_provider:
            id: AppBundle\MyCustomProvider # <- your class' service id, here i'm using autowiring
    firewalls:
        login:
            anonymous: true
            stateless: true
            provider: custom_provider
            json_login:
                check_path: my_route
                success_handler: lexik_jwt_authentication.handler.authentication_success
                failure_handler: lexik_jwt_authentication.handler.authentication_failure

namespace AppBundle;

use Lexik\Bundle\JWTAuthenticationBundle\Event\JWTCreatedEvent;
use Symfony\Component\HttpFoundation\RequestStack;

class AddClientPayloadListener
{
    /**
     * @var RequestStack
     */
    private $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function addClientToPayload(JWTCreatedEvent $event): void
    {
        $request = $this->requestStack->getCurrentRequest();

        if (null === $request) {
            return;
        }

        // Because in most case you'll only create tokens upon login or when refreshing token, only check for those routes
        $route = $request->attributes->get('_route');
        if ('client_login' !== $route && 'token_refresh' !== $route) {
            return;
        }

        $payload = $event->getData();
        // And again get your client id from where ever you want, for the example through the requestStack
        $payload['clientId'] = $request->attributes->get('clientId');

        $event->setData($payload);
    }
}

# services.yml

services:
    _defaults:
        autowire: true
        autoconfigure: true
        public: false

    # ...

    AppBundle\AddClientPayloadListener:
        tags:
            -
                name: kernel.event_listener
                event: lexik_jwt_authentication.on_jwt_created
                method: addClientToPayload

As explained, you should use built-in events to manipulate the payload, and make your user provider implement PayloadAwareUserProviderInterface.


Can we discuss how things are going to fit together

We’ve got a bunch of separate things and need to fit them together, I don’t know if you guys want to do this in person or online but we’ve got to get it sorted

Yeah we should try book a room in the library in person on wednesday maybe to finalise everything before friday deadline, but we really need to work on starting to put everything together soon before then.

Thats not a bad idea although I'm not sure if I'll be able to be there Wednesday. If you are doing it in person though, it's important to remember to still do as much as possible through git, cause that's what we're being marked on.

We could maybe do monday or tuesday in between lectures if that works for people instead of wednesday.

monday/tuesday between lectures is a pretty slim timeslot, at least for me. 1-2 hours. meanwhile wednesday is free.
that said, there's nothing saying we can't do multiple days. the more work done the better, right?

realised we never decided on a time, huh.


Remove a recommendation from "Authoring change logs" page

Remove recommendation to use the word "function" rather than "method", as it is frequently inaccurate and in conflict with existing verbiage in API Extractor

@octogonz


stderr/stdout of custom reboot command

is there a way to see the stderr/stdout of the "reboot command" kured is using?


Question reg. #2132 („Days since installation“)

Avoid duplicates

[X] Question is not already answered in the FAQ
[X] Question has not already been asked in another issue

Your Question

PR: #2132
Question:
What will users who update the app see for a number?
The days that passed since the update or the actual time how long they have the app installed?

@Ein-Tim Since installation. Updates should not reset the count.

@dsarkar
So even when I update from version 1.14.4 (which doesn't show how long the app was installed) to version 1.15, the correct time will be shown?

@Ein-Tim very good question! 👍
I guess the answer depends on how they designed their solution.
And asking this question before the release of such a feature gives the devs the chance to design it from the beginning in a way that meets user expectations; instead of  getting many questions and confused users after a release.

@ndegendogo
Yes, I wanted to ask this before the release.
If the app will show 0 days since installation after update to 1.15 then this needs a in app explanation (Pop-Up, etc.).

@Ein-Tim
From the code in the PR you can see that the installation date is inferred from the creation time of the app's folders. Upgrading the app does not affect this parameter.
For Android, there is an API call that returns the first install date.

Corona-Warn-App Open Source Team

Thanks @heinezen!


Cannot find the service principal start with Active

Cannot find the service principal named with Active Directory to Azure Active Directory Provisioning using Graph query after creating the cloud provisioning, the SP created in the AAD is named as the local AD domain name.

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

ID: b1503095-ac91-b631-b4f0-92dc75b935b2
Version Independent ID: 509a968d-8ee6-75c3-0f0f-04708a1dec06
Content: Understand the Azure AD schema and custom expressions
Content Source: articles/active-directory/cloud-provisioning/concept-attributes.md
Service: active-directory
Sub-service: hybrid
GitHub Login: @billmath
Microsoft Alias: billmath

@swiftPeter Thank you for your query. We will investigate and update the thread.

@swiftPeter, I apologize for the delay in my response. I tried the steps and I too dont see the "Active Directory to Azure Active Directory Provisioning" to be available in Azure AD. I am working with the backend team for now to understand the reason, and I will update this thread as soon as I hear back.

@swiftPeter, You would need to install the Microsoft AD Connect Provisioning Agent Package for the following service principal "Active Directory to Azure Active Directory Provisioning" to get created in AAD.
You can find the details on the installation steps here: https://docs.microsoft.com/en-us/azure/active-directory/cloud-provisioning/how-to-install
Hope this helps. Do let us know if any more queries around this so that we can help you better.

Hi,
Thanks for the response. I can find the service principal in the portal but
not named as AcTive Directory for AAD provisioning and cannot use graph
explorer to query, the service principal name is my local AD forest name,
can you please check it again?
On Wed, Sep 2, 2020 at 02:49 souravmishra-msft<EMAIL_ADDRESS>wrote:

@swiftPeter https://github.com/swiftPeter, You would need to install
the Microsoft AD Connect Provisioning Agent Package for the following
service principal "Active Directory to Azure Active Directory
Provisioning" to get created in AAD.
You can find the details on the installation steps here:
https://docs.microsoft.com/en-us/azure/active-directory/cloud-provisioning/how-to-install
Hope this helps. Do let us know if any more queries around this so that we
can help you better.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/MicrosoftDocs/azure-docs/issues/61459#issuecomment-685064650,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AHBHG4MX7RERHXM2ZYAILZDSDU6Z5ANCNFSM4QKCBU5Q
.

@billmath, Can you please take a look at this?

This document has been changed and the issue should now be resolved.
#please-close


Recommendation

The final step of the "Create a custom fine grained password policy (FGPP) on a managed domain" section could include information on how long until the policy to takes effect oh perhaps information on how to force propagation.

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

ID: 2eb4c941-c464-75cb-7a98-39c3a58be1b5
Version Independent ID: e93b1a8f-3de2-309e-5a0b-923e2fa15e0b
Content: Azure Active Directory Domain Services: Password policy
Content Source: articles/active-directory-domain-services/password-policy.md
Service: active-directory
Sub-service: domain-services
GitHub Login: @MikeStephens-MS
Microsoft Alias: mstephen

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

Sorry you ran into issues, @avelis26
The propagation of the fine grained password policy should occur within a few minutes across the Azure AD DS managed domain, but it won't necessarily force all users that aren't compliant to update their passwords accordingly.
What was the experience you encountered, or expected, so that we can update the doc accordingly and relay any necessary feedback to the engineering team?
#reassign:iainfoulds
#in-progress

Also, just to avoid any confusion, the password complexity portion of fine grain password policies or FGPP in Azure AD DS only affects users created directly in Azure AD DS. Cloud users and Domain users sync'ed into the managed domain service from Azure AD are NOT affected by the password complexity settings.  The source of those users (Azure or on-premise AD) controls the password complexity.  That said, the account lockout settings on those users does apply to all users within the managed domain.  FGPP is distributed through groups, so it should apply at the next user sign-in (as long as the user is a member of the group to which it was assigned)[group policy refresh]. Also, changing the policy will not unlock a user account is who already locked out.

Is there anything else you encountered here, @avelis26? @MarileeTurscak-MSFT can help facilitate an Azure support request if you aren't seeing your password policies applied at all.
I'll add information to the doc to make it clear that the password policy should apply pretty much right away, depending on group policy refresh, and that your policy changes will only affect users created within the Azure AD DS managed domain. Those users will be prompted for a password change on next login as required.


V.06b2: TTS not working

For me TTS didn't work yet. If one of the players is running with the volume on 100%, TTS attempt failed. This was the screen:

When als players have their volume below 90%, the current queue is interrupted, but no announcement is played, and shortly later the music continues.
I noticed errors in the log:
Logger: homeassistant.components.websoc ket_api.http.connection
Source: components/cast/ media_player.py:502
Integration: Home Assistant WebSocket API (documentation, issues)
First occurred: 20:25:14 (1 occurrences)
Last logged: 20:25:14
[547652456560] Error handling message: Unknown error (unknown_error)
Traceback (most recent call last):
File "/usr/src/homeassistant/ homeassistant/components/ websocket_api/decorators.py", line 27, in _handle_async_response
await func(hass, connection, msg)
File "/config/custom_components/ mass/websockets.py", line 98, in async_get_mass_func
await orig_func(hass, connection, msg, mass)
File "/config/custom_components/ mass/websockets.py", line 909, in websocket_playerqueue_command
await player_queue.player.volume_set(int( msg[COMMAND_ARG]))
File "/config/custom_components/ mass/player_controls.py", line 300, in volume_set
await self.hass.services.async_call(
File "/usr/src/homeassistant/

homeassistant/core.py", line 1704, in async_call
task.result()
File "/usr/src/homeassistant/
homeassistant/core.py", line 1741, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/ homeassistant/helpers/ entity_component.py", line 204, in handle_service
await service.entity_service_call( File "/usr/src/homeassistant/
homeassistant/helpers/service.py", line 680, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/ homeassistant/helpers/entity.py", line 964, in async_request_call
await coro
File "/usr/src/homeassistant/
homeassistant/helpers/service.py", line 717, in _handle_entity_call
await result
File "/usr/src/homeassistant/
homeassistant/components/ media_player/__init__.py", line 712, in async_set_volume_level
await self.hass.async_add_executor_ job( self.set_volume_level, volume)
File "/usr/local/lib/python3.9/ concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)

File "/usr/src/homeassistant/ homeassistant/components/cast/ media_player.py", line 502, in set_volume_level
self._chromecast.set_volume(volum e)
File "/usr/local/lib/python3.9/site- packages/pychromecast/ controllers/receiver.py", line 181, in set_volume
self.send_message({MESSAGE_TYP E: "SET_VOLUME", "volume": {"level": volume}})
File "/usr/local/lib/python3.9/site- packages/pychromecast/ controllers/__init__.py", line 121, in send_message
self.send_message_nocheck( File "/usr/local/lib/python3.9/site-
packages/pychromecast/ controllers/__init__.py", line 133, in send_message_nocheck
self._message_func(
File "/usr/local/lib/python3.9/site-
packages/pychromecast/ socket_client.py", line 938, in send_platform_message
return self.send_message(
File "/usr/local/lib/python3.9/site-
packages/pychromecast/ socket_client.py", line 927, in send_message
raise NotConnected(f"Chromecast {self.host}:{self.port} is connecting...") pychromecast.error.NotConnected:

Chromecast <IP_ADDRESS>:8009 is connecting...

Update v06b3. Noticed this error in the log after a tts attempt:
This error originated from a custom integration.

Logger: homeassistant.core
Source: custom_components/mass/player_controls.py:448
Integration: Music Assistant (documentation, issues)
First occurred: 20:55:48 (1 occurrences)
Last logged: 20:55:48

Error executing service: <ServiceCall media_player.play_media (c:01G5A1YB9Z8W85AGTT62NTVRS2): entity_id=['media_player.mass_everywhere_57'], extra=, media_type=provider, media_id=media-source://tts/google_translate?message=Freij+is+doing+nice+things>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 1722, in catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1741, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 964, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/mass/media_player.py", line 393, in async_play_media
    await self.player.active_queue.play_alert(media_id, announce_sound)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 309, in play_alert
    await self.load(queue_items)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 493, in load
    await self.play_index(0, passive=passive)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 451, in play_index
    await self.queue_stream_start(index, int(seek_position), fade_in, passive)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 662, in queue_stream_start
    await self.player.play_url(stream.url)
  File "/config/custom_components/mass/player_controls.py", line 448, in play_url
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.9/site-packages/pychromecast/quick_play.py", line 77, in quick_play
    controller.quick_play(**data)
  File "/usr/local/lib/python3.9/site-packages/pychromecast/controllers/media.py", line 544, in quick_play
    raise PyChromecastError()
pychromecast.error.PyChromecastError

Same test with one CC:
This error originated from a custom integration.

Logger: homeassistant.core
Source: custom_components/mass/player_controls.py:448
Integration: Music Assistant (documentation, issues)
First occurred: 21:25:59 (1 occurrences)
Last logged: 21:25:59

Error executing service: <ServiceCall media_player.play_media (c:01G5A3NM7N425NCT5PT3YKR1X1): entity_id=['media_player.mass_audio57serre'], extra=, media_type=provider, media_id=media-source://tts/google_translate?message=Dit+is+een+test>
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/core.py", line 1722, in catch_exceptions
    await coro_or_task
  File "/usr/src/homeassistant/homeassistant/core.py", line 1741, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 204, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 680, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 964, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 717, in _handle_entity_call
    await result
  File "/config/custom_components/mass/media_player.py", line 393, in async_play_media
    await self.player.active_queue.play_alert(media_id, announce_sound)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 309, in play_alert
    await self.load(queue_items)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 493, in load
    await self.play_index(0, passive=passive)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 451, in play_index
    await self.queue_stream_start(index, int(seek_position), fade_in, passive)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 662, in queue_stream_start
    await self.player.play_url(stream.url)
  File "/config/custom_components/mass/player_controls.py", line 448, in play_url
    await self.hass.async_add_executor_job(
  File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/local/lib/python3.9/site-packages/pychromecast/quick_play.py", line 77, in quick_play
    controller.quick_play(**data)
  File "/usr/local/lib/python3.9/site-packages/pychromecast/controllers/media.py", line 544, in quick_play
    raise PyChromecastError()
pychromecast.error.PyChromecastError

hopping over from the Sonos issue, Marcel I can confirm that returning to the core media_players for TTS messages, takes away the intermittent stops in the messages, and the delay.
Moreover, when playing to a group of active players, either by using an actual group entity, or by using a template listing the individual media_player entities, also works as before using the core media_players for GoogleHome's.
Using the mass_players in an identical setting causes huge delays and stops. And I am not ye talking about the additional 'Bell' sound (which I should file a FR for to make that optional...)
for reference, the template:
{{expand('media_player.broadcast')
                          |rejectattr('state','in',['unknown','unavailable'])
                          |map(attribute='entity_id')|list|join(',')}}

so it only streams to available players. The group I mention is auto created like:
      - service: group.set
        data:
          object_id: media_players_available
          name: Media players available
          entities: >
            {{expand('media_player.broadcast')
               |rejectattr('state','in',['unknown','unavailable'])
               |map(attribute='entity_id')|join(',')}}

and works perfectly in core Ha and with core HA medias_players.
hope this helps.

Additional info: When using the mass players only kind of works  (stuttering remains) for longer messages over 10 seconds as discussed over discord earlier.

not sure if this was discussed before,  but could it have to do with saving to cache of the tts mp3 messages?

V06b5 is working much better. Chapeau! Birth long and short announcements are working now. Errors in the log are gone. I only noticed a warning. Not sure if it's relevant for now:
Logger: music_assistant.stream
Source: /usr/local/lib/python3.9/site-packages/music_assistant/controllers/streams.py:147
First occurred: 15:57:17 (2 occurrences)
Last logged: 15:57:28

Got stream request for unknown id: 23905382df99419b8c9190d6cba23a0b
Got stream request for unknown id: 1e3621d6c27c4c86962b302f46869269

That stream request log is interesting because that means that the player is reconnecting while it already stopped.

I think we should leave this issue open because it should also work with grouped media players.

Yep, completed but not fully tested.
I just tried a TTS related scenario, using the play_media service to announce a prerecorded mp3 (skipping the TTS part):
service: media_player.play_media
data:
  media_content_id: /media/local/Door-Bell-Ding-A2-www.fesliyanstudios.com.mp3
  media_content_type: Music
  announce: true
target:
  entity_id: media_player.mass_everywhere_57

That amazingly works as well (ping, mp3 and the radio nicely resumed)
But there where these two errors in the log:
Failed to cast media http://<IP_ADDRESS>:8095/a53a4dbe4e384ce7bda3dcc4c3741d83.flac. Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address
16:39:31 – (ERROR) Google Cast
Error handling request
16:39:31 – (ERROR) /usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py

Detailed:
Logger: homeassistant.components.cast.media_player
Source: components/cast/media_player.py:388
Integration: Google Cast (documentation, issues)
First occurred: 16:39:31 (1 occurrences)
Last logged: 16:39:31

Failed to cast media http://<IP_ADDRESS>:8095/a53a4dbe4e384ce7bda3dcc4c3741d83.flac. Please make sure the URL is: Reachable from the cast device and either a publicly resolvable hostname or an IP address

Logger: aiohttp.server
Source: /usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py:405
First occurred: 16:39:31 (1 occurrences)
Last logged: 16:39:31

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/controllers/streams.py", line 160, in serve_queue_stream
    await queue_stream.subscribe(client_id, resp.write)
  File "/usr/local/lib/python3.9/site-packages/music_assistant/controllers/streams.py", line 302, in subscribe
    assert not self.done.is_set(), "Stream task is already finished"
AssertionError: Stream task is already finished

After several announcement's it broke (radio didn't resume).
That happens when I invoke the requests to fast after each other!

Same errors can occure when using TTS via the media browser

Verified this issue for beta7 and for me it;s totally broken. Sometimes a ping, sometimes hanging UI. Reload of MA needed to recover. Several errors ion the log:
[547393010608] Error handling message: Unknown error (unknown_error)
20:37:59 – (ERROR) Home Assistant WebSocket API (custom integration)
Error doing job: Task exception was never retrieved
20:37:45 – (ERROR) /usr/src/homeassistant/homeassistant/runner.py - message first occurred at 20:37:45 and shows up 3 times
Error doing job: Task exception was never retrieved
20:37:45 – (ERROR) Music Assistant (custom integration)
[547393010608] Error handling message: Unknown error (unknown_error)
20:37:45 – (ERROR) Home Assistant WebSocket API (custom integration) - message first occurred at 20:37:41 and shows up 4 times
Error doing job: Task exception was never retrieved
20:37:45 – (ERROR) /usr/src/homeassistant/homeassistant/runner.py - message first occurred at 20:37:41 and shows up 3 times

please test this with 2022.6.0/2022.6.1, it should be fixed

Will test today

TTS still not robust. Fisrt attempt:  Misc paused, TTS played, but no resume
The queue of the player was corrent and these messages in the log:
[547128774608] Error handling message: Unknown error (unknown_error)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/decorators.py", line 27, in _handle_async_response
    await func(hass, connection, msg)
  File "/config/custom_components/mass/websockets.py", line 101, in async_get_mass_func
    await orig_func(hass, connection, msg, mass)
  File "/config/custom_components/mass/websockets.py", line 873, in websocket_playerqueue_items
    result = [x.to_dict() for x in queue.items]
  File "/config/custom_components/mass/websockets.py", line 873, in <listcomp>
    result = [x.to_dict() for x in queue.items]
AttributeError: 'NoneType' object has no attribute 'to_dict'
Logger: homeassistant
Source: /usr/src/homeassistant/homeassistant/runner.py:96
First occurred: 19:33:58 (2 occurrences)
Last logged: 19:33:58

Error doing job: Task exception was never retrieved
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 796, in _save_items
    "items": [x.to_dict() for x in self._items],
  File "/usr/local/lib/python3.9/site-packages/music_assistant/models/player_queue.py", line 796, in <listcomp>
    "items": [x.to_dict() for x in self._items],
AttributeError: 'NoneType' object has no attribute 'to_dict'

Second try (after a reload) crashed earlier, before the ping, queue corrupt. Now these errors:
Error doing job: Task exception was never retrieved
19:47:28 – (ERROR) /usr/src/homeassistant/homeassistant/runner.py - message first occurred at 19:47:28 and shows up 2 times
[Everywhere_57(<IP_ADDRESS>):32034] Failed to connect to service ServiceInfo(type='host', data=('<IP_ADDRESS>', 32034)), retrying in 5.0s
19:47:28 – (ERROR) /usr/local/lib/python3.9/site-packages/pychromecast/socket_client.py
[Everywhere_57(<IP_ADDRESS>):32034] Error communicating with socket, resetting connection
19:47:28 – (WARNING) /usr/local/lib/python3.9/site-packages/pychromecast/socket_client.py

I think it's an add tracks to queue relate issue, as that doesn't work properly anymore as well (issue #392)

Update on testing with v2022.6.2:
The function works. I triggered the TTS several times.
Some things I noticed, are probably worth looking into before closing:

Noticeable longer delays, more than the version that worked for me a few beta's before (the one I made are recording)
Players have a lot of state changes, Also the MA player and player cards start flickering for seconds (see logbook image)
The volume of TTS was intentionally a little louder in the past, Now it's about half the volume of my music ?!

The state changes for one player, when running a TTS:

Can you please retest with 2022.6.4 ? I've adjusted the buffer a bit so the CC shouldn't be buffering that much (hence all the state changes)

I can do that today, just installed 6.4

I see one idle state less only.
It's a little faster I think
If the volume is supposed to be louder, its still below the music volume

are you testing this against a CC group or single player ?
what's your volume normalization setting ?
Note that the alert sound is leveled at (more or less) 0db while the regular music is leveled at the value set in the player settings. The whole idea is that your volume normalization leaves headroom for peaks in music so the baseline will be less loud than the alert sound.
Alternative is that MA adjusts the actual volume of the player but that means additional calls to the player

This was using a group cast. The logbook was just filtering one player to have a more concise view on the state changes.
As discussed on discord, I run with default normalization, now -14 LUFS,
When going to the old -23 value the TTS is louder

We decided to document the volume relation


Feature/stack character maps

Hi,
nice feature.
After a few quick test I found this problems with new push/pop characterMaps:

when is animation changed after characterMaps changes, transition has some-time wrong sprite scale and rotation when transition start (when is finished, then is scale correct)- looks like starting values are changed too to any values
when I repeatly change characterMaps with transition to another animation, I got error for all pivots:
...
transform.localPosition assign attempt for 'Pivot 0' is not valid. Input localPosition is { NaN, NaN, 0.000000 }.
UnityEngine.Transform:set_localPosition(Vector3)
...
popCharMap doesn't always return sprite back - after pop all maps from list, sprites are showed back in animation (maybe only example imlementation has issue)

Andy.

Hi,
Are you experiencing these issues with one of the included .scmls or one of your own? I can't replicate any of the issues.

Character maps should have zero effect on the actual transforms, they just replace one sprite with the other but should have the same transforms. Does the same happen when you transition without applying any CharMaps?

PopCharMap is a void method and is not supposed to return anything. It just removes the top CharMaps and applies the one below or the default if the last was removed. What exactly to you mean by this?

Hi,
thx for answer, now it's more clean for me how maps works.
Note: Attached link is animation (modified spriter animation) where I found described issue with transition.
Andy.
https://drive.google.com/open?id=0B_uExaroZMURdjYzTGVEeWF3N0U

The attached file is corrupted - I've tried a couple of times but I can't open the .zip file. Can you upload it again?

I send file to your @. Give me second.
Andy.
On Wed, Jan 27, 2016 at 11:41 PM loodakrawa<EMAIL_ADDRESS>wrote:

The attached file is corrupted - I've tried a couple of times but I can't
open the .zip file. Can you upload it again?
—
Reply to this email directly or view it on GitHub
https://github.com/loodakrawa/SpriterDotNet/pull/39#issuecomment-175898171
.

The issue you're experiencing has nothing to do with CharacterMaps but with the fact you have a different hierarchy in different animations. In order to have transitions (or animation blending) the hierarchies must be identical.
https://github.com/loodakrawa/SpriterDotNet/#animation-blending

Hi,
thanks and sorry for bug report.
Andy.
On Thu, Jan 28, 2016 at 7:01 AM loodakrawa<EMAIL_ADDRESS>wrote:

The issue you're experiencing has nothing to do with CharacterMaps but
with the fact you have a different hierarchy in different animations. In
order to have transitions (or animation blending) the hierarchies must be
identical.
https://github.com/loodakrawa/SpriterDotNet/#animation-blending
—
Reply to this email directly or view it on GitHub
https://github.com/loodakrawa/SpriterDotNet/pull/39#issuecomment-175997867
.

No worries - better safe than sorry :)


bug/BRIDGE-895

Added settings button to permission failed alert on Activities screen

Looks good. r=me


Split dataset fix

CORE-Report-2024-07-12T18-35-51.xlsx
supp_and_split.json
This rule likely need to return to editing.  The current code resolves the issue with is_split_dataset functionality being too specific, the rule clearly has a clause to exclude SUPP-- domain.  Engine and rule editor now are correctly getting the domain off supplementary datasets so SUPP-- Domains no longer exist within engine.  We likely need to add a clause that targets the supp domain's name similar to what was in the old Jira comments https://jira.cdisc.org/browse/CORERULES-9

The code looks great for now and implements the AC perfectly. From the previous comment, we now have two options:

We can approve this pull request and merge. While the rule can be updated later.
We wait for the rule to be updated and perform some more validation using the updated rule. Then we can approve and merge accordingly

My recommendation would be to go with second option. It will help ensure that we close the issue for once.


GSD Request

--- GSD JSON ---
{
  "vendor_name": "Linux",
  "product_name": "Kernel",
  "product_version": "versions from v5.5 to before v5.15.12",
  "vulnerability_type": "unspecified",
  "affected_component": "unspecified",
  "attack_vector": "unspecified",
  "impact": "unspecified",
  "credit": "",
  "references": [
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=2d4238f5569722197612656163d824098208519c",
    "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ad6d20da2cfbe14b7b1200d15f39e65988b0b9e8"
  ],
  "extended_references": [
    {
      "type": "commit",
      "value": "2d4238f5569722197612656163d824098208519c",
      "note": "introduced"
    },
    {
      "type": "commit",
      "value": "ad6d20da2cfbe14b7b1200d15f39e65988b0b9e8",
      "note": "fixed"
    }
  ],
  "reporter": "joshbressers",
  "reporter_id": 1692786,
  "notes": "",
  "description": "ice: xsk: return xsk buffers back to pool when cleaning the ring\n\nThis is an automated ID intended to aid in discovery of potential security vulnerabilities. The actual impact and attack plausibility have not yet been proven.\nThis ID is fixed in Linux Kernel version v5.15.12 by commit ad6d20da2cfbe14b7b1200d15f39e65988b0b9e8, it was introduced in version v5.5 by commit 2d4238f5569722197612656163d824098208519c. For more details please see the references link."
}
--- GSD JSON ---

This issue has been assigned GSD-2021-1002820


feat: Add missing webhook events

There are a whole heap of missing events in the webhook resource. This PR adds in all the missing events as per the fusion auth docs. There are now 38 events!
Looks like the tenant list got updated a few weeks back, so all good there.

Thank you!


Could it load and tune falcon-40B ?

TIIUAC  has released a promising model named falcon: https://huggingface.co/tiiuae .
Can QLora load and tune it?   It is totally free and can be used for commercial purposes.

I loaded falcon-40b-instruct into 4 GPUs, 12.3GiB each.
It runs extremely slowly.
I have seen others reporting loading it into a single GPU with 48GiB VRAM and it
was still extremely slow.

yes. I tested it with 8* A100, it occupates 12G on each GPU and stil not fast, especiaally alter the input length more than 500.

Yes. I tested it with 8* A100, it occupates 12G on each GPU and still not fast, especially alter the input length more than 500.

If falcon-40b produces high quality output, I would consider using it a source of training data for a smaller model.

I dont know how to run a model using multiple GPU nodes for inference can someone give me the code for it ?


cookie stays valid, even after logout

I have 2 tabs. I log in on both tabs and go to profil with profil Jack. Then I logout at tab1.
If I do a refresh on tab2 the session seems invalid en it goes correctly to the login page.
If I then login on TAB 1 again, en switch then to TAB2 and do backspace. The profile is
loaded again. I would expect the cookie to be invalid because I started a new session on Tab1.
The express4.x-local-example doesnt seems to look at the session.
I tried to destroy the session with no luck
req.session.destroy(function(err) {
req.logout();
res.redirect('/');
})
Could this be a security problem to? If someone stole my cookie, but I generate a new login. This stolen cookie is working again as soon the new session/cookie logins.

Browser tabs do not have separate sessions.

thnx


refactor: define struct for Libp2p Mixnet extension

I meant to do this in my initial implementation but forgot it. Sorry for your inconvenience.
I just defined a Mixnet struct that is used as an extension for libp2p backend, and moved all related function into it.
The reason of this refactoring is for implementing mixnet metrics soon.

I’ll close this for now and revisit or recreate when it’s really needed. I’m trying various angles of gathering metrics now


build: pre-commit hook

Summary by CodeRabbit

Chores

Integrated Pre-commit checks into the build workflow to ensure code quality and consistency.

Codecov Report
Attention: Patch coverage is 0% with 3 lines in your changes missing coverage. Please review.

Project coverage is 6.35%. Comparing base (ba6720d) to head (5ae7442).

Files
Patch %
Lines

midealocal/devices/e2/__init__.py
0.00%
3 Missing :warning:

Additional details and impacted files
@@          Coverage Diff          @@
##            main     #88   +/-   ##
=====================================
  Coverage   6.35%   6.35%
=====================================
  Files         77      77
  Lines       6644    6644
=====================================
  Hits         422     422
  Misses      6222    6222

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


More languages

Nice work!
Could you please add support for additional languages, such as German, English, and Arabic?
Thanks!

Thank you!
We updated it and now it support the following languages:

German, Arabic, English, Japanese, Chinese Simplified and Hindi.


Fix "RuntimeError: PyTorch was compiled without NumPy support"

Occurs when calling utilities.evaluation_utils.metrics_computations.py:compute_metric_results with Python 3.7
cf. https://github.com/HazyResearch/metal/issues/101

Codecov Report

Merging #63 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #63   +/-   ##
=======================================
  Coverage   48.19%   48.19%
=======================================
  Files          53       53
  Lines        2969     2969
  Branches      128      128
=======================================
  Hits         1431     1431
  Misses       1525     1525
  Partials       13       13

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update e9bfed5...90bb938. Read the comment docs.

Thanks @mberr!


[log4cpp] Change the source of log4cpp

Fixes https://github.com/microsoft/vcpkg/issues/31273
Change the source of log4cpp from https://github.com/orocos-toolchain/log4cpp to https://sourceforge.net/projects/log4cpp/.

[X] Changes comply with the maintainer guide
[X] SHA512s are updated for each updated download
[X] The "supports" clause reflects platforms that may be fixed by this new version
[ ] Any fixed CI baseline entries are removed from that file.
[X] Any patches that are no longer applied are deleted from the port's directory.
[X] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[X] Only one version is added to each modified port's versions file.

Pinging @jimwang118 for response. Is work still being done for this PR?

Not sure how we should address the versioning situation, given that this makes the version number go backwards. Will ask around... we might be forced to leave this as the taken name, delist it, and add log4cpp-sourceforge or something like that instead.

Looks like we've been using a funny source since all the way in the beginning in https://github.com/microsoft/vcpkg/pull/7433/

Thanks!


make all event types descriptive in debug logs

Action 'feedback_form' ended with events '[BotUttered('This is my message'), {"elements": null, "quick_replies": null, "buttons": null, "attachment": null, "image": null, "custom": null}, {},<PHONE_NUMBER>.440226), <rasa.core.events.SlotSet object at 0x1a37f2db90>, <rasa.core.events.Form object at 0x1a37f2d9d0>, <rasa.core.events.SlotSet object at 0x1a37f2d310>]'.

The BotUttered event here is actually helpful because it tells me what was output. however it would also be nice if i could see which slot was being set and to what, as well as whether a form was activated or deactivated, etc.

Bumping this up - the way most events are logged is not helpful for debugging:
Action 'some_custom_action' ended with events '[BotUttered('helpfully visible!', {"elements": null, "quick_replies": null, "buttons": null, "attachment": null, "image": null, "custom": {"text": "helpfully visible!", "type": "MESSAGE"}}, {},<PHONE_NUMBER>.5411195), <rasa.shared.core.events.SlotSet object at 0x7f478c273d90>, <rasa.shared.core.events.SlotSet object at 0x7f470a547970>, <rasa.shared.core.events.SlotSet object at 0x7f36572a4c70>, <rasa.shared.core.events.SlotSet object at 0x7f47872a4be0>, <rasa.shared.core.events.SlotSet object at 0x7f47e0632550>, <rasa.shared.core.events.ActiveLoop object at 0x7f890a598ee0>, <rasa.shared.core.events.SlotSet object at 0x7f120a598040>, <rasa.shared.core.events.SlotSet object at 0x7f460a56b3a0>]'.


Parameters from the query do not add into the resulting interface

https://github.com/christianhelle/refitter/blob/main/src/Refitter.Core/ParameterExtractor.cs#L15
I noticed that in the file ParameterExtractor.cs, parameters are added for the route and the body, but not for the query.

@1kvin Thanks for pointing this out!
I most likely missed this because the OpenAPI specifications that I have been working with for this project didn't use query parameters
I took the example specifications from official OpenAPI Specifications github repo and started off with getting those to work

@1kvin I have implemented the changes so it now generates Query parameters like this:
[Get("/pet/findByStatus")]
Task<ICollection<Pet>> FindPetsByStatus([Query]Status? status);

[Get("/pet/findByTags")]
Task<ICollection<Pet>> FindPetsByTags([Query(CollectionFormat.Multi)]ICollection<string> tags);

Good job!


Requires Glad

Providing AX-MediaPlayer to Cinder as a block appears to work like a treat. However, it seems a 3rd party library, namely glad, is required. I'd suggest adding it as some sort of requirement in the CMake file.
As you know by our cinder forum chats, I'm pretty much a CMake novice, so I don't know how best to add this requirement in a CMake file that is to be parsed by Cinder. All I know is that if I needed Glad in my own project, I'd install it using vcpkg, and then call find_package(glad REQUIRED) or something similar.

Glad comes with cinder, what version are you compiling against?

Looks like glad was added for cinder_0.9.3, before that it was using glload.
In the meantime you can replace the glad include with #include "glload/wgl_all.h" and i'll work out a way to detect the cinder version and alter the include accordingly

Ok, this commit detects the cinder version being used and includes the appropriate GL loader, please let me know if that does the trick when you get a chance. Ta

While I've not had a chance to add code that actively displays a decoded video texture, I have now managed to compile, link, and at least instantiate the player object and see it be successfully constructed.
Appreciate your patience. I've had more CMake barriers along the way, but I do believe that the vast majority is now behind me!
I'll post another update when I've seen some decoded textures in action - so far so good!

Good to hear, closing this for now since the glad/glload stuff seems to be sorted. Feel free to report any issues as you find them (time permitting, of course).
Thanks


No dimension set for key window

Version
Tell us which versions you are using:

react-native-router-flux v3.38.1
react-native v0.44.0
android device

Problem
After installing react-native-router-flux app crashs.The error is that "No dimension set for key window".I didnt import router but its crash app.

+1

You need to revert to 3.38.0
https://github.com/aksonov/react-native-router-flux/issues/1816

+1

@atmortensen  Reverting to 3.38.0 generates a new error
--<EMAIL_ADDRESS>    -- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>|| ^0.14.0 || ^15.0.0
This is because react-native 0.44.0 depends on react 16.0.0-alpha.6

I followed @ThiagoLottici solution in comment from issue #1811 in which he references #1710 as a workaround. This worked for me with version 3.38.0.

i am having the same issue :(

I have the same issue, it is pain.

I've "downgraded" to "^3.38.0", and it has worked:
"dependencies": {
    "react": "16.0.0-alpha.6",
    "react-native": "0.43.4",
    "react-native-router-flux": "^3.38.0"
  },

im having the same problem :
--<EMAIL_ADDRESS> +-- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>|| ^0.14.0 || ^15.0.0   --<EMAIL_ADDRESS>`--<EMAIL_ADDRESS>"dependencies": {
"firebase": "^3.9.0",
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-native-router-flux": "^3.38.0",
"redux-thunk": "^2.2.0"
}

v3.38.0 of react-native-router-flux seems to have a dependency on DatePickerIOS for some reason.

+1

Happens to me as well on a clean react-native project.
Version
Tell us which versions you are using:

react-native-router-flux v3.38.1
react-native v0.44.0
react 16.0.0-alpha.6

I am experiencing the same problem. Strangely enough the same project works on my Mac with run-ios, but after bringing the project to my PC and running run-android I started getting this issue.
Here is my package.json:
"dependencies": {
    "firebase": "^3.9.0",
    "react": "16.0.0-alpha.6",
    "react-native": "0.44.0",
    "react-native-router-flux": "3.38.0",
    "react-redux": "^5.0.4",
    "redux": "^3.6.0",
    "redux-thunk": "^2.2.0"
  },

I got it worked by following below steps.
1.Remove the "^" symbol from dependencies in package.json.
It should be like this  "react-native-router-flux": "3.38.0"
2. Install v 3.38.0.
Even though some warning are thrown after this step, it is working for me.

@lastxtemplar have you installed react-native-router-flux 3.38.0 after removing "^" from dependencies?

@Chandhru08
Your solution is not working for me. It is my dependencies:
"dependencies": {
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-native-localization": "^0.1.30",
"react-native-router-flux": "3.38.0"
},
After remove node_modules I perform npm install and I see:
--<EMAIL_ADDRESS>+-- UNMET PEER DEPENDENCY<EMAIL_ADDRESS>|| ^0.14.0 || ^15.0.0--
Could you please provide your package.json.

I tried @Chandhru08 solution but I get this red error screen when running the app ({"type":"InternalError", ...}) and in the terminal:
Loading dependency graph, done.
error: bundling: Error: ENOENT: no such file or directory, open '/Users/xxx/Desktop/testApp/node_modules/react-native-router-flux/node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js'

Please fix asap

Damn @Anima-t3d  im getting the exact same error!!! any solution yet?

Take a look at https://github.com/facebook/react-native/issues/13758. Particularly at the commentaries from @rkbhochalya and @mattdufeu. Check if you have other projects running (or were running on the same session - because rebooting solved for me).

Try clearing cache https://gist.github.com/jmoses89/c2e4786fd342b3444f3bc6beff32098d

If you have yarn installed this would be much faster watchman watch-del-all && rm -rf node_modules/ && npm cache clean && yarn install && npm start -- --reset-cache

I needed to restart my Mac and to run the commands provided by @rkbhochalya and now its working with the following package.json:
"react": "16.0.0-alpha.6",     "react-native": "0.44.0",     "react-native-router-flux": "^3.38.1"

@valerybodak  please find my complee JSON text below,
note: after installing react native router flux again the "^" symbol replaced automatically
{
"name": "manager",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"firebase": "^3.9.0",
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-native-router-flux": "^3.38.0",
"redux-thunk": "^2.2.0"
},
"devDependencies": {
"babel-jest": "19.0.0",
"babel-preset-react-native": "1.9.1",
"eslint-config-rallycoding": "^3.2.0",
"jest": "19.0.2",
"react-test-renderer": "16.0.0-alpha.6"
},
"jest": {
"preset": "react-native"
}
}
I have removed "^"  before installing react native router flux.
To install specific version-> npm install --save<EMAIL_ADDRESS>(some warnings may occur... ignore those
If you run android application after installing this, it will work

the same question . it not work when i try above method.   first project is work but other is not work

i have done @Chandhru08 and @rkbhochalya steps. It is not working. I am working on windows.
Instead this command
watchman watch-del-all && rm -rf node_modules/ && npm cache clean && yarn install && npm start -- --reset-cache
I do
rd /s /q node_modules && npm cache clean && yarn install && npm start -- --reset-cache
The error is still no dimension is set for key window. I wonder why.
My package.json as below.
{
    "react": "16.0.0-alpha.6",
    "react-native": "0.44.0",
    "react-native-router-flux": "^3.38.0",
    "react-redux": "^5.0.1",
    "realm": "^0.15.4",
    "redux": "^3.6.0",
    "redux-persist": "^4.0.0-alpha7",
    "redux-thunk": "^2.1.0",
 }

@rahmanazhar have you tried deleting the yarn.lock before running yarn install? Or running npm iinstead?

React-Native v .44 will work with flux-router .38+ but its not released yet.
Until then, use version 3.37.0 and make sure your in package.json file it looks like this
"react-native-router-flux": "3.37.0",
Notice that I removed the ^ symbol from the version number. This step is very important as the symbol forces npm install to look for the newest version instead of the version indicated. Cheers!

I keep getting this issue too, here's my package file.
{
"name": "manager",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"firebase": "^3.9.0",
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-native-router-flux": "^3.38.0",
"react-redux": "^5.0.4",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0"
},
"devDependencies": {
"babel-jest": "19.0.0",
"babel-preset-react-native": "1.9.1",
"jest": "19.0.2",
"react-test-renderer": "16.0.0-alpha.6"
},
"jest": {
"preset": "react-native"
}
}

change "react-native-router-flux": "^3.38.0", to "react-native-router-flux": "3.37.0",
then delete and reinstall node_modules

@wvicioso
Here's my updated package.
{
"name": "manager",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node node_modules/react-native/local-cli/cli.js start",
"test": "jest"
},
"dependencies": {
"firebase": "^3.9.0",
"react": "16.0.0-alpha.6",
"react-native": "0.44.0",
"react-native-router-flux": "3.37.0",
"react-redux": "^5.0.4",
"redux": "^3.6.0",
"redux-thunk": "^2.2.0"
},
"devDependencies": {
"babel-jest": "19.0.0",
"babel-preset-react-native": "1.9.1",
"jest": "19.0.2",
"react-test-renderer": "16.0.0-alpha.6"
},
"jest": {
"preset": "react-native"
}
}
Now the app doesnt even open on simulator.

@jpca999  Make sure you close the all processes including the packager and delete and reinstall your node-modules. You can do that by running this command rm -rf node_modules && npm install then do react-native run-ios or react-native run-android depending on which you're building for.

"Make sure you close the all processes including the packager"
Packager means all terminal processes - right ?
I quit the whole terminal.

Yes.  Share the error your get if the problem persists and let me
know if you're getting the problem on iOS or Android
On Tuesday, May 9, 2017, jayp<EMAIL_ADDRESS>wrote:

"Make sure you close the all processes including the packager"
Packager means all terminal processes - right ?
I quit the whole terminal.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/aksonov/react-native-router-flux/issues/1832#issuecomment-300277674,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AS3KkUKdhDk1hGbFEG6jq06FW9x92LFKks5r4MASgaJpZM4NOmSB
.

hmm i do delete the whole node modules folder, & then npm i
I'm running on ios.
Thanks: )
Here's the error:

It's a package issue not my code issue

Give me a pcakcage file that works for other people...

@wvicioso

resolved here https://github.com/aksonov/react-native-router-flux/issues/1816
"react": "16.0.0-alpha.6",
"react-addons-pure-render-mixin": "15.5.2",
"react-native": "0.43.3",
"react-native-router-flux": "3.38.0",
"react-static-container": "^1.0.1",

so you downgraded the react-native version. that's intersting. My projects use react-native .41 and flux-router 3.37

+1

Resolved, just try changing the versions

On May 10, 2017, at 7:59 PM, Diego Rodrigues Vieira<EMAIL_ADDRESS>wrote:
+1
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

@jpca999 now I'm using react-native 0.44 and still happens

+1

@aksonov - Is this repo no longer maintained? I am having the same issues and have tried some suggestions from this feed with no success.

It seems to me that this project is not being maintained, I am now using react-navigation...

How's it working out ?

On May 12, 2017, at 8:43 AM, Diego Rodrigues Vieira<EMAIL_ADDRESS>wrote:
It seems to me that this project is not being maintained, I am now using react-navigation...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Latest versions of RN are not supported yet. I will take a look it but have limited available time. PR is welcome

12 мая 2017 г., в 16:30, jayp<EMAIL_ADDRESS>написал(а):
How's it working out ?

On May 12, 2017, at 8:43 AM, Diego Rodrigues Vieira<EMAIL_ADDRESS>wrote:
It seems to me that this project is not being maintained, I am now using react-navigation...
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Same here for react-navigation https://reactnavigation.org/

it  work after i restart pc;

I had this issue on a clean react-native project, I don't even use flux.
It happened when I switch to another react-native project and back. I fixed by killing emulator, terminal, Xcode, remove node_modules and it worked.

I am affected from this issue too although I still use "react-native-router-flux": "^2.3.9".

The same issue.

I'm configuring now our IOS Platform, unfortunately I'm encountering with this issue.

@Ethan0007 : any luck fixing it? I'm stuck on the same issue , tried everything suggested

@airman00  yes sir, if you're configuring IOS please set your Dimensions.get('window'); instead of Dimensions.get('screen');

Himm I tried replacing all Dimensions.get('window') with Dimensions.get('screen'), now I just get this error
No dimension set for key screen', reason: 'Unhandled JS Exception: No dimension set for key screen
I also tried making sure that all Dimensions.get('screen') were Dimensions.get('window') and that just gets you
No dimension set for key screen', reason: 'Unhandled JS Exception: No dimension set for key screen
Any ideas what to try next?

make sure that you replace them all. then try to npm start --reset-cache

Sorry, to be clear - you replaced all  Dimensions.get('window') with Dimensions.get('screen')  for your solution?
Or you replaced all  Dimensions.get('screen') with Dimensions.get('window')  for your solution?

replace Dimensions.get('screen') with Dimensions.get('window') if you are configuring IOS.


DoNotDisturb sequence

Here is the OperationPayload Data:
        "nodesToExecute": [
          {
            "@type": "com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode",
            "type": "Alexa.DeviceControls.DoNotDisturb",
            "skillId": "amzn1.ask.1p.alexadevicecontrols",
            "operationPayload": {
              "customerId": "XX",
              "devices": [
                {
                  "deviceTypeId": "A3S5BH2HU6VAYF",
                  "deviceSerialNumber": "XX",
                  "deviceAccountId": "XX"
                }
              ],
              "action": "Enable",
              "timeZoneId": "America/Chicago"
            },
            "name": null
          },
          {
            "@type": "com.amazon.alexa.behaviors.model.OpaquePayloadOperationNode",
            "type": "Alexa.DeviceControls.DoNotDisturb",
            "skillId": "amzn1.ask.1p.alexadevicecontrols",
            "operationPayload": {
              "customerId": "XX",
              "devices": [
                {
                  "deviceTypeId": "A3S5BH2HU6VAYF",
                  "deviceSerialNumber": "XX",
                  "deviceAccountId": "XX"
                }
              ],
              "action": "Disable",
              "timeZoneId": "America/Chicago"
            },
            "name": null
          }
        ]

Thanks! I'll see about adding something to enable this.

I'll probably add this as a switch platform unless someone can think of a more appropriate mechanism. The API should already allow this (although the play_media service won't.)

I have a test branch for DND where it's switch based. See this comment if you want to try it out.


city field blank for many records in deaths_recoveries.json

Information for the city is missing in many cases. Is there some other place where one could get this?
Thanks.

We're constantly updating this info in sheets as we get.


Overlaying NdOverlays

This one is also new
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-84-7ff5c2805a05> in <module>()
----> 1 hv.Overlay([a_err.collate().overlay('Default').layout('Location')[:,:,:,0:],a.collate().overlay('Default').layout('Location')[:,:,:,0:]])

/home/tenner/src/holoviews/holoviews/core/overlay.pyc in __init__(self, items, group, label, **params)
    104         self.__dict__['_label'] = label
    105         Layout.__init__(self, items,
--> 106                           **{k:v for k,v in params.items() if k not in view_params})
    107         ViewableElement.__init__(self, self.data,
    108                                  **{k:v for k,v in params.items() if k in view_params})

/home/tenner/src/holoviews/holoviews/core/layout.pyc in __init__(self, items, identifier, parent, **kwargs)
    396         self.__dict__['_max_cols'] = 4
    397         if items and all(isinstance(item, Dimensioned) for item in items):
--> 398             items = self.from_values(items).data
    399         params = {p: kwargs.pop(p) for p in list(self.params().keys())+['id'] if p in kwargs}
    400         AttrTree.__init__(self, items, identifier, parent, **kwargs)

/home/tenner/src/holoviews/holoviews/core/layout.pyc in from_values(cls, val)
    382             return val
    383         elif collection and len(val)>1:
--> 384             return cls._from_values(val)
    385         elif collection:
    386             val = val[0]

/home/tenner/src/holoviews/holoviews/core/overlay.pyc in _from_values(cls, val)
     95     @classmethod
     96     def _from_values(cls, val):
---> 97         return reduce(lambda x,y: x*y, val).map(lambda x: x.display('auto'), [Overlay])
     98
     99

/home/tenner/src/holoviews/holoviews/core/overlay.pyc in <lambda>(x, y)
     95     @classmethod
     96     def _from_values(cls, val):
---> 97         return reduce(lambda x,y: x*y, val).map(lambda x: x.display('auto'), [Overlay])
     98
     99

TypeError: unsupported operand type(s) for *: 'NdLayout' and 'NdLayout'

You're trying to overlay NdLayouts there.

A, the way to get this working is:
(a.collate().overlay('Default')*a_err.collate().overlay('Default')).layout('Location')

I understand now what is going wrong, but it does not feel very intuitively. Getting also a legend (and the right one) requires some black magic sometimes.

Ah sorry, please do provide the actual code you ran next time. I missed what your actual problem was in the traceback. I'm still not sure what it is you're trying to achieve in this case. Based on the information I have, I can't tell what the actual inputs are.
hv.Overlay([a_err.collate().overlay('Default').layout('Location')[:,:,:,0:],
                    a.collate().overlay('Default').layout('Location')[:,:,:,0:]])

In this example what are a and a_err? I assume what you want as output is an NdLayout of Overlays of NdOverlays.

If a and a_err are just HoloMaps, why do you have to call collate, won't this just work?
(a.overlay('Default')*a_err.overlay('Default')).layout('Location')

I have one function that spits out two holomaps (one with the Curves, the other with Errorbars) for one file I read in.
width_graph_mean = hv.HoloMap({loc: hv.Curve((powers, width_mean[(loc)][:,2]),
                                              kdims=[dim_power], vdims=[hv.Dimension('Full width', unit='rad')])
                                for loc in locs }, kdims=[dim_loc])
width_graph_err = hv.HoloMap({(pos): hv.ErrorBars((powers,
                                                   res_pos[(pos)][:,2]
                                                   res_pos[(pos)][:,2]*prerror[(pos)][:,2]),
                                                  kdims=[dim_power], vdims=[hv.Dimension('Full width', unit='rad'),'Err'])
                              for pos in locs }, kdims=[dim_loc])

Then I combine 4 of these sets to two holomaps:
a_err = hv.HoloMap({1: load_widths('/home/tenner/data/2015/20151112_other_samples/fits_top_bottom.pkl', scans=None, errorbars=True)[1]
,2: load_widths('/home/tenner/data/2015/20151112_other_samples/fits_left_right.pkl', scans=None, errorbars=True)[1]
, 3: load_widths('/home/tenner/data/2015/20150930_leftright/fits_left_right.pkl', scans=None, errorbars=True)[1]
,4 :load_widths('/home/tenner/data/2015/20150930_leftright/fits_up_down.pkl', scans=None, errorbars=True)[1]
 })

Now I want to have an overlay, where every dataset has a different color, and is listed in the legend.
I tried many different combinations, but most of them result in having: identical colors for all curves, or curves not listed in legend.
Sorry for the long and messy code, but this is the kind of spaghetti that is growing when analyzing data interactively.
I did not look into the new data API yet. Does that make such things as this easier?

Okay, if you're nesting HoloMaps then the collate call is indeed required. I'm having some trouble understanding precisely how your data is structured. Could you give me the output of:
print repr(a)

Then I might have a better idea on how to do this.

@vascotenner Could you report what was actually going wrong here? Otherwise I'll close.

Sorry, I cannot remember. The next time, I will try to create a neat example.

@vascotenner Thanks for closing.


Rename new_transaction to begin_transaction

What was the motivation for this change?

@nigelsmall Consistency I guess? https://github.com/neo4j/neo4j-java-driver/commit/3ab3e367f06f9c13027b1ec6c8660a32139f4724


Dragging the view around for a pipeline always goes to the job the drag started on

I usually drag the screen around and zoom in on a few jobs for one of our very large pipelines. Unfortunately I have a tendency to start my drag on one of the job boxes in the pipeline, and the app always treats this as me wanting to view that job instead of moving the pipeline view around.
Would it be possible to differentiate between click events and click + drag for a bit events?

Moved to concourse/concourse#1126


Fix some leaks in EccRecoverKey and EosioSignEcc

Caused by not freeing some openssl resources after finished using them.  This PR frees
the resources and produces a clean profiling run.

This change looks good. One possible improvement would be to use a defer block to release the openssl allocated items so that regardless of why you exit the function they always get freed. This would cover an exception throwing out of the scope for example.

I took a look and it seems like using defer might be a bit messy due to its scope semantics.  A lot of the allocated values build on previous ones and we have a large section of them inside the unsafe pointer closure.  Its almost like we'd need to write a defer after each allocation and that seems like it could get pretty messy.  I'm also concerned about accidentally calling free on a reference that might not have allocated or a potential double free call resulting in a crash.

This change looks good. One possible improvement would be to use a defer block to release the openssl allocated items so that regardless of why you exit the function they always get freed. This would cover an exception throwing out of the scope for example.

I took a look and it seems like using defer might be a bit ugly due to its scope semantics. A lot of the allocated values build on previous ones and we have a large section of them inside the unsafe pointer closure. Its almost like we'd need to write a defer after each allocation and that seems like it could get pretty messy. I'm also concerned about accidentally calling free on a reference that might not have allocated or a potential double free call resulting in a crash.

Right it might not work for all the things that need to be deallocated but an example is  in recoverPublicKey after the group as been created it's always going to want to free those 4 items so that defer could be done before the call to privateKey.withUnsafeBytes since all 4 of those items are always freed at the end of the scope.

This change looks good. One possible improvement would be to use a defer block to release the openssl allocated items so that regardless of why you exit the function they always get freed. This would cover an exception throwing out of the scope for example.

I took a look and it seems like using defer might be a bit ugly due to its scope semantics. A lot of the allocated values build on previous ones and we have a large section of them inside the unsafe pointer closure. Its almost like we'd need to write a defer after each allocation and that seems like it could get pretty messy. I'm also concerned about accidentally calling free on a reference that might not have allocated or a potential double free call resulting in a crash.

Right it might not work for all the things that need to be deallocated but an example is in recoverPublicKey after the group as been created it's always going to want to free those 4 items so that defer could be done before the call to privateKey.withUnsafeBytes since all 4 of those items are always freed at the end of the scope.

True, I'd be ok if you wanted to add that to the branch.  I would like to get these fixes merged in with the other changes being made right now if possible.


Missing $OPENAI_API_HOST

It is not possible to use the plugin without setting this value, however, readme does not say anything about what this should be.

Update to newest version, the issue should be already solved


To use essential matrix solver LAPACK or Eigen has to be installed!

Sorry to bother again!
When  the test code was running to geo_area_match process, it encountered LAPACK or Eigen missing problem in  cv2.findEssentialMat in geo.py line 668.
I subimit this issue to make sure if it is necessary to install LAPACK or Eigen in your environment. Could you please check this installation.
Here is traceback:
Traceback (most recent call last):   File "test_a2pm.py", line 151, in <module>     test()   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/main.py", line 94, in decorated_main     _run_hydra(   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/utils.py", line 394, in _run_hydra     _run_app(   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/utils.py", line 457, in _run_app     run_and_report(   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/utils.py", line 223, in run_and_report     raise ex   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/utils.py", line 220, in run_and_report     return func()   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/utils.py", line 458, in <lambda>     lambda: hydra.run(   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/_internal/hydra.py", line 132, in run     _ = ret.return_value   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/core/utils.py", line 260, in return_value     raise self._return_value   File "/home/youwei/.conda/envs/yw_torch/lib/python3.8/site-packages/hydra/core/utils.py", line 186, in run_job     ret.return_value = task_function(task_cfg)   File "test_a2pm.py", line 109, in test     alpha_corrs_dict, alpha_inlier_idxs_dict, _ = gamer.geo_area_matching_refine(area_matches0, area_matches1)   File "../geo_area_matchers/egam.py", line 247, in geo_area_matching_refine     alpha_corrs_dict, alpha_inlier_idxs_dict = self.geo_area_match_rejection(matched_areas0, matched_areas1)   File "../geo_area_matchers/egam.py", line 466, in geo_area_match_rejection     temp_inlier_corrs, temp_F, temp_self_sampson_dist = self.inside_area_match_calculation(area0, area1, idx)   File "../geo_area_matchers/egam.py", line 658, in inside_area_match_calculation     E, inlier_corrs = calc_E_from_corrs(temp_corrs, self.K0, self.K1, sac_mode=self.sac_mode)   File "../utils/geo.py", line 668, in calc_E_from_corrs     E, mask = cv2.findEssentialMat( cv2.error: OpenCV(4.5.1) /tmp/pip-req-build-ms668fyv/opencv/modules/calib3d/src/usac/essential_solver.cpp:197: error: (-213:The function/feature is not implemented) To use essential matrix solver LAPACK or Eigen has to be installed! in function 'estimate'

Hi @youwei2567
It seems like an issue of opencv-python, see here.
I think you can update the version of opencv-python (like 4.5.1 -> 4.8.0) and I checked my opencv version is 4.8.0, which works well.

Thanks for your reminder.
I have fixed it.

After updating, it goes well!
Thx!


Small improvements to the initial checkout experience

A few steps of the README didn't work out of the box and required trial and error; this should no longer be the case with this update.

Looks good to me :shipit: