OTA update on ESP fails

Hi Team,
I am using AWS FreeRTOS version 202007 and ESP32.
I am facing an issue in OTA Update.
If  the  parameter "otaconfigMAX_NUM_BLOCKS_REQUEST"  is set to 8, means for every data request(prvRequestDataHandler), there is a response of 8 packets is generated.
After receiving the first packet, I need to process the data of the first packet received, then I need to receive the second packet and then process the same. Is there a way where I can notify first packet is processed, then receive the second packet.
Can you please explain this process in detail? How is the synchronization achieved?
Also how should I notify to receive next set of 8 packets as soon as possible after I receive first set of 8 packets and process them?
What is the minimum possible time or allowed time between these two set of 8 packets with out any problem?
#define otaconfigFILE_REQUEST_WAIT_MS           10000U can I set this value to 1000? are there any problems in changing to 1 second from 10 seconds?
What is the configuration required to increase this number from 8 to 32? Please suggest? Are there any problems in increasing this from 8 to 32?
Thanks.

Hello,
The OTA agent when configured to request more than 1 file block for example 8 then the agent will wait for the timeout as configured in otaconfigFILE_REQUEST_WAIT_MS. This timeout is used only when the number of blocks requested are not received otherwise the next set of blocks are requested without waiting for this timeout to expire.
When the packets are received they are queued and processed in order as they were inserted in the queue i.e written to the flash area which is in OTA pal of the platform. ESP OTA Port
The otaconfigFILE_REQUEST_WAIT_MS must be set according to the rate at which data is received and processed by the platform. So when requesting 8 blocks of 4 KB i.e 32KB of data the time must be sufficient to receive the data from service and write it to the flash. The maximum data that can be requested is 128 KB per request so the number of data blocks can be set to 32 but the otaconfigFILE_REQUEST_WAIT_M must be sufficient to receive 128 KB and process it.
Are you facing issue with default configuration or after changing it ? Can you please explain the issue and provide logs?

Hello,
The OTA agent when configured to request more than 1 file block for example 8 then the agent will wait for the timeout as configured in otaconfigFILE_REQUEST_WAIT_MS. This timeout is used only when the number of blocks requested are not received otherwise the next set of blocks are requested without waiting for this timeout to expire.
When the packets are received they are queued and processed in order as they were inserted in the queue i.e written to the flash area which is in OTA pal of the platform. ESP OTA Port
The otaconfigFILE_REQUEST_WAIT_MS must be set according to the rate at which data is received and processed by the platform. So when requesting 8 blocks of 4 KB i.e 32KB of data the time must be sufficient to receive the data from service and write it to the flash. The maximum data that can be requested is 128 KB per request so the number of data blocks can be set to 32 but the otaconfigFILE_REQUEST_WAIT_M must be sufficient to receive 128 KB and process it.
Are you facing issue with default configuration or after changing it ? Can you please explain the issue and provide logs?

Hi Team,
Thanks for the message. Thanks for your immediate response.
Still I did not understand the design,

can we control the timing between the 8 packets received from the cloud in the above mentioned case?

Because as soon as I receive first packet and process it, second packet comes very fast. Is there a way I can notify to the service once I process first packet only , second packet can be received from the cloud? Please explain this in detail

But if I make this otaconfigMAX_NUM_BLOCKS_REQUEST to 1, it sends request for every packet and the response takes couple of seconds and to receive 30 packets it takes close to 120 seconds, which is a lot and causes performance problem.

kindly suggest me how can I improve the performance. to receive a job(with 30 packets of size 4096 bytes) it should not take more than 30 seconds but currently it takes 90 to 120 seconds which is killing performance.

Please suggest best possible fast solution.
Thanks,
Kumar.

Hi Team,
Thanks for the message. Thanks for your immediate response.
Still I did not understand the design,

can we control the timing between the 8 packets received from the cloud in the above mentioned case?

Because as soon as I receive first packet and process it, second packet comes very fast. Is there a way I can notify to the service once I process first packet only , second packet can be received from the cloud? Please explain this in detail

But if I make this otaconfigMAX_NUM_BLOCKS_REQUEST to 1, it sends request for every packet and the response takes couple of seconds and to receive 30 packets it takes close to 120 seconds, which is a lot and causes performance problem.

kindly suggest me how can I improve the performance. to receive a job(with 30 packets of size 4096 bytes) it should not take more than 30 seconds but currently it takes 90 to 120 seconds which is killing performance.

Please suggest best possible fast solution.
Thanks,
Kumar.

Hi pvyawaha,
Hope you had an excellent weekend.
Can you please help me in this as soon as possible.
Thanks,
Kumar.

Hi pvyawaha,
Hope you had an excellent weekend.
Can you please help me in this as soon as possible.
Thanks,
Kumar.

Hello,

can we control the timing between the 8 packets received from the cloud in the above mentioned case?

When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device.

2.Because as soon as I receive first packet and process it, second packet comes very fast. Is there a way I can notify to the service once I process first packet only , second packet can be received from the cloud? Please explain this in detail

The way to control the flow of packets from the service is using the  otaconfigMAX_NUM_BLOCKS_REQUEST . When the file blocks are received they are decoded and written to the flash. If this process is slow then packets can be dropped. In such case to avoid dropping packets the number of buffers otaconfigMAX_NUM_OTA_DATA_BUFFERS must higher or atleaset equal to otaconfigMAX_NUM_BLOCKS_REQUEST .

But if I make this otaconfigMAX_NUM_BLOCKS_REQUEST to 1, it sends request for every packet and the response takes couple of seconds and to receive 30 packets it takes close to 120 seconds, which is a lot and causes performance problem.

This is correct if otaconfigMAX_NUM_BLOCKS_REQUEST  is set to 1 then device will send a request for next block and will be slower than requesting multiple blocks. The speed will also be depending on the network and region.

kindly suggest me how can I improve the performance. to receive a job(with 30 packets of size 4096 bytes) it should not take more than 30 seconds but currently it takes 90 to 120 seconds which is killing performance.

As recommended in the 2. above if the number of buffers can be increased it will help in speeding up the process.

Hello,

can we control the timing between the 8 packets received from the cloud in the above mentioned case?

When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device.

2.Because as soon as I receive first packet and process it, second packet comes very fast. Is there a way I can notify to the service once I process first packet only , second packet can be received from the cloud? Please explain this in detail

The way to control the flow of packets from the service is using the  otaconfigMAX_NUM_BLOCKS_REQUEST . When the file blocks are received they are decoded and written to the flash. If this process is slow then packets can be dropped. In such case to avoid dropping packets the number of buffers otaconfigMAX_NUM_OTA_DATA_BUFFERS must higher or atleaset equal to otaconfigMAX_NUM_BLOCKS_REQUEST .

But if I make this otaconfigMAX_NUM_BLOCKS_REQUEST to 1, it sends request for every packet and the response takes couple of seconds and to receive 30 packets it takes close to 120 seconds, which is a lot and causes performance problem.

This is correct if otaconfigMAX_NUM_BLOCKS_REQUEST  is set to 1 then device will send a request for next block and will be slower than requesting multiple blocks. The speed will also be depending on the network and region.

kindly suggest me how can I improve the performance. to receive a job(with 30 packets of size 4096 bytes) it should not take more than 30 seconds but currently it takes 90 to 120 seconds which is killing performance.

As recommended in the 2. above if the number of buffers can be increased it will help in speeding up the process.

Hi pvyawaha,
Thanks for your immediate response. can you please confirm my understanding through the following as soon as possible.

When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device. Time between each file block  with in the 8 files blocks is not configurable and not decided by the device.

As and when low level layers, receives one block from the cloud, it pushes to the upper layer or application layer for writing in to the flash or for processing. or all the 8 blocks are received by the low level layer at once from the cloud and pushed to the application layer or higher layer. I am not understanding where is the queuing happening here? how is the queuing happening here in between the 8 blocks.

I guess when ever the new block receives the old block over writes it, if the processing is not fast. Can you explain this architecture in detail?

If I understand correctly, if I request 8 blocks at once and if I allocate 8 buffers, so there is no chance of packets getting dropped, because packets are queued and proper processing can be done. But how I can communicate to the queue, I received one packet and I processed one packet, send me the next packet, how should I do this?

Because if spacing between each of these 8 packets is 150 milli seconds, but my processing of the packet takes 250 milli seconds, how can I communicate this to the queue? because I should not loose packet and at the same time I should process the packet.

After the 8 packets received, next request will be sent to fetch next 8 packets after otaconfigFILE_REQUEST_WAIT_MS or immediately?

6.Based on your experience, can you please tell me if the device is having good network and device and cloud are in the same region, what is the time it takes to get a response for a request in the Job?

I have 30 packets for OTA in the job of size 4096 bytes, if I fetch 8 packets at once with 8 buffers allocated and 4 requests sent to finish 30 packets download, can this finish in 10 seconds? Is it practically possible?

Are the jobs through MQTT are fast? Are the jobs through HTTP are fast? In general performance of jobs is very less because we need to request and get the packets each time?

If you say Jobs through HTTP is fast, can I have an MQTT connection to push messages to the cloud and at the same time OTA through HTTP possible or not?

Please let me know these things as soon as possible, so that I can test and report the performance.
Thanks,
Kumar.

Hi pvyawaha,
Thanks for your immediate response. can you please confirm my understanding through the following as soon as possible.

When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device. Time between each file block  with in the 8 files blocks is not configurable and not decided by the device.

As and when low level layers, receives one block from the cloud, it pushes to the upper layer or application layer for writing in to the flash or for processing. or all the 8 blocks are received by the low level layer at once from the cloud and pushed to the application layer or higher layer. I am not understanding where is the queuing happening here? how is the queuing happening here in between the 8 blocks.

I guess when ever the new block receives the old block over writes it, if the processing is not fast. Can you explain this architecture in detail?

If I understand correctly, if I request 8 blocks at once and if I allocate 8 buffers, so there is no chance of packets getting dropped, because packets are queued and proper processing can be done. But how I can communicate to the queue, I received one packet and I processed one packet, send me the next packet, how should I do this?

Because if spacing between each of these 8 packets is 150 milli seconds, but my processing of the packet takes 250 milli seconds, how can I communicate this to the queue? because I should not loose packet and at the same time I should process the packet.

After the 8 packets received, next request will be sent to fetch next 8 packets after otaconfigFILE_REQUEST_WAIT_MS or immediately?

6.Based on your experience, can you please tell me if the device is having good network and device and cloud are in the same region, what is the time it takes to get a response for a request in the Job?

I have 30 packets for OTA in the job of size 4096 bytes, if I fetch 8 packets at once with 8 buffers allocated and 4 requests sent to finish 30 packets download, can this finish in 10 seconds? Is it practically possible?

Are the jobs through MQTT are fast? Are the jobs through HTTP are fast? In general performance of jobs is very less because we need to request and get the packets each time?

If you say Jobs through HTTP is fast, can I have an MQTT connection to push messages to the cloud and at the same time OTA through HTTP possible or not?

Please let me know these things as soon as possible, so that I can test and report the performance.
Thanks,
Kumar.

Hi pvyawaha,
Can you please help me with the answers of the above as soon as possible.
Thanks,
Kumar.

Hi pvyawaha,
Can you please help me with the answers of the above as soon as possible.
Thanks,
Kumar.

Hello,

1.When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device. Time between each file block with in the 8 files blocks is not configurable and not decided by the device.

That is correct, for request of 8 blocks of 4KB each it is requesting 32KB of data which service will send.

As and when low level layers, receives one block from the cloud, it pushes to the upper layer or application layer for writing in to the flash or for processing. or all the 8 blocks are received by the low level layer at once from the cloud and pushed to the application layer or higher layer. I am not understanding where is the queuing happening here? how is the queuing happening here in between the 8 blocks.

The OTA library waits for the file block received event in a queue which is queued by the mqtt callback executing in the taskpool context. The data is read by netrecv task from the network stack which is processed by the taskpool to generate the mqtt callback for a file block.

I guess when ever the new block receives the old block over writes it, if the processing is not fast. Can you explain this architecture in detail?

When a mqtt callback is generated for the file block the data is copied in OTA buffer and event is queued  in the OTA processing queue. The OTA library checks if the data is processed ( written to flash ) before the buffers are used again otherwise it drops the packet.

If I understand correctly, if I request 8 blocks at once and if I allocate 8 buffers, so there is no chance of packets getting dropped, because packets are queued and proper processing can be done. But how I can communicate to the queue, I received one packet and I processed one packet, send me the next packet, how should I do this?

The file blocks are queued by the mqtt callback so what you can do is increase the priority of the OTA Agent in the OTA Agent config OTA Agent Priority Config to 6. This way each block should be processed first before next is queued.

After the 8 packets received, next request will be sent to fetch next 8 packets after otaconfigFILE_REQUEST_WAIT_MS or immediately?

Sent right after the last block from previous request is received.

6, 7, 8, 9

Regarding HTTP the file download is done from S3 using the presigned url. So the performance will be different. We will try to run tests using the same configuration and release you mentioned to get some metrics. It will depend on other factors like I mentioned earlier.
Meanwhile please try to run test using the priority change I mention above in point 4.

Hello,

1.When OTA library is configured to request 8 file blocks , the service sends 8 file blocks to the device. Time between each file block with in the 8 files blocks is not configurable and not decided by the device.

That is correct, for request of 8 blocks of 4KB each it is requesting 32KB of data which service will send.

As and when low level layers, receives one block from the cloud, it pushes to the upper layer or application layer for writing in to the flash or for processing. or all the 8 blocks are received by the low level layer at once from the cloud and pushed to the application layer or higher layer. I am not understanding where is the queuing happening here? how is the queuing happening here in between the 8 blocks.

The OTA library waits for the file block received event in a queue which is queued by the mqtt callback executing in the taskpool context. The data is read by netrecv task from the network stack which is processed by the taskpool to generate the mqtt callback for a file block.

I guess when ever the new block receives the old block over writes it, if the processing is not fast. Can you explain this architecture in detail?

When a mqtt callback is generated for the file block the data is copied in OTA buffer and event is queued  in the OTA processing queue. The OTA library checks if the data is processed ( written to flash ) before the buffers are used again otherwise it drops the packet.

If I understand correctly, if I request 8 blocks at once and if I allocate 8 buffers, so there is no chance of packets getting dropped, because packets are queued and proper processing can be done. But how I can communicate to the queue, I received one packet and I processed one packet, send me the next packet, how should I do this?

The file blocks are queued by the mqtt callback so what you can do is increase the priority of the OTA Agent in the OTA Agent config OTA Agent Priority Config to 6. This way each block should be processed first before next is queued.

After the 8 packets received, next request will be sent to fetch next 8 packets after otaconfigFILE_REQUEST_WAIT_MS or immediately?

Sent right after the last block from previous request is received.

6, 7, 8, 9

Regarding HTTP the file download is done from S3 using the presigned url. So the performance will be different. We will try to run tests using the same configuration and release you mentioned to get some metrics. It will depend on other factors like I mentioned earlier.
Meanwhile please try to run test using the priority change I mention above in point 4.

Hi pvyawaha,
Hope you had an excellent weekend. Thanks for the above detailed explanation.
After our discussion, I started testing. The following are my results.
Setup 1:- ESP connects to AWS by using stable Wi-Fi connection.
Time difference between request and response of OTA MQTT packets is 300 milli seconds. Each packet size is 4096 bytes. This seems to be reasonable. If you are seeing different timing you can let me know.
Setup 2:- ESP connects to AWS by using Mobile App by using MQTT over BLE.

Time difference between request and response of OTA MQTT packets is 3 to 5 seconds. This is worst performance. Each packet size is 4096 bytes.

I reduced the packet size to 2048 bytes, then the time difference between request and response of OTA MQTT packets is 1 to 2 seconds.

I further reduced the packet size to 1024 bytes, then the time difference between request and response of OTA MQTT packets is half a second.

Based on this pattern, I could clearly understand this could be problem with the BLE connection parameters between ESP and Mobile App.

5.I want to return to 4096 bytes and time difference between request and response of OTA MQTT packets to less than half a second.

So I want to update the BLE connection parameters on ESP32, to solve this problem. Do you also think this is the root cause of the problem? Can you please provide your thoughts on the same and suggest a way to move forward.

what is the function used to update BLE connection interval in ESP32? The following function seems to be empty and not implemented?

BTStatus_t IotBle_ConnParameterUpdateRequest( const BTBdaddr_t * pBdAddr,
IotBleConnectionParam_t * pConnectionParam );

what is the function used to update BLE connection interval in iOS SDK?  I do not see any function in iOS sdk which will allow me to set the connection interval in AWS FreeRTOS.

I made the following changes but no use.
//#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MIN    0x20
//#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MAX    0x40
#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MIN    0x20
#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MAX    0x190

Can you please suggest what should be the BLE connection interval parameters to receive 4096 bytes with bare minimum delay.

Can you please help me in this as soon as possible. This is really urgent request.
Thanks,
Kumar.

Hi pvyawaha,
Hope you had an excellent weekend. Thanks for the above detailed explanation.
After our discussion, I started testing. The following are my results.
Setup 1:- ESP connects to AWS by using stable Wi-Fi connection.
Time difference between request and response of OTA MQTT packets is 300 milli seconds. Each packet size is 4096 bytes. This seems to be reasonable. If you are seeing different timing you can let me know.
Setup 2:- ESP connects to AWS by using Mobile App by using MQTT over BLE.

Time difference between request and response of OTA MQTT packets is 3 to 5 seconds. This is worst performance. Each packet size is 4096 bytes.

I reduced the packet size to 2048 bytes, then the time difference between request and response of OTA MQTT packets is 1 to 2 seconds.

I further reduced the packet size to 1024 bytes, then the time difference between request and response of OTA MQTT packets is half a second.

Based on this pattern, I could clearly understand this could be problem with the BLE connection parameters between ESP and Mobile App.

5.I want to return to 4096 bytes and time difference between request and response of OTA MQTT packets to less than half a second.

So I want to update the BLE connection parameters on ESP32, to solve this problem. Do you also think this is the root cause of the problem? Can you please provide your thoughts on the same and suggest a way to move forward.

what is the function used to update BLE connection interval in ESP32? The following function seems to be empty and not implemented?

BTStatus_t IotBle_ConnParameterUpdateRequest( const BTBdaddr_t * pBdAddr,
IotBleConnectionParam_t * pConnectionParam );

what is the function used to update BLE connection interval in iOS SDK?  I do not see any function in iOS sdk which will allow me to set the connection interval in AWS FreeRTOS.

I made the following changes but no use.
//#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MIN    0x20
//#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MAX    0x40
#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MIN    0x20
#define IOT_BLE_ADVERTISING_CONN_INTERVAL_MAX    0x190

Can you please suggest what should be the BLE connection interval parameters to receive 4096 bytes with bare minimum delay.

Can you please help me in this as soon as possible. This is really urgent request.
Thanks,
Kumar.

Hi,
I am able to reproduce this with 4096 bytes OTA blocks size. Connection interval was 24ms between IOS and ESP32 device and the MTU was 512 bytes. From the test the whole block is transferred in under a second, but there is an initial delay of 3 seconds between when a block is received from cloud and the first MTU chunk (509 bytes) is send to the device. I will debug this more and will keep you posted.
Meanwhile as a work around to speed up OTA you can reduce the block size to 1024 and increase number of blocks fetched in one request to 3 or 4, by changing the following config in aws_ota_agent_config.h
#define otaconfigLOG2_FILE_BLOCK_SIZE           10UL
#define otaconfigMAX_NUM_BLOCKS_REQUEST        3U
#define otaconfigMAX_NUM_OTA_DATA_BUFFERS       4U

Hi,
I am able to reproduce this with 4096 bytes OTA blocks size. Connection interval was 24ms between IOS and ESP32 device and the MTU was 512 bytes. From the test the whole block is transferred in under a second, but there is an initial delay of 3 seconds between when a block is received from cloud and the first MTU chunk (509 bytes) is send to the device. I will debug this more and will keep you posted.
Meanwhile as a work around to speed up OTA you can reduce the block size to 1024 and increase number of blocks fetched in one request to 3 or 4, by changing the following config in aws_ota_agent_config.h
#define otaconfigLOG2_FILE_BLOCK_SIZE           10UL
#define otaconfigMAX_NUM_BLOCKS_REQUEST        3U
#define otaconfigMAX_NUM_OTA_DATA_BUFFERS       4U

Hi Ravi,
Thanks for confirming the issue. Good that you are able to reproduce the same issue on your end.
What function did you use to get connection interval?
I guess this problem is occurring because of very small connection interval.
Is there a function on iOS or ESP32 to set the connection interval to bigger value?
This is really urgent request, we need to solve this as soon as possible. Fetching 1K will increase number of packets and increase the total time. That's the reason I opted for 4K.
Thanks,
Kumar.

Hi Ravi,
Thanks for confirming the issue. Good that you are able to reproduce the same issue on your end.
What function did you use to get connection interval?
I guess this problem is occurring because of very small connection interval.
Is there a function on iOS or ESP32 to set the connection interval to bigger value?
This is really urgent request, we need to solve this as soon as possible. Fetching 1K will increase number of packets and increase the total time. That's the reason I opted for 4K.
Thanks,
Kumar.

You can use ESP function ble_gap_conn_find() to get the details of connection parameters. Pass in the connection handle obtained from the connection callback.
The problem should not occur due to small connection interval. Smaller connection interval BLE can send packets quicker (as radio needs  to wait for one connection interval) before sending next packet. So it should lead to increased throughput.

Fetching 1K will increase number of packets and increase the total time

This should not increase the total time as you also increase number of packets fetched in one request.
What version of the amazon freertos IOS SDK are you using ? If not using the latest SDK can you upgrade to latest version and test ? Also what IOS device are you using?

You can use ESP function ble_gap_conn_find() to get the details of connection parameters. Pass in the connection handle obtained from the connection callback.
The problem should not occur due to small connection interval. Smaller connection interval BLE can send packets quicker (as radio needs  to wait for one connection interval) before sending next packet. So it should lead to increased throughput.

Fetching 1K will increase number of packets and increase the total time

This should not increase the total time as you also increase number of packets fetched in one request.
What version of the amazon freertos IOS SDK are you using ? If not using the latest SDK can you upgrade to latest version and test ? Also what IOS device are you using?

Hi Ravi,
I do not agree with the small connection interval.
Small connection interval means we can send only less packets.Bigger connection interval means we can send more packets in one conncetion interval.
Say for example for 4096 bytes block, we need 9 packets of 512 bytes each. This cannot be fit in 24 miliseconds connection interval. If the connection interval is big it can fit all the packets at once, increasing the through put.
Can you please look in to this and explain in detail.
I am using amazon freertos IOS SDK - 1.0.0
I did pod update now and I got AWSIoT (2.22.0) and AWSCore (= 2.22.0) updated. But pod update did not update amazon freertos IOS SDK.
iOS version I am using is 13.7
Can you please help in this as soon as possible.
Thanks,
Kumar.

Hi Ravi,
I do not agree with the small connection interval.
Small connection interval means we can send only less packets.Bigger connection interval means we can send more packets in one conncetion interval.
Say for example for 4096 bytes block, we need 9 packets of 512 bytes each. This cannot be fit in 24 miliseconds connection interval. If the connection interval is big it can fit all the packets at once, increasing the through put.
Can you please look in to this and explain in detail.
I am using amazon freertos IOS SDK - 1.0.0
I did pod update now and I got AWSIoT (2.22.0) and AWSCore (= 2.22.0) updated. But pod update did not update amazon freertos IOS SDK.
iOS version I am using is 13.7
Can you please help in this as soon as possible.
Thanks,
Kumar.

Hi,
Connection interval is the time interval between each data transfer events between a peripheral and central. The central and peripheral turn on radios and transmit at each connection interval time. So increasing the connection interval will save power (by increasing the time the radio is off), but will decrease throughput as it can transmit only less frequently. Connection interval is always set by central and peripheral can request for a range by providing min and max values. Central will try to set an interval within this range. You can read more about connection interval here
Regarding IOS SDK update, I think pod update will only update its dependencies, to get latest SDK can you pull from master branch in this repo: https://github.com/aws/amazon-freertos-ble-ios-sdk/tree/master

Hi,
Connection interval is the time interval between each data transfer events between a peripheral and central. The central and peripheral turn on radios and transmit at each connection interval time. So increasing the connection interval will save power (by increasing the time the radio is off), but will decrease throughput as it can transmit only less frequently. Connection interval is always set by central and peripheral can request for a range by providing min and max values. Central will try to set an interval within this range. You can read more about connection interval here
Regarding IOS SDK update, I think pod update will only update its dependencies, to get latest SDK can you pull from master branch in this repo: https://github.com/aws/amazon-freertos-ble-ios-sdk/tree/master

Hi Ravi,
Thanks for the explanation.
Can you please confirm the issue is fixed in 1.1.0 release or it is fixed only in the master branch?
Because my app is in production, it is risk to pull the code from master. Please confirm as soon as possible.
Thanks,
Kumar.

Hi Ravi,
Thanks for the explanation.
Can you please confirm the issue is fixed in 1.1.0 release or it is fixed only in the master branch?
Because my app is in production, it is risk to pull the code from master. Please confirm as soon as possible.
Thanks,
Kumar.

Hi Kumar,
We found the issue to be with the Swift CBOR encoder used within the IOS SDK, taking close to a second to encode the block of 4k bytes, in our test. We are working on a fix and will update this post soon.

Hi Kumar,
We found the issue to be with the Swift CBOR encoder used within the IOS SDK, taking close to a second to encode the block of 4k bytes, in our test. We are working on a fix and will update this post soon.

Hi Ravi,
Thanks for the explanation.
Does that mean the issue is not fixed in 1.1.0 release and also in the master branch also? I should  not upgrade my code. Please confirm as soon as possible.
Also the time delay for 4K packets is 3 seconds. It is very consistent and easily reproduceable.
Please let me know the fix as soon as possible.
Thanks,
Kumar.

Hi Ravi,
Thanks for the explanation.
Does that mean the issue is not fixed in 1.1.0 release and also in the master branch also? I should  not upgrade my code. Please confirm as soon as possible.
Also the time delay for 4K packets is 3 seconds. It is very consistent and easily reproduceable.
Please let me know the fix as soon as possible.
Thanks,
Kumar.

@kumarfirmware
Yes, we are still working on the fix and confirming it by testing. The fix will be available in the latest master code once tested. I will keep you posted on the updates.

Hi Ravi,
Any idea when the fix will be available? we are running short of time.
If we can quickly solve this, it will really help. Already it took good amount of time.
Where do you see the challenge? it is reproduceable very consistently right?
Thanks,
Kumar.

Hi @kumarfirmware
We have created a pull request for the fixes to resolve the performance issue: https://github.com/aws/amazon-freertos-ble-ios-sdk/pull/20
The bulk of time spent was in encoding the 4k bytes chunks by the mobile SDK thirdy party CBOR library. The library is now changed to a more newer well maintained third party CBOR library and we saw performance improvement for OTA, encode latency reduced from 800ms to 2ms. With this fix, an 800KB OTA image takes close to 2 minutes in our tests with ESP32 device and IOS SDK. Could you verify at your end with this patch.

@kumarfirmware
Did the above PR fix your issue ? For your information, have merged this PR to master branch of the SDK.

Hi Ravi,
Thanks for the message.
Concern from the team is, since it is a production App, they use pod install, while building the App to get the latest SDK. Now if they take the SDK code from GitHub master branch, will it not be a problem while they build the App again?
Can you please help in this with a solution?
Thanks,
Kumar.

Hi @kumarfirmware,
We just packed the latest code and released as v1.2.0 on Github https://github.com/aws/amazon-freertos-ble-ios-sdk/releases . The v1.2.0 has also been published to pod https://cocoapods.org/pods/AmazonFreeRTOS .
The pod install should work now.
Thank you!
Ming

Hi Ming,
Thanks a lot this really helps the team. Thanks a lot for your effort.
@ravibhagavandas The latest release fixed the issue of 3 to 5 seconds wait between the packets, i.e. MQTT Request and MQTT Response.
But still I see a wait of 750 milli seconds between MQTT request and Response on MQTT over BLE.
I am not happy with this 750 milli seconds delay. It is a lot of delay still. Can you please look in to this immediately?
Why does it take 750 milli seconds to receive response?
Thanks,
Kumar.

@kumarfirmware
Could you tell me, how is the delay of 750ms measured ? Is it delay between a request for block is made from device and a complete block is received at the device ? If so, the BLE connection interval is a contributing factor, as you are allowed to transmit only in a connection interval time. The interval is always chosen by the central device which connects to it. One MTU size chunk is sent within a connection interval as each chunks are send using write with response ATT command, so if connection interval is ~100 ms and MTU is 512 bytes it will take ~800ms.

Hi Ravi,
Thanks for the message.
750 ms is the delay between a request for block is made from device and a complete block is received at the device.
In the same thread above we clearly discussed Connection interval was 24ms between IOS and ESP32 device and the MTU was 512 bytes.
Even if you take this case of connection interval 24ms it takes 216 ms to collect all 4096 bytes. Still 750 ms is a lot. Still there is a huge delay.
Can you test at your end and let me know where is the problem and how to reduce this 750 ms to the least possible value.
Can you please let me know this as soon as possible.
Thanks,
Kumar.

Hi Ravi,
Any progress on this? Where do you see the challenge?
It is reproduceable very consistently right?
Thanks,
Kumar.

Hi @kumarfirmware,
I have broken down the total latency for a 4232 byte OTA block sent from an Iphone8 (IOS 14.4) to an ESP32 device.
MTU size for the connection is 512 bytes. This means at a time max 509 bytes can be sent from the application layer through the BLE connection.
Here are the logs for the test. The logs are recorded on ESP32 as soon as a 509 byte chunk is received from the Nimble stack. Logs are recorded on the phone as soon as a 509 byte is sent to the IOS BLE stack.
Iphone (sends chunks using Write with response):
2021-05-05 16:59:55.326239-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 4232 bytes - 1 in queue
2021-05-05 16:59:55.377680-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 3723 bytes - 1 in queue
2021-05-05 16:59:55.436826-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 3214 bytes - 1 in queue
2021-05-05 16:59:55.496902-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 2705 bytes - 1 in queue
2021-05-05 16:59:55.559134-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 2196 bytes - 1 in queue
2021-05-05 16:59:55.634449-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 1687 bytes - 1 in queue
2021-05-05 16:59:55.706456-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 1178 bytes - 1 in queue
2021-05-05 16:59:55.766619-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] ↓ 669 bytes - 1 in queue
2021-05-05 16:59:55.826631-0700 AmazonFreeRTOSDemo[21546:6705133] [AFR][36552963-6C7A-F188-3996-54C96252499B][LOT] LAST PART ↓ 160 bytes - 0 in queue

ESP32 (receives chunks and sends a response):
296 2903 [ble] Reecived  Chunk 1, length = 509

297 2903 [ble] Sent response for chunk 1

298 2909 [ble] Reecived  Chunk 2, length = 509

299 2909 [ble] Sent response for chunk 2

300 2915 [ble] Reecived  Chunk 3, length = 509

301 2915 [ble] Sent response for chunk 3

302 2921 [ble] Reecived  Chunk 4, length = 509

303 2921 [ble] Sent response for chunk 4

304 2927 [ble] Reecived  Chunk 5, length = 509

305 2927 [ble] Sent response for chunk 5

306 2936 [ble] Reecived  Chunk 6, length = 509

307 2936 [ble] Sent response for chunk 6

308 2942 [ble] Reecived  Chunk 7, length = 509

309 2942 [ble] Sent response for chunk 7

310 2948 [ble] Reecived  Chunk 8, length = 509

311 2948 [ble] Sent response for chunk 8

312 2954 [ble] Reecived  Chunk 9, length = 160

313 2954 [ble] Reecived  final chunk

314 2954 [ble] Sent response for final chunk

315 2954 [OTA Agent Task] [prvIngestDataBlock] Received file block 9, size 4096

Tick rate for ESP32 is 100HZ, which means one tick is 10 ms. As you can see from logs that there is a difference of 60ms (6 ticks * 10 ms) between each chunk received on device and there is same 60 ms difference between when a response is received and next chunk is sent from the Iphone. So its clear that the 60ms is spent in BLE transmission between two BLE stacks.
I will try to break down this latency of 60ms. The final negotiated connection interval is  30ms (24*1.25) as seen from the logs:
GAP procedure initiated: connection parameter update; conn_handle=0 itvl_min=16 itvl_max=64 latency=0 supervision_timeout=100 min_ce_len=0 max_ce_len=0
6 279 [ble] [INFO ][DEMO][2790] BLE Connected to remote device, connId = 0

7 287 [ble] Connection parameter update interval = 24 latency = 0, timeout = 72

Here is a correction from what I said before, when I said a packet is sent in connection interval this actually means one link layer packet which is 251 bytes(with the Data Length Extension enabled). But Iphone can send upto 4 LL packet in  packet per interval. Splitting 509 bytes, this will end up in 3 packets per connection interval and will take an additional interval to get the response.  Hence its close to 60ms per 509 bytes which is seen in the logs.
To improve this further you could try reducing the minimum connection interval to max connection interval range, following  apple recommendations  here. However the final negotiated connection interval  varies depending on the environment, and the devices used.

Closing this issue assuming the latency related queries are resolved. Please feel free to open a new issue if you have further questions.


Update slack.sh

the appNewVersion was reporting "x64" for intel and "arm64" for Arm. Adjusting the field from 6 to 7 resulted in it properly pulling the new version so that installomator will no longer attempt unnecessary installs

This is a duplicate of https://github.com/Installomator/Installomator/pull/1550


fix: Type.TypeInitializer does not run the type ctor properly under net7

@JulesEmond in case you wonder what the ShowMeTheXaml issue was :)


Tailwind CSS within Vue template

Check for existing issues

[X] Completed

Describe the feature
Add Tailwind CSS class completion inside Vue templates. Right now there seems to be no support.
If applicable, add mockups / screenshots to help present your vision of the feature
Vue vs HTML

cc: @ForLoveOfCats

Upvote!
As I see, it is already done for Svelte guys. How hard could it be to do the same for Vue? 🙏🏻
And thank you for a blazingly fast editor!

Astro?

Oh man! This would be a sweet feature! I do miss completion / intent / hover functionality which Tailwind / Headwind provides in VSCode


[Update whats-new]

What's new updates

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/whats-new.md
90
40
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit d9277e8:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/whats-new.md
:warning:Warning
View
Details

msteams-platform/whats-new.md

Line 22, Column 72: [Warning: file-not-found - See documentation] Invalid file link: '../resources/dev-preview/developer-preview-intro.md'.
Line 26, Column 1: [Warning: table-syntax-invalid - See documentation] Table syntax is invalid. Ensure your table includes a header and is surrounded by empty lines.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/whats-new.md
90
40
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 3427381:
:warning: Validation status: warnings

File
Status
Preview URL
Details

msteams-platform/whats-new.md
:warning:Warning
View
Details

msteams-platform/whats-new.md

Line 26, Column 1: [Warning: table-syntax-invalid - See documentation] Table syntax is invalid. Ensure your table includes a header and is surrounded by empty lines.

For more details, please refer to the build report.
If you see build warnings/errors with permission issues, it might be due to single sign-on (SSO) enabled on Microsoft's GitHub organizations. Please follow instructions here to re-authorize your GitHub account to Docs Build.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
Note: Your PR may contain errors or warnings unrelated to the files you changed. This happens when external dependencies like GitHub alias, Microsoft alias, cross repo links are updated. Please use these instructions to resolve them.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Acrolinx Scorecards
We currently enforce a minimum score of 80.
Click the scorecard links for each article to review the Acrolinx feedback on grammar, spelling, punctuation, writing style, and terminology:

Article
Score
Issues
Scorecard
Processed

msteams-platform/whats-new.md
91
34
link
:white_check_mark:

More info about Acrolinx
Use the Acrolinx extension, or sidebar, in Visual Studio Code to check spelling, grammar, style, tone, clarity, and key terminology when you're creating or updating content. For more information, see Use the Visual Studio Code extension to run Acrolinx locally.

Docs Build status updates of commit 5acb3c7:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

msteams-platform/whats-new.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel

Closing this PR


[IMPROVEMENT] Unable to set transient local claims or local roles to the authentication context from adaptive authentication script

Describe the improvement
Unable to set transient local claims or local roles (claims or roles that don't get stored in the userstore) to the authentication context from adaptive authentication script.
Additional context
Transient claims or roles can only be set for remote claims or remote roles. However, in local authentication scenarios remote claims or remote roles are not even considered. So there is no way to set a transient local claim or local roles and use it in OAuth2  ResponseTypeHandler, AuthorizationGrantHandler, IDTokenGenerator or AccessTokenIssuer. This means that if we are to achieve this today we have to write a custom ClaimHandler. But then again we can't pass contextual information to the claim handler due to limitation in #8177. So we are stuck with implementing a custom LocalAuthenticator.
This ultimately means that, for a requirement I could have been done with implementing a OAuth2 level customization only (e.g. custom AccessTokenIssuer), now I have to implement a custom LocalAuthenticator and a custom ClaimHandler.
These limitations in combination heavily curtails the ability of WSO2 IS to be implemented for unique business use cases.

This is done with https://github.com/wso2/product-is/issues/9293. Hence closing it.


error messages / notifications cleanup

For example, editing a VM name and trying to add invalid characters results in 1. inline notification in the Overview card, 2. a Toast notification, 3. an entry in the notifications drawer/tray.
from https://github.com/oVirt/ovirt-web-ui/pull/660#issuecomment-412133377

Now with an error message being able to be displayed in 3 places at once (on a page's content, via a Toast, and in the notification tray), I think we have some debt to clean up. I'd like to see userMessages be handled in an explicit top level way and not so much as a pure side effect of a failed external action or login failure.

We also shouldn't show the error messages in 3 places. This may need some design thought.

for a failure editing a VM, the inline error might be enough. We don't need a toast, and may not need an entry in the drawer
for a failure starting a VM, we need a toast, maybe an entry in the drawer, and probably not any inline error

Is there a comprehensive way to tackle this, or are we resigned to case-by-case?
cc @sjd78 @bond95 @lwrigh @lizsurette @leistnerova please add your thoughts.

for a failure editing a VM, the inline error might be enough. We don't need a toast, and may not need an entry in the drawer

+1

for a failure starting a VM, we need a toast, maybe an entry in the drawer, and probably not any inline error

+1

Is there a comprehensive way to tackle this, or are we resigned to case-by-case?

Great question. I think we can blanket statement say we don't need notifications for form errors/successes. I think they should be reserved for things that users might not get immediate feedback from in a form along with major errors/successes (VM Failed to create/start/stop, VM created/started/stopped successfully). We will probably need to do a walk through and note any items that might make sense to add toasts for.

I agree that if the user is editing more of a surface level detail of a VM,
an inline error message should be enough to notify the user. No need for a
toast notification or adding a notification to the notification drawer for
it.
I think if a VM fails to start, there should be a toast notification and a
notification added to the drawer as well since this seems like a high
priority event to surface to the user.
I agree with Liz with her suggestion for an approach towards notifications.
It might be helpful to try and come up with a list of possible categories
of use cases for each type of notification that's surfaced.
On Sat, Aug 11, 2018 at 8:41 AM Liz<EMAIL_ADDRESS>wrote:

for a failure editing a VM, the inline error might be enough. We don't
need a toast, and may not need an entry in the drawer
+1
for a failure starting a VM, we need a toast, maybe an entry in the
drawer, and probably not any inline error
+1
Is there a comprehensive way to tackle this, or are we resigned to
case-by-case?
Great question. I think we can blanket statement say we don't need
notifications for form errors/successes. I think they should be reserved
for things that users might not get immediate feedback from in a form along
with major errors/successes (VM Failed to create/start/stop, VM
created/started/stopped successfully). We will probably need to do a walk
through and note any items that might make sense to add toasts for.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/oVirt/ovirt-web-ui/issues/711#issuecomment-412272684,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ATSlLoGhY69q2Dgten9PJ7HIXKjkdDofks5uPtEDgaJpZM4V5IKy
.

--
LAURA WRIGHT
ASSOCIATE INTERACTION DESIGNER, UXD TEAM
Red Hat Massachusetts https://www.redhat.com/
314 Littleton Rd
<EMAIL_ADDRESS>https://red.ht/sig

I agree with both changes.
And now I can't think of any case according to VMs that should be done with different combinations, so I would do them as default and change it on demand after.

After chatting with @sjd78 we think that it makes sense  to consider that if we end up going in that direction for tailoring the notifications to be more situation dependent. For example in the case of creating and editing a disk or a NIC, each situation could have its own varieties of notifications that appear. If a user is editing a disk or NIC having toast and drawer notifications makes sense but if something fails on creating a disk or a NIC a toast and an in card message seem like it would be enough to notify the user. @gregsheremeta @lizsurette @bond95 @leistnerova  What do you guys think?

After chatting with @sjd78 we think that it makes sense to consider that if we end up going in that direction for tailoring the notifications to be more situation dependent.

Agree, those notifications that not really important to read, would be nice to have as toast, but for errors, better to use card messages.

If a user is editing a disk or NIC having toast and drawer notifications makes sense but if something fails on creating a disk or a NIC a toast and an in card message seem like it would be enough to notify the user. @gregsheremeta @lizsurette @bond95 @leistnerova What do you guys think?

That makes sense to me, especially if the NIC or Disk is basically unusable at that point, it's definitely important to note this within the card rather than just a toast that disappears.

For example in the case of creating and editing a disk or a NIC, each situation could have its own varieties of notifications that appear.

Also add here reference to similar issue https://github.com/oVirt/ovirt-web-ui/issues/695


get rid of active, just track nil server

Using h.server in the goroutine could crash the whole app if Stop gets called before Serve. Now it should just return an error from Serve if Stop is called first, which should be harmless.
cc @akalin

cc @akalin-keybase too

@akalin-keybase you can vendor away for this


I cannot access to the azure blob storage through azure storage explorer at the company network

My Azure resource was hosted in europe. I am physically located in USA. I am trying to access to the azure datalake/Blob storage, I have issue in accessing to it. it shows the error:
Unable to retrieve child resources
ProducerError:{
"name": "Electron Net Error",
"message": "{"name":"Electron Net Error","cause":{}}"
}
Can you give suggestion on how to fix the issue as soon as possible ?

@lwzhang6 What platform are you running on? What version of Storage Explorer are you using? Please refer to our issue template for information we usually need to help diagnose problems.
Here are some additional questions:

When you say "Azure Datalake/Blob Storage", are you referring to ADLS Gen1 or Gen2? If Gen1, you should know that those services have been retired, and Gen1 functionality has been removed from Storage Explorer.

Assuming Gen2, how are you setting up your connection to the blob container? Are you:

Signing in?
Connecting to an account using name and key or connection string?
Connecting directly to the container by signing in?
Connecting directly to the container using a SAS URL?

If you are signing in, do you have the necessary RBAC permissions to list or read the necessary objects (see out troubleshooting guide).

Are you expected to connect through a proxy server? Have you configured Storage Explorer to use that proxy (ideally by setting Proxy > Proxy Configuration to "Use system proxy")?

Can you please provide any app logs to help us further diagnose the issue?

My azure cloud administration colleague asigned me as the following in the azure:
Resource - reader
storage blob data - contributor
Would it be correct configuration?

to answer question 3
My azure cloud administration colleague asigned me as the following in the azure:
Resource - reader
resource group -reader
storage blob data - contributor
Would it be correct configuration?

I think those permissions should be sufficient, though it depends on what level they are available. You can check these permissions yourself, as well, from the Azure portal and clicking on "Access Control (IAM)" on the blade for the storage account you're attempting to access. Typically, you need the Reader role set at the subscription level to list storage accounts and Storage Blob Data Contributor set at the account level.
If you follow the link I provided above, you'll find clear instructions on how to gather app logs. Just select Help > Open Logs Directory from the menu, create a zip file from the appropriate session folder, and attach it here.
And please do let us know what platform you're on, what version of Storage Explorer you're using, etc.

it is windows 10 enterprise computer
MS azure storage explorer - version 1.33.1; azcopy version 10.23.0

logs.zip
I uploaded the zip. Can you please help?

You shared the authentication logs. Can you also share the app logs, please?
Also, are you able to view the resources you need from the Azure portal? That is, can you see a list of the contents of the blob container you are trying to access using the Data Storage > Containers item in the storage account blade? Doing this should help us narrow down whether this is a Storage Explorer or an Azure issue.

how to get app logs?
In the azure Data Storage > Containers, I can see a list of the folders of the blob containers. But, clicking any of the folders does not work. I am able to see the folders, but can not get into it.

2024-04-26_094749.zip

i uploaded the app logs. may you please have a look? thanks

I'm seeing two errors, which might be related. The first is a connection timeout error, and the second is a "no suitable credentials" error related to listing file shares. I suspect Azure may be having a hard time authenticating your connection. Or it could be requests aren't making it to Azure (possibly blocked by the proxy?).
Can you share any details about the storage account you're trying to connect to? For example, is a blob-only storage account (for example, premium)?
When did you sign in? Have you tried removing your account and signing back in?
One way to work around this while we're trying to find a solution: Could someone provide a SAS URL for you to use temporarily? If that works, then it's definitely a sign-in related issue.

Could you please give your offical microsoft account for me to connect you directly by email for this issue related to Azure? OR directly drop me an issue?
Regarding the proxy issue, can you suggest how I fix it? I have the company proxy info and do not know how to figure it. also which IP address or web link I should request unblock? THANK YOU very much for your help

@lwzhang6 it sounds like you have quite a bit unique network constraints going on here. At this point I would recommend you open an Azure support ticket via the portal.


Use react.gradle from repo root instead of copy in RNTester

Motivation
RNTester used a copy of the main react.gradle file instead of the real one. Recent changes to the real file caused builds to fail with older gradle versions but was not caught by CI because it wasn't using that file for RNTester. That copy of react.gradle is just a leftover from when projects included a copy instead of importing the one in RN directly.
Note: CI WILL fail with this PR, if we have trouble landing this I can add the revert in this commit too but wanted to keep it as 2 separate commits.
Test Plan
Tested that building RNTester actually fails now that it uses react.gradle with recent changes, then tested that is builds properly when reverting d16ff3bd8b92fa84a9007bf5ebedd8153e4c089d.
Release Notes
[INTERNAL] [MINOR] [RNTester] - Use react.gradle from repo root instead of copy in RNTester

CI is failing properly now :D


Enable nullable reference types

@pengweiqhca Last PR I merged with squash, so here are many conflicts. Btw, I don't enable 'nullable' right now - the current master unstable, I resolve it first. We can come back with a nullable feature later in the new PR


No license

I was looking to use the code at https://github.com/eclipseeer/circlarc.svg/blob/master/src/logic/getCurveApproximateCircle.js in a desktop project UI, but there is no license.
It says "open source", but that could mean GPL or something more flexible like MIT.
In the end I've found a solution that uses SVG arcs, but I think it would be good to add an explicit license to the repo.

you could use this code in whatever you like. What sort of license would fit your needs?


Healing doesn't work

When I cast a spell that has damage type "Healing" it subtracts from the target's HP
Also when I type /heal 50 in the chat, the buttons don't do anything

(but I'm loving being able to apply elemental damage and have resistances automatically apply, so thank you for your work here!)

Hey!
Thank you so much for helping out. I was aware the healing might be an issue since I focused mainly on the damage but in doing so I completely forgot about it (which is also why I wanted to release the module to the public).
I'll try to fix it for the next update along with other issues.

Healing is added with v0.8.
Thank you!


opensa: init at 20230905

This is far from working: I know nothing about dotnet.
but this would fix #239764
Description of changes

Things done

Built on platform(s)

[ ] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

Current status:
open-sa>   Determining projects to restore...
open-sa> /nix/store/qfizflrvsv7fwhq72w5yp55ar4k8a1aw-dotnet-sdk-6.0.424/sdk/6.0.424/NuGet.targets(132,5): error : Access to the path '/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.Server/obj' is denied. [/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.sln]
open-sa> /nix/store/qfizflrvsv7fwhq72w5yp55ar4k8a1aw-dotnet-sdk-6.0.424/sdk/6.0.424/NuGet.targets(132,5): error :   Permission denied [/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.sln]
open-sa> Build FAILED.
open-sa> /nix/store/qfizflrvsv7fwhq72w5yp55ar4k8a1aw-dotnet-sdk-6.0.424/sdk/6.0.424/NuGet.targets(132,5): error : Access to the path '/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.Server/obj' is denied. [/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.sln]
open-sa> /nix/store/qfizflrvsv7fwhq72w5yp55ar4k8a1aw-dotnet-sdk-6.0.424/sdk/6.0.424/NuGet.targets(132,5): error :   Permission denied [/nix/store/vbn15jnyn87bmbnp2xdh6kmar69s3rjc-source/OpenRA.sln]


[Feature Request] - Fast Channel opening with a new peer

The current flow of opening a channel with a new peer is:

Connect with a peer.
Open channel with the peer.

This flow can be shortened for better UX, by handling peer connection in the background.

Addressed in commit: https://github.com/Ride-The-Lightning/RTL-Design/commit/adc8f82c1073e99e18b175a7bb4e8bd0a6e5c1a5 with the following changes:
Open Channel:
Removed ability to add peer within the open channel flow to keep funcitionality segmented.
Add Peer:
Updated flow to a stepper. 1st Step: Add Peer / 2nd Step: Open Channel (Optional).


[ALLUXIO-3042] Fix to Docker's entrypoint.sh for environment variables violating the dash-to-dot rule

This fix adds a map to entrypoint.sh where offending environment variables can be listed along with the correct way they should be transformed from environment variable name to configuration property name.
https://alluxio.atlassian.net/browse/ALLUXIO-3042

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17114/
Test PASSed.

@skagget77 Sorry for the slow response, just got back from holiday. The change looks good to me, please update to address gpang's comments, then we can merge

Hi guys, will take care of it first thing tomorrow morning.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17230/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/17231/
Test PASSed.


Version Packages

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
<EMAIL_ADDRESS>Patch Changes

51e0fee: Fixed typo and renamed /schemas/token-types/percent.json -> /schemas/token-types/opacity.json.

Run report for f3451c26
Total time: 26.2s | Comparison time: 23.6s | Estimated loss: 2.6s (10.0% slower)

Action
Time
Status
Info

🟩
SyncWorkspace
0ms
Passed

⬛
SetupNodeTool(18.13.0)
899.3ms
Skipped

🟩
InstallNodeDeps(18.13.0)
6.7s
Passed

🟩
SyncNodeProject(tokens)
0.2ms
Passed

🟩
RunTask(tokens:buildTokens)
16.9s
Passed

🟩
RunTask(tokens:buildManifest)
188.6ms
Passed

🟩
RunTask(tokens:build)
20.8ms
Passed

🟩
RunTask(tokens:generateDiffResult)
1.7s
Passed

Touched files
.changeset/cold-starfishes-greet.md
packages/tokens/CHANGELOG.md
packages/tokens/package.json


select tokens in the send popup display not good

the active item always is the first item (TOMO)


add option to show guidance hints on screen

Guidance hints are already supported, but are only shown on print outs. This proposed feature adds a Form instantiation option guidance: true or something similar that shows the guidance hint on screen (in the future we may make this collapsible but let's keep it simple now).
Requires some minor styling. For screen view a different color (a green/blue?) (no border) would probably work very well. Make sure the printout still shows guidance hint in black.

let's do read more...A details guidance

[ ] add to enketo-xslt
[ ] styling in enketo-core

https://github.com/w3c/csswg-drafts/issues/2084


add serilogtracing link

Typo in there, mentions Seq while this repo is OTLP.
I think this could be confusing right now, because Serilog.Sinks.OpenTelemetry doesn't support SerilogTracing.
I'd like to open a discussion around whether that might change, since the SerilogTracing.Sinks.OpenTelemetry fork is otherwise pretty much identical to the original code here, and a lot of people working with OTLP will inevitably want to capture some trace data. It'll need a new ticket, though :-)

I still think this would be way more compelling (and a bit less confusing) if the message was consider using SerilogTracing with this sink. I'll scope out and raise that ticket, and then loop back here :)


Enable bug-reference-github correctly

Hello:
I found that bug-reference-github doesn't seem to be enabled.
Thank you.

Thanks. I don't think this is exactly the right fix, because it should also cover Markdown files etc, and also git commit buffers. But I'm also a bit concerned about the time it takes to run shell commands in every buffer, which is what bug-reference-github-set-url-format does. My preference is to set bug-reference-url-format in .dir-locals.el on a per-project basis, but I'll think about alternative approaches.

Thank you for your reply. In my tests, even adding bug-reference-github to find-file-hook would not cause significant slow response.

My preference is to set bug-reference-url-format in .dir-locals.el on a per-project basis

I think if you prefer this, then I feel you can remove the bug-reference-github.
Anyway, I will close this PR first, because I found this modification too personal.


fix: make ra happy by use correct path

On windows the path separator should be \\.

It also works on Windows, so I would merge it.


Add links to the external cloud-provider repos

The current page just makes mention of the repos, but not everyone has the list of every github.com/kubernetes repo name memorized

thanks for your contribution @mdaniel
/lgtm

/approve


test PR, do not merge

test PR, do not merge

Codecov Report

Merging #2621 into master will decrease coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff            @@
##           master   #2621      +/-   ##
=========================================
- Coverage   86.31%   86.3%   -0.01%
=========================================
  Files         320     320
  Lines       66708   66709       +1
  Branches     7537    7537
=========================================
- Hits        57578   57576       -2
- Misses       7915    7918       +3
  Partials     1215    1215

Test finished, debug info gathered, closing.


add split hover for split panes

Description

Add hover states for split panes
Figma: https://www.figma.com/file/T06obgYVOUD2JDGXM8QEDX/01-Components-%3A-Shared?node-id=496-437&t=n9eFeGHXTHQ1q1IP-0

Test Plan
How did you test the new or updated feature?

If your changes are not user-facing and not a breaking change, you can skip the following section. Otherwise, please indicate what changed, and then add to the Release Notes section as highlighted during the release process.
Type of Change (Check all that apply)

[ ] user-visible impact
[ ] breaking change for a client SDKs
[ ] breaking change for FNs (FN binary must upgrade)
[ ] breaking change for validators or node operators (must upgrade binaries)
[ ] breaking change for on-chain data layout
[ ] necessitate either a data wipe or data migration

Release notes

@plam-ml the icon does not look center-aligned. Are we using the correct asset?


Windows - Docker Run: error parsing sqlc.json: file does not exist

I am trying to run using Docker. After various incarnations, my latest attempt:
MSYS_NO_PATHCONV=1 docker run --rm -v "G:\My Drive\go\play\simplebank"://src -w /src kjconroy/sqlc gener
ate

Returns:
error parsing sqlc.json: file does not exist
make: *** [sqlc] Error 1

I have both sqlc.[yaml and json] in this directory.
I populated sqlc.json with sample from this repo.
I have tried running from Powershell, CMD and Gitbash.
Any suggestions please?

docker run --rm -v "G:\My Drive\go\play\simplebank":/src -w /src kjconroy/sqlc:1.9.0-beta1 generate

Try kjconroy/sqlc:1.9.0-beta1 image

v1.9.0 has been released, so I'm going to mark this as fixed.


Create audio sink and source devices

Enables audio output and input between the VM and Host OS

Awesome thanks!


Snow Leopard boots to a kernel panic in UTM on Apple Silicon

I followed your steps to get Snow Leopard running in QEMU on Apple Silicon (that works, thank you!). However, trying to bring it into UTM results in kernel panics. I've been trying to sort it out with the help of startergo on the Mac Rumors forum. You can see that here: https://forums.macrumors.com/threads/install-snow-leopard-in-qemu-and-utm.2425916/.
Any insight you have would be greatly appreciate. If you have it wrong in UTM, and want to post the UTM file, I'd love to test that out as well.
I'm on an M1 Mac Studio, running Sonoma and UTM Version 4.5.2 (97).

@Edgecrusherr160 did you end up finding a way of running Snow Leopard in QEMU on Apple Silicon?

@ryanmagani , clearly the repository has that ability already, they are talking about UTM.

Woops sorry, I meant UTM


Service gets stuck when calling "docker service update" and won't progress

It appears that the service is getting stuck sometimes when asking docker to docker service update… on one cluster it's been stuck for over 24 hours…
$ docker exec -ti 97926cd69f86 ash
/ # ps -ef
PID   USER     TIME  COMMAND
    1 root      0:00 {shepherd} /bin/bash /usr/local/bin/shepherd
  301 root      6:35 docker service update x --detach=false --with-registry-auth --image=x
  315 root      0:00 ash
  321 root      0:00 ps -ef

If I kill pid=301 then it unblocks and continues on.
Consider calling docker service update via timeout to catch this?
https://github.com/djmaze/shepherd/blob/master/shepherd#L101
if ! timeout ${TIMEOUT_SECONDS:-300} docker "${config_flag[@]}" service update "$name" $detach_option $registry_auth $no_resolve_image_flag ${UPDATE_OPTIONS} --image="$image" > /dev/null

# timeout --help
BusyBox v1.34.1 (2021-11-23 00:57:35 UTC) multi-call binary.

Usage: timeout [-s SIG] SECS PROG ARGS

Run PROG. Send SIG to it if it is not gone in SECS seconds.
Default SIG: TERM.

The underlying "hang" appears to be related to https://github.com/docker/cli/issues/627 (the service being updated is at replicas=0 in my case because it's a "cronjob" managed by crazymax/swarm-cronjob)

I have recently opened source of  my service updating scripts:
https://github.com/shizunge/gantry
It has this feature of https://github.com/containrrr/shepherd/pull/104 enabled.
Would you like to give it a try?


[Idea] Automatic record/replay mocks

We recently started using pact-net at work and I'm slightly bothered by how much manual work is involved in creating the mocks and handling the resulting files.
I was thinking whether it would be a good idea (and whether someone thought about it) to create some sort of proxy generic mock which could be started in "record mode" and to which we would then direct our services. This proxy mock would (based on a config file) forward the requests to the actual service and then transport the response back to the actual service. This request/response interaction pair could then be saved as, e.g., a JSON file. Then, we would be able to start the proxy mock in a "replay mode" where it's simply replying to requests based on what it has recorded. This way we would avoid having to write the mock services ourselves and instead take the current snapshot of the provider as the "valid contract" upon which we base all our future test runs.
Has anyone thought about this? Do you see value on it if, e.g., I was to work on something along these lines?

Hey @etiago
Thanks for getting in touch, and I can appreciate there is a bit of work to get Pact up and running.
It is actually something we have chatted about and there are actually already tools which can do this should it fit your use case better (see https://github.com/vcr/vcr and https://github.com/matthew-cochran/Betamax.Net). Pact kind of takes the reverse philosophy (see https://github.com/realestate-com-au/pact/wiki/FAQ#how-does-pact-differ-from-vcr).
With Pact the consumer defines only the fields it cares about in the req and res, nothing more, nothing less and as such that means service providers can validate the impact changes have on the consumers (given that all consumers use Pact and properly define the contracts), rather than assuming pretty much all changes are breaking changes.
The idea behind specifying your own interaction, is that you should only specify the things you specifically care about (see
We have had chats about this, however it's not the primary use case for Pact.
The idea behind pact is to use it as a replaceme

@neilcampbell it makes sense, thanks for the pointers! Such a pity that Betamax.Net seems to be abandoned but I can understand that Pact-Net takes a different spin on it. :+1:

@etiago I have a feeling other VCR ports for .NET exist, otherwise fork it and it's all yours :)


Updated Readme For Both

@bislara  I have updated the readme but I noticed that by mistake I have added Image Cartoonizer file in Invisible Cloak..if possible please remove it from there I have added another copy of it directy in Python directory..

Okay fine. Better u can make a commit deleting those files from the Invisible Cloak folder

Okay i have removed it and made the commit please check once


AWS X-Ray client mock.

So the most common use of AWS X-Ray will be someone importing the AWS X-Ray SDK and running patch_all(), this will then go and infect botocore, add headers to outgoing requests, look for headers on incoming ones and after it gets the data it wants, it will send UDP packets to a "local" daemon.
This essentially patches the X-Ray SDK so that it doesnt try and send data X-Ray daemon, and eventually it will just feed straight into our X-Ray backend so that the trace info will be there for when its queried.
Have also implemented the headers 'x-amz-crc32' and 'x-amzn-requestid' which you can then decorate requests for it to then pass on those headers. You can also decorate the call_action method to add crc's and requestids to all methods. I added the relevant CRCs and request IDs to the endpoints that the X-Ray SDK lists in a json whitelist file. It could quite possibly want most if not all responses to contain a request id.
Also fixed an annoying test case that was checking for dictionary keys using a list which isnt too great as its not guaranteed they'll be in the same order.
@JackDanger thoughts on this so far?

I like the direction this is going. I can't think of any simpler way to implement X-Ray support. Thanks for your great work, @terrycain !

Coverage decreased (-0.1%) to 92.364% when pulling 247db9fe7ae674604d82d05ac3e866a7049f7037 on terrycain:aws_xray into 7c54d9672b3f705f7c4a07cecfc3f9ba68b63dcb on spulec:master.

Coverage decreased (-0.1%) to 92.364% when pulling 247db9fe7ae674604d82d05ac3e866a7049f7037 on terrycain:aws_xray into 7c54d9672b3f705f7c4a07cecfc3f9ba68b63dcb on spulec:master.

Yeah, its a weird one X-Ray, I can see why they went the local daemon sort of approach as I can see many containers all spamming tons of segments and least that way they can collect them and upload in bulk. Is a shame they dont offer an unpatch method, will ask our account manager to see if he'll get me in touch with the xray devs.

Coverage decreased (-0.01%) to 92.47% when pulling 19b75770910f2a42158044da9c69ff3783e14a89 on terrycain:aws_xray into 7c54d9672b3f705f7c4a07cecfc3f9ba68b63dcb on spulec:master.

@JackDanger I'd consider this done for now. It could do with putting the xray segments into the xray backend. Until someone needs it I don't think its worth the effort, as most people are just going to use it to keep the xray sdk happy so they can test locally.

This is released as Moto 1.1.23


Support Custom Metrics

Support emitting custom metrics (such as vendor-specific MBeans) from the profiler.

I'm going to close this for now absent a compelling use case.


Xfce4 screen only updating in the background

chronos@localhost / $ sudo edit-chroot -all
name: xenial
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial...
crouton: version 1-20210709170820~master:14ca6bc7
release: xenial
architecture: amd64
xmethod: xorg
targets: xfce
host: version 13904.97.0 (Official Build) stable-channel hatch
kernel: Linux localhost 4.19.185-29738-gf8e4fd700b66 #1 SMP PREEMPT Mon Jul 19 19:55:07 PDT 2021 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xenial...`

Please describe your issue:
Freshly installed XFCE4 on a Lenovo Chromebook Flex. Whenever I am tabbed in to XFCE, I can move the mouse but the screen is not updating at all, i.e. no matter how much I click or the keyboard shortcuts I type nothing happens. The clock is not updating either. When I tab out into Chrome OS and then back in, the screen has updated with the actions I made.
Probably related, when I closed the lid while tabbed in XFCE, upon reopening it my mouse is "stuck" in and around the focused window and I cannot tab back to ChromeOS anymore.
If known, describe the steps to reproduce the issue:

Enter the shell on Chrome OS and type sudo startxfce4
The screen is black but the mouse can move. Tab out using ctrl+alt+shift+F2, then tab back in using the same key combination.
The xfce desktop is now visible, but frozen. Type Alt+F2, then type "Hello". Nothing appears on the screen. Upon tabbing out and in, the Application Finder window is visible with "Hello" written in the box.
Close the lid, then open it back. Now the mouse is stuck in a box about 1cm larger than the App Finder window. It is no longer possible to tab out so the laptop is effectively soft-locked.

I have a similar model to yours, just with an ARM processor, I will test Xenial XFCE soon...

Figured this log may be useful, these are the error messages I get when executing sudo startxfce4:
`chronos@localhost / $ sudo startxfce4
Entering /mnt/stateful_partition/crouton/chroots/xenial...
/usr/bin/startxfce4: Starting X server
_XSERVTransmkdir: ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
X.Org X Server 1.18.4
Release Date: 2016-07-19
X Protocol Version 11, Revision 0
Build Operating System: Linux 4.15.0-140-generic x86_64 Ubuntu
Current Operating System: Linux localhost 4.19.185-29738-gf8e4fd700b66 #1 SMP PREEMPT Mon Jul 19 19:55:07 PDT 2021 x86_64
Kernel command line: cros_secure console= loglevel=7 init=/sbin/init cros_secure drm.trace=0x106 root=/dev/dm-0 rootwait ro dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1 dm="1 vroot none ro 1,0 5324800 verity payload=PARTUUID=5d4dc93e-5d15-4221-87dd-d282f5a3f94b/PARTNROFF=1 hashtree=PARTUUID=5d4dc93e-5d15-4221-87dd-d282f5a3f94b/PARTNROFF=1 hashstart=5324800 alg=sha256 root_hexdigest=19613e7886c71da3f914dbc498d0114791554155a3e1a27d7d8364a862f2a7a0 salt=801ddb02f8ebe3932ff936b74480aa3b257b08ede187077f6430053b2af85ff2" noinitrd vt.global_cursor_default=0 kern_guid=5d4dc93e-5d15-4221-87dd-d282f5a3f94b add_efi_memmap boot=local noresume noswap i915.modeset=1 ramoops.ecc=1 gsmi.s0ix_logging_enable=1 intel_pmc_core.warn_on_s0ix_failures=1
Build Date: 08 April 2021  01:52:21PM
xorg-server 2:1.18.4-0ubuntu0.12 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.33.6
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/tmp/Xorg.crouton.1.log", Time: Fri Jul 23 16:11:45 2021
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.LibCrosService was not provided by any .service files
xf86EnableIOPorts: failed to set IOPL for I/O (Operation not permitted)
Error executing command as another user: Not authorized
This incident has been reported.
i965_dri.so does not support the 0x9b21 PCI ID.
crouton: version 1-20210709170820~master:14ca6bc7
release: xenial
architecture: amd64
xmethod: xorg
targets: xfce
host: version 13904.97.0 (Official Build) stable-channel hatch
kernel: Linux localhost 4.19.185-29738-gf8e4fd700b66 #1 SMP PREEMPT Mon Jul 19 19:55:07 PDT 2021 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
xrandr: Output eDP1 is not disconnected but has no modes
xrandr: Output DP1 is not disconnected but has no modes
xrandr: Output DP2 is not disconnected but has no modes
Kicking xrandr again
_IceTransmkdir: ERROR: euid != 0,directory /tmp/.ICE-unix will not be created.
xfce4-session: No GPG agent found
xfce4-session: No SSH authentication agent found
(xfce4-session:4672): xfce4-session-WARNING **: xfsm_manager_load_session: Something wrong with /home/alizee/.cache/sessions/xfce4-session-localhost:1, Does it exist? Permissions issue?
/usr/bin/xbindkeys_autostart: line 24: CONF: unbound variable
Error org.freedesktop.DBus.Error.ServiceUnknown: The name org.chromium.LibCrosService was not provided by any .service files
`


Redesigning Landing Page

Is your feature request related to a problem? Please describe.
The UI layout of the webpage can be improvised. Adding more visual elements to it will make it look better
Describe the solution you'd like
Create a landing page for the website where the user can navigate to Home, About, Login slides.
Has UI layouts for Website, Mobile with two themes- light and dark.
The design will be done using UI software- Figma, AdobeXD.
Describe alternatives you've considered
Can have Contact Us, Queries, Profile slides

@ADRE9 I would like to work on this issue as a GSSoc'21 participant. Kindly assign it to me.

Sure Go ahead , make sure you mention the color palette and the primary, secondary and tertiary colors.

@ADRE9 Will, you be assigning GSSoC labels and level labels for this issue? Cuz I want to contribute as a GSSoC.

App Design:
https://www.figma.com/file/sd8f5twPt3iCrMGPX2izFa/BunkManagerApp?node-id=0%3A1
Web Design:
https://www.figma.com/file/yv7szBhuylAeMShJoNY7oF/BUNK-MANAGER?node-id=0%3A1


Improve IbisExecutionEngine

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@de657ed). Click here to learn what that means.
Patch coverage: 100.00% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##             master      #416   +/-   ##
==========================================
  Coverage          ?   100.00%
==========================================
  Files             ?       123
  Lines             ?     11600
  Branches          ?         0
==========================================
  Hits              ?     11600
  Misses            ?         0
  Partials          ?         0

Impacted Files
Coverage Δ

fugue_ibis/execution_engine.py
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Cannot get dataview table within Tabs block to go 100% full width of page

I want to see my dataview table go completely 100% full width of the note page (extending beyond where the note writing actually goes).
This is currently possible using Minimal theme + setting tables to 100% full width, outside of Tabs.
But when I put the dataview table within Tabs, this doesn't work anymore.
I have tried adding css code to fix this, and that did actually work, for maybe a day.
But now it's back to how it was originally (not extended to 100% full width of page) which is confusing to me because I don't think the app updated in the meantime.
This is the css code that I added in, to the end of the css code:
/* This is what I added to expand the tabs since it's too small /
/ Ensure tabs container takes full width /
.tabs-container {
display: flex;
flex-direction: column;
width: 100% !important; / Ensure it takes full width /
max-width: 100% !important; / Ensure full width within any parent constraints */
flex-grow: 1;
margin: 2px;
}
/* Ensure the tabs-nav takes full width */
.tabs-container .tabs-nav {
display: flex;
width: 100% !important;
justify-content: space-between;
}
/* Ensure tabs-nav-item-wrapper takes full width */
.tabs-container .tabs-nav .tabs-nav-item-wrapper {
display: flex;
width: 100% !important;
flex-grow: 1;
margin-bottom: 0;
overflow-x: auto;
padding: 0;
}
/* Ensure tabs-contents takes full width */
.tabs-container .tabs-contents {
width: 100% !important;
padding: var(--tabs-contents-padding, 0.25em 2em);
overflow: auto;
}

Please provide a screenshot or a sketch to illustrate the area you referred to as “100% full width of the page”? I’ve tried several themes and it appears that the Dataview table is already set to full width. I need more details to pinpoint the issue. As an alternative, you might want to adjust the ‘Tabs contents padding’ setting under Tabs -> Appearance -> Tabs contents to alter the spacing.


Problems with decryption using AES_CBC_decrypt_buffer()

Hi there! I'm sorry  to disturb you for such a simple issue, but unfortunately I've come across one problem that prevents me decrypting messages in some sporadic way.
I have a pretty basic setup with: client - server topology.
Both sides have the same AES key and an initial vector for decryption/encryption functionality.
I'm working currently with 256 size of AES key, and CBC algorithm:
AES_CBC_decrypt_buffer();
AES_CBC_encrypt_buffer();
This works well for a while, and after some period of time it gets a sporadic issue with a failed decrypting on the client's side. And it can happen that after a failed decryption, next time it gets properly done one.
I'm aware that I have to use this: AES_ctx_set_iv() before each encrypting/decrypting, so to let an initial vector be the same for (encrypted row and for decryption of this), so I do.
I'm also aware that there is no padding for CBC and I have to use buffers multiple to 16, so I do.
What is much interesting, that a server in it's turn is able to decrypt the same row when client experiences an issue (I inserted a testing decryption on the server side, to see if it works at all), but client (having the same AES key and IV) is not able to do this (when experiencing the issue).
I noticed that, when this issue happens, an encrypted row is suspiciously short.
So when it works out well it has an encrypted row about 500-700 symbols.
And when this issues happens it has about 50-60 symbols only after encryption, so that's quite strange (and this 50-60 symbols row is able to be decrypted on the server's side, but how? ).
Thanks for your attention, and once again sorry for disturbing you!

Hi @zenichev and no worries about asking for help. I will close this issue, because it is more usage related than a bug-report, but do feel free to keep commenting (you should be able to even if the issue is closed).
To me it sounds like you are either padding incorrectly or trying to use ASCII as input - these are the two most common mistakes I see. Please confirm whether or not you are transmitting ASCII strings.
You say you are using buffers with sizes in multiples of 16 bytes - that's good.
But unless you are always utilizing all bytes in the buffers, you will need a padding scheme. How do you handle that currently?
I will advise you to print out the key, IV, input, input length in bytes and the output on every encrypt/decrypt operation.
Then, if you can't decrypt on the client-side, but you can on the server-side, one of the parameters mentioned above should differ (key, iv etc.). Usually this is enough to spot where the error is.
Let me know if you make any progress :)

'm also aware that there is no padding for CBC and I have to use buffers multiple to 16, so I do.

Please elaborate on the padding. What do you mean bu "no padding"? :)

To me it sounds like you are either padding incorrectly or trying to use ASCII as input - these are the two most common mistakes I see. Please confirm whether or not you are transmitting ASCII strings.

Should I fill the rest of an unused buffer by something, that will just fit a space up to the end of it?
That's my fault I think, I don't do any filling right now (of an unused buffer part).
I will try to show how currently my encryption process looks like, using this simplified example:
void someFunction(struct AES_ctx * ctx, uint8_t * IV, uint8_t * key) {

	uint8_t echoBuffer[1600]={0};										// declare a buffer muplitple to 16
	strcpy(echoBuffer, "someStringIwannaEncryptRightNowYadaYadaYada");	// copy some data into the buffer

	AES_ctx_set_iv(ctx, IV);											// re-initialize initial vector
	AES_CBC_encrypt_buffer(ctx, echoBuffer, sizeof(echoBuffer));		// encrypt formed string and write this in the same buffer

	// after that I can use this somehow, for e.g. sending to a remote side
}

You say you are using buffers with sizes in multiples of 16 bytes - that's good.
But unless you are always utilizing all bytes in the buffers, you will need a padding scheme. How do you handle that currently?

Yeah that's perhaps where my fault is, I don't do any padding as I understood, I thought the only thing I'm supposed to do - is to keep size of buffer multiple to 16.

I will advise you to print out the key, IV, input, input length in bytes and the output on every encrypt/decrypt operation.

That's what I actually do when debugging (all that you mentioned), and the weird thing was, that key and IV were always staying the same on both sides, that's why I started to doubt about it.

I came up with a pretty basic function for padding, that is:
// buffer - is uint8_t buffer with data
// bufferSize - is a full buffer size
// bufferLength - is a length of stored string
int fillBuffer(uint8_t * buffer, int bufferSize, int buferLength) {

	uint8_t * ptrSrc = buffer;
	uint8_t * paddingValue = "#";

	// how many array members to fill - padding
	// add "- 1" at the end not to override return carriage
	int amount = bufferSize - buferLength - 1;

	if ( amount < 0 ) return 0;	// quit if we are not able to calculate amount for padding

	while(*ptrSrc && buferLength-->0) ptrSrc++;		// move pointer up to the end of string

	for (int i=amount; i>0; i--) *ptrSrc++=*paddingValue;	//add padding to each null member

	return 0;
}

seems to be working, perhaps you have a better one? can you advise something? Thanks : )

You need to fill all the space in the buffer with something, even if you don't use it.
Otherwise you will risk including data from previous telegrams in new telegrams, if the new telegram is shorter than previously sent ones.
Example, first you send one telegram of length 16, consisting of 16 * 'x'. Buffer contains 16 * 'x'.
Then you send another telegram of length 10, consisting of 10 * 'y'. If you don't do something to clear the buffer before/after sending, or perform padding, the buffer will consist of 10 * 'y' and then 6 * 'x' because only the first 10 bytes have been overwritten.

I don't have time to review your code now, but I will later.

@kokke alright, I understood. I came up with a solution for padding of the buffer, and with a functionality that is able to clear out padding if needed (for decrypted rows).
Surely I clear buffers after each usage. Currently I'm working with threads, and each thread has its own buffer (that is cleared after processing).
Yes, I understood what you meant. Unfortunately even having padding filled for buffer to be encrypted, I came across this issue once again, I don't get what I'm doing wrong.
So my steps are:

create a uint8_t buffer (multiple to 16) and fill it with needed metadata.
add padding at the end of it (so to fill all buffer).
encrypt this buffer (with initialization of IV before encryption).
send to remote side.
remote side gets it and decrypts with a wrong data (sporadically, not always).

And again, when this issue occurs, encrypted data is suspiciously short, like 50-60 symbols (while buffer with padding has 1600 symbols of length before en encryption).
To clarify:

I have the same key and IV, that I see when debugging values of them (on both sides).

And again, when this issue occurs, encrypted data is suspiciously short, like 50-60 symbols (while buffer with padding has 1600 symbols of length before en encryption).

How do you determine the length when you receive something?
It seems from your code that you are always encrypting 1600 bytes and sending it.

Well, in case with CBC, what I do is actually filling the rest of unused buffer with padding (currently I use a hash '#' symbol for doing this), and then perform an encryption, that's it.
I'm following the length of string using strlen() command in my prints, such as:
printf("DEBUG: something here yada yada: %d  \n", strlen(someCharArray));
So I monitor:

a length of a real metadata before padding
a length of completely filled buffer (before an encryption)
a length of a buffer (after an encryption is done)

And for side that receives an encrypted row:

a length of a gotten encrypted data (data is stored in uint8_t array)
a length of decrypted data

Usually when my row is messed after decryption, it has part of the beginning that is properly decrypted and part that is just a series of non-sense symbols, like this:
"here_I_had_some_needed_inform&#IU#NKFEfmekfe1123e23r"
Currently I decided to switch to CTR, since there I don't have to deal with a multiple length of the buffer to 16, and, no need for padding. Currently this one is working fine.
I think that with case of CBC, I used a short buffer that wasn't capable to store all amount of an encrypted data, I had like 1600 length that was hardcoded. Perhaps it's reasonable to use dynamic length for buffers.


Nuxt3 compatible issue

Hi, thank for nice component, but usage it in the Nuxt3 have an compatible issues with EMS load. It is possible to fix it?

You need to use this method: plugin/grid.client.ts
import {VGridPlugin} from "@revolist/vue3-datagrid";
export default defineNuxtPlugin(async (nuxtApp) => {
  nuxtApp.vueApp.use(VGridPlugin)
});

in page or component .vue
<ClientOnly>
  <vue-data-grid theme="compact" :source="rows" :columns="columns" />aa
</ClientOnly>


Feature: I want to make a BMI calculator

Is your feature request related to a problem?
Please describe.
I have not seen a BMI calculator in python folder yet
Describe the solution you'd like

make one and add it
Describe alternatives you've considered

I will make it
Additional context

It's just a cli

guys just make your own idea don't take someone else's idea and make it.

can i you please assing me this issue

https://github.com/keshavsingh4522/hacktoberfest2021/pull/2969