Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0

hi i see this message in console
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
D/ViewRootImplInjector(22907): Gesture Screenshot Enabled = false
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
I/chatty  (22907): uid=10669(kw.ltd.salatkapp) identical 5 lines
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
I/chatty  (22907): uid=10669(kw.ltd.salatkapp) identical 11 lines
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
I/chatty  (22907): uid=10669(kw.ltd.salatkapp) identical 3 lines
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0
W/FlutterJNI(22907): Tried to send a platform message to Flutter, but FlutterJNI was detached from native C++. Could not send. Channel: hemanthraj/flutter_compass. Response ID: 0

Here's what I did to solve this problem:
I looked at the "sensors" flutter package and mimicked their coding pattern.

I added my own flutter compass code in my_flutter_compass.dart file

import 'dart:async';
import 'package:flutter/services.dart';

const EventChannel _compassEventChannel =
    EventChannel('hemanthraj/flutter_compass');

Stream<double> _compassEvents;

/// A broadcast stream of events from the compass
Stream<double> get compassEvents {
  if (_compassEvents == null) {
    _compassEvents = _compassEventChannel
        .receiveBroadcastStream()
        .map<double>((dynamic data) => data);
  }
  return _compassEvents;
}

I added the following variable to my stateful widget:
StreamSubscription<double> _eventListener;
I set the variable in my initState() function:
  @override
  void initState() {
    super.initState();

    _eventListener = compassEvents.listen((angle) {
      setState(() {
        _angle = angle.floor().toString();
      });
    });
  }

And I disposed canceled the _eventListener in 2 separate places:
  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        _eventListener?.cancel();
        return true;
      },
      child: Scaffold(
        body: Compass(),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _eventListener?.cancel();
  }

I had to do it also in onWillPop event because dispose() seemed not to be called if my compass screen was the main screen of the application.
This also solved the problem where the sensor stopped working after closing and starting the app a few times.
I hope this helps others who are having the same problem.


Add some Projects

Links currently go nowhere - link to your repos

i will i have not production level projects yet, thank very much for your time and effort.

You're welcome


Is there a limit on SessionReadRequest with dataSets?

 Issue by casman51
Tuesday May 21, 2019 at 10:04 GMT
Originally opened as https://github.com/googlesamples/android-fit/issues/51

When I try to use SessionReadRequest to parse data from 1 month it does not return anything. In the beginning this worked, but as newer sessions now include TYPE_HEART_RATE_BPM dataType it doesn't work anymore. When I don't read this dataType or lower the time to only 3 days back in time it works.. Could anyone help me with this issue. Is there some sort on limit on a SessionReadRequest? Below is my code for reading the sessions. Once a session is read is goes to the populateList where they are added to a list and when completed notify a RecyclerView.
private SessionReadRequest readFitnessSession() {
        // [START build_read_session_request]
        // Set a start and end time for query, using a start time of 1 month before this moment.
        Calendar cal = Calendar.getInstance();
        Date now = new Date();
        cal.setTime(now);
        long endTime = cal.getTimeInMillis();
        cal.add(Calendar.MONTH, -1);
        long startTime = cal.getTimeInMillis();

        // Build a session read request
        SessionReadRequest readRequest = new SessionReadRequest.Builder()
                .setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
                .read(DataType.TYPE_HEART_RATE_BPM)
                .read(DataType.AGGREGATE_DISTANCE_DELTA)
                .readSessionsFromAllApps()
                //.enableServerQueries()
                .build();
        // [END build_read_session_request]

        return readRequest;
    }

private Task<SessionReadResponse> readSession() {
        // Begin by creating the query.
        SessionReadRequest readRequest = readFitnessSession();

        // [START read_session]
        // Invoke the Sessions API to fetch the session with the query and wait for the result
        // of the read request. Note: Fitness.SessionsApi.readSession() requires the
        // ACCESS_FINE_LOCATION permission.
        return Fitness.getSessionsClient(this, GoogleSignIn.getLastSignedInAccount(this))
                .readSession(readRequest)
                .addOnSuccessListener(new OnSuccessListener<SessionReadResponse>() {
                    @Override
                    public void onSuccess(SessionReadResponse sessionReadResponse) {
                        // Get a list of the sessions that match the criteria to check the result.
                        Log.i(TAG, "Session read was successful");
                        populateList(sessionReadResponse);
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.i(TAG, "Failed to read session");
                    }
                });
        // [END read_session]
    }

We are facing the same issue, once you have a bunch of data the listeners are not called ever again.
Is there any suitable solution?
We are facing the issue with one week data, 1 session per day.. that is not really a huge amount of data

Any update to this issue. I've been facing this issue as well.


[QUERY] Can we fetch all the metadata updated in the custom question answering project

Library name and version
Custom question answering project
Query/Question
We are working with a Custom question-answering project for the conversational bot. We are using Custom question answering project for question answer pair.
I have updated the metada for Microsoft related questions as topic: Microsoft.

and for ITSM related questions , topic: ITSM.
Is there any api or query available to fetch which all metadata or topics are updated for the specific kb.
Environment
No response

Is there any update on this

Is there any update on this feature? Can we fetch the whole metadata configured in question answering service


WebSocket Server Control Frames Bug (IDFGH-5785)

Hi,
I am writing a websocket server and i discovered this option in "handle_ws_control_frames" in esp_http_server.h file.
/**
* Flag indicating that control frames (PING, PONG, CLOSE) are also passed to the handler
* This is used if a custom processing of the control frames is needed
*/
bool handle_ws_control_frames;
I enabled "handle_ws_control_frames" to receive PING frames from websockets clients.
The URI handler is being called when i get a ping from the websocket client, but an error occurs.
W (00:00:41.021) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
I (00:00:41.021) WSS_SERVER: httpd_ws_recv_frame failed with: ESP_FAIL
What am i doing wrong ?
I think there is a bug in websocket server.
URI handler register:
static const httpd_uri_t get_clients_message =
{
    .uri       = "/ws",
    .method    = HTTP_GET,
    .handler   = get_clients_message_handler,
    .is_websocket = true,
    .handle_ws_control_frames = true,
    .user_ctx  = NULL,
    .supported_subprotocol = NULL
};

URI HANDLER:
static uint8_t buf[64] = { 0 };
static httpd_ws_frame_t ws_pkt;

static esp_err_t get_clients_message_handler(httpd_req_t *req)
{
    ESP_LOGI(WSS_SERVER_TAG, "URI HANDLER:");
    ESP_LOGI(WSS_SERVER_TAG, "req->method = %d\n", req->method);

    if( req->method == HTTP_GET )
    {
        ESP_LOGI(WSS_SERVER_TAG, "Handshake done, the new connection was opened");
        int sockfd = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "Handshake Socket: %d\n", sockfd);
        return ESP_OK;
    }

    memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t));
    ws_pkt.payload = buf;

    // This function return ESP_FAIL.
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt, sizeof(buf));
    if( ret != ESP_OK )
    {
        ESP_LOGI(WSS_SERVER_TAG, "httpd_ws_recv_frame failed with: %s\n", esp_err_to_name(ret));
        return ret;
    }

    if( ws_pkt.type == HTTPD_WS_TYPE_PING )
    {
        int sock = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "HTTPD_WS_TYPE_PING: %d\n", sock);
        return ESP_OK;
    }
    return ESP_OK;
}

I tried the code below, based on "static esp_err_t ws_handler(httpd_req_t *req)" from "https://github.com/espressif/esp-idf/blob/master/examples/protocols/https_server/wss_server/main/wss_server_example.c",
But no luck.
I (00:00:12.750) esp_https_server: performing session handshake
I (00:00:14.725) WSS_SERVER: Handshake done, the new connection was opened
W (00:00:44.871) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
E (00:00:44.871) WSS_SERVER: httpd_ws_recv_frame failed to get frame len with -1

URI HANDLER CODE:
static esp_err_t get_clients_message_handler(httpd_req_t *req)
{
    if (req->method == HTTP_GET)
    {
        ESP_LOGI(WSS_SERVER_TAG, "Handshake done, the new connection was opened");
        return ESP_OK;
    }
    httpd_ws_frame_t ws_pkt1;
    uint8_t *buf = NULL;
    memset(&ws_pkt1, 0, sizeof(httpd_ws_frame_t));

    // First receive the full ws message
    /* Set max_len = 0 to get the frame len */
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt1, 0);
    if (ret != ESP_OK)
    {
        ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed to get frame len with %d", ret);
        return ret;
    }
    ESP_LOGI(WSS_SERVER_TAG, "frame len is %d", ws_pkt1.len);
    if (ws_pkt1.len)
    {
        /* ws_pkt.len + 1 is for NULL termination as we are expecting a string */
        buf = calloc(1, ws_pkt1.len + 1);
        if (buf == NULL)
        {
            ESP_LOGE(WSS_SERVER_TAG, "Failed to calloc memory for buf");
            return ESP_ERR_NO_MEM;
        }
        ws_pkt1.payload = buf;
        /* Set max_len = ws_pkt.len to get the frame payload */
        ret = httpd_ws_recv_frame(req, &ws_pkt1, ws_pkt1.len);
        if (ret != ESP_OK)
        {
            ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed with %d", ret);
            free(buf);
            return ret;
        }
    }
    // If it was a PING
    if (ws_pkt1.type == HTTPD_WS_TYPE_PING)
    {
        ESP_LOGD(WSS_SERVER_TAG, "Received PING message");
        free(buf);
        int sockfd = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "SOCKFD: %d", sockfd);
        return ESP_OK;
    }
    // If it was a BINARY message
    else if (ws_pkt1.type == HTTPD_WS_TYPE_BINARY)
    {
        int sock = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "HTTPD_WS_TYPE_BINARY: %d", sock);
        free(buf);
        return ESP_OK;
    }
    free(buf);
    return ESP_OK;
}

I thought the problem was because the client ping has no message, ie, payload size is zero, but i tested with payload and without payload and the error still exists.
I am using OKHTTP websocket client library.
I'm also running tests with the jmeter software too.
What i understood in items 5.5.2 (ping) and 5.5.3 (pong) of rfc6455 (WebSocket Protocol) is that, it is not mandatory to have a payload message in the websocket ping, however, the server must be able to support both cases.
rfc6455: https://datatracker.ietf.org/doc/html/rfc6455
Thank's.

I took two tests(using ws and not wss):

Send ping with payload and send ping without payload.

First test: Send ping with payload.
The websocket ping control frame call uri handler:
I (00:00:28.062) WSS_SERVER: Handshake done, the new connection was opened
I (00:00:28.070) WSS_SERVER: Handshake Socket: 55

I (00:00:28.162) WSS_SERVER: URI HANDLER:
I (00:00:28.166) WSS_SERVER: req->method = 0

W (00:00:28.172) httpd_txrx: httpd_sock_err: error in recv : 104
W (00:00:28.178) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
I (00:00:28.186) WSS_SERVER: httpd_ws_recv_frame failed with: ESP_FAIL

Second test: Send ping without payload.
The websocket ping control frame call uri handler:
I (00:00:57.224) WSS_SERVER: Handshake done, the new connection was opened
I (00:00:57.233) WSS_SERVER: Handshake Socket: 55

I (00:00:57.325) WSS_SERVER: URI HANDLER:
I (00:00:57.328) WSS_SERVER: req->method = 0

W (00:00:57.382) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
I (00:00:57.382) WSS_SERVER: httpd_ws_recv_frame failed with: ESP_FAIL

I already took the opportunity to test the websocket close control frame.
The websocket close control frame dont call uri handler:
I (00:00:23.257) WSS_SERVER: URI HANDLER:
I (00:00:23.258) WSS_SERVER: req->method = 1

I (00:00:23.258) WSS_SERVER: Handshake done, the new connection was opened
I (00:00:23.267) WSS_SERVER: Handshake Socket: 55

I (00:00:23.359) WSS_SERVER: Closed socket handler:
I (00:00:23.363) WSS_SERVER: hd = 0x3ffd5348
I (00:00:23.369) WSS_SERVER: Closed socket = 55

@baldhead69 Could you tell me the commit ID you used.    I use master branch exampe ws_echo_server (commit id b9ce1ed06dece87c591df6e22d73adb917fd7de3) and it is ok.

commit b9ce1ed06dece87c591df6e22d73adb917fd7de3 does not exist in current master tree.

Sorry for that my commit id is internal. Maybe not push to github now.

esp-idf version: v4.4-dev-2359-g58022f859
How can i check the commit ID ?

I test with your commit id, it is ok. Could you please try examples/protocols/http_server/ws_echo_server ？

I tried the code below, based on "static esp_err_t ws_handler(httpd_req_t *req)" from "https://github.com/espressif/esp-idf/blob/master/examples/protocols/https_server/wss_server/main/wss_server_example.c",
But no luck.
I (00:00:12.750) esp_https_server: performing session handshake
I (00:00:14.725) WSS_SERVER: Handshake done, the new connection was opened
W (00:00:44.871) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
E (00:00:44.871) WSS_SERVER: httpd_ws_recv_frame failed to get frame len with -1

URI HANDLER CODE:
static esp_err_t get_clients_message_handler(httpd_req_t *req)
{
    if (req->method == HTTP_GET)
    {
        ESP_LOGI(WSS_SERVER_TAG, "Handshake done, the new connection was opened");
        return ESP_OK;
    }
    httpd_ws_frame_t ws_pkt1;
    uint8_t *buf = NULL;
    memset(&ws_pkt1, 0, sizeof(httpd_ws_frame_t));

    // First receive the full ws message
    /* Set max_len = 0 to get the frame len */
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt1, 0);
    if (ret != ESP_OK)
    {
        ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed to get frame len with %d", ret);
        return ret;
    }
    ESP_LOGI(WSS_SERVER_TAG, "frame len is %d", ws_pkt1.len);
    if (ws_pkt1.len)
    {
        /* ws_pkt.len + 1 is for NULL termination as we are expecting a string */
        buf = calloc(1, ws_pkt1.len + 1);
        if (buf == NULL)
        {
            ESP_LOGE(WSS_SERVER_TAG, "Failed to calloc memory for buf");
            return ESP_ERR_NO_MEM;
        }
        ws_pkt1.payload = buf;
        /* Set max_len = ws_pkt.len to get the frame payload */
        ret = httpd_ws_recv_frame(req, &ws_pkt1, ws_pkt1.len);
        if (ret != ESP_OK)
        {
            ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed with %d", ret);
            free(buf);
            return ret;
        }
    }
    // If it was a PING
    if (ws_pkt1.type == HTTPD_WS_TYPE_PING)
    {
        ESP_LOGD(WSS_SERVER_TAG, "Received PING message");
        free(buf);
        int sockfd = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "SOCKFD: %d", sockfd);
        return ESP_OK;
    }
    // If it was a BINARY message
    else if (ws_pkt1.type == HTTPD_WS_TYPE_BINARY)
    {
        int sock = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "HTTPD_WS_TYPE_BINARY: %d", sock);
        free(buf);
        return ESP_OK;
    }
    free(buf);
    return ESP_OK;
}

I tried it here, it's very similar, isn't it ?

I tried the code below, based on "static esp_err_t ws_handler(httpd_req_t *req)" from "https://github.com/espressif/esp-idf/blob/master/examples/protocols/https_server/wss_server/main/wss_server_example.c",
But no luck.
I (00:00:12.750) esp_https_server: performing session handshake
I (00:00:14.725) WSS_SERVER: Handshake done, the new connection was opened
W (00:00:44.871) httpd_ws: httpd_ws_recv_frame: Failed to receive the second byte
E (00:00:44.871) WSS_SERVER: httpd_ws_recv_frame failed to get frame len with -1

URI HANDLER CODE:
static esp_err_t get_clients_message_handler(httpd_req_t *req)
{
    if (req->method == HTTP_GET)
    {
        ESP_LOGI(WSS_SERVER_TAG, "Handshake done, the new connection was opened");
        return ESP_OK;
    }
    httpd_ws_frame_t ws_pkt1;
    uint8_t *buf = NULL;
    memset(&ws_pkt1, 0, sizeof(httpd_ws_frame_t));

    // First receive the full ws message
    /* Set max_len = 0 to get the frame len */
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt1, 0);
    if (ret != ESP_OK)
    {
        ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed to get frame len with %d", ret);
        return ret;
    }
    ESP_LOGI(WSS_SERVER_TAG, "frame len is %d", ws_pkt1.len);
    if (ws_pkt1.len)
    {
        /* ws_pkt.len + 1 is for NULL termination as we are expecting a string */
        buf = calloc(1, ws_pkt1.len + 1);
        if (buf == NULL)
        {
            ESP_LOGE(WSS_SERVER_TAG, "Failed to calloc memory for buf");
            return ESP_ERR_NO_MEM;
        }
        ws_pkt1.payload = buf;
        /* Set max_len = ws_pkt.len to get the frame payload */
        ret = httpd_ws_recv_frame(req, &ws_pkt1, ws_pkt1.len);
        if (ret != ESP_OK)
        {
            ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed with %d", ret);
            free(buf);
            return ret;
        }
    }
    // If it was a PING
    if (ws_pkt1.type == HTTPD_WS_TYPE_PING)
    {
        ESP_LOGD(WSS_SERVER_TAG, "Received PING message");
        free(buf);
        int sockfd = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "SOCKFD: %d", sockfd);
        return ESP_OK;
    }
    // If it was a BINARY message
    else if (ws_pkt1.type == HTTPD_WS_TYPE_BINARY)
    {
        int sock = httpd_req_to_sockfd(req);
        ESP_LOGI(WSS_SERVER_TAG, "HTTPD_WS_TYPE_BINARY: %d", sock);
        free(buf);
        return ESP_OK;
    }
    free(buf);
    return ESP_OK;
}

I tried it here, it's very similar, isn't it ?

Yes, it's similar. Could you please open log debug from info to debug and send me the log.

@baldhead69 I can reproduce your issue. I not set handle_ws_control_frames = true before. And i set now, the phenomenon is the same as your. I debug it and find the PING data has been read and deal with internal in file httpd_ws.c function httpd_ws_get_frame_type. So although will call handler when receive PING, now the PING payload is empty, we will read fail. For solve this , you can try this temporary patch.
1.zip

@ESP-YJM ,
I dont know use git.
Do i need to change this manually or is there an automated way in git inside my esp-idf instalation to install this patch ?
Thank's.

@ESP-YJM ,
I tried like this.
The first git apply command returned nothing.
I don't know if the changes were applied.

@ESP-YJM
The "control frame type CLOSE" is not calling the uri handler.

@baldhead69 I can reproduce your issue. I not set handle_ws_control_frames = true before. And i set now, the phenomenon is the same as your. I debug it and find the PING data has been read and deal with internal in file httpd_ws.c function httpd_ws_get_frame_type. So although will call handler when receive PING, now the PING payload is empty, we will read fail. For solve this , you can try this temporary patch.
1.zip

@ESP-YJM
It is now working with my android app.
Thank`s.

@ESP-YJM ,
Suggestion: https://github.com/espressif/esp-idf/issues/7027#issuecomment-905227857
Create a function that directly returns the payload size of a request for dynamic memory allocation.
size_t payload_size = httpd_ws_recv_frame_payload_size(req);
Can you help me with this feature request ?
https://github.com/espressif/esp-idf/issues/7431
Thank's

@ESP-YJM ,
I don't know how to use git.
Do i need to change this manually or is there an automated way in git inside my esp-idf installation to install this patch ?
Thank's.

I think you should merge it manually. For your feature request,  do follow code can't meet your requirement?
    httpd_ws_frame_t ws_pkt;
    memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t));

    // Set max_len = 0 to get the frame len
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt, 0);
    if (ret != ESP_OK)
    {
        ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed to get frame len with: %s\n", esp_err_to_name(ret));
        return ret;
    }

    ESP_LOGI(WSS_SERVER_TAG, LOG_USER("frame len is: %d\n"), ws_pkt.len);

@ESP-YJM ,
I don't know how to use git.
Do i need to change this manually or is there an automated way in git inside my esp-idf installation to install this patch ?
Thank's.

I think you should merge it manually. For your feature request,  do follow code can't meet your requirement?
    httpd_ws_frame_t ws_pkt;
    memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t));

    // Set max_len = 0 to get the frame len
    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt, 0);
    if (ret != ESP_OK)
    {
        ESP_LOGE(WSS_SERVER_TAG, "httpd_ws_recv_frame failed to get frame len with: %s\n", esp_err_to_name(ret));
        return ret;
    }

    ESP_LOGI(WSS_SERVER_TAG, LOG_USER("frame len is: %d\n"), ws_pkt.len);

@ESP-YJM ,
I tried this in discussion with david_cermak but dont worked.
I think that a directly function that return payload size are more elegant too.
This is only suggestion.
The feature resquest is this: #7431.
Thank's.

Note to remember:
The close frame issue remains to be resolved.
The uri handler are not called when client send a close frame and the "background websocket layer" do not send a close message to do a clean close.

If issue "uri handler are not called" is resolved, the user can send the close frame:
#define normal_closure_code 1000  // indicates a normal closure, meaning that the purpose for which the connection was established has been fulfilled.

static uint8_t buf[128] = { 0 };
static httpd_ws_frame_t ws_pkt;

static esp_err_t ws_uri_handler(httpd_req_t *req)
{
    ESP_LOGI(WSS_SERVER_TAG, LOG_USER("URI HANDLER:"));
    ESP_LOGI(WSS_SERVER_TAG, LOG_USER("req->method = %d\n"), req->method);

    if( req->method == HTTP_GET )
    {
        ESP_LOGI(WSS_SERVER_TAG, LOG_USER("Handshake done, the new connection was opened"));
        return ESP_OK;
    }

    memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t));
    ws_pkt.payload = buf;

    esp_err_t ret = httpd_ws_recv_frame(req, &ws_pkt, sizeof(buf));
    if( ret != ESP_OK )
    {
        ESP_LOGI(WSS_SERVER_TAG, LOG_USER("httpd_ws_recv_frame failed with: %s\n"), esp_err_to_name(ret));
        return ret;
    }

#if enable_handle_ws_control_frames
    if( ws_pkt.type == HTTPD_WS_TYPE_CLOSE )
    {
        ESP_LOGI(WSS_SERVER_TAG, LOG_USER("Got Control Frame Type: CLOSE"));
        int sockfd = httpd_req_to_sockfd(req);
        ret = send_close_frame( normal_closure_code, "OK!!!", sockfd );  // send_close_frame( normal_closure, NULL, sockfd );
        ESP_LOGI(WSS_SERVER_TAG, LOG_USER("Send Close Frame: %s\n"), esp_err_to_name(ret));
        return ret;
}
#endif

    return ESP_OK;
}

@baldhead69 Thanks for reminding me. I think your example code can send close frame message when we receive close from peer. I also test it before which code framework is similar with yours. But i need evaluate where to place this code function, in internal or userspace handler callback. If in userspace, it will increase the amount of code development for users. So i choose to move it internal and user no need response control frame in user handle callback. I would like to hear your views. Feel free to share your idea.

@baldhead69 Thanks for reminding me. I think your example code can send close frame message when we receive close from peer. I also test it before which code framework is similar with yours. But i need evaluate where to place this code function, in internal or userspace handler callback. If in userspace, it will increase the amount of code development for users. So i choose to move it internal and user no need response control frame in user handle callback. I would like to hear your views. Feel free to share your idea.

I think user need to read the close status code of client peer and can call a "internal" function and pass the close code("user", server), because there are several close status codes in rfc6455.
Something like that:
    if( ws_pkt.type == HTTPD_WS_TYPE_CLOSE )
    {
        ESP_LOGI(WSS_SERVER_TAG, LOG_USER("Got Control Frame Type: CLOSE"));
        int sockfd = httpd_req_to_sockfd(req);

        if( received client close status code == 1000 )  // internal func. int16_t rcv_status code = get_client_close_status_code( );
        {
            ret = send_close_frame( 1000, "OK!!!", sockfd );  // send_close_frame( normal_closure, NULL, sockfd );
            ESP_LOGI(WSS_SERVER_TAG, LOG_USER("Send Close Frame: %s\n"), esp_err_to_name(ret));
            return ret;
        }

Hi, I use websocket server much with:

handle_ws_control_frames = true
with implemented keep alive based on sending PING and awaiting PONG responses and it works Ok.

From esp_http_server websocket server component I can see :
`       ret = httpd_ws_get_frame_type(r);
ESP_LOGD(TAG, LOG_FMT("New WS request from existing socket, ws_type=%d"), ra->ws_type);
    /*  Stop and return here immediately if it's a CLOSE frame */
    if (ra->ws_type == HTTPD_WS_TYPE_CLOSE) {
        sd->ws_close = true;
        return ret;
    }

    if (ra->ws_type == HTTPD_WS_TYPE_PONG) {
        /* Pass the PONG frames to the handler as well, as user app might send PINGs */
        ESP_LOGD(TAG, LOG_FMT("Received PONG frame"));
    }

    /* Call handler if it's a non-control frame (or if handler requests control frames, as well) */
    if (ret == ESP_OK &&
        (ra->ws_type < HTTPD_WS_TYPE_CLOSE || sd->ws_control_frames)) {
        ret = sd->ws_handler(r);
    }

`
From there I can see:
HTTPD_WS_TYPE_CLOSE -  can not come to ws_handler , it's ok because we have server client close event ..
HTTPD_WS_TYPE_PONG  - condition is only for debug message output .
HTTPD_WS_TYPE_PONG and HTTPD_WS_TYPE_PING going to be passed to ws_handler if handle_ws_control_frames = true , also Ok.
!! BUT !!!
HTTPD_WS_TYPE_PING - content is received and is replied at begin of given code in "ret = httpd_ws_get_frame_type(r);" function in httpd_ws.c :
`
/* Reply to PING. For PONG and CLOSE, it will be handled elsewhere. */
if(aux->ws_type == HTTPD_WS_TYPE_PING) {
ESP_LOGD(TAG, LOG_FMT("Got a WS PING frame, Replying PONG..."));
    /* Read the rest of the PING frame, for PONG to reply back. */
    /* Please refer to RFC6455 Section 5.5.2 for more details */
    httpd_ws_frame_t frame;
    uint8_t frame_buf[128] = { 0 };
    memset(&frame, 0, sizeof(httpd_ws_frame_t));
    frame.payload = frame_buf;

    if(httpd_ws_recv_frame(req, &frame, 126) != ESP_OK) {
        ESP_LOGD(TAG, LOG_FMT("Cannot receive the full PING frame"));
        return ESP_ERR_INVALID_STATE;
    }

    /* Now turn the frame to PONG */
    frame.type = HTTPD_WS_TYPE_PONG;
    return httpd_ws_send_frame(req, &frame);
}

For me it is correct behavior in global so PING and CLOSE handled by server and only PONG messages should be passed to user handler (when we speak about control frames)/* Pass the PONG frames to the handler as well, as user app might send PINGs */`
Another problem is about HTTPD_WS_TYPE_CLOSE !
It is the same as in #7572  ,
HTTPD_WS_TYPE_CLOSE is not handled anywhere .
But standard ( RFC 6455  5.5.1.  Close)  request:
The Close frame MAY contain a body  ... As the data is not guaranteed to be human readable, clients MUST NOT show it to end users. ... If an endpoint receives a Close frame and did not previously send a Close frame, the endpoint MUST send a Close frame in response.

HTTPD_WS_TYPE_PONG and HTTPD_WS_TYPE_PING going to be passed to ws_handler if 'handle_ws_control_frames = true;' could be Ok but I think only PONG should be passed to ws_handler .
No, i use ping frame.
My keep alive is based on client send ping and i need reset a counter when client ping arise in server.

@Maksons,

For me it is correct behavior in global so PING and CLOSE handled by server and only PONG messages should be passed to >user handler (when we speak about control frames).

I don't agree, because in the rfc6455 the application can, if you want, respond with the reason for closing.

@baldhead69

No, i use ping frame. My keep alive is based on client send ping and i need reset a counter when client ping arise in server.

Oh, you can do so, but it's abnormal use case because :

you do not check bidirectional communication, but only relay on stable receive path nor know if client receive your reply
you lose additional information like delay in communication ( which is available in normal Ping-Pong, time sent/received)
you can still see "PING" was received in current server implementation but without it content (content is sent back), do you really need PING content ??
and one more negative (in my opinion) is that big clients like JavaScript in web browsers Chrome/Firefox/etc. do not support sending PING and seeing PONG/PING. In the same time JS websocket client automatically reply to server PING requests.

So, I highly recommend you to switch your server to normal PING/PONG implementation and in addition there is ready example of it :
https://github.com/espressif/esp-idf/tree/master/examples/protocols/https_server/wss_server/main
it could be implemented same way on non ssl http server.

For now i will use like this.
I use a cellular app, so i have control over client and server aplication.
If server wont respond with pong, client close connection too, after a programable time.

@baldhead69
First of all, yes, I'd like to see reason/content of "Close" message too, but it is not mandatory.

I don't agree, because in the rfc6455 the application can, if you want, respond with the reason for closing.

Sorry, respond (reply) with reason , you mean different from received close reason??
I see in RFC 6455:
(When sending a Close frame in response, the endpoint typically echos the status code it received.)
and also :
If a client and server both send a Close message at the same time, both endpoints will have sent and received a Close message and should consider the WebSocket connection closed and close the underlying TCP connection.
So I see cases:

Sent our "Close" content is equal to later received "Close" reply content, normal close (and more data could arrive before "Close" reply). Content not interested because it is our one we sent.
Received "Close" with different content than sent out, content could be needed to see reason (client initialize close before receive our one). Could mean that some data packet could come to endpoint after it sent "Close".
Received "Close" without any sent out, content also could be interested. But we should reply with same content ! Could mean that some data packet could come to endpoint after it sent "Close" too.

@Maksons
Server can init close connection, for whatever reason, so, the server can inform what close reason and in this way the client knows the reason for the server to close the connection.

@baldhead69 I can reproduce your issue. I not set handle_ws_control_frames = true before. And i set now, the phenomenon is the same as your. I debug it and find the PING data has been read and deal with internal in file httpd_ws.c function httpd_ws_get_frame_type. So although will call handler when receive PING, now the PING payload is empty, we will read fail. For solve this , you can try this temporary patch. 1.zip

Hi @ESP-YJM and @david-cermak
I installed a new esp-idf and the problem is the same.
Has this patch been merged ?
I am using esp-idf version: v4.4-dev-3657-gdf0929009a
Thank's.

@baldhead69 Sorry, it has not been merged yet. I need to reorganize the code structure of this patch.

@ESP-YJM ,
take the opportunity to fix the close frame too.

@baldhead69 Thanks for reminding me that. We will consider that.

I am using ESP-IDF: v4.4-dev-2313-gc69f0ec329 and I determined the error is in esp_http_server component.  I fixed the issue by removing a return statement that doesn't allow the following conditional (checks if control frames are enabled for the URI handler) to execute. See diff below:
diff --git a/components/esp_http_server/src/httpd_parse.c b/components/esp_http_server/src/httpd_parse.c
index 9fe7907591..6f133902a6 100644
--- a/components/esp_http_server/src/httpd_parse.c
+++ b/components/esp_http_server/src/httpd_parse.c
@@ -756,10 +756,10 @@ esp_err_t httpd_req_new(struct httpd_data *hd, struct sock_db *sd)
         ret = httpd_ws_get_frame_type(r);
         ESP_LOGD(TAG, LOG_FMT("New WS request from existing socket, ws_type=%d"), ra->ws_type);

-        /*  Stop and return here immediately if it's a CLOSE frame */
+        /* If it's a CLOSE frame, mark it here. May be passed to handler if
+         * ws_control_frames is true. */
         if (ra->ws_type == HTTPD_WS_TYPE_CLOSE) {
             sd->ws_close = true;
-            return ret;
         }

         if (ra->ws_type == HTTPD_WS_TYPE_PONG) {

Thank you @ESP-YJM ! (and thank you @ameyinamdar)

The problem was solved ?
Incorporated the solution in the esp idf ?

The problem was solved ?
Incorporated the solution in the esp idf ?

Now callback handler function can be called by CLOSE frame. Userspace can know when to send CLOSE frame. But still not support parse PING frame payload data. I think this usage is not common, so will not implement it in this fix.

But still not support parse PING frame payload data. I think this usage is not common, so will not implement it in this fix.

If you do have an use case for this, suggest to open up a new issue describing where it occurs.

Payload is 0 bytes.

Still, suggest you open a new issue rather than re-using this one.

Why ?
The problem is the same when i open this issue.
See first post

Maybe this patch was not applied in any esp-idf.
https://github.com/espressif/esp-idf/issues/7493#issuecomment-911143105
I will test this patch tomorrow.


Rewrite tests

Actions are still failing

Actions are still failing

The errors and infos are from the original code. They are not updated/coded correctly from Dart v1.
Especially on the errors, they are on the example and unused test.
I am restructuring the library and going to trim down a lot of duplicated code. Some of them will be gone by then.


The release failed

No pre built binary was released at v0.19.0.
https://github.com/authzed/zed/releases/tag/v0.19.0

The release workflow failed.
https://github.com/authzed/zed/actions/runs/9942983136/job/27465721921
Run goreleaser/goreleaser-action@v6
Warning: You are using 'latest' as default version. Will lock to '~> v2'.
Downloading https://github.com/goreleaser/goreleaser-pro/releases/download/v2.1.0-pro/goreleaser-pro_Darwin_all.tar.gz
Extracting GoReleaser
/usr/bin/tar xz -C /Users/runner/work/_temp/a6eaee15-e2ed-4efa-8513-20ad884515ab -f /Users/runner/work/_temp/5997958d-49af-44fc-a94c-5beea7f0be38
GoReleaser latest installed successfully
/Users/runner/hostedtoolcache/goreleaser-action/2.1.0-pro/arm64/goreleaser release --rm-dist
  ⨯ command failed                                   error=unknown flag: --rm-dist
Error: The process '/Users/runner/hostedtoolcache/goreleaser-action/2.1.0-pro/arm64/goreleaser' failed with exit code 1

GoReleaser v2.1.0 was used, but GoReleaser v2 has some breaking changes.
So we need to fix GoReleaser configuration files and command line options.

I've created a pull request to resolve this issue.

https://github.com/authzed/zed/pull/397


RAFT

I need to run within single node and multi-node environment without reconfiguring. The following messages occur during single node environment and no caching is happening
2024-06-26T16:32:52.327-0400 [INFO]  raft: initial configuration: index=1 servers="[{Suffrage:Voter ID:01J1B3A78G06A0HWM86QZYAVB8 Address:localhost:7481}]"
2024-06-26T16:32:52.327-0400 [INFO]  raft: entering follower state: follower="Node at <IP_ADDRESS>:7481 [Follower]" leader-address= leader-id=
2024-06-26T16:32:55.204-0400 [WARN]  raft: heartbeat timeout reached, not part of a stable configuration or a non-voter, not triggering a leader election
2024/06/26 17:11:14 deleted key<PHONE_NUMBER>
2024/06/26 17:11:14 1 keys sampled, 1 keys deleted
2024/06/26 17:11:14 deletion ratio (100 percent) reached threshold (20 percent), sampling again
can you explain  EvictionInterval,  EvictionSample, and SET EX  and how they relate to each other.
i have 64mb cache allocated, and the cache contain 2 messages of 1024. Please explain deletion ratio (100 percent) reached threshold (20 percent), sampling again

Hi @smeadows-okta could you please share your configurations so I can attempt to reproduce this?

EvictionInterval determines the interval between attempts to evict expired keys.
EvictionSample is the number of keys that will be checked for expiry when the node is attempting evicting keys.
SET EX allows you to create a key and define its expiry/TTL at the same time.

During this sampling, if enough keys are expired and evicted, then the eviction sampling will immediately run again without waiting for the interval. This process continues until the number of evicted keys is below the threshold (in this case, 20 percent of total keys) or there are no more keys left to evict (because the store is empty).
In your example, it seems the 2 keys you set where evicted upon expiry, and because you only had to keys, that was a 100 percent eviction rate so the eviction sampling was restarted. The next round of resampling would have no more keys to delete so the sampling will return to waiting for the interval.

I've allocated 32MB
config := echovault.DefaultConfig()
config.MaxMemory = 32 << 20
config.EvictionPolicy = "allkeys-lru"
config.DataDir = "/var/echovault"


autobot still not updating dbstats.json

art@Langley:/home/covid/covizu$ ls -lt data/*.json
-rw-rw-r-- 1 art covid 7440238 Jun 23 03:36 data/clusters.json
-rwxrwxr-x 1 art covid      52 Jun 20 13:32 data/dbstats.json
-rw-rw-r-- 1 art covid    3616 Jun 13 12:45 data/countries.json

Not sure what's going on here - permissions seem to be ok and it's in the autobot.py script...

Looks like this is working now

@ewong347  - this file is still getting updated with old info?
art@Langley:/home/covid/covizu$ cat data/dbstats.json
{
  "lastupdate": "2020-06-11",
  "noseqs": 36581
}
art@Langley:/home/covid/covizu$
art@Langley:/home/covid/covizu$ ls -l data/dbstats.json
-rwxrwxr-x 1 ewong347 ewong347 52 Jul 23 10:15 data/dbstats.json

Looking into it now, I think it might be an overwriting (permissions) issue.

I ran a stripped down version on a file in my home directory (and it worked fine), Looks like permissions is the issue again, I'll try resetting the rwx permissions on dbstats again. Crontab jobs are running under my user, so this should be a patch to get this working again. I think we should attempt to find a better solution to this problem though.

Worked when running autobot.py from command line after resetting the permissions, will check on crontab iteration tomorrow.

Changing permissions seemed to work!
ewong347@Langley:/home/covid/covizu$ head data/dbstats.json
{
  "lastupdate": "2020-07-24",
  "noseqs": 64458
}

File's gone missing on Langley..
ewong347@coreceptor:~$ ./transfer.sh
clusters.json                                 100%   27MB  27.1MB/s   00:00
timetree.nwk                                  100% 8013     7.8KB/s   00:00
scp: ../covid/covizu/data/dbstats.json: No such file or directory
beadplot.json                                 100%    0     0.0KB/s   00:00
'./clusters.json' -> '/var/www/html/covizu/data/clusters.json'
'./timetree.nwk' -> '/var/www/html/covizu/data/timetree.nwk'

Line 76 in autobot.py was looking for a since updated web element ( Browse --> Search).
Line 257 in autobot.py expects StringIO or file object, was passed string. Modified to minimap2(open(srcfile, 'r'))
Not sure when autobot broke, I'll have to dig through log files
Looks like we're back in business
ewong347@Langley:/home/covid/covizu$ head data/dbstats.json
{
  "lastupdate": "2020-11-26",
  "noseqs": 175212
}

Looks like Autobot has been broken since November 13th. This might have been when we migrated to the setup.py?
loading model 11/12/2020, 01:02:29
processing block of 2146 sequences 11/12/2020, 01:02:38
Saving Lineages
logging in
switching to Covid Homepage
navigating to CoV db
logging in
switching to Covid Homepage
navigating to CoV db
[...]

That's probably it.  We will be retiring the 'bots when we get the dedicated feed, anyhow.


Is there an option to hide recipient-key-id

Greetings,
Does pgpainless offers a feature similar to gpg's --hide-recipient or OpenPGP.js wildcard option?
Best regards,
Mart

I created a patch for BC adding support for producing messages using wildcard-ids.
https://github.com/bcgit/bc-java/pull/1384

Understood - Thank you very much!

The Bouncycastle team merged the proposed patch, so PGPainless will add support for wildcard key-ids once BC 1.74 is out :)

thank you very much for the help 🙏 :)

BC 1.74 has apparently been released yesterday, but it is not yet up on maven central. Once it is available, I can merge #381 and close this issue :)

Hi @vanitasvitae,
Do you have soon plans to update PGPainless with these changes?

Yep, I'm right in the process of creating a release :)

1.5.4 has been released :)


hover info on geoviews plots

Thanks to latest geoviews, Latitude, Longitude axis labels are now formatted nicely.
I made a QuadMesh of a Image to make it "hoverable". As you can see from the image below, the hover information does not reflect values on the axis.

Furthermore, when i make the above plot as a source to a holoviews streams element(eg., streams.SingleTap) the x,y  values passed are from the hover information not once on axis labels that i would like.
I think it is desirable to use axis/coordinate values on hover and as values passes to streams? I was told by @philippjfr in an another issue, those values represent projection.

I also wonder (also to asses my capabilities to contribute) what is approach taken by geoviews to support more projections via bokeh backend. is it like widgets on top of matplotlib/cartopy backend or build something from scratch?

Sorry I'm having the same issue on this as well. Could you explain the quick fix when converting them to degrees? Thank you so much!

The issue here is that data plotted using bokeh will always be projected to Mercator coordinates, which means that if we want to display the latitude and longitude values, we have to send both the transformed and original coordinates which would almost double the amount of data that is sent to the browser. For the time being I'd suggest passing a custom HoverTool that displays only the value column:
hover = HoverTool(tooltips=[("z", "${z}")])
hv.QuadMesh(...).opts(plot=dict(tools=[hover]))

In future we can consider sending the longitude and latitude values as well, I'm just not convinced it should do so by default.

Just to clarify, it sounds like what you are saying is that right now we send only the Web Mercator version of the data into the browser, and for hover to show lon,lat we'd have to send another entire copy of the data, in lon,lat coordinates?  If so, it does seem like we should not enable that by default, but it also seems like we should make it easy to enable it when desired, as a 2X penalty may be no problem in many cases, and the Mercator hover coordinates are definitely not useful.
To avoid the duplicate data, can we not use a similar remapping approach as we do for the axes, transforming the Mercator coordinates back into lon,lat?

To avoid the duplicate data, can we not use a similar remapping approach as we do for the axes, transforming the Mercator coordinates back into lon,lat with some JS code in the hover support?

I always assumed that HoverTools only support specific types of formatters but it actually turns out that yes, they do support the MercatorTickFormatter. So this should be straightforward to fix actually.

Actually seems I was right afterall, the only supported formatters for the HoverTool are 'numeral', 'datetime' and 'printf'.

Can you raise an issue on Bokeh about this?  People (including me!) really, really do want to be able to read off lon,lat coordinates from a hover, so that they can record the locations of interesting data points and construct various queries on the original lon,lat data.

The issue here is that data plotted using bokeh will always be projected to Mercator coordinates, which means that if we want to display the latitude and longitude values, we have to send both the transformed and original coordinates which would almost double the amount of data that is sent to the browser.

Would it be possible to include the proj4 transform into the html/broswer, so that the browser could transform the data back to lat/lon during the hover?
That would remove the issue of having to almost double the data.
However, I have no idea how this would be done..I am guessing that there might need to be modifications on the bokeh side? I do note that there is a proj4js library..

I don't think that's even necessary, the Web Mercator -> Lat/Lon conversion is relatively straightforward, I just don't think bokeh currently provides a way to apply custom formatters to the hover tool.

Thanks for clearing that up philippjfr. I have created a feature request with bokeh
https://github.com/bokeh/bokeh/issues/7647


Support more network interface types in systemd-initrd

{
  boot.initrd.systemd.enable = true;
  boot.initrd.network.enable = true;
}

With systemd-initrd and initrd networking enabled, we can use networking.interfaces to automatically configure interfaces in stage 1. Some network configuration that we support in a fully booted system is not supported in stage 1, however:

networking.bridges
networking.bonds
networking.macvlans
networking.fooOverUDP
networking.sits
networking.greTunnels
networking.vlans

At least some of these can be supported without much difficulty.
Pull requests

[ ] https://github.com/NixOS/nixpkgs/pull/251290

@ElvishJerricco I think this is your area of expertise. Can you let me know if the approach in https://github.com/NixOS/nixpkgs/pull/251290 looks good for addressing these? Thanks!

I can take this one on. I've done

bc7a939ced9c nixos/networkd: add [IPVLAN] and [IPVTAP] configuration options to systemd.netdev files
7686f24675e8 nixos/networkd: add ipvtap kind to netdev and IPVTAP= to network

and I can do these.
How many of these do we need NixOS tests for, vs. getting them just generated and expressible in the NixOS module?

NixOS tests would be good to have for these. If someone makes a change to the initrd environment that affects these options (e.g. changing available kernel modules), it's not straightforward to manually test an initrd with bridging, tunneling, etc. There are test examples in https://github.com/NixOS/nixpkgs/pull/251290 that should help.

For ipvlan/ipvtap, it looks like there are no corresponding networking.* options. The intent of this issue is to achieve parity between scripted networking and networkd in stage 1 for the networking.* options, so that we can deprecate scripted networking. Since there is no scripted networking support for ipvlan/ipvtap, I think we're good there.
Of course, it would be great to have ipvlan/ipvtap working in initrd with networkd.


How to use the Windows online public symbols with traceview.exe

traceview.exe accepts the -i parameter in what appears to be the same way that tracepdb does.  This means you can set the environment variable _NT_SYMBOL_PATH per the docs at https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/microsoft-public-symbols and then use the -i parameter with traceview to have it search for information from the online .pdb files.  This means you don't need to have access to the symbol files locally to use traceview.exe.  Example (after setting the _NT_SYMBOL_PATH): traceview.exe -process tpm.etl -i

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

ID: e400448d-0848-ef95-f9ed-cba41fc4b974
Version Independent ID: 9f8e9458-bb9b-0292-0a85-97875e06e3a3
Content: TraceView Control Commands - Windows drivers
Content Source: windows-driver-docs-pr/devtest/traceview-control-commands.md
Product: windows-hardware
GitHub Login: @nabazan-microsoft
Microsoft Alias: windowsdriverdev

Thanks, @RobSpiger. I'm reaching out to the devs who own TraceView to verify. Will come back to this as soon as I have something.

The -i option worked on the September 2018 version of traceview.exe (visible by right clicking on the traceview.exe file and looking at the details tab).  Someone else told me it didn't work on an earlier version, so you might need to upgrade before the -i option works.

Hello-
FYI - I installed and used the latest version of traceview.exe from the public WDK.  Here is the info on the traceview file that includes the -i option.   I heard from an external partner the option did not work on an older version of traceview.
<EMAIL_ADDRESS>After installed the SDK and WDK, the file was located in this directory:  C:\Program Files (x86)\Windows Kits\10\Tools\x86
Rob
From: Eliot Graff<EMAIL_ADDRESS>Sent: Tuesday, November 13, 2018 10:31 AM
To: MicrosoftDocs/windows-driver-docs<EMAIL_ADDRESS>Cc: Rob Spiger (CELA<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [MicrosoftDocs/windows-driver-docs] How to use the Windows online public symbols with traceview.exe (#1041)
Thanks, @RobSpigerhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FRobSpiger&data=02|01|Rob.Spiger%40microsoft.com|0b6cc9dfcc7c4920dabd08d649962bc9|72f988bf86f141af91ab2d7cd011db47|1|0|636777306657884203&sdata=WBOcGgHz0X9VLVUcBreShCMjR%2Bzq9bJqYYmnLLxnIME%3D&reserved=0. I'm reaching out to the devs who own TraceView to verify. Will come back to this as soon as I have something.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FMicrosoftDocs%2Fwindows-driver-docs%2Fissues%2F1041%23issuecomment-438384836&data=02|01|Rob.Spiger%40microsoft.com|0b6cc9dfcc7c4920dabd08d649962bc9|72f988bf86f141af91ab2d7cd011db47|1|0|636777306657894212&sdata=R1hOLSYQpYMHtHcYcN5e3Rv0dLB%2F6Ly3Agp8wHcwSY0%3D&reserved=0, or mute the threadhttps://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FAhU7GFDrbF0Mn6tK1-1DgJWECXhnYbN1ks5uuw_ogaJpZM4YcNMh&data=02|01|Rob.Spiger%40microsoft.com|0b6cc9dfcc7c4920dabd08d649962bc9|72f988bf86f141af91ab2d7cd011db47|1|0|636777306657894212&sdata=FQuyrKXx8heiFmt4stYzVkDGorJY4Bb4QiLxAydws2M%3D&reserved=0.

The TraceView command line options are deprecated. Use tracepdb.exe and tracefmt.exe to parse PDBs into  TMF files and parse .etl files into text, respectively.
For what it's worth, the -i parameter to tracepdb.exe requires a list of executable images for which it will download the PDBs (using _NT_SYMBOL_PATH) and extract the TMFs from them. TraceView does not support this option; it will just ignore unknown parameters without any warning message. TraceView, however, will use the events in the trace to automatically identify the PDBs that need to be downloaded. If -i appears to work for you then it is probably because of this information in the trace. Tracepdb.exe has a -i option simply to save you the hassle of first using symchk.exe to download the PDB locally before processing it.
Also, when passing -process to traceview.exe, the options correspond to a very old version of tracefmt.exe, not tracepdb.exe. To do what tracepdb.exe does you'd have to specify the -parsepdb action to TraceView. But again, TraceView's command line options are deprecated and out-of-date compared to the standalone tools.

The content has been extensively updated -- thank you, @Robo210 --to take this and more into account.


Resource Updated: CSS Animation, Chrome Extension & Code Playground

IMPORTANT: When creating your Pull Request, please use the following format for the title: Category - Resource Name & Section
PR Title samples:

Web development - CSS Portal & Tools
Web development - Leetcode & Challenges

Fixes Issue

#82
Description:

I have added some resources under the CSS Animation, Chrome Extension & Code Playground categories.
Resource URL:

Checklist:
Before submitting your pull request, ensure that you have completed the following tasks:

[ ] I have carefully reviewed and adhered to the contributing guidelines before creating this pull request.
[ ] I followed the prescribed PR title template. (Check this if you're adding a resource)

I have resolved this, please tell me whether it's in the correct format or not.

Thanks. Looks good!


Add image pull secrets to Jaeger resources

Context: https://github.com/jaegertracing/jaeger-operator/issues/1018
Adds support for k8s imagePullSecrets to Jaeger resources.
Associated PR to update documentation: https://github.com/jaegertracing/documentation/pull/416

Looks good to me! The only missing bits seems to be around the auto-provisioned ES and Kafka. Do you know whether their CRs also support customizing the image pull secret?

@jpkrohling ahmm I'm not too sure actually... I'm admittedly not too familiar with them since I've only really used the agent and collector.

@Saad-Hussain1 would you be able to check that? This PR looks good to me, but it would be good to know in advance if we need to extend this feature to include ES/Kafka, or if this feature is complete.
One more thing I'd like to ask: could you please open an issue to document this new field?

@jpkrohling Alright I'll try to look into it.
Is something missing from this issue: https://github.com/jaegertracing/jaeger-operator/issues/1018?
If I do need to open another issue, what would I need to include in it which that one ^ lacks?

If I do need to open another issue, what would I need to include in it which that one ^ lacks?

Sorry, I meant an issue on https://github.com/jaegertracing/documentation, so that we don't forget to let users know about this behavior.

I just realized that we might need this after all... Given that we already support overriding the service account, and service accounts might contain image pull secrets, one could achieve the goal of this PR by just setting the appropriate service account to the component/spec. Like:
apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-sa
imagePullSecrets:
- name: my-pull-secret

apiVersion: jaegertracing.io/v1
kind: "Jaeger"
metadata:
  name: "my-jaeger"
spec:
  serviceAccount: my-sa

Or am I missing something?

@jpkrohling :O I actually did not know about that, but it does seem that that works! The original response to the git issue also made me think that this wasn't supported in any way, but I didn't know that imagePullSecrets could be added to serviceAccounts. I guess majority of this PR is actually unnecessary then.
The only issue I have remaining is with the agent sidecar. It doesn't seem like serviceAccounts are supported for it, probably because the original deployment might already be using its own serviceAccount? Perhaps I can edit this PR to only add imagePullSecrets for the sidecar's deployment?

I'm closing this PR in favor of #1115. Hope you did have fun while working on this, though!


Removing Built-in Ore Veins

Hey, I'm just tinkering around with the mod on 1.18.2, and happened to stumble across a few things. How do you remove the pre existing vein types. I am able to add them using MCreator, but there is no obvious way to remove (and subsequently modify) existing types. (For exportation to give to other people, ex. for a modpack) How do you do this?
(The way I am adding veins is by making a recipe, removing the "recipe" code and replacing it with the drilling/extracting code from the game files (by converting the .jar file to a .zip and poking around), and putting it in the same file location. Then I modify what I want, and then send it off to do whatever.)

(poc is the name of the mod, (acronym for "proof of concept")
(Added this for those wondering)

I have discovered datapacks and their uses in removing things. Resolved the issue by simply overwriting the file with the same namespace inside the datapack, with an empty .json file in the place I wanted to remove.


Make all JSON item as string

How can I make all JSON item as string instead of based on excel column type. I need to do this because when I tried to upload the dara to MySQL, it will not be able to upload JSON data with non string type.

When you say you upload the data to MySQL, how do you accomplish that? For example, do you write the Excel worksheet to a CSV file, then run a CSV import on the MySQL side with a query or do you use the MySQL for Excel plugin?
Can you attach a small Excel document with some data. Nothing large, 10-20 rows would be sufficient.
What is the MySQL database schema that you are using. A table of column names and their data types and lengths would be sufficient.
What is JSON schema that you are using or would like to generate from the Excel columns in the worksheet.

Hopefully we can figure out a solution for you.


AWS IAM authentication - Header signed

Hi, any tips about how to use AWS IAM authentication type with aws.request.headers dinamically?
I am able to use, but sts session last only 15 minutes...The parameter aws.request.headers has to be signed I am only able to generate once in the Kafka Connect's bootstrap, after 10 minutes (token.renewal.ms) due to my aws.request.headers be static, it starts to fail because my session has expired
Thank you all in advance

@dinegri The plugins operate in the workers, if the connector fails you can tell the work to reload the configuration with config.action.reload=restart, but this won't stop the connector from failing.


GetFreeDiskSpace triggers timeout errors when there's no connectivity

Just having a look at the link.....
I did have a goofy error message from the command prompt...

WARNING error opening log "C:\Users\jtsmi\AppData\Roaming\Keybase\keybase.start.log": open C:\Users\jtsmi\AppData\Roaming\Keybase\keybase.start.log: The system cannot find the file specified.

The notification windows said I had an error which generated a log file.  Further advised me to enter the "keybase log send" command.
Cheers,
James
my log id: bbd60590b25cc6566b41cd1c

Hi @jtsmith0101 -- does the log belong to one of your open issues?  If so, can you post the log ID as a comment there and close this standalone issue?

The log should coincide with the first issue I reported?
On 2 August 2016 6:48:44 AM AEST, Jeremy Stribling<EMAIL_ADDRESS>wrote:

Hi @jtsmith0101 -- does the log belong to one of your open issues?  If
so, can you post the log ID as a comment there and close this
standalone issue?

You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/keybase/client/issues/3659#issuecomment-236703102

James T. Smith
Co-Founder & COO
Made For Me
Skype: jtsmith73
Mobile: +61 413 738 332
Phone: 1300 787 304
Email<EMAIL_ADDRESS>GPO Box 2224, Canberra, ACT, 2601
madefor.me
twitter.com/madeforme3D
facebook.com/madeforme3D
madefor.me is a service by:
Euclidify Pty Ltd
ABN 25 166 998 938
Sent from my mobile device

The confusing thing is that this is the first issue you opened in this repo.  The next one came two days later.

Fair enough.  The log file was for an error message that kept popping up when the computer would wake up from sleep but didn't yet have an internet connection. I may have submitted two log files for the same symptom.
Hope that helps.
On 2 August 2016 6:54:31 AM AEST, Jeremy Stribling<EMAIL_ADDRESS>wrote:

The confusing thing is that this is the first issue you opened in this
repo.  The next one came two days later.

You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub:
https://github.com/keybase/client/issues/3659#issuecomment-236704679

James T. Smith
Co-Founder & COO
Made For Me
Skype: jtsmith73
Mobile: +61 413 738 332
Phone: 1300 787 304
Email<EMAIL_ADDRESS>GPO Box 2224, Canberra, ACT, 2601
madefor.me
twitter.com/madeforme3D
facebook.com/madeforme3D
madefor.me is a service by:
Euclidify Pty Ltd
ABN 25 166 998 938
Sent from my mobile device

Ah ok, thanks!  That's definitely a known issue.  We're still trying to figure out how best to balance completeness vs. annoyingness for user notifications.  On Windows in particular, the OS wants to know about the free disk space all the time, even when you're not using the file system explicitly, and that seems to be causing the timeout in your case.  I'll leave this open as we consider whether to change that behavior, maybe just for this specific case of GetFreeDiskSpace.

This should be better in the next release.

this can be closed


ISLE: pattern type is always known

While type-checking the AST for a pattern, ISLE was passing in an Option<TypeId> for the expected result type of the pattern. However, at every call we either passed Some type explicitly, or passed the parent's expected type in a self-recursive call.
Therefore, by induction, expected_ty is never None. So this PR unwraps the type everywhere.
In addition, this function returned the type it computed for the sub-pattern, but that information is already available in the sub-pattern itself. Not only that but the type should always be equal to expected_ty; when it isn't, we've reported a type error and are just trying to check for more errors.
Most callers ignored the returned type but in some cases we used it to try to avoid emitting useless error messages. I've preserved that behavior for bind-patterns.
For and-patterns, the returned type looked like it was being used, but because expected_ty was never None, the fallback of "fill in with the sub-pattern's type" never fired. So I've deleted that fallback.
Finally, this reverts #4915 (9d99eff6f90522a838551326e651bb6b660ca624) which was introduced to flatten nested and-patterns, to simplify overlap checking. However, the visitor trait used by trie_again effectively flattens and-patterns anyway, so the current representation used for overlap checking doesn't need this any more.

@jameysharp could this be a viable clippy lint?


Upgrade to bevy 0.15

Status:

did most of the simple changes; tests almost pass. There is 1 failing test which is concerning, maybe I made a mistake

TODO:

upgrade leafwing
upgrade avian
use RequiredComponents?
test examples

Status?

Need to wait for leafwing/avian to upgrade

Just waiting on Avian now by the way, they're on 0.15, but haven't published a new version in a while. 🙂

cargo b --target wasm32-unknown-unknown is failing with
error[E0560]: struct `WebKeepalivePlugin` has no field named `initial_wake_delay`
  --> lightyear/src/client/web.rs:26:13
   |
26 |             initial_wake_delay: 1000.0,
   |             ^^^^^^^^^^^^^^^^^^ `WebKeepalivePlugin` does not have this field
   |
   = note: available fields are: `wake_delay`

for me

Avian just released: https://github.com/Jondolf/avian/releases/tag/v0.2.0
so hopefully nothing holding this back now :)

I think we should remove FixedSet::{Main, Physics} in the examples now, and ensure we're using FixedPostUpdate for avian plugins (the default). then we can just put our system in FixedUpdate without ordering concerns.
made a start in #735


How to parse into string a small token with a constraining pattern?

Boost.Spirit allowed the syntax for defining a parser that matched a token compliant with a simple pattern and had a `std::string as attribute:
auto myParser  = (alpha >> alpha >> -alnum);

Does Boost.Parser offer an equivalent?
Here is a full code that compiles in Boost.Spirit but not in Boost.Parser. You already said Boost.Parser will not provide an identical syntax, so I am asking for an alternative.
#ifdef WITH_BOOST_SPIRIT
#include <boost/fusion/adapted/struct/adapt_struct.hpp>
#include <boost/spirit/include/qi.hpp>
namespace bp = boost::spirit::qi;
#else
#include <boost/parser/parser.hpp>
namespace bp = boost::parser;
#endif

int main()
{
#ifdef WITH_BOOST_SPIRIT
  auto alnum = bp::ascii::alnum;
  auto alpha = bp::alpha;
#else
  auto alnum = bp::ascii::alnum;
  auto alpha = bp::ascii::alpha;
#endif

  auto myParser  = (alpha >> alpha >> -alnum);

  std::string input = "MM2";
  std::string result;

#ifdef WITH_BOOST_SPIRIT
  auto begin = input.begin();
  bool b = bp::phrase_parse(begin, input.end(), myParser, bp::ascii::space, result);
#else
  auto b = bp::parse(input, myParser, bp::ws, result);
#endif

  if (b)
    std::cout << ":-) " << result << std::endl;
  else
    std::cout << ":-(" << std::endl;
}

Remember the thing I said before on #50 (https://github.com/tzlaine/parser/issues/50#issuecomment-1879827991)?  I think that applies to my example of parsing ints, but far less so to parsing individual characters.  Just like I have as special case for std::string instead of std::vector<char> in repeat parsers, I'm now considering a special case for char types in sequence parsers.
I have this in mind:

The example above would produce a std::string.
Introduce separate[] directive (which would apply only to sequence parsers) to disable combining, like how it would happen under 1), or in general, like it happens now for *int_ >> int_.
Introduce merge[] (also only for sequence parsers) that would make the int_ >> int_ attribute std::vector<int>.

I'm still wrestling with the idea of including char32_t-attribute parsers in 1) and in the current std::string versus std::vector rule.  I'm leading toward inclusion; I think it's more natural not to have to worry about the distinction.


Enable debugging of sources through gpf.require.define

Sources are not visible as a loaded file from Chrome source tab

https://www.html5rocks.com/en/tutorials/developertools/sourcemaps/

See #244


feat: add an empty mutating webhook for pod template

Signed-off-by: arkbriar<EMAIL_ADDRESS>What's changed and what's your intention?
PLEASE DO NOT LEAVE THIS EMPTY !!!
Please explain IN DETAIL what the changes are in this PR and why they are needed:

Add an empty mutating webhook for the RisingWavePodTemplate
Simplify the example for pod template
Other generated modifications

Checklist

[x] I have written the necessary docs and comments
[x] I have added necessary unit tests and integration tests

Refer to a related PR or issue link (optional)

LGTM.


If you have any question on how to use which, please post it to the Sinon.JS mailinglist, so the bigger community can help answer your questions.


Adding Logo of the site on Result page[IMPROVEMENT]

What improvement are you suggesting?
Adding logo of site on result page
Why should make this improvement?
The site will become more interactive and by clicking on the logo the user will be returned to home page

hey, I wanted to contribute to the project under Gssoc'23

hey I can do this changes please assign me under gssoc'23

@prakhartiwari0 Can I work on this issue!?


iPython cell magics not working, Spyder 3 beta

I can not get various cell magics to work. It seems that iPython console does not notice that if I enter a newline after an empty line, it should run the input. For instance see the example here.. I have also tried %%capture and that did not work either.
What steps will reproduce the problem?

Running the example above in iPython console.

What is the expected output? What do you see instead?
Since this is a cell magic, I expect the console to allow me to write multiline code and whenever I enter two newlines, second newline should execute (as is with Python's control flow tools). However it keeps on expecting input.
Versions and main components

Spyder Version: 3.0.0.dev0
Python Version: Python 2.7.12 64 bits
Operating system: Windows 10

Dependencies
jedi >=0.8.1     :  0.9.0 (OK)
matplotlib >=1.0 :  1.5.1 (OK)
nbconvert >=4.0  :  4.2.0 (OK)
numpy >=1.7      :  1.11.1 (OK)
pandas >=0.13.1  :  0.18.1 (OK)
pep8 >=0.6       :  1.7.0 (OK)
pyflakes >=0.5.0 :  1.2.3 (OK)
pygments >=2.0   :  2.1.3 (OK)
qtconsole >=4.2.0:  4.2.1 (OK)
rope >=0.9.4     :  0.9.4 (OK)
sphinx >=0.6.6   :  1.4.1 (OK)
sympy >=0.7.3    :  1.0 (OK)
I would like to note that I am willing to try and locate (and perhaps fix) this issue myself. In case someone can reproduce this and think this can be handled by someone who's willing to get familiar with Spyder's code base, please feel free to guide me to relevant part of the source!

We'll take a look at this one after we release 3.0 :-)

Closing because nobody else has reported this bug.

Hi,
I thought I would ask  @oguzhanogreden about this issue since I am also having the same problem he posted above. To reiterate, when I type a magic command, e.g., %%cython, spyder does not recognize the 2nd new line as execute and continues to wait for input.
I am running spyder 3.2.3 in python 3.6
thank you


Introduce strong_migration to make sure we aren't doing dangerous migrations!

Sometimes migrations can be really devastating if we aren't cognizant about it, here is a gem that will stop you in the your tracks if you are able to release a migration that can be bad for us.
https://github.com/ankane/strong_migrations
Note - You can probably configure it to only care about future migrations and not past ones

Thanks @ErinClaudio. Closed by #156


Python 2

The whole thing is written in Python 2, I want to update it to run on Python 3.9.

can you provide more information regarding your code.

@devarshi2013 sorry, I made this code forever ago and just uploaded it to make it actually usable. I'm adding comments and making it not disgusting rn, should be much clearer in a day or two.


found some bugs in 0.4.7

hey @akiyosi
first of all thank you for maintaing this project
so after the latest release here is the bugs I found

that info or detail is not displaying in the right place
having this in setting.toml disables the scroolbar in the minimap
[MiniMap]
Disable = false
Visible = true

without those lines and enabling with :GonvimMiniMap has scrollbar

and finally having these in Coc-Settings.json
  "suggest.completionItemKindLabels": {
    "function": "\uf794",
    "method": "\uf6a6",
    "variable": "\uf71b",
    "constant": "\uf8ff",
    "struct": "\ufb44",
    "class": "\uf0e8",
    "interface": "\ufa52",
    "text": "\ue612",
    "enum": "\uf435",
    "enumMember": "\uf02b",
    "module": "\uf668",
    "color": "\ue22b",
    "property": "\ufab6",
    "field": "\uf93d",
    "unit": "\uf475",
    "file": "\uf471",
    "value": "\uf8a3",
    "event": "\ufacd",
    "folder": "\uf115",
    "keyword": "\uf893",
    "snippet": "\uf64d",
    "operator": "\uf915",
    "reference": "\uf87a",
    "typeParameter": "\uf278",
    "default": "\uf29c"
  },

shows only these icons for the  types

by commenting those it displays correctly

Hi :D
Thanks for this issue reporting.

that info or detail is not displaying in the right place

The info and detail part will be displayed in different ways depending on the settings.toml.
What kind of settings do you use in ~/.goneovim/setting.toml?
(BTW, default width of info part is 1px )
[Popupmenu]
# ## neovim's popupmenu is made up of word, menu and info parts.
# ## Each of these parts will display the following information.
# ##   word:   the text that will be inserted, mandatory
# ##   menu:   extra text for the popup menu, displayed after "word"
# ##   info:   more information about the item, can be displayed in a preview window
#
# ## The following options specify whether to display a dedicated column in the popupmenu
# ## to display the long text displayed in the `info` part.
# ShowDetail = true
#
# ## total number to display item
# Total = 20
#
# ## width of `menu` column
# MenuWidth = 400
#
# ## width of `info` column
# InfoWidth = 1
#
# ## width of `detail` column
# DetailWidth = 250

having this in setting.toml disables the scroolbar in the minimap
...
without those lines and enabling with :GonvimMiniMap has scrollbar

I fixed this issue in https://github.com/akiyosi/goneovim/commit/257193bea95d9beaec1e7872d65d878b2db3727b

and finally having these in Coc-Settings.json
...
shows only these icons for the types

Yes, this is a known issue (See https://github.com/akiyosi/goneovim/pull/73#issuecomment-551175317),
and because Goneovim identifies the icon types from the "kind" of completion candidates, it is not able to successfully identify the icon types when these are specified on the Coc side.
There may be a good way to improve this, but I haven't had enough time to investigate.

@akiyosi

What kind of settings do you use in ~/.goneovim/setting.toml?

[Popupmenu]
ShowDetail = true

## total number to display item
Total = 20

## width of `menu` column
MenuWidth = 400

## width of `info` column
InfoWidth = 1

I use the default config for that and I may be wrong

@DONofDESTROY
If you want to see the info part, widen its width.
Also, if you don't get any info, either there's no info from the LSP or they may have been taken down by goneovim, and if the latter, it's a bug.

@akiyosi
I am sorry I was trying to tell about this

it has area but it is displaying on somewhere else

@DONofDESTROY
Oh, I'm sorry, I didn't understand.
I want to make sure that

Is your configuration capable of reproducing this event in the following repository?
https://github.com/DONofDESTROY/NeoVim-config
Does this happen in v0.4.6?

Is your configuration capable of reproducing this event in the following repository?
this is my config I am using currently

it works sometimes
I disabled all config of coc, so  this must be  default behaviour

sometimes both

and this is 0.4.6

can I try with your neovim config

Hmmm, I realized.
This is a known issue if you have ext_popupmenu enabled.
That is, Coc uses a float window to display additional information depending on the items in the completion menu. This appears in a nice place when ext_popupmenu is disabled, but when it's enabled, it doesn't appear in concert with the completion UI that Goneovim displays.
If you can disable the ability to display this additional float window on the Coc side, try that.
We've reported a similar problem before. Please check it out as well. ref: https://github.com/akiyosi/goneovim/issues/95#issuecomment-583825127

We've reported a similar problem before. Please check it out as well. ref: #95 (comment)

That solves that issue


Intellij IDEA (CLion) popups have visual artifacts.

Intellij IDEA-based IDEs (in this case CLion) have strange artifacts with popups. For example, with code autocompletion, or find action (Ctrl + Shift + A).
Example:
https://user-images.githubusercontent.com/49359990/216067936-7eb4245e-d247-4b25-bc16-b4237cb0d11c.mp4
This seems to happen while the popup window is resizing itself.
_JAVA_AWT_WM_NONREPARENTING is set to 1.
Enabling or disabling animations don't help to solve the issue. Same with no_vfr or animate_manual_resizes.
Hyprland version is 0.21.0beta-2.
Hm, can you record it on sway-git, with borders enabled?

@vaxerski
on sway-git:
https://user-images.githubusercontent.com/49359990/216089949-1a3a0cbb-4fce-485e-8979-70e83d3f3379.mp4

huh, interesting.

I experience the same thing with rofi. It seems to scale the current content to the initial window size:

Same, any popup window seems to have issues, rofi, emacs buffers, Ulauncher.
There is the resizing and also the flickering.

@vaxerski any update on this issue, or any way we can help provide you more input or cases?

it's generally the popup's fault. You can help though by making a pr.

as soon as a window (in my case terminal) is opened and the window is resized, probably the same issue happens

i think now it's save to say that this happens to all applications which runs with xwayland

is this issue still present for you

JetBrains IDE's now have experimental Wayland support
Please try the versions in their Early Acess Program and see if they fix this issue.
Relevant Download links:
https://www.jetbrains.com/idea/nextversion/
https://www.jetbrains.com/pycharm/nextversion/
https://www.jetbrains.com/go/nextversion/

it doesn't happen on the Wayland version of JetBrains products.
I can test XWayland "tomorrow"

the jetbrains issue is resolved, the only issue, maybe we have already another one open is the redrawing speed of resized windows (good visible in vscode), but this should be another issue.


fix alert normalization

Description
Fix normalization of alerts and triggers. The new API for opensearch rearranged the JSON so we need to update the normalization code.
I took the trigger_types from https://github.com/opensearch-project/alerting-dashboards-plugin/blob/353aa258fb9a2f031964427a45da765092c7cf6d/public/pages/CreateTrigger/containers/CreateTrigger/utils/constants.js#L6
Issues Resolved
N/A
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Hey @atammy-narmi we just merged the PR for provider OpenSearch 2.x support, can you please fetch upstream and modify the changes accordingly.
Thank you
@bbarani @peterzhuamazon

OK, I've rebased the PR.

Hey @phillbaker can we move forward with this PR?
Thanks

Hey @phillbaker just checking back, are we good to move forward with this PR?
Thank you

is there anything that's blocking this PR from being merged?

Hey @atammy-narmi thanks for holding on this, does this change require for 2.x version of OpenSearch ? If need only for 1.x, please raise a PR to 1.x branch. Thank you
@peterzhuamazon @bbarani

Hey @atammy-narmi thanks for holding on this, does this change require for 2.x version of OpenSearch ? If need only for 1.x, please raise a PR to 1.x branch. Thank you @peterzhuamazon @bbarani

This works with the 2.x version of opensearch 😸

This works with the 2.x version of opensearch 😸

Got it, then please change the base branch to 1.x as this an issue for only OpenSearch 1.x series. Thanks

This works with the 2.x version of opensearch 😸

Got it, then please change the base branch to 1.x as this an issue for only OpenSearch 1.x series. Thanks

No, I said it's for the the 2.x branch.

No, I said it's for the the 2.x branch.

Do we need to backport this to 1.x?

No, I said it's for the the 2.x branch.

Do we need to backport this to 1.x?

I don't think so.

Cool, thanks LGTM.

I don't see any tests defined for other functions in the provider_test.go, could you point to where I should add the tests?

I don't see any tests defined for other functions in the provider_test.go, could you point to where I should add the tests?

Hey @atammy-narmi may be it was started that way, would it be better to add in provider_test.go or create a file util_test.go, WDYT? Just want to ensure your change is tested before we the provider is shipped :)
Thank you

Hey @atammy-narmi just following back on this PR? can you please add some unit tests so that we merge this PR.
Thanks

Hey @atammy-narmi just following back again on this PR? can you please add some unit tests so that we merge this PR.
Thanks

Sorry, it will take me a couple more days, will try to get it done by next week 😄

@atammy-narmi Could you please create an issue and specify examples so that I can test and review the PR?

Hey @atammy-narmi just following back on this PR? can you please add some unit tests so that we merge this PR.
Thanks

I've added something which looks like it should test this out.
I don't have a development environment setup for a local opensearch cluster, so I haven't managed to test this fully, can you approve the workflow so I can try testing this out?

Should be working now.

@prudhvigodithi @phillbaker @rblcoder can we move forward on this PR?

Thanks @atammy-narmi other than my above two comments the change LGTM.

@atammy-narmi @prudhvigodithi Can the code for normalizeMonitorTriggers be as follows? I checked, the tests are also passing.
func normalizeMonitorTriggers(triggers []interface{}) {
	// trigger_types := []string{"alerting_trigger", "anomaly_detector_trigger", "bucket_level_trigger", "chained_alert_trigger", "document_level_trigger", "query_level_trigger"}
	for _, t := range triggers {
		if trigger, ok := t.(map[string]interface{}); ok {
			delete(trigger, "id")
			var trigger_type_key string
			for key := range trigger {
				if strings.HasSuffix(key, "_trigger") {
					trigger_type_key = key
					break
				}
			}

			if qlt, ok := trigger[trigger_type_key].(map[string]interface{}); ok {
				normalizeMonitorLevelTriggers(qlt)
			}

		}
	}
}

@atammy-narmi I agree the code is not very robust.
Adding links for sample json documents if anyone going through this issue later would like to refer -
https://opensearch.org/docs/latest/observing-your-data/alerting/per-cluster-metrics-monitors/#painless-triggers
https://opensearch.org/docs/latest/observing-your-data/alerting/composite-monitors/#example-request

Bump, can I ask whats the holdup now?

Thanks @atammy-narmi, @rblcoder since you are reviewing, can you please check and see if we are good to move forward.
Thanks

@atammy-narmi As mentioned in https://github.com/opensearch-project/terraform-provider-opensearch/pull/50#discussion_r1462693542, can you try to avoid hard-coding the trigger types?
Can you create a REST API to get list of trigger types?
https://github.com/opensearch-project/alerting/issues/1422


Fix BooleanArrayMask call

Followup to #303

Coverage remained the same at 72.695% when pulling c7227e8149a9679fb3669188720de2f226a38d57 on keflavich:reproject-mask-wcs into 43c0a6da0f4aa5ce6f4479c378f6e243927aae80 on radio-astro-tools:master.

@keflavich -- Good to merge this? I'll open the PR to for #302 once this is merged.


Add small on the fly parser compiler

Hi,
First of all I know, that notInBetween is a horrible name for a new property, but I am just awful at naming things. I know, that this compiler would blow up the size of Prism considerably, so feel free to reject the PR. I just implemented it for the fun of it ;).
I have also created a benchmark: http://jsperf.com/test-compiled-parsers-for-prism
This patch adds the new property notInBetween, which can contain an
array of characters. During execution the array is compiled into a small
efficient parser, which can check if the matched pattern is not
in between the specified characters.
By default the start and end characters are the same, the escape
character is \ and multiline is assumed to be true. But it is
possible to modify the default values by using an object literal instead
of a string. The following example should illustrate how it works:
 'comment': {
    pattern: /\/\*[\w\W]*?\*\/|\/\/.*/g,
    notInBetween: [ '"', '\'', { start: '/', multiline: false, escape: '\\' }]
},

The generated parser for the above code snipped looks like this:
function(match, lastIndex) {
    var in34 = !!this.in34;
    var in39 = !!this.in39;
    var in47 = !!this.in47;
    var esc92 = !!this.esc92;
    var i = lastIndex || 0,
        str = match.input,
        len = match.index;
    for (; i < len; ++i) {
        switch (str.charCodeAt(i)) {
            case 34:
                in34 = (!in34 || esc92) && !in39 && !in47;
                esc92 = false;
                break;
            case 39:
                in39 = !in34 && (!in39 || esc92) && !in47;
                esc92 = false;
                break;
            case 47:
                in47 = !in34 && !in39 && (!in47 || esc92);
                esc92 = false;
                break;
            case 10:
                in47 = false;
                esc92 = false;
                break;
            case 92:
                esc92 = !esc92;
                break;
            default:
                esc92 = false;
                break;
        }
    };
    this.in34 = in34;
    this.in39 = in39;
    this.in47 = in47;
    this.esc92 = esc92;
    return !in34 && !in39 && !in47;
}

there is an add-on with these capabilities (and more) prism-grammar
FYI prism developers dont want to add parsing into prism (although they already have a limited parser, it is just a mater of terminology and degree)


@conda-forge-admin, please add user @ialibay

Additional comment:
No response

Hi! This is the friendly automated conda-forge-webservice.
I just wanted to let you know that I added user @ialibay in conda-forge/panedr-feedstock#8.


ref: corrected the dockerfile and updated the contributing.md file

Closes #2406
Additionally, @rupali-codes, you need to push the Linkshub Docker image to Docker Hub so that contributors can pull it.

@rupali-codes @CBID2, don't approve this. I mistakenly deleted the pnpm lock file, which might cause issues in production.

Thanks for the heads up @JoshiUtsav

@JoshiUtsav
You can simply add it.


MISRA C Review switch statement usage

To avoid bugs caused by wrong usage of switch statement, a serie of good practices must be taken.

Every single switch clause must have an unconditional break, empty fall is allowed though. e.g:

switch (x) {
   case 'a':  /* allowed */
   case 'b':
      do_something();
      break;
  case 'c':
      do_something_else(); /*not allowed */
  case 'd':
      break;
  default:
      break;
}

Every switch must have a default label and it must appear either as first or last label.
A switch must have at least two clauses

part of #9552

#9927

rules 16.1, 16.2, 16.3, 16.4, 16.5, 16.6 and 16.7

Does this MISRA-C rule open opportunities for enabling -Wimplicit-fallthrough to the standard
list of warnings ?
AFAIK, Coverity produces a lot of bugs tagged "Control flow Issues" due to the fallthrough warnings. And
more often they are actually real bugs.
OTOH if we expect that the behavior is desired/intentional we mark the switch case as "fall through" stringwhich compiler detects/reads to silence the warnings.
At least in the linux kernel community, we are soon (maybe next merge window) going to enable it and there has been continuous
effort in the community by Gustavo A.R. Silva in that direction.
More insights: https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
And I see some usage already in Zephyr in various subsystems:
himanshu@himanshu-Vostro-3559:~/zephyr$ git grep -n "fall through"
arch/arc/core/atomic.S:61:      /* fall through into atomic_set */
arch/arc/core/atomic.S:134:     /* fall through into atomic_add */
arch/arc/core/atomic.S:195:     /* fall through into atomic_sub */
arch/arc/core/fast_irq.S:276:   /* fall through */
arch/arc/core/regular_irq.S:135:        /* cached thread to run is in r0, fall through */
arch/arc/core/regular_irq.S:176:        /* fall through */
arch/arc/core/regular_irq.S:213:        /* fall through to rtie instruction */
arch/arc/core/regular_irq.S:217:        /* fall through to rtie instruction */
arch/arc/core/swap.S:152:       /* fall through to _swap_return_from_coop */
arch/x86/core/crt0.S:402:       /* fall through to handle the remaining double words (32-bit chunks) */
arch/x86/core/intstub.S:190:    /* fall through to nested case */
arch/x86/core/intstub.S:334:    /* fall through to 'nestedInterrupt' */
arch/x86/core/intstub.S:421:    /* fall through to _SpuriousIntHandler */
arch/x86/core/intstub.S:508:                     * a block, in which case we just fall through
arch/x86/core/swap.S:258:       /* fall through to 'floatSaveDone' */
arch/x86/core/swap.S:289:       /* fall through to 'floatRestoreDone' */
drivers/i2c/i2c_dw.c:328:               /* fall through */
drivers/i2c/i2c_dw.c:551:               /* fall through */
drivers/i2s/i2s_cavs.c:154:             /* fall through */
ext/hal/st/stm32cube/stm32l4xx/drivers/src/stm32l4xx_hal_hash.c:2141:    - or fall through from the Step 1 processing carried out hereabove */
ext/hal/st/stm32cube/stm32l4xx/drivers/src/stm32l4xx_hal_hash.c:2188:    - or fall through from the Step 2 processing carried out hereabove */
ext/lib/crypto/mbedtls/library/ssl_tls.c:7159:     * in process. If yes, perform/continue, and fall through
ext/lib/encoding/tinycbor/src/cborparser.c:242:            /* fall through */
samples/net/zperf/src/zperf_tcp_receiver.c:70:          /* fall through */
subsys/bluetooth/controller/ll_sw/ctrl.c:1854:          /* fall through */
subsys/bluetooth/host/hci_core.c:1707:          /* fall through */
subsys/bluetooth/host/hci_core.c:1718:          /* fall through */
subsys/bluetooth/host/mesh/cfg_srv.c:2234:              /* fall through */
subsys/bluetooth/host/mesh/lpn.c:747:           /* fall through */
subsys/shell/shell.c:879:                               /* fall through */
subsys/shell/shell.c:888:                               /* fall through */
subsys/shell/shell.c:897:                               /* fall through */
subsys/shell/shell_log_backend.c:127:           /* fall through */
tests/kernel/mbox/mbox_api/src/test_mbox_api.c:121:     /*fall through*/
tests/kernel/mbox/mbox_api/src/test_mbox_api.c:145:     /*fall through*/
tests/kernel/mbox/mbox_api/src/test_mbox_api.c:316:     /*fall through*/
tests/kernel/mbox/mbox_api/src/test_mbox_api.c:346:     /*fall through*/

We can, enable the warning is a good thing once we fixed it because will avoid errors be introduced. Regarding __attribute__ ((fallthrough));  I particularly a big fan. We want to be, as much compiler agnostic, as possible. Also this will still need a deviation. That's being said, we can discuss it more.

btw, we can turn it on once we have fixed the issues to avoid break CI

https://github.com/zephyrproject-rtos/zephyr/pull/27752


Fix parsing of markers in VCS requirements

Fix parsing of markers in VCS requirements

Parsing of markers in non-editable vcs requirements was broken
This PR adds some VCS repos, some utility pipfile generation functions
and some fixture helpers
Fixes #3249

Thank you for the fix @techalchemy. When is the next release of pipenv going to be?


Release 1.7.0

Diff

[See diff since last version](https://github.com/apollographql/apollo-ios-dev/compare/1.6.1...main
Things to do in this PR

[x] Update the version constants using the set-version.sh script.
[x] Update CHANGELOG.md with all relevant changes since the prior version. Please include PR numbers and mention contributors for external PR submissions.
[x] Run the Documentation Generator from the internal SwiftScripts folder using the command swift run DocumentationGenerator to re-generate the API reference documentation from source for all included libraries. Make sure you are on HEAD of the parent branch otherwise the documentation generator will not catch all changes, rebase this PR if needed.
[x] Run make archive-cli-to-apollo-package to attach cli to apollo-ios package

Things to do as part of releasing

[ ] Add tag of format major.minor.patch to GitHub.
[ ] Create a release on GitHub with the new tag, using the latest CHANGELOG.md contents.
[ ] Attach CLI binary to the GitHub release. Use the make archive-cli-for-release command which builds both Intel and ARM architectures, and creates the tar archive for you.
[ ] Run pod trunk push Apollo.podspec and pod trunk push ApolloTestSupport.podspec to publish to CocoaPods. You will need write permissions for this, please contact one of the maintainers if you need access to do this.
[ ] Run "Release New Version" workflow in apollo-ios-xcframework

Just some fixes to the Changelog! Otherwise, LGTM

Yep nice catch forgot to fix those when I copied that over.


Strong name sign the assembly.

Not supported in .net core.

strong naming is supported in netcore

Yep, you're 100% right. At the time that comment was made it wasn't recommended, but since then it's become first class. I'll sign it.

yeah i wish strong naming would die. but i have given up fighting against it

Yep.
The signed version is up on NuGet now. It should be indexed soon.

Awesome. Thanks


Add more tests around "Hide Disabled Flags"

Mainly in FE E2E tests

The E2E runs with this option enabled now


Temperature not showing correctly in webcam area (Panel tab)

Hi there,
On iPhone the webcam area in the Panel tab doesn‘t shows temperature correctly.
In default state the temperature isn‘t visible at all:

If you try to scroll down, it becomes visible:

On iPad it shows well.
But another issue is, that it just shows the T0 temperature, Not T1.
Please add the temperature of the second head also, if installed.
Kind regards,
Kai

HI @Nappyy, this is working as designed. The idea is to show temperature information when user cannot see temperature information on the bottom subpanel. In your first screenshot I see temp is 42 and in the second one temp information is not visible at the bottom so camera show the temp.
About showing temperature of extruders 2-5, I could easily add that information to the camera. My concern is that it might take too much space a block the view of something more important. Do you have some ideas on how to add that information and still not be intrusive and cover camera information?
Thanks,
Gaston

Hi @gdombiak,
ok, I agree to show only the temperature information if needed (not visible at the bottom).
But in my opinion it's necessary to display (in my case) both head temperatures.
Maybe a compromise could be to show only the temperatures of the active components?
In the screenshots above it would be head 2 and heatbed?
Kind Regards,
Kai

I like that idea. My printers have only 1 extruder so not sure how it works with multiple. Do people only heat up one extruder at a time? If people heat up more than one then we can show the first one as we do now?
Thanks for sharing your ideas.
Gaston

I will share a screenshot so we can see how much gets covered if we show up to 5 extruders. That would be a total of 7 rows.....

I like that idea. My printers have only 1 extruder so not sure how it works with multiple. Do people only heat up one extruder at a time? If people heat up more than one then we can show the first one as we do now?

well, that was a misunderstanding :)
What i meant was to to display all units that have set a target temp.
Sure it will cover space in the webcam view, but in my opinion it's necessary to see all temperature values, not only the first.
If you like to make it more dynamic, maybe add an option to enable / disable the view of each heating unit in the webcam area?

Gotcha. I will see what can be done and still not obstruct camera view.