Uncaught Exception: Command failed:<PHONE_NUMBER>

An uncaught exception was reported.
Info:
OS: win32
Arch: ia32
GPMDP Version: 3.0.0
Time: Thu Mar 10 2016 22:29:03 GMT-0600 (Central Standard Time)
Error:
Command failed:<PHONE_NUMBER>
Error: Command failed:<PHONE_NUMBER>
System.AggregateException: One or more errors occurred. ---> System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.Utility.<LogIfThrows>d__4d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Squirrel.FileDownloader.<DownloadFile>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwait
...Some of the stack is missing

This issue was created automatically inside the uncaughtException handler
More info added by me:
I didnt notice any problem, but a thing popped up and told me to submit this to github, so here it is. I dont know what most of it means but looks like a http 500 error happened or something? I had the window in the background, and it was paused for a while, so if something went wrong I didn't notice it.
Also i did a google search and found that i had the same error code as issue #213. but he had a different error, something about domain resolution instead of my error 500.

If you restart the app you'll get an update that fixes this issue

I guess in the future i will check the closed issues first. I just noticed the bunch of copies of this issue . Sorry for the duplicate. Anyway i restarted the app and it updated, so problem solved. Thanks!


Add CIF staff to IDIRs to the Keycloak realm

Describe the task
Add CIF staff IDIRs to the KC realm.
Acceptance Criteria

[x] Email TP for list of CIF staff IDIRs
[x] Get list of IDIRs for CIF staff
[ ] CIF staff IDIRs / IDs are configured in the keycloak realm
[ ] keycloak documentation has been written (e.g., how to add user to group)

Additional context
This issue documents the procedure, needs to be on Gov VPN

https://github.com/bcgov/ocp-sso/issues/118

Notes

PB will be able to complete this task most efficiently being a gov't staff member

See @Peirist 's email from Feb 15 for the list of people to add.

I don't see the users in the prod realm, we probably want to add them there too
Have we established who should be an admin? I see everyone has the cif_admin role in the test environment.
Does the link in the issue description contain all the documentation on how to add users to the realm, of were there other steps?

Thanks for confirming @pbastia ! Moving ticket to closed.


General fixes

Diddy Face on Gong now appears
Shop Indicator has been revamped to show which kongs have moves
A few assets have been changed up
Lanky Coin fix should now be fixed (Coins have been moved back to vanilla position)
A few attempts have been made to resolve the candy crash

Crash Debugger no longer shows in Candy (Should remove potential for false-positives)
A few anti-tamper measures have been removed

Tag Anywhere is re-enabled in seasick ship
Tag Anywhere is disabled when seasick
Instance Scripts should now be consistent fixing the following bugs:

Japes Kong not being freed properly
Japes Cage being closed after level reload
Factory Cage being present after level reload
Seasick ship not bringing you to the seasick map


📝[Docs]: Want to Add Content About Tree #391

Added Content About trees in Day-23

Hey @subhadipbhowmik can you review this pr


Wait for connack before sending other packets

Ok so it is  not immediately disconnecting before it even disconnects like last time, this time however, it is falling in the same loop again AFTER it connects and sends a few messages. Then the esp32 resets after a few of these loops. Here, is the serial output:

WiFi lost connection
Disconnected from MQTT: 7.
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...
heap: 190712
Connected to MQTT.
Session present: 0
Publishing at QoS 0, packetId:
Publish acknowledged.
  packetId: 49
Connecting to Wi-Fi...
[WiFi-event] event: 5
WiFi lost connection
Disconnected from MQTT: 7.
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...
heap: 232516
Connected to MQTT.
Session present: 0
Publishing at QoS 0, packetId:
Publish acknowledged.
  packetId: 54
Connecting to Wi-Fi...
[WiFi-event] event: 5
WiFi lost connection
Disconnected from MQTT: 7.
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...
heap: 190756
Connected to MQTT.
Session present: 0
Publishing at QoS 0, packetId:
Publish acknowledged.
  packetId: 59
Connecting to Wi-Fi...
[WiFi-event] event: 5
WiFi lost connection
Disconnected from MQTT: 7.
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...
heap: 190728
Connected to MQTT.
Session present: 0
Publishing at QoS 0, packetId:
Publish acknowledged.
  packetId: 64
Connecting to Wi-Fi...
[WiFi-event] event: 5
WiFi lost connection
Disconnected from MQTT: 7.
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...
heap: 190720
Guru Meditation Error: Core  1 panic'ed (Unhandled debug exception).

[WiFi-event] event: 0
[WiFi-event] event: 2
[WiFi-event] event: 5
WiFi lost connection
[WiFi-event] event: 4
[WiFi-event] event: 7
WiFi connected
IP address:
<IP_ADDRESS>
Connecting to MQTT...

Stack canary, meaning a stack overflow. I didn't check stack requirements when doing client and server authentication.
Are you deliberately disconnecting from WiFi? Or is it a bug?

The stack overflow was happening earlier too and in this example i was using as well
https://github.com/aws-samples/aws-iot-esp32-arduino-examples/blob/master/examples/basic-pubsub/basic-pubsub.ino
(maybe it could be some error i am doing? idk im trying to figure it out still)

Are you deliberately disconnecting from WiFi? Or is it a bug?

I am not disconnecting from wifi deliberately.

You can raise the stack size (see config.h) but that doesn't solve the disconnects.
I'm on phone now. Will check later.

Maybe simplify your sketch a bit:
#include <WiFi.h>
#include <espMqttClient.h>

#define WIFI_SSID "wifiname"
#define WIFI_PASSWORD "wifipassword"

#define MQTT_PORT 8883
#define MQTT_USER "username"
#define MQTT_PASS "password"

const char* awsEndpoint = "awsendpoint-ats.iot.us-west-2.amazonaws.com";

// xxxxxxxxxx-certificate.pem.crt
const char certificate_pem_crt []= \
"-----BEGIN CERTIFICATE-----\n"\
"sdfwerfiuweewkndwlekmdnewklmoiejdodjlemdklmwe*(Y&(*)LKmewpofmwpeomfweferreL\n"\
"BQAwTTFLMEksdfkmweoifwef*&BIjknjem9uIFdlYiBTZXJ2aWNlcyBPPUFtYXpvbi5jb20g\n"\
"wefiuwefowief208927492dneklndqowiIUhuygtybiohufuybkjoih*yuygjKKBKJBDSFEnlknkjl\n"\
"spfiubgerupifberpijbrepijbnrepinireniorenvrenvernvk;jnerr;kjvnev;kjnre;kjvnrek;vjner;kvnerk;jvn\n"\
"-----END CERTIFICATE-----\n";

// xxxxxxxxxx-private.pem.key
const char private_pem_key[] = \
"-----BEGIN RSA PRIVATE KEY-----\n"\
"ewnpifh3043jk4fn348fn34f3498fhn34fpierfjVESRGTrtgiu45bgg938gbf3o4fwwewe\n"\
"wefewiunfjerngjierbgoierbfij34nfiup34h89fh34iufnewjnwenkjwenfkjeanfkjafen\n"\
"sdfoigneroigfnerionglrkenglkerngklernglknerklgnerlknklernklernklernlkernlken\n"\
"-----END RSA PRIVATE KEY-----\n";

const char rootCA[]= \
"-----BEGIN CERTIFICATE-----\n" \
"ewnpifh3043jk4fn348fn34f3498fhn34fpierfjVESRGTrtgiu45bgg938gbf3o4fwwewe\n"\
"wefewiunfjerngjierbgoierbfij34nfiup34h89fh34iufnewjnwenkjwenfkjeanfkjafen\n"\
"sdfoigneroigfnerionglrkenglkerngklernglknerklgnerlknklernklernklernlkernlken\n"\
"-----END CERTIFICATE-----\n";

const char* clientID = "testingesppolicy";
const char* topicchar = "testtopic";
const char* payloadchar = "testpayload";

espMqttClientSecure mqttClient;

void connectToMqtt() {
  Serial.println("Connecting to MQTT...");
  mqttClient.connect();
}

void WiFiEvent(WiFiEvent_t event) {
  Serial.printf("[WiFi-event] event: %d\n", event);
  switch(event) {
    case SYSTEM_EVENT_STA_GOT_IP:
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      connectToMqtt();
      break;
    case SYSTEM_EVENT_STA_DISCONNECTED:
      Serial.println("WiFi lost connection");
      break;
    default:
      break;
  }
}

void onMqttConnect(bool sessionPresent) {
  Serial.println("Connected to MQTT.");
  Serial.print("Session present: ");
  Serial.println(sessionPresent);
  uint16_t packetIdPub0 = mqttClient.publish(topicchar, 0, false, payloadchar);
  Serial.println("Publishing at QoS 0, packetId: ");
  Serial.println(packetIdPub0);
}

void onMqttDisconnect(espMqttClientTypes::DisconnectReason reason) {
  Serial.printf("Disconnected from MQTT: %u.\n", static_cast<uint8_t>(reason));
  if (WiFi.isConnected()) {
    connectToMqtt();
  }
}

void onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total) {
  Serial.println("Publish received.");
  Serial.print("  topic: ");
  Serial.println(topic);
  Serial.print("  qos: ");
  Serial.println(properties.qos);
  Serial.print("  dup: ");
  Serial.println(properties.dup);
  Serial.print("  retain: ");
  Serial.println(properties.retain);
  Serial.print("  len: ");
  Serial.println(len);
  Serial.print("  index: ");
  Serial.println(index);
  Serial.print("  total: ");
  Serial.println(total);
}

void onMqttPublish(uint16_t packetId) {
  Serial.println("Publish acknowledged.");
  Serial.print("  packetId: ");
  Serial.println(packetId);
}

void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println();

  WiFi.onEvent(WiFiEvent);
  WiFi.onEvent(WiFiEvent);
  WiFi.setAutoConnect(false);
  WiFi.setAutoReconnect(true);

  mqttClient.setCACert(rootCA);
  mqttClient.setCertificate(certificate_pem_crt);
  mqttClient.setPrivateKey(private_pem_key);
  mqttClient.setCredentials(MQTT_USER, MQTT_PASS);
  mqttClient.onConnect(onMqttConnect);
  mqttClient.onDisconnect(onMqttDisconnect);
  mqttClient.onMessage(onMqttMessage);
  mqttClient.onPublish(onMqttPublish);
  mqttClient.setServer(awsEndpoint, MQTT_PORT);
  mqttClient.setCleanSession(true);

  delay(2500);  // some time to start up the Serial monitor
  connectToWiFi();
}

void loop() {
  delay(1000);
  mqttClient.publish(topicchar, 0, false, payloadchar);
}

Please enable debug logging. It will show a lot more info, also about the stack.

Ok so it does work perfectly otherwise but (I don't know if i am doing something wrong here but) whenever i put a code to publish in my loop() i get a stack overflow. can i not do that? or is my implementation wrong?

#include <WiFi.h>
#include <Ticker.h>
#include <espMqttClient.h>

#define WIFI_SSID "PUNEET_EXT"
#define WIFI_PASSWORD "MARIGOLD9799"

const char* awsEndpoint = "a2b5d2tjhum6qs-ats.iot.us-west-2.amazonaws.com";
#define MQTT_PORT 8883
#define MQTT_USER "username1"
#define MQTT_PASS "password1"

// xxxxxxxxxx-certificate.pem.crt
const char certificate_pem_crt[] = \

"-----BEGIN CERTIFICATE-----\n"\
"vzQfDMjQyuuGouGGLZpcVn3aBMg//93JBrwVh8OXhkGvzQafbOzyPvHHoLG2Cq0H\n"\
"9Jpcl0mc2nnOztL+sHQQjiDpK/XGoCdUQTbDP+N1gbiQ0sbEZVUHcf2j6ogldsR3\n"\
"Lll5TLC0qabu6oOJYtqrP3/4eul3s1slfrqjsML6ij6vBUFq8I9WN+POtl3rjYvi\n"\
"xv0f8ypSULUJP9WZPzm+KJk/vVxqs1GRGyLyxngk+K42njxTkTgiSKbGUrIV\n"\
"-----END CERTIFICATE-----\n";

// xxxxxxxxxx-private.pem.key
const char private_pem_key[] = \
"-----BEGIN RSA PRIVATE KEY-----\n"\
"MIIEowIBAAKCAQEAsTPQglFqtlkvgGWrMPNNYt/Y4fxF2j6o4R9RFj2XF/4kiu53\n"\
"V
"-----END RSA PRIVATE KEY-----\n";

const char rootCA[] = \

"-----BEGIN CERTIFICATE-----\n" \
"N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \
"o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \
"5MsI+yMRQ+hDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
"rqXRfboQnoZsG4q5WTP468SQvvG5\n" \
"-----END CERTIFICATE-----\n";

espMqttClientSecure mqttClient;
Ticker reconnectTimer;

void connectToWiFi() {
  Serial.println("Connecting to Wi-Fi...");
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
}

void connectToMqtt() {
  Serial.println("Connecting to MQTT...");
  mqttClient.connect();
}

void WiFiEvent(WiFiEvent_t event) {
  Serial.printf("[WiFi-event] event: %d\n", event);
  switch(event) {
    case SYSTEM_EVENT_STA_GOT_IP:
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      connectToMqtt();
      break;
    case SYSTEM_EVENT_STA_DISCONNECTED:
      Serial.println("WiFi lost connection");
      reconnectTimer.once(5, connectToWiFi);
      break;
    default:
      break;
  }
}

void onMqttConnect(bool sessionPresent) {
  Serial.println("Connected to MQTT.");
  Serial.print("Session present: ");
  Serial.println(sessionPresent);

  uint16_t packetIdSub0 = mqttClient.subscribe("foo/bar/1", 0);
  Serial.print("Subscribing at QoS 0, packetId: ");
  Serial.println(packetIdSub0);

  uint16_t packetIdPub0 = mqttClient.publish("foo/bar/0", 0, false, "test");
  Serial.println("Publishing at QoS 0, packetId: ");
  Serial.println(packetIdPub0);
}

void onMqttDisconnect(espMqttClientTypes::DisconnectReason reason) {
  Serial.printf("Disconnected from MQTT: %u.\n", static_cast<uint8_t>(reason));

  if (WiFi.isConnected()) {
    reconnectTimer.once(5, connectToMqtt);
  }
}

void onMqttSubscribe(uint16_t packetId, const espMqttClientTypes::SubscribeReturncode* codes, size_t len) {
  Serial.println("Subscribe acknowledged.");
  Serial.print("  packetId: ");
  Serial.println(packetId);
  for (size_t i = 0; i < len; ++i) {
    Serial.print("  qos: ");
    Serial.println(static_cast<uint8_t>(codes[i]));
  }
}

void onMqttUnsubscribe(uint16_t packetId) {
  Serial.println("Unsubscribe acknowledged.");
  Serial.print("  packetId: ");
  Serial.println(packetId);
}

void onMqttMessage(const espMqttClientTypes::MessageProperties& properties, const char* topic, const uint8_t* payload, size_t len, size_t index, size_t total) {
  Serial.println("Publish received.");
  Serial.print("  topic: ");
  Serial.println(topic);
  Serial.print("  qos: ");
  Serial.println(properties.qos);
  Serial.print("  dup: ");
  Serial.println(properties.dup);
  Serial.print("  retain: ");
  Serial.println(properties.retain);
  Serial.print("  len: ");
  Serial.println(len);
  Serial.print("  index: ");
  Serial.println(index);
  Serial.print("  total: ");
  Serial.println(total);
}

void onMqttPublish(uint16_t packetId) {
  Serial.println("Publish acknowledged.");
  Serial.print("  packetId: ");
  Serial.println(packetId);
}

void setup() {
  Serial.begin(115200);
  Serial.println();
  Serial.println();

  WiFi.onEvent(WiFiEvent);

  //mqttClient.setInsecure();
  mqttClient.setCertificate(certificate_pem_crt);
  mqttClient.setPrivateKey(private_pem_key);
  mqttClient.setCACert(rootCA);
  mqttClient.setCredentials(MQTT_USER, MQTT_PASS);
  mqttClient.onConnect(onMqttConnect);
  mqttClient.onDisconnect(onMqttDisconnect);
  mqttClient.onSubscribe(onMqttSubscribe);
  mqttClient.onUnsubscribe(onMqttUnsubscribe);
  mqttClient.onMessage(onMqttMessage);
  mqttClient.onPublish(onMqttPublish);
  mqttClient.setServer(awsEndpoint, MQTT_PORT);
  mqttClient.setCleanSession(true);

  connectToWiFi();
}

void loop() {
  static uint32_t lastMillis = 0;
  if (millis() - lastMillis > 5000) {
    lastMillis = millis();
    Serial.printf("heap: %u\n", ESP.getFreeHeap());
  }

  mqttClient.publish("foo/bar/0", 0, false, "test");

}

this is the debug output (I'm sorry i dont know how much of the debug output i should paste?)
[ 31103][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31108][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31113][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31118][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31123][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31127][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31132][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31138][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31143][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31148][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31153][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31158][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31163][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31167][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31172][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31178][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31183][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31188][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31194][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31199][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31204][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31210][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31215][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31220][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31225][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31229][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31234][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31239][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31244][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31249][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31253][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31258][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31264][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31369][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31370][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31371][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31375][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31380][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31406][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31406][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31406][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31410][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31416][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31447][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31447][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31447][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31451][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31455][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31460][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31465][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31470][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31474][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31479][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31484][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31489][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31494][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31498][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31503][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31509][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31514][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31519][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31525][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31530][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31536][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31541][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31546][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31551][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31556][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31560][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31565][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31570][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31575][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31580][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31584][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31589][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31678][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31679][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31680][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31683][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31688][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31692][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31697][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31703][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31708][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31713][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31719][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31724][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31729][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31734][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31738][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31743][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31748][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31753][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31758][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31762][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31767][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31779][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31782][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31788][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31795][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31795][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31798][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31804][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31809][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31814][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31820][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31985][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31986][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31987][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 31990][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31995][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 31999][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32004][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32009][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32014][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32019][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32023][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32028][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32034][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32039][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32044][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32050][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32055][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32060][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32066][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32071][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32077][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32082][I][MqttClient.cpp:371] _sendPacket(): tx 17/17 (30)
[ 32087][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32091][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32096][I][Packet.cpp:322] _allocate(): Alloc (l:17)
[ 32101][I][Packet.cpp:322] _allocate(): Alloc (l:17)

Without a delay in your loop, it will be a lot of publish packets...
But then again, please enable debug logging so we can see in detail what is going on. Also, the simplified code I pasted is without the timer (Ticker) so it should be more readable when debugging.

Oh yeah it does work after i put a delay of 1000ms!

Also i would add that your simplified code works perfectly. even if i disconnect my wifi, my esp will reconnect to my wifi after it turns on and publish messages even with qos1. thats great but what am i missing?

Also i would add that your simplified code works perfectly. even if i disconnect my wifi, my esp will reconnect to my wifi after it turns on and publish messages even with qos1. thats great but what am i missing?
I don't know. I'm not an expert on microcontrollers or C++. But as always: beaty lies in simplicity. For my devices I only use the simpel version and they seem to be reliable.

I might change the examples in a separate PR. They always have been troublesome. Besides, IIRC, calling WiFi.begin(...) causes flash wear so better have the SDK manage the connect/reconnect.

beaty lies in simplicity

Yeah absolutely, if it works, I'll just use the simple one for my project. the stack overflow was my problem i was sending a char file as sprint(). can i not do that? i want to send json data

I often send json. I mostly use snprintf or ArduinoJson, as soon as it gets complicated: https://arduinojson.org/.
You can raise the stack size here: https://github.com/bertmelis/espMqttClient/blob/main/src/Config.h#L49
You can monitor this when in debug mode. Your log will print a line line this:
[  6215][I][MqttClient.cpp:280] loop(): Stack usage: 3256/5000
[ 35000][I][MqttClient.cpp:280] loop(): Stack usage: 4408/5000

It only prints when the "high water mark" has been raised.


Make dependency and flow clearer

People struggle with the instruction and the flow combination with electron-packager.
It should be made clearer.
cc. @citrusui

Alright! I'll start working on it within a couple of hours.


[Bug] doris两表关联查询结果集不正确

Search before asking

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

Version
5.7.99
What's Wrong?
两表KEY关联查询，查询出不正确的结果集

What You Expected?
希望能找到出现不正常结果集的原因
How to Reproduce?
No response
Anything Else?
No response
Are you willing to submit PR?

[ ] Yes I am willing to submit a PR!

Code of Conduct

[X] I agree to follow this project's Code of Conduct

关联字段类型保持一致，不要bigint、varchar关联

有大佬打算解决一下这个问题吗？感觉很有用


Use C11's _Static_assert for CompileTimeAssert when available

It is straightforward to test the C version and define CompileTimeAssert using C11's  [https://en.cppreference.com/w/c/language/_Static_assert _Static_assert keyword]
This can be done e.g.
{{{#!c
#if STDC_VERSION >= 201112L
#define CompileTimeAssert(Condition, Message) _Static_assert(Condition, #Message)
#else
#define CompileTimeAssert(Condition, Message) typedef char Message[(Condition) ? 1 : -1]
#endif
}}}
This avoids polluting the type namespace with the magic typedefs used in the older implementation, and also produces better error messages if the assertion fails.
It would also be possible to use C++11's [https://en.cppreference.com/w/cpp/language/static_assert static_assert keyword] in a similar manner, but I am not sure if this is desirable; this depends whether we want to officially support using this header in C++ code.
I will create a branch containing the attached patch and update this ticket.

Imported from trac issue 225.  Created by tflemin1 on 2019-06-26T12:12:51, last modified: 2019-08-14T14:11:46


Build Plausible to Databox Integration

Note: this will likely into it's own repo.
Using the Plausible Stats API use a CF worker automatically running every 10 min to pull a report, transform, and publish to Databox's REST API

Used the Databox api integration to do this. No code needed.


Gradle config cache error when running tests on a compose experimental web application module

If I have the gradle config cache enabled and run gradle allTests on the root module and I have a submodule that uses:
compose.experimental {
  web.application {}
}

I get the following error:
Invocation of 'Task.project' by task ':myModule:unpackSkikoWasmRuntimeJs' at execution time is unsupported.

Please check the following ticket on YouTrack for follow-ups to this issue. GitHub issues will be closed in the coming weeks.


Need help: How to "subscribe" to a feed?

I'm trying to use the this library to get market/trading data from HitBTC. (e.g. subscribing to ticker: https://api.hitbtc.com/#subscribe-to-ticker)
The problem is that I'm not 100% sure how I have to do that.
When I do the following it just prints "true" and doesn't print anything else.
ws.on('open', function() {
  ws.call('subscribeTicker', {
    "symbol": "ETHBTC",
  }).then(function(result) {
    console.log(result);
  }).catch(console.log);
});

I dug into the code and saw that the library receives the updates from the server after ws.call('subscribeTicker', ...), but the messages don't get forwarded. When I add a console.log(message) here (https://github.com/qaap/rpc-websockets/blob/master/src/lib/client.js#L210) I get this response:
{ jsonrpc: '2.0',
  method: 'ticker',
  params:
   { ask: '0.102482',
     bid: '0.102339',
     last: '0.102483',
     open: '0.111648',
     low: '0.096804',
     high: '0.113327',
     volume: '70636.904',
     volumeQuote: '7539.892416786',
     timestamp: '2018-02-02T22:16:24.866Z',
     symbol: 'ETHBTC' } }
{ channel: 'ticker',
  type: 'update',
  data:
   { ask: '0.102482',
     bid: '0.102341',
     last: '0.102483',
     open: '0.111648',
     low: '0.096804',
     high: '0.113327',
     volume: '70636.904',
     volumeQuote: '7539.892416786',
     timestamp: '2018-02-02T22:16:24.966Z',
     symbol: 'ETHBTC' } }

There is no notification property nor an ID and it doesn't get handled. I hacked something together to expose an additional "callback" function and I was able to use that and it works fine.
So my question is: Am I missing a feature of this library? Or did they simply implement their API in a very weird way that is not supported by this library?
Thanks for your help.

@AndreasGassmann, thanks for reporting this. I believe this is a bug in our library. I'm trying to patch it and will release it asap.

@AndreasGassmann: This is fixed in 3.6.2.
You would use it like this:
ws.on("open", function() {
  ws.call("subscribeTicker", { "symbol": "ETHBTC" })
  .then(function() {
    ws.on("ticker", function(msg) {
      console.log("tick!!!", msg)
    })
  })
  .catch(function(error) {
    console.log("error subscribing:", error)
  })
})

ws.on is an event handler, and since they expose ticker as their notification, it will end up there.


Bug in is_mac_version_or_greater?

Hi moi15moi. Thanks for a really impressive library! I'm running macOS 13.3.1, and to get the library to work on my machine I had to reverse the first comparison in this line:
https://github.com/moi15moi/FindSystemFontsFilename/blob/aee712bb40dfb58a1d05336350c1461bba8c59a3/find_system_fonts_filename/mac_fonts.py#L100
Am I correct in thinking it should be system_major > minimum_major?

You are totally right.
This is an error.
I will fix that in the current week.
Thank you for your issue

The lastest version, 0.0.4, correct this issue.
Update your FindSystemFontsFilename package:
pip install FindSystemFontsFilename -U

Thanks!


Incorrect placement of theme.properties file?

It seems that the theme.properties file is placed incorrectly.
Currently, the file is located at src/main/resources/theme/email-code-theme/theme.properties, but I believe the correct path should be src/main/resources/theme/email-code-theme/email/theme.properties.
In the current location, when the email theme is set to email-code-theme, sending emails other than the Email OTP (such as Test Connection or Forgot Password) results in errors.
However, after moving the file to the email/ directory, these errors were resolved, and the email functionality started working correctly.
Could you please verify if the theme.properties file is placed in the correct location?
Lastly, I would like to mention that since I’m not very confident in my English skills, I used AI to help me write this Issue.
I hope everything is clear!

@ShokiTokunaga for me it is not working!
Still i cannot send test email or other emails even after placing theme.properties in the path that you mentioned.

The solution I proposed was effective as of commit 846531e6ee302b154d86614dd8bf7523d52012d2, but it seems the issue was resolved differently in issue #54.
With the latest commit (f0356a6fc685c0fd412cf33da10d7b52e39ef00a), the problem no longer occurs without additional changes.
I’ll go ahead and close this issue.


[Blackhole bringup] Wider addresses in NOC cmd buffer programming sequence

TODO:

Investigate and summarize changes between noc_nonblocking_api in WH and BH
Highlight APIs in dataflow_api.h that are candidates to move into noc_nonblocking_api (many (?) low-level APIs added here to workaround the fact that noc_nonblocking_api only exposes one API that programs all registers even if this is not needed on each invocation)
Zero out "MID" register in FW since we will use the LO/HI registers

BBE and Metal versions of WH noc_nonblocking_api.h have diverged, BH version has been copied directly from BBE
API additions/removals in BH noc_nonblocking_api to match diverged Metal WH noc_nonblocking_api

Note: __attribute__((always_inline)) needs to be added
NOC_CMD_BUF_WRITE_REG_L1, NOC_CMD_BUF_READ_REG_L1, NOC_STATUS_READ_REG_L1 need to be removed from BH (Metal WH version uses the non L1 specific APIs)
noc_cmd_buf_ready needs to be added to BH
ncrisc_noc_fast_read_scatter not in Metal WH version (remove from BH?)
remove ncrisc_noc_fast_read_l1
remove transaction_id from ncrisc_noc_reads_flushed
remove ncrisc_noc_reads_flushed_l1
remove ncrisc_noc_all_reads_flushed and ncrisc_noc_all_reads_flushed_l1 and add BH variant of ncrisc_noc_reads_flushed
remove ncrisc_noc_fast_read_ok and ncrisc_noc_fast_read_ok_l1
remove ncrisc_rd_data_word_recv
remove ncrisc_noc_clear_outstanding_reqs
remove ncrisc_noc_fast_write_l1
remove ncrisc_noc_fast_write_ok, ncrisc_noc_fast_write_bufs_ok, ncrisc_noc_fast_write_ok_l1

API changes
ncrisc_noc_fast_read

src_addr split between NOC_TARG_ADDR_LO/MID/HI

NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_LO, (uint32_t)src_addr);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_MID, (uint32_t)(src_addr >> 32) & 0xF);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_HI, (uint32_t)(src_addr >> 36) & 0xFFFFFF);

ncrisc_noc_fast_write

parameter update: remove transaction_id and add multicast_path_reserve +posted
dest_addr split between NOC_RET_ADDR_LO/MID/HI

NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_LO, (uint32_t)dest_addr);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_MID, (uint32_t)(dest_addr >> 32) & 0xF);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_HI, (uint32_t)(dest_addr >> 36) & 0xFFFFFF);

Add ncrisc_noc_fast_write_loopback_src where dest_addr split between NOC_RET_ADDR_LO/MID/HI
ncrisc_noc_blitz_write_setup

remove transaction_id parameter
replace poll to wait on noc_cmd_buf_ready
split dest_addr between NOC_RET_ADDR_MID/HI

NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_MID, (uint32_t)(dest_addr >> 32) & 0xF);
NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_RET_ADDR_HI,  (uint32_t)(dest_addr >> 36) & 0xFFFFFF);

@davorchap do you anticipate needing to address over 4 GB? If not then we don't need the higher bits of src_addr/dest_addr and can ignore writing to *_MID/*_HI registers.
@pgkeller on WH we do write to *_LO and *_MID on WH, eg:
  NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_LO, (uint32_t)src_addr);
  NOC_CMD_BUF_WRITE_REG(noc, cmd_buf, NOC_TARG_ADDR_MID, src_addr >> 32);

Related to noc_nonblocking_api:
seeing a hang in ncrisc_noc_reads_flushed

Related to noc_nonblocking_api: seeing a hang in ncrisc_noc_reads_flushed

this was due to bug in setting a HI register (value needed to be right shifted by an additional 4 bits)


Update conferences list based on 2020 COVID cancellations

Disclaimer: I'm an organiser of React Summit, React Advanced London and React Day Berlin - changes proposed in this PR is a small effort to actualise the list of events next to updating our own event dates.
Next to updating own conference dates, I've made following changes:

Removed 2020 events that, based on the current information from their websites, are cancelled or postponed without a new date
Moved 2020 events that have actually ran to the "past events" section
Updated dates of some events in 2020 that have not announced their cancellation, but moved dates within this year

What I didn't do:

I haven't added 2020 cancelled events with their assumed 2021 dates, as it's up to organizers to confirm those and re-add
To stay consistent with point above - I'm also not adding our (GitNation - React Summit, React Advanced) cancelled event dates that moved to 2021
Conferences that have a past dates, but has not clear statement on the website about cancellation have not been removed, but rather moved to "past events" section
I have not added any new events

The information is relevant as of today's date - during these hard times plans do change frequently, so some information may be outdated by the time this PR is merged. I'll be happy to provide amends until it's merged.

Hey @alexkrolick @lex111,
You've reviewed my past PR's to the same page, would appreciate if you could have a look at this one soon.
Thanks a lot!

Hey @rachelnabors, maybe you can assist reviewing this PR? Thank you!

Sorry for pinging you again, but would really appreciate if somebody can have a look at this, as conferences are happening and in this extremely hard times, event orgs would highly appreciate events appearing on most searchable list of react events.
@alexkrolick @lex111 @rachelnabors

Thanks! Sorry this slipped through.


Adding and removing users to/from groups

It would be really useful if users could be added to groups in the UI (both by a global admin and an application admin).
Currently, groups don't have a name, but since the idea is that a user would "manage" a part, we can simply display the course, subject and part tree and show a little checkbox next to each part.
Something like:
Advanced computer science
    ☐ MPhil
American Literature
    ☐ Mphil
Asian and middle eastern studies
   Chinese studies
       ☐ Part IA
       ☐ Part IB
       ☑ Part II
   Japanese studies
       ☐ Part IA
       ☐ Part IB
       ☑ Part II
...

Note that the current UI seems to assume that only application administrators have access to /admin. This should NOT be the case. Application admins are intended for helpdesk support people. The regular "departmental timetable managers" (to avoid using the words departmental administrators) will have edit-rights on parts by virtue of being a member of the group that's associated with the part.
This will also allow the UI to display just the list of parts they can edit on /admin.

Note that these users should also be able to see a "draft" part

@simong: does the following seem more correct:

Users with an 'isAdmin' flag of 'true'  have access to all parts by default, ignoring groups they're added to.
Users without that flag set to true only have access to admin if they were added to a group for a part

Also, for managing groups we'd need an endpoint that returns all groups that a user is part of. I couldn't find an endpoint that returns this, is there one already?

Users with an 'isAdmin' flag of 'true' have access to all parts by default, ignoring groups they're added to.

Yes, that's how it's been wired up in the backend

Users without that flag set to true only have access to admin if they were added to a group for a part

Correct. On pageload, you'll have to iterate through all the parts and check the canManage property.

Also, for managing groups we'd need an endpoint that returns all groups that a user is part of. I couldn't find an endpoint that returns this, is there one already?

You should be able to re-use /api/orgunit?includePermissions=true for this I think.

includePermissions does the trick!

FWIW,
I think checking me.isAdmin in the UI should almost always be an edge-case. Where possible, you should be able to re-use parts their canManage property. That should allow the UI to remain a little bit leaner.

Converted into a PR for visibility

Depends on https://github.com/fronteerio/grasshopper/tree/orgunit-includepermissions

Reassigning to @Coenego for a round of review. Note that the backend will change and this PR will have to follow.

Depends on https://github.com/fronteerio/grasshopper/pull/101

Back to @bp323 for follow-up after a first round of review.

Looks like the backend for this has been merged, ready for review.

Looks good! Some minor comments left. Back to @bp323 for follow-up.

Coverage remained the same at 100.0% when pulling 073ecc18b2a602fd1b63e7a301e194fd2ee69e91 on bp323:issue-356 into c4e00335a8a813636051104a7e08958d6519e2e2 on CUL-DigitalServices:master.

Over to @Coenego for review.


Update README to include instruction how to build/run project locally for development

It will help contributors to get up and running

readme updated


Create List GPU providers that offer free startup credits

create a folder in the pollinations monorepo for these kinds of texts

https://cloud-gpus.com/


Contributing Enhancements and Guidelines

Added contributing guidelines.
Created scripts for running various development tasks that follow github's script guidelines for easier setup and development:
scripts/cibuild - runs lint, build, and test for CI server
scripts/server - starts an http server to serve up demo components; also watches for file changes
scripts/setup - installs all dependencies needed for development
scripts/test - starts karma to run unit tests; watches for file changes
scripts/update - can be run after pulling in master to get latest dependencies

Contributor guidelines look solid. Scripts aren't working for me at the moment, probably as a result of a poor wifi connection; I'll try them again this evening and update.

For the most part, everything looks good!

Scripts run fine. LGTM.


Add site navigation (navbar, back buttons, sitemap etc)

The website currently does not have a navbar. Additionally, when the user enters a section of the site, for example, Analyze Resume, there is no in-site way to return to the previous page. The user instead has to either use the browser back button or press the WolfTrack logo to go all the way back.

Created a navbar with a link to Dashboard (on clicking WolfTrack logo), Analyze Resume and Recommend Jobs which appears uniformly throughout the application.


Transpile config

Similar to ngc config, transpile or tsc should also have a config.
Reason being is that I have a generic tsconfig.json however when running the transpile from ionic app scripts its being files that shouldn't be picked.
Proving something similar to the ngc config would solve the issue.

So you want the ability to override this is what you're saying?
Thanks,
Dan

Yeah, provide a sort of custom tsconfig either path or options
On Thu, 10 Nov 2016 at 22:31, Dan Bucholtz<EMAIL_ADDRESS>wrote:

So you want the ability to override this is what you're saying?
Thanks,
Dan
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/driftyco/ionic-app-scripts/issues/333#issuecomment-259813342,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQv-Wp5iVFFVySo4EHSw37Fi19juGUgvks5q840qgaJpZM4Ks4XX
.

If it make sense for other people as well that is
On Thu, 10 Nov 2016 at 22:54, Alan Agius<EMAIL_ADDRESS>wrote:

Yeah, provide a sort of custom tsconfig either path or options
On Thu, 10 Nov 2016 at 22:31, Dan Bucholtz<EMAIL_ADDRESS>wrote:
So you want the ability to override this is what you're saying?
Thanks,
Dan
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/driftyco/ionic-app-scripts/issues/333#issuecomment-259813342,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AQv-Wp5iVFFVySo4EHSw37Fi19juGUgvks5q840qgaJpZM4Ks4XX
.

@alan-agius4,
I don't think we intend on implementing this. You can pass in a custom tsconfig.json in some cases that may resolve some challenges that you're experiencing. It's worth a shot.
Thanks,
Dan


electron refactor symlink and webpack

Working on a overhauled concept of the approach the seed has for building electron.
As awesome as this seed is, I feel the electron aspect is in need of some attention, hopefully fully embracing electron's capabilities and simplifying the development process while sharing code base.
I'm attempting to take a similar approach to Electron as was done with Nativescript implementation, as electron is web technology on the desktop, electron is not the web, hopefully this opens things up and makes it easier.
Any help, advice, or insight is most welcome.
I've "speculated" a checklist in an issue on the fork here.

This is very smart @Kaffiend 👍 👍 👍
I've always strived to keep it in with web for simplicity but it deserves it own place amongst the platform players to make it truly scalable. As long as code sharing is maximized is the end goal.

failed because the webpack build expects the stylesheets in the component to be the same as the actual file, not the output file type of CSS after compilation. Going to need to write a helper or custom loader...maybe

@Kaffiend looks like the build has passed - what are your thoughts on this at the moment?

@NathanWalker the build passed but its not ready yet. I need to find some time to get to the last build task and try to understand the custom loader a little better, didnt get to spend much time on it this weekend. The loader is my current obstacle.

Totally understand, loader can be tricky - great effort here.

I havent forgotten about this, just not much time of late. Any help would be much appreciated.


Read SQEs appear to be processed in the reverse order

I only have access to 6.5 kernel and liburing 2.4. Apologies if this issue has already been fixed in a later release.
When I queue a bunch of read SQEs to an NVME, they appear to be "processed" in the reverse order. I understand that this is an async API and there are no guarantees on the order in which operations complete, but on average I would expect that an operation that is queued first is also more likely to complete first.
Two scenarios demonstrated by the code below:

Submitting 100 sequential reads to a file. These are coalesced and processed atomically, but the CQEs always come back in reverse order (i.e. 99, 98, ... 0). I would expect the order to be 0 ... 99.

100 reads that are a few blocks apart:  (int request_spacing = 4096 * 3). These are not coalesced. These always complete starting from the last submitted SQEs:

cqe: 86
cqe: 87
cqe: 88
cqe: 89
cqe: 90
cqe: 91
cqe: 92
cqe: 93
cqe: 94
cqe: 95
cqe: 96
cqe: 97
cqe: 98
cqe: 99
The code for both cases (triggerable by request_spacing) is attached.
// dd if=/dev/zero of=test.dat bs=1M count=1
// gcc -o read_order read_order.cc -luring
// ./read_order

#include <stdio.h>
#include <string.h>
#include <fcntl.h>
#include <stdlib.h>

#include "liburing.h"

int main() {
  struct io_uring ring;

  if (io_uring_queue_init(128, &ring, 0 /* flags */) != 0) {
    perror("io_uring_queue_init");
    exit(1);
  }

  int fd = open("test.dat", O_RDONLY | O_DIRECT, 0644);

  if (fd < 0) {
    perror("Run dd if=/dev/zero of=test.dat bs=1M count=1");
    exit(1);
  }

  char* buffer = (char*) aligned_alloc(4096, 128 * 4096);

  if (!buffer) {
    perror("aligned_alloc");
    exit(1);
  }

  // Prepare read requests
  // int request_spacing = 4096;
  int request_spacing = 4096 * 3;  // for non-sequential reads
  int num_requests = 100;

  struct io_uring_sqe *sqe;

  for (int i = 0; i < num_requests; i++) {
    sqe = io_uring_get_sqe(&ring);
    if (!sqe) {
      perror("io_uring_get_sqe");
      exit(1);
    }
    io_uring_prep_read(sqe, fd, buffer + 4096 * i,
                       4096 /* size */,
                       request_spacing * i /* file offset */);
    io_uring_sqe_set_data64(sqe, i);
  }

  // Submit requests and reap completions
  if (io_uring_submit_and_wait(&ring, 1) < 0) {
    perror("io_uring_submit_and_wait");
    exit(1);
  }

  struct io_uring_cqe *cqe;
  unsigned head;
  unsigned i = 0;

  io_uring_for_each_cqe(&ring, head, cqe) {
    printf("cqe: %lld\n", cqe->user_data);
    i++;
  }

  io_uring_cq_advance(&ring, i);

  io_uring_queue_exit(&ring);

  close(fd);
  free(buffer);

  return 0;
}

This is due to how completions are handled. It's just the posting of ring completions that can get reversed, depending on timing. Doesn't mean they are issued out-of-order (and in fact if they were, your coalescing problem would not have occurred).

If it's only the completions that are reversed, wouldn't I be more likely to see completions for requests 0..10 than 89..99 in the second case with request_spacing = 4096 * 3?

It depends on the frequency of which they come in, some of them are likely batched by the drive as they complete at the same time. I can absolutely guarantee you that it's only CQE posting that may be reversed. You can check if blktrace if you wish.
Since the sq side is a ring as well, they can only be retrieved and issued in the order in which they were added. Generally things will either complete or queue inline, for some cases we can punt to io-wq if we can't non-blocking issue. For those cases, issue may be reordered as well. But I'd be surprised if that's the case in your case. For O_DIRECT, everything should issue inline unless you run out of requests on the given nvme queue, and you'd need more pending IO for that to happen.

Thank you for the explanation. I will close for now and will reopen if I see any firm evidence that anything is submitted out of order.
I came across https://github.com/torvalds/linux/commit/34e0a279a993debaff03158fc2fbf6a00c093643, but I am guessing my 6.5 kernel already contains the patch.

Not super familiar with blktrace, but it does appear that requests are actually sent in reverse order to the driver:
259,0    4      310     0.000456102  3396  G   R 546690944 + 8 [read_order]
259,0    4      312     0.000460408  3396  Q   R 546690968 + 8 [read_order]
259,0    4      313     0.000460903  3396  G   R 546690968 + 8 [read_order]
259,0    4      315     0.000464757  3396  Q   R 546690992 + 8 [read_order]
259,0    4      316     0.000465256  3396  G   R 546690992 + 8 [read_order]
259,0    4      318     0.000469170  3396  Q   R 546691016 + 8 [read_order]
259,0    4      319     0.000469664  3396  G   R 546691016 + 8 [read_order]
259,0    4      321     0.000473531  3396  Q   R 546691040 + 8 [read_order]
259,0    4      322     0.000474020  3396  G   R 546691040 + 8 [read_order]
259,0    4      324     0.000478126  3396  Q   R 546691064 + 8 [read_order]
259,0    4      325     0.000478623  3396  G   R 546691064 + 8 [read_order]
259,0    4      326     0.000496487  3396  D   R 546691064 + 8 [read_order]
259,0    4      327     0.000496860  3396  D   R 546691040 + 8 [read_order]
259,0    4      328     0.000497142  3396  D   R 546691016 + 8 [read_order]
259,0    4      329     0.000497419  3396  D   R 546690992 + 8 [read_order]
259,0    4      330     0.000497685  3396  D   R 546690968 + 8 [read_order]
259,0    4      331     0.000497961  3396  D   R 546690944 + 8 [read_order]
259,0    4      332     0.000498224  3396  D   R 546690920 + 8 [read_order]
Note how the G and Q events (queuing) are in increasing order, while the D events are in decreasing order.
From the man page:
D  ‐‐ issued A request that previously resided on the block layer queue
or in the i/o scheduler has been sent to the driver.
Do I read this wrong? This is the read_order code above with request_spacing = 4096 * 3.

Here's a full trace on the current kernel: https://pastebin.com/icfMDfhx
I didn't dive into this yet, but an nvme device has a hook for dispatching a plug list directly. What happens when you queue a lot of IO is that a local per-task plug context is used, and the block layer adds requests to that. When it reaches a certain length, we flush it out before adding a new one. You can see that when user_data 0x20 is queued, that's 32 plugs in there already, and we push them out and you get a bunch of issue trace points. Since nvme is generally flash and doesn't care about ordering, they are dispatched in the opposite order in that plug. The commit you found is for drivers that don't have a queue_list handler.
That is just the issue side, completions come in in the order listed. The first completion we see is user_data 0x56 in that trace. As mentioned, this is processed via task_work, which again is also a LIFO list.

As always, thank you for your thorough and patient explanation.
Mind me asking what flags you used for that trace? It's a lot more readable than the default blktrace output.
I wonder why the kernel folks fixed ordering for drivers that don't have a queue_list handler but not for nvme. It's not completely true that flash doesn't care about ordering -- there is a lot of parallelism, but if some requests happen to land on the same die, they will be queued internally. Ideally, the order specified by the user should be respected all the way to the SSD, and no reversals should happen even within a plug.
Also, from a user's perspective, it would be best (at least most intuitive) if completions were returned in the order they came from the SSD. Have you considered using something like a ring buffer instead of a LIFO list for task_work?

Mind me asking what flags you used for that trace? It's a lot more readable than the default blktrace output.

Basically just turned on tracing for block and io_uring:
# echo 1 > /sys/kernel/debug/tracing/events/io_uring/enable
# echo 1 > /sys/kernel/debug/tracing/events/block/enable
[...]
run workload
cat /sys/kernel/debug/trace

I agree that nvme doesn't necessarily not care about ordering at all, but given that the re-ordering is only within a limited scope of the IO, probably not a huge concern. At least I haven't had anyone complain about it!
I also agree that it'd be nice to not necessarily reorder unnecessarily, it's only really done because of the data structures used. It's hard to do a lockless list that isn't LIFO. As completions reorder naturally with an async API anyway, I don't think it's a big deal. It's only if you start pondering about issue ordering that you would really notice or pay attention to it, and perhaps question what is going on.

It's just that the type of people who use io_uring are more likely to care more about every last bit of performance. Sure, executing a batch of 32 requests on an SSD in reverse order isn't a huge deal, but if the fix is as simple as replacing rq_list_add() with rq_list_add_tail() as was done in https://github.com/torvalds/linux/commit/34e0a279a993debaff03158fc2fbf6a00c093643, perhaps worth the trouble?

We can't just use rq_list_add_tail(), that only works within the scope of that single function as it does all the list manipulation there. We could obviously add a list tail pointer instead and do it, at the cost of storing an extra pointer in the plug. Not sure that's worth it. One of the goals of sending a list of requests to issue on the nvme side is that we can fill in all the command slots, then ring the SQ doorbell on that side for the device to start them. So while we add them in the reverse order, the device gets all of them available at the same time anyway.

The device gets all of them available at the same time, but it will still prioritize earlier requests if there is a contention.
As I am not familiar with the code where request reversal happens, I will defer to your judgement that the cost may not be worth the benefit of keeping the requests in order. Closing the issue.

You could do something like this:
diff --git a/block/blk-core.c b/block/blk-core.c
index fdf25b8d6e78..8a71b3ac1aca 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -1050,6 +1050,7 @@ void blk_start_plug_nr_ios(struct blk_plug *plug, unsigned short nr_ios)
 		return;

 	plug->mq_list = NULL;
+	plug->mq_list_last = NULL;
 	plug->cached_rq = NULL;
 	plug->nr_ios = min_t(unsigned short, nr_ios, BLK_MAX_REQUEST_COUNT);
 	plug->rq_count = 0;
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 900c1be1fee1..bb0a18068ffb 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -1284,7 +1284,7 @@ static inline unsigned short blk_plug_max_rq_count(struct blk_plug *plug)

 static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq)
 {
-	struct request *last = rq_list_peek(&plug->mq_list);
+	struct request *last = plug->mq_list_last;

 	if (!plug->rq_count) {
 		trace_block_plug(rq->q);
@@ -1304,8 +1304,14 @@ static void blk_add_rq_to_plug(struct blk_plug *plug, struct request *rq)
 	 */
 	if (!plug->has_elevator && (rq->rq_flags & RQF_SCHED_TAGS))
 		plug->has_elevator = true;
+
 	rq->rq_next = NULL;
-	rq_list_add(&plug->mq_list, rq);
+	if (plug->mq_list_last) {
+		plug->mq_list_last->rq_next = rq;
+		plug->mq_list_last = rq;
+	} else {
+		plug->mq_list = plug->mq_list_last = rq;
+	}
 	plug->rq_count++;
 }

@@ -2760,6 +2766,8 @@ void blk_mq_flush_plug_list(struct blk_plug *plug, bool from_schedule)
 {
 	struct request *rq;

+	plug->mq_list_last = NULL;
+
 	/*
 	 * We may have been called recursively midway through handling
 	 * plug->mq_list via a schedule() in the driver's queue_rq() callback.
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h
index 51fa7ffdee83..dfcdda3a95a9 100644
--- a/include/linux/blkdev.h
+++ b/include/linux/blkdev.h
@@ -962,6 +962,7 @@ void blk_mark_disk_dead(struct gendisk *disk);
  */
 struct blk_plug {
 	struct request *mq_list; /* blk-mq requests */
+	struct request *mq_list_last;

 	/* if ios_left is > 1, we can batch tag/rq allocations */
 	struct request *cached_rq;

Thank you for doing this. It would be awesome if this patch could make it into the kernel.

This is a bit out of my depth but couldn't you use mq_lastp / rq_list_add_tail() for consistency with the other fix?

Yeah you could use that helper for this case too. The downside here, imho, isn't as much the added 8 bytes or the conditional branch that we now have, it's that we have to pull in the cacheline of the previous request when adding the next one. That's rather unfortunate...
Probably won't pursue this any further until such time where we have rotational drives on nvme or similar, unless other reasons pop up.

https://www.neowin.net/news/ocp-22-worlds-first-seagate-nvme-20-hard-disk-hdd-is-now-in-flesh-and-blood/
:)

Oh I know, this is why I brought it up. But so far I haven't seen any in production, and until that happens, it's just vapor ware imho.


layer-shell: remove unused surface list

This was rendered useless in 5cde359.

This is a breaking change, e.g. Sway uses it:
sway/desktop/output.c
438:	wl_list_for_each(wlr_layer_surface_v1, &server.layer_shell->surfaces, link) {

Didn't realize that this is in use by sway, but sway also stores its own lists of layer surfaces per output so this is duplicated state. This loop should be written as
diff --git a/sway/desktop/output.c b/sway/desktop/output.c
index 2a2e332a..19b6df84 100644
--- a/sway/desktop/output.c
+++ b/sway/desktop/output.c
@@ -434,18 +434,9 @@ struct sway_workspace *output_get_active_workspace(struct sway_output *output) {
 }

 bool output_has_opaque_overlay_layer_surface(struct sway_output *output) {
-       struct wlr_layer_surface_v1 *wlr_layer_surface_v1;
-       wl_list_for_each(wlr_layer_surface_v1, &server.layer_shell->surfaces, link) {
-               if (wlr_layer_surface_v1->output != output->wlr_output ||
-                               wlr_layer_surface_v1->current.layer != ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY) {
-                       continue;
-               }
-               struct wlr_surface *wlr_surface = wlr_layer_surface_v1->surface;
-               struct sway_layer_surface *sway_layer_surface =
-                       layer_from_wlr_layer_surface_v1(wlr_layer_surface_v1);
-               if (sway_layer_surface == NULL) {
-                       continue;
-               }
+       struct sway_layer_surface *sway_layer_surface;
+       wl_list_for_each(sway_layer_surface, &output->layers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY], link) {
+               struct wlr_surface *wlr_surface = sway_layer_surface->layer_surface->surface;
                pixman_box32_t output_box = {
                        .x2 = output->width,
                        .y2 = output->height,

Would be happy to send this patch to sway if you like.

 Please do :)


update requirement module to new API

Hello @weibullguy! Thanks for opening this PR. We checked the lines you've touched for PEP 8 issues, and found:

In the file src/ramstk/controllers/requirement/datamanager.py:

Line 144:80: E501 line too long (88 > 79 characters)


Storing wellplate state

It might be helpful to maintain a data structure of the available wells in each well plate so that we don't have to manually specify which destination wells to use during a search strategy.
This could be abstracted with a WellPlate data structure.
The search agent could run until all the wells are full and then pause for human input. Someone could clear the well plates, add more, and then communicate this to the agent via an input handler.

This would also be enhanced by some type of self-monitoring system and cell manipulation tool like we talked about the other day.
As a side note, is there a way to stop the protocol at some point? Say we reached the goal, it seems wasteful to continue the search, so is there some way of stopping a protocol mid execution?

Yes, that can be done. The way it's currently setup in the grid search example, each "experiment" requires a unique call of opentrons_execute. So the search strategy generates new "experiments" as it goes and runs each sequentially, meaning that it could be stopped at any time by some convergence criteria logic (or a simple ^C of the search program). Also, it might not be difficult for a human to interact with the search strategy by suggesting experiments via config files mid way through a search.


[Cognitive] Adding azure-core as dependency of Cognitive SDK and use Uuid from azure-core

Use CMake fetchcontent to pull azure-core 1.2 (latest GA) on project generation
Use Uuid on Carbon PAL.

On feature branch already


Clarify that __vectorcall is still decorated in x64

@nbdd0121 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@corob-msft : Thanks for your contribution! The author(s) have been notified to review your proposed change.


fix unexcepted exception when $regex meets non-string

fix #201

Thank you for the fix and sorry for the delayed response from my side!


Handle Javascript confirm()

At the moment, Javascript confirm() pops up an actual window. We should just confirm by default, which is what capybara-webkit does. This requires PhantomJS to support confirm(), bug here: http://code.google.com/p/phantomjs/issues/detail?id=350

This can actually be handled without upstream changes, as we can just overwrite window.confirm on page initialization.


[Details Nerdlet] Display the Documentation details for packs under the "Data source" tab

Description
Once the Data source tab is added to the Details Nerdlet as part of #134, if any new documentation info is available populate that data in the tab. This data should come from the config.yml:
documentation:
  - name: AWS RDS installation docs
    description: This is a description
    url: https://docs.newrelic.com/docs/integrations/amazon-integrations/aws-integrations-list/aws-rds-monitoring-integration

This should be a Tile component showing the

name parameter as title of the tile
description field as other content in the tile
Link to the url when clicked.

In future packs may have multiple references to documentation, so ensure that we account for this when displaying content in the tab.
NOTE: the design image shows this tile under Overview tab, but it should be under Data sources

Acceptance Criteria

[ ] Populate the Data sources tab with the documentation reference defined in the pack.
[ ] Support multiple documentation links for packs with many doc references.

@jpvajda We display a sort of "category" for each component at the bottom of the tile.

Do we want to add a "documentation" category to it?

I don't think we should do anything with pack categories or keywords until we work that scope out.. it's something we are doing this week.


[ENTRY] a

Dictionary entry
For making new dictionary entries or updating existing ones. Please use one of these for each term. Do not use more than one term for each request.

Japanese:
(If the term is of Japanese origin, please enter the original writing in kanji and/or kana.)
IPA:
(Insert the phonetic transcription here. You may use https://tophonetics.com/ (for American English) or https://shioya.fr/transcription_jp.html (for Japanese) to create it, and then http://ipa-reader.xyz/ to test it.)
Definition:
(Insert definition here.)
Additional media:
(Insert any additional media or materials such as images, YouTube videos or tweets that may be beneficial to explaining the term.)
Sources:
(Insert any links to sources you used to create this definition.)

Lexical category:
noun

IPA:
ɑ

Sources:

https://hololive.wiki/wiki/Gawr_Gura
https://virtualyoutuber.fandom.com/wiki/Gawr_Gura
https://twitter.com/gawrgura/status/1303528216494092288
https://youtube.com/clip/Ugx7ui0yGp0xQPoOp7d4AaABCQ

Definition:
a.
Famous for being Gawr Gura's verbal tic, as she has used the letter as her first tweet and her first word during her debut stream.


Support Mod

This is a request for the future....
Today I saw this....
https://github.com/jhalme/webaudio-mod-player
....so freakn cool!!!
If he lives up to his name then Im sure @8BitZtuner would like it ;)
Havent looked at it really, just the demo so could be a huge hassle... just thought Id mention it.

Is there still no interest in adding an input plugin system?

@pinobatch I think I'm more open to this now. If you have a specific idea, go ahead and open a new issue and we can discuss it there.


Update JDK distro used in CI

@dimafeng Let's begin by just updating this and see if tests still pass

Started the build. I'll merge it in the morning if it passes

@dimafeng It passed. First good news :)


fix unclosed div in readme's FixedSizeGrid example

This looks like a promising project! The grid example in the readme has some issues though. Besides the unclosed div inside , the variables isScrolling, rowIndex and columnIndex are undefined.

Thank you, I'll fix the example


update decimals on time in inventory and other tidying up

Update the inventory maker so that time is always of the format HH:MM:SS rather than including milliseconds/microseconds when they are specified.
While I was there I also:

Made the restrictions on packages in requirements_dev.txt less strict
disabled the conda environment build for the docs and replaced with pip install which is quicker

While I was there I also:
* Made the restrictions on packages in requirements_dev.txt less strict

* disabled the conda environment build for the docs and replaced with pip install which is quicker

👍

Update the inventory maker so that time is always of the format HH:MM:SS rather than including milliseconds/microseconds when they are specified.

I can not say ... I think it is reasonable. Would this solve one the issues James raised?

I can not say ... I think it is reasonable. Would this solve one the issues James raised?

Yep this will solve the trailing decimals on some of the time limits :)


Add NetworkPolicy to allow Istio to run on a secure Kubernetes Platform

Describe the feature request
On a secure Kubernetes Platform all ingress connections are dropped by default.
To guarantee istio to run properly in this case we need one "allow all" NetworkPolicy or several
fine-grained policies.
Describe alternatives you've considered
Workaround we applied
To allow all traffic we added the following NetworkPolicy.
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: istio-allow-all
  namespace: istio-system
spec:
  podSelector: {}
  ingress:
    - {}
  policyTypes:
    - Ingress

Affected product area (please put an X in all that apply)
[x] Configuration Infrastructure
[ ] Docs
[x] Installation
[x] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[x] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Additional context

I am not sure what you are asking are you suggesting we add a network policy to the default installation?

My suggestion is to add a parameter to the Helm Chart, e.g. networkpolicy.enabled.

This doesn't seem like something we need in our helm chart . I just checked and nginx ingress doesn't do this either.

We want to avoid adding every single possible option to the install - your alternative of applying your own network policy sounds like a good alternative

@howardjohn
We're only deploying a default deny Policy to enforce the best-practice of using NetworkPolicy. But the same problem arises when somebody tries to deploy any NetworkPolicy in the istio-system namespace, because all other communication is then blocked. It's not only about Istio Ingress it's primarily about istio-system.
It would be nice from a security standpoint to have pre-defined correct NetworkPolicies which define which Istio components communicate with which other Istio components. If this requirement is not mainstream enough to implement in the official Helm Chart, it's absolutely possible to just add them by ourselves.

@duderino @howardjohn I think this is a design issue - should Istio apply a default Network policy and specify which Ingress/Egress traffic is allowed? And let users customise the Network policy if needed. Alternatively, the approach could be that it is up to the Istio users to define all the Network policies in their cluster. Yet another approach could be just to document a recommended Network Policy for Istio-system, and let the users apply it.
An example of a documented Kubernetes Network Policy for egress traffic is https://istio.io/docs/tasks/traffic-management/egress/egress-gateway/#apply-kubernetes-network-policies

I recommend we follow what other projects do, which I think is to not include a default network policy. We should have a lot of documentation and examples, but it doesn't seem like the thing we should be installing by default unless other projects are doing the same

@howardjohn So should anything be done with this issue or it can be closed?

@vadimeisenbergibm I think you can close the issue.


Tools for splitting large csv file with python

this tool created for help us to access large csv file with splitting the file into a couple of csv file


Fix shelljs compatibility with esbuild bundler

Summary
Fixes https://github.com/shelljs/shelljs/issues/1160

Add explicit file extension to dynamic command import.
This call to require() is dynamic and does not add the file extension.
Esbuild resolves files with their explicit file extension (eg './src/cat.js').
Esbuild automatically adds .js extension in imports when not present but can't modify dynamic imports. For dynamic imports, file extension needs to be explicitly specified prior to bundling.

Test
Here is a script to reproduce (to be run in the repository root):
# Prepare
rm -rf test-esbuild && mkdir test-esbuild && cd test-esbuild
npm init --yes
echo "console.log(require('../shell.js').pwd().stdout && '\n OK');" > index.js
npm i -D esbuild

# Run
npx esbuild --platform=node --bundle index.js --outfile=out.js; node out.js

In the current master branch of this repository:
  out.js  230.5kb

⚡ Done in 10ms
/.../shelljs/test-esbuild/out.js:5
  throw new Error("Module not found in bundle: " + path);
  ^

Error: Module not found in bundle: ./src/cat
    at /.../

Node.js v20.3.1

In this branch
  out.js  230.5kb

⚡ Done in 9ms

 OK

The bundle size doesn't change because all deps are already in the bundle, it's a resolution issue, as discussed in https://github.com/shelljs/shelljs/issues/1160

Have you tested this change on other bundlers? I'm not familiar with the current state of bundlers in the community. Is esbuild a popular one?

Have you tested this change on other bundlers?

I've tested:

esbuild (37.5K stars, 31M weekly downloads)
rollup (24.9K stars, 22.3M weekly downloads)
@vercel/ncc (9K stars, 0.4M weekly downloads)

rollup
With rollup it doesn't work, but you can tweak options so that these imports are treated dynamically (dynamicRequireTargets).

 Reproducer
// rollup.config.js
var commonjs = require('@rollup/plugin-commonjs');
var nodeResolve = require('@rollup/plugin-node-resolve').nodeResolve;

module.exports = {
  input: 'index.js',
  output: {
    file: 'out.js',
    format: 'cjs',
  },
  plugins: [commonjs({
    dynamicRequireTargets: [
      'node_modules/shelljs/src/*.js',
    ],
  }), nodeResolve()],
};

// index.js
var shelljs = require('shelljs');

console.log(shelljs.pwd().stdout && '\n OK');

// bash
//$ npx rollup -c rollup.config.js

ncc
With ncc it works out of the box because ncc assumes the require could be called without the .js extension as well

 Reproducer

esbuild
See https://github.com/shelljs/shelljs/issues/1160

Hello @nfischer , is there anything I can do more to help make this change go through?

Would also love to get this in.shelljs is very useful for github actions

I am also highly interested in this, shelljs would be a lot more useful if it could be bundled! @nfischer

I tried the fix proposed here, but it did not work in my setup with esbuild. However, just manually writing the require statements works for me (even though it is not so elegant):
https://github.com/AlexanderLill/shelljs/compare/master...esbuild-fix

I have the same issue. It's very common to use esbuild to bundle VSCode extensions. Is there any plan to merge it? Thanks!


unpublished imported courses are not deleted

Steps to Reproduce
Import a course using import_ocw_course_sites and then subsequently unpublish the course and re-import it
Expected Behavior
The unpublished course has its Website object (and other foreign keyed objects like WebsiteContent, ContentSyncState) deleted
Actual Behavior
The Website and all its content are not deleted

Re-opening as this had to be addressed again after the original PR that resolved it was reverted.


TryHackMe Task 2 Option 1.

Hi,
I'm just blindly following your documentation and I'm having trouble on the second task.
ubuntu@deepce:~$ docker cp /opt/deepce/deepce.sh alpine-container_name:/
ubuntu@deepce:~$ docker alpine-container_name exec /deepce.sh
docker: 'alpine-container_name' is not a docker command.
See 'docker --help'
ubuntu@deepce:~$

What am I doing wrong??
I know alpine-container_name Isn't the same. I changed it because I didn't want to give away an answer.

it should be docker exec alpine-container_name /deepce.sh, thanks!


⚠ Bofrost.be has degraded performance

In 85ab7e9, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 946 ms

Resolved: Bofrost.be performance has improved in c889b23 after 8 minutes.


Error creating local terminal

Create New Integrated Terminal (Local) while connected to a dev container fails with:

The local path in macOS is /bin/zsh. Only insider the container is the path /usr/bin/zsh. 🤔
Version: 1.73.0-insider (Universal)
Commit: 9ad069358e9f09d1f49a90db36b73c953505438a
Date: 2022-10-27T08:46:34.216Z
Electron: 19.0.17
Chromium: 102.0.5005.167
Node.js: 16.14.2
V8: <IP_ADDRESS>-electron.0
OS: Darwin arm64 21.6.0
Sandboxed: Yes

It works in another dev container that does not have zsh installed.

can you run cat /etc/shells?

This issue has been closed automatically because it needs more information and has not had recent activity. See also our issue reporting guidelines.
Happy Coding!

I've been running into this as well (workbench.action.terminal.newLocal fails with The terminal process failed to launch: Path to shell executable "/usr/bin/zsh" does not exist.).
I went down a rabbit hole thinking that /usr/bin/zsh had somehow disappeared from my device... only to confirm that /usr/bin/zsh isn't supposed to exist on macOS and /bin/zsh is the default shell.
@meganrogge here's the output you asked for
$ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

Works fine on non-insiders build (I'm using a custom company provided wrapper around vscode in order to connect to a remote server, so dumping about information may not be very useful... it says Version: 1.63.2022103101), so this smells like a regression to me.
Can we reopen this issue? Or should I file a new one?

https://github.com/microsoft/vscode/issues/146040#issuecomment-1217060811, https://github.com/microsoft/vscode/issues/150483, https://github.com/microsoft/vscode/issues/146369 seems to be about the same issue

We are seeing this as well.  A few data points
It appears that the shell changes in vscode compared to a regular ssh terminal
In my ssh terminal, I have "/bin" in my path, but within the vscode integrated terminal, it's not there.
So, when walking the path within findExecutable() in terminalEnvironment.ts, the remote machine finds /usr/bin/zsh.  However when trying to open a LOCAL terminal, it's doing the PATH evaluation on the REMOTE server.
So, for one, if /bin was in the path first like it is from ssh, it would find /bin/zsh and then it would work (since the mac also has it as /bin/zsh).
But more importantly, the PATH check should happen on the local side to see where the path to the shell on the local machine is, since that's where the terminal is being opened.
I've not found why the environment is changed within the process space yet to remove /bin from the env.  And architecturally I'm not sure how to move this check from the remote side to the client side before launching the terminal.


OLINGO-567 odata.metadata=full support

based on 4.2.0 and on Kevin's pull request #5

Thank you so much for the pull request, without knowing this I also have worked on same, and it is represented with this https://github.com/apache/olingo-odata4/commit/15b6fa0d852747db5ffdbc99f89b76cd0c6a8361
If you want to review that, and pull locally and verify with your application, then I will go ahead and commit my version of it, and close this one out. Mine goes little more deeper with fixing the stream type metadata and method metadata which are also part of the metadata=full

Thanks. Verified with my application. Closing this pull request. Looking forward to get your changes with the upcoming version.

Thanks.  Will get it into 4.3 very soon.


Executing getFieldValue in a helper that is setting a field value fails if the form also contains a datetimepicker

<input type="text" class="form-control" value={{clientName}} disabled>
refers to helper clientName, which itself uses AutoForm to read the value for a different part of the form:
var clientId=AutoForm.getFieldValue("client_");
but this errors because a different field on the form uses datetimepicker and has yet to be rendered:

Exception in template helper: TypeError: Cannot read property 'getDate' of undefined
at AutoForm.addInputType.valueOut (http://<IP_ADDRESS>:3000/packages/aldeed_autoform-bs-datetimepicker.js?11323374fa5ee2f1f864b4cb66a6df51cfbb2cd3:88:40)
at Object.autoFormGetInputValue [as getInputValue] (http://<IP_ADDRESS>:3000/packages/aldeed_autoform.js?b3aa1a45a8c57d1da1124520538d2cb9fa458509:2277:28)
at HTMLInputElement. (http://<IP_ADDRESS>:3000/packages/aldeed_autoform.js?b3aa1a45a8c57d1da1124520538d2cb9fa458509:1515:35)
at Function.jQuery.extend.each (http://<IP_ADDRESS>:3000/packages/jquery.js?1015953f785c9b76503e2ecb391507dce965f357:410:23)
at jQuery.fn.jQuery.each (http://<IP_ADDRESS>:3000/packages/jquery.js?1015953f785c9b76503e2ecb391507dce965f357:162:17)
at getFlatDocOfFieldValues (http://<IP_ADDRESS>:3000/packages/aldeed_autoform.js?b3aa1a45a8c57d1da1124520538d2cb9fa458509:1514:10)
at Object.autoFormGetFormValues [as getFormValues] (http://<IP_ADDRESS>:3000/packages/aldeed_autoform.js?b3aa1a45a8c57d1da1124520538d2cb9fa458509:2075:11)
at Object.autoFormGetFieldValue [as getFieldValue] (http://<IP_ADDRESS>:3000/packages/aldeed_autoform.js?b3aa1a45a8c57d1da1124520538d2cb9fa458509:2190:22)
at Object.Template.enquiry.helpers.clientName (http://<IP_ADDRESS>:3000/app/client/templates/enquiry.js?86f4df7bd2ea3a3859664207f73105e6a10d405b:39:33)
at http://<IP_ADDRESS>:3000/packages/blaze.js?9391df93ba5076c2cfc61ee68724eb79b65f00d9:2986:16

Hey @puddicombe,
Did you find a solution to this issue?
Thanks


No visible @interface for TMAPIClient declares the selector 'handleOpenURL:'

I'm trying to follow the tutorial to use the SDK.
I'm following the steps, installed the SDK via pods, imported the header <TMTumblrSDK/TMAPIClient.h>.
When I try to insert the URL handling code:
    return [[TMAPIClient sharedInstance] handleOpenURL:url];
I'm getting an error indicating the interface doesn't declare the method.
What am I doing wrong?
I'm on latest iOS SDK + Xcode 8.3.

I see the method is encapsulated in an #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ directive along with authentication method too. I'm sure those methods are to be called from an iOS app too (it has references to UIApplicationDelegate which is only available on iOS).
What am I doing wrong?

The method is encapsulated in #ifdef __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__, which makes it available only on iOS platforms. I recommend checking your build settings to ensure you’re building an iOS target.

Hello @paulrehkugler
I am building for an iOS target. I've installed the SDK using Pods and there are 30+ other pods working perfectly.
The method is encapsulated in #ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ in my header, which I got from the pod 'TMTumblrSDK'. I haven't touched anything.

i am having the same issue

It appears that the latest release of the TMTumblrSDK pod is out of date – iOS-based authentication was merged in in August 2016, but the latest release of the pod (v4.0.4) came out in March 2016. Could someone on the Tumblr team package up a new release?
In the meantime, you can get the latest version of TMTumblrSDK by pointing your Podfile directly at the master branch of this repo:
pod 'TMTumblrSDK', git: 'https://github.com/tumblr/TMTumblrSDK.git'

Once you've done that, you should be able to call handleOpenURL on iOS.

Version 4.0.5 resolves this issue.