PublishQueueExtRK corrupted file

ok, I'm sort of able to reproduce.
Seems like it happens when the connection to the cloud is messed up with (example: a location is in progress, and this impacts the cloud connection as reported here).

here are the logs:

0000061349 [system] INFO: Cloud connected
0000061871 [app.pubq] INFO: queue files invalid magic 0xee341b1a /usr/pubqueue2/00000114.pq
0000061871 [app.pubq] INFO: invalid sizes dataSize=443900173 metaSize=13339 /usr/pubqueue2/00000114.pq
0000061872 [app.pubq] INFO: discarding corrupted file 114
0000062357 [app] INFO: Publishing events...
0000063857 [app] INFO: Publishing events...
0000065394 [app] INFO: Publishing events...
0000065922 [system] INFO: Cloud: disconnecting
0000065923 [system] INFO: Cloud: disconnected
0000066894 [app] INFO: Publishing events...
0000068394 [app] INFO: Publishing events...
0000069894 [app] INFO: Publishing events...
0000070922 [system] INFO: Cloud: connecting
0000070927 [system] INFO: Cloud socket connected
0000070927 [comm.protocol.handshake] INFO: Establish secure connection
0000070933 [comm.dtls] INFO: session has 0 uses
0000070949 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000070949 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,190, next_coap_id=299
0000070951 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=665
0000070951 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000071395 [comm.protocol.handshake] INFO: Skipping HELLO message
0000071396 [app] INFO: Publishing events...
0000071401 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000071401 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000071731 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000071833 [system] INFO: Cloud connected
0000072903 [app] INFO: Publishing events...
0000074403 [app] INFO: Publishing events...
0000075903 [app] INFO: Publishing events...
0000075904 [system] INFO: Cloud: disconnecting
0000075904 [system] INFO: Cloud: disconnected
0000076416 [wiring] ERROR: Failed to send event: -1001
0000077403 [app] INFO: Publishing events...
0000078903 [app] INFO: Publishing events...
0000080403 [app] INFO: Publishing events...
0000080954 [system] INFO: Cloud: connecting
0000080959 [system] INFO: Cloud socket connected
0000080959 [comm.protocol.handshake] INFO: Establish secure connection
0000080965 [comm.dtls] INFO: session has 0 uses
0000080981 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000080981 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,200, next_coap_id=2a2
0000080983 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=674
0000080983 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000081421 [comm.protocol.handshake] INFO: Skipping HELLO message
0000081427 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000081428 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000081792 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000081894 [system] INFO: Cloud connected
0000081903 [app] INFO: Publishing events...
0000082441 [app.pubq] INFO: queue files invalid magic 0xee341b1a /usr/pubqueue2/00000126.pq
0000082442 [app.pubq] INFO: invalid sizes dataSize=443900173 metaSize=13339 /usr/pubqueue2/00000126.pq
0000082443 [app.pubq] INFO: discarding corrupted file 126
0000083403 [app] INFO: Publishing events...
0000084903 [app] INFO: Publishing events...
0000085980 [system] INFO: Cloud: disconnecting
0000085982 [system] INFO: Cloud: disconnected
0000085983 [wiring] ERROR: Failed to send event: -1001
0000086403 [app] INFO: Publishing events...
0000087903 [app] INFO: Publishing events...
0000089403 [app] INFO: Publishing events...
0000090903 [app] INFO: Publishing events...
0000091481 [system] INFO: Cloud: connecting
0000091486 [system] INFO: Cloud socket connected
0000091486 [comm.protocol.handshake] INFO: Establish secure connection
0000091492 [comm.dtls] INFO: session has 0 uses
0000091508 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000091508 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,209, next_coap_id=2aa
0000091510 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=682
0000091510 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000091947 [comm.protocol.handshake] INFO: Skipping HELLO message
0000091953 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000091955 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000092287 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000092389 [system] INFO: Cloud connected
0000092403 [app] INFO: Publishing events...
0000092973 [app.pubq] INFO: queue files invalid magic 0x32313030 /usr/pubqueue2/00000131.pq
0000092974 [app.pubq] INFO: invalid sizes dataSize=909456435 metaSize=14391 /usr/pubqueue2/00000131.pq
0000092974 [app.pubq] INFO: discarding corrupted file 131
0000093979 [app] INFO: Publishing events...
0000095479 [app] INFO: Publishing events...
0000096510 [system] INFO: Cloud: disconnecting
0000096511 [system] INFO: Cloud: disconnected
0000096512 [wiring] ERROR: Failed to send event: -1001
0000096979 [app] INFO: Publishing events...
0000098479 [app] INFO: Publishing events...
0000099979 [app] INFO: Publishing events...
0000101479 [app] INFO: Publishing events...
0000101512 [system] INFO: Cloud: connecting
0000101574 [system] INFO: Cloud socket connected
0000101576 [comm.protocol.handshake] INFO: Establish secure connection
0000101582 [comm.dtls] INFO: session has 0 uses
0000101596 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000101598 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,219, next_coap_id=2b3
0000101599 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=691
0000101600 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000102112 [comm.protocol.handshake] INFO: Skipping HELLO message
0000102118 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000102118 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000102427 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000102530 [system] INFO: Cloud connected
0000102979 [app] INFO: Publishing events...
0000103567 [app.pubq] INFO: queue files invalid magic 0x32313030 /usr/pubqueue2/00000137.pq
0000103567 [app.pubq] INFO: invalid sizes dataSize=909456435 metaSize=14391 /usr/pubqueue2/00000137.pq
0000103568 [app.pubq] INFO: discarding corrupted file 137
0000104479 [app] INFO: Publishing events...
0000105979 [app] INFO: Publishing events...
0000106637 [system] INFO: Cloud: disconnecting
0000106638 [system] INFO: Cloud: disconnected
0000106732 [wiring] ERROR: Failed to send event: -1001
0000106733 [app.pubq] ERROR: published failed immediately, discarding
0000107479 [app] INFO: Publishing events...
0000108979 [app] INFO: Publishing events...
0000110479 [app] INFO: Publishing events...
0000111631 [system] INFO: Cloud: connecting
0000111636 [system] INFO: Cloud socket connected
0000111636 [comm.protocol.handshake] INFO: Establish secure connection
0000111642 [comm.dtls] INFO: session has 0 uses
0000111658 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000111660 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,227, next_coap_id=2ba
0000111660 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=698
0000111662 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000111979 [app] INFO: Publishing events...
0000112141 [comm.protocol.handshake] INFO: Skipping HELLO message
0000112147 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000112149 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000112548 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000112650 [system] INFO: Cloud connected
0000113479 [app] INFO: Publishing events...
0000114979 [app] INFO: Publishing events...
0000116479 [app] INFO: Publishing events...
0000117098 [system] INFO: Cloud: disconnecting
0000117099 [system] INFO: Cloud: disconnected
0000117979 [app] INFO: Publishing events...
0000119479 [app] INFO: Publishing events...
0000120979 [app] INFO: Publishing events...
0000122100 [system] INFO: Cloud: connecting
0000122105 [system] INFO: Cloud socket connected
0000122105 [comm.protocol.handshake] INFO: Establish secure connection
0000122111 [comm.dtls] INFO: session has 0 uses
0000122127 [comm.dtls] INFO: (CMPL,RENEG,NO_SESS,ERR) restoreStatus=0
0000122129 [comm.dtls] INFO: out_ctr 0,1,0,0,0,0,2,236, next_coap_id=2c2
0000122129 [comm.dtls] INFO: restored session from persisted session data. next_msg_id=706
0000122131 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 2
0000122479 [app] INFO: Publishing events...
0000122763 [comm.protocol.handshake] INFO: Skipping HELLO message
0000122769 [comm.protocol] INFO: Checksum has not changed; not sending application DESCRIBE
0000122770 [comm.protocol] INFO: Checksum has not changed; not sending subscriptions
0000123547 [comm.dtls] INFO: session cmd (CLS,DIS,MOV,LOD,SAV): 4
0000123649 [system] INFO: Cloud connected
0000123979 [app] INFO: Publishing events...
0000125479 [app] INFO: Publishing events...
0000127042 [app] INFO: Publishing events...
0000127728 [system] INFO: Cloud: disconnecting
0000127729 [system] INFO: Cloud: disconnected

and here's the firmware I'm using:


#include "Particle.h"
#include "PublishQueueExtRK.h"

SYSTEM_MODE(AUTOMATIC);
SerialLogHandler logHandler(LOG_LEVEL_INFO);

char configData[2049];

void fx_that_publishes_text_off_loop()
{
  const char *eventName = "test_event";
  const char data[1000] = "test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890test data 0123456789001234567890012345678900123456789001234567890012345678900123456789001234567890";
  PublishQueueExt::instance().publish(eventName, data);
}

void another_fx_that_publishes_a_variant_off_loop()
{
  memset(configData, 0, sizeof(configData));
  JSONBufferWriter writer(configData, sizeof(configData) - 1);

  writer.beginObject();

  writer.name("is").value(12345678);
  writer.name("ls").value(987654);
  writer.name("ll").value(123131);
  writer.name("lp").value(7897897);
  writer.name("f").value(456453645);
  writer.name("g").value(456453645);
  writer.name("h").value(456453645);
  writer.name("i").value(456453645);
  writer.name("j").value(456453645);
  writer.name("k").value(456453645);
  writer.name("lk").value(456453645);
  writer.name("m").value(456453645);
  writer.name("n").value(456453645);
  writer.name("o").value(456453645);
  writer.name("p").value(456453645);
  writer.name("q").value(456453645);
  writer.name("r").value(456453645);
  writer.name("s").value(456453645);
  writer.name("t").value(456453645);
  writer.name("u").value(456453645);

  writer.endObject();

  particle::Variant v = particle::Variant::fromJSON(configData);

  if (v.isNull())
  {
    Log.error("Failed to convert JSON to Variant: %s", configData);
    return;
  }

  PublishQueueExt::instance().publish("variant event", v, ContentType::BINARY);
}

void setup()
{
  waitFor(Serial.isConnected, 5000);
  delay(1000);
  PublishQueueExt::instance().setup();
  PublishQueueExt::instance().withFileQueueSize(20);
}

void loop()
{

  static uint32_t lastLogTime = 0;
  if (millis() - lastLogTime >= 1500)
  {
    lastLogTime = millis();
    Log.info("Publishing events...");
    fx_that_publishes_text_off_loop();
    another_fx_that_publishes_a_variant_off_loop();
  }

  static uint32_t lastLogTime2 = 0;
  if (millis() - lastLogTime2 >= 5000)
  {
    lastLogTime2 = millis();
    if (Particle.connected())
    {
      Particle.disconnect();
    }
    else
    {
      Particle.connect();
    }
  }

  PublishQueueExt::instance().loop();
}


Let me know if you are able to observe this issue on your side.
Thanks!