com.aws.greengrass.deployment.IotJobsHelper: Spamming 'greengrass.log' file

Describe the bug
The com.aws.greengrass.deployment.IotJobsHelper module generates very large volumes of repeated log messages, when logging verbosity options for the Nucleus component use the default/standard settings. This causes unnecessarily large log files with messages that do not provide information that needs to be repeated.
To Reproduce
Install the Greengrass Core software, and do at least one deployment.
Expected behavior
Messages should not be repeated unnecessarily.
Environment

OS: Ubuntu 18.04
JDK version:

openjdk version "11.0.14" 2022-01-18 LTS
OpenJDK Runtime Environment Corretto-<IP_ADDRESS>.1 (build 11.0.14+9-LTS)
OpenJDK 64-Bit Server VM Corretto-<IP_ADDRESS>.1 (build 11.0.14+9-LTS, mixed mode)

Nucleus version: 2.5.3

Additional context
Example of log file below:
$ sudo cat  /greengrass/v2/logs/greengrass.log

2022-02-02T08:47:43.263Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.297Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.334Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.376Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.413Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.449Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.484Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.519Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.561Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.596Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.635Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.672Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.708Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.749Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.784Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.820Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.855Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.891Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.927Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:43.963Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.040Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.074Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.111Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.144Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.178Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.214Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.249Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.283Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.319Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.356Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.395Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.432Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.467Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.503Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.539Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.573Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.610Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.646Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.682Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.718Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.754Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.789Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.828Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.867Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.906Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.942Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:44.979Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.014Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.053Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.088Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.127Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.163Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.203Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.238Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.278Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.313Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.346Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.381Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.418Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.454Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.490Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.532Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.628Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.716Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.751Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.791Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.827Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.863Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.903Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.939Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:45.976Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.013Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.048Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.084Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.122Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.160Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.195Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.232Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.267Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.303Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.339Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.372Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.407Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.444Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.479Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.515Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.550Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.586Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.620Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.660Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.696Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.730Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.765Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.801Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.836Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.871Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.909Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.948Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:46.983Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.022Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.058Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.093Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.129Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.166Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.202Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.238Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.276Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.312Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.348Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.384Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.425Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.459Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.495Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.530Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.567Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.603Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.639Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.676Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.715Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.752Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.789Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.824Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.861Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.900Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.938Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:47.977Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.012Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.047Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.084Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.119Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.154Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.188Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.223Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.258Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.293Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.328Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.363Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.402Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.437Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.471Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.509Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.550Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.586Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.621Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.656Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.692Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.727Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.762Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.798Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.833Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.867Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.902Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.939Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:48.976Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.014Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.050Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.085Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.122Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.157Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.192Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.227Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.263Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.299Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.333Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.374Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.409Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.444Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.481Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.519Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.559Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.595Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.631Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.665Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.703Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.737Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.774Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.811Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.847Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.886Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.922Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.955Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:49.993Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.030Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.067Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.105Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.142Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.176Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.209Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.241Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.278Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.314Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.350Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.389Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.426Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.459Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.497Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.547Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.585Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.621Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.656Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.694Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.731Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.765Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.802Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.836Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.870Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.906Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.943Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:50.979Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.012Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.050Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.088Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.123Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.162Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.198Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.234Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.270Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.305Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.340Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.376Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.411Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.448Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.483Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.522Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.558Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.600Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.642Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.676Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.711Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.747Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.783Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.819Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.858Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.891Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.927Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.962Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:51.997Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.031Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.067Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.103Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.139Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.176Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.211Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.248Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.284Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.320Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.355Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.395Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.431Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.468Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.504Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.539Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.576Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.619Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.655Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.692Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.730Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.764Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.800Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.835Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.871Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.908Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.943Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:52.979Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.016Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.049Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.083Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.120Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.157Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.194Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.230Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.265Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.299Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.335Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.371Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.408Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.444Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.483Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.518Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.554Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.587Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.623Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.654Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.684Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.715Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.745Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.776Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.806Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.836Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.867Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.921Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.953Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:53.988Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.019Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.050Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.082Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.116Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.149Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.183Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.219Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.254Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.290Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.326Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.361Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.399Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.433Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.469Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.506Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.539Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.570Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.604Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.640Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.678Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.719Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.751Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.786Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.817Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.850Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.886Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.922Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.956Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:54.991Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.024Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.057Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.091Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.126Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.163Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.199Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.235Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.273Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.308Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.343Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.378Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.413Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.448Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.483Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.518Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.553Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.588Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.623Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.659Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.698Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.733Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.769Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.803Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.839Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.875Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.911Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.946Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:55.982Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.021Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.057Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.092Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.128Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.164Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.200Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.238Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.276Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.311Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.346Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.382Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.417Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.451Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.487Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.523Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.559Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.594Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.628Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.664Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.704Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.740Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.774Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.809Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.844Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.879Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.915Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.950Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:56.989Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.025Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.066Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.102Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.137Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.173Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.210Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.246Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.282Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.320Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.376Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.411Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.447Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.482Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.517Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.551Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.587Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.622Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.659Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.694Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.733Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.766Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.802Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.838Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.873Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.907Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.943Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:57.980Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.018Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.052Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.086Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.122Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.158Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.194Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.228Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.266Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.305Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.340Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.379Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.417Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.452Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.487Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.544Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.581Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.615Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.650Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.686Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.720Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.755Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.793Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.827Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.864Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.908Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.943Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:58.979Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.014Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.050Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.086Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.124Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.158Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.195Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.230Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.266Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.299Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.332Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}
2022-02-02T08:47:59.363Z [INFO] (Thread-3) com.aws.greengrass.deployment.IotJobsHelper: No deployment job found. {ThingName=EVT003}

Hello @cgddrd-gardin,
Thank you for using greengrass v2. Unfortunately, I was not able to reproduce your issue with a simple deployment on v2.5.3.
Looking at IotJobsHelper, the logs you are seeing will spam if greengrass is notified multiple times for a single job queued. Then it would expect more jobs incoming and keep retrying, hence the logs you are seeing.
I would like to verify if this is the case. Could you restart greengrass and see if log spamming happens again? I would expect it to stop since restart resets the counter for expected job to zero.
Could you also check IoT logs for $aws/things/{thingName}/jobs/notify topic and see if there are multiple events notified for one single job?
If this is not the case, I'm happy to assist you further.

Close the issue because of no respond. Please feel free to reopen if the issue still exists and have more information to provide.


[core] Address Sanitizer crashes on DecompressData(), Global buffer overflow?

UPDATE 1: After further testing, the ASAN crash only happens when using a pre-defined buffer containing the font data compressed, added a zip file with the test code --->raylib_asan_issue.zip
UPDATE 2: As pointed on X thread, issue is probably related to sinfl reading chunks of 8 bytes and the size of data is 2286 that is not a multiple of 8 so 2 extra bytes get read out of bounds. Should it be maybe considered by sinfl?
Recently a crash was reported here. After some investigation and enabling ASAN, a crash is detected on DecompressData(). It only happens with ASAN enabled, without ASAN everything works as expected, data is decompressed and used successfully.
NOTE: To test it, the example and raylib (latest master branch) must be built with ASAN enabled.
The issue points to sinfl library, so I did some tests trying to find the issue. Here some testing code:

Simple compression/decompression test, everything works, no ASAN complaints.

#include "raylib.h"

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

int main(void)
{
    char *data = (char *)RL_CALLOC(8*1024*1024, sizeof(char));

    SetRandomSeed(52713);
    for (int i = 0; i < 8*1024*1024; i += 1024) data[i] = (char)GetRandomValue(0, 255);

    int compDataSize = 0;
    char *compData = CompressData(data, 8*1024*1024, &compDataSize);

    printf("Data compressed: %i ---> %i bytes
[raylib_asan_issue.zip](https://github.com/raysan5/raylib/files/12735862/raylib_asan_issue.zip)
\n", 8*1024*1024, compDataSize);

    RL_FREE(data);
    data = NULL;

    int dataSize = 0;
    data = DecompressData(compData, compDataSize, &dataSize);

    printf("Data decompressed: %i ---> %i bytes\n", compDataSize, dataSize);

    return 0;
}

Testing a font image data compression/decompression, everything works, no ASAN complaints.

Image used: 512x256@16bytes (2 bytes per pixel) - Attached image: font_cyber
#include "raylib.h"

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

int main(void)
{
    Image fontCyber = LoadImage("font_cyber.png");

    int compDataSize = 0;
    char *compData = CompressData(fontCyber.data, fontCyber.width*fontCyber.height*2, &compDataSize);

    printf("Data compressed: %i ---> %i bytes\n", fontCyber.width*fontCyber.height*2, compDataSize);

    int dataSize = 0;
    char *data = DecompressData(compData, compDataSize, &dataSize);     <--- ASAN crash!

    printf("Data decompressed: %i ---> %i bytes\n", compDataSize, dataSize);

    return 0;
}

Testing font image data provided as a global array decompression, crash ASAN complaints.

#include "raylib.h"

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

#define FONT_ATLAS_COMP_SIZE 2286

// Font atlas image pixels data: DEFLATE compressed
static unsigned char fontData[FONT_ATLAS_COMP_SIZE] = { ... };

//------------------------------------------------------------------------------------
// Program main entry point
//------------------------------------------------------------------------------------
int main(void)
{
    int dataSize = 0;
    char *data = DecompressData(fontData, FONT_ATLAS_COMP_SIZE, &dataSize);

    printf("Data decompressed: %i ---> %i bytes\n", FONT_ATLAS_COMP_SIZE, dataSize);

    return 0;
}

ASAN crash output:
==10472==ERROR: AddressSanitizer: global-buffer-overflow on address 0x7ff6afaca1ee at pc 0x7ffe2c2718fb bp 0x00245e17cff0 sp 0x00245e17c780
READ of size 8 at 0x7ff6afaca1ee thread T0
==10472==WARNING: Failed to use and restart external symbolizer!
    #0 0x7ffe2c2718fa in _asan_wrap_GlobalSize+0x4e226 (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\HostX64\x64\clang_rt.asan_dynamic-x86_64.dll+0x1800518fa)
    #1 0x7ff6af8fe11f in sinfl_read64 C:\GitHub\raylib\src\external\sinfl.h:183
    #2 0x7ff6af8fe64a in sinfl_refill C:\GitHub\raylib\src\external\sinfl.h:213
    #3 0x7ff6af901649 in sinfl_decompress C:\GitHub\raylib\src\external\sinfl.h:467
    #4 0x7ff6af8fdd7a in sinflate C:\GitHub\raylib\src\external\sinfl.h:570
    #5 0x7ff6af8d01e0 in DecompressData C:\GitHub\raylib\src\rcore.c:3613
    #6 0x7ff6af8c1116 in main C:\GitHub\raylib\examples\core\core_basic_window.c:188
    #7 0x7ff6afa2d548 in invoke_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:78
    #8 0x7ff6afa2d49d in __scrt_common_main_seh D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288
    #9 0x7ff6afa2d35d in __scrt_common_main D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:330
    #10 0x7ff6afa2d5bd in mainCRTStartup D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp:16
    #11 0x7ffee5bc7343 in BaseThreadInitThunk+0x13 (C:\Windows\System32\KERNEL32.DLL+0x180017343)
    #12 0x7ffee63a26b0 in RtlUserThreadStart+0x20 (C:\Windows\SYSTEM32\ntdll.dll+0x1800526b0)

0x7ff6afaca1ee is located 0 bytes to the right of global variable 'cyberFontData' defined in 'core_basic_window.c:32:21' (0x7ff6afac9900) of size 2286
SUMMARY: AddressSanitizer: global-buffer-overflow (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.37.32822\bin\HostX64\x64\clang_rt.asan_dynamic-x86_64.dll+0x1800518fa) in _asan_wrap_GlobalSize+0x4e226
Shadow bytes around the buggy address:
  0x1165e65d93e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1165e65d93f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1165e65d9400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1165e65d9410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  0x1165e65d9420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x1165e65d9430: 00 00 00 00 00 00 00 00 00 00 00 00 00[06]f9 f9
  0x1165e65d9440: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x1165e65d9450: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x1165e65d9460: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x1165e65d9470: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
  0x1165e65d9480: 00 00 00 00 05 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
Address Sanitizer Error: Global buffer overflow

Just for completion, here it is the current code for CompressData() and DecompressData(), just in case I was doing some missuse of sinfl/sdefl libraries:
// Compress data (DEFLATE algorithm)
unsigned char *CompressData(const unsigned char *data, int dataSize, int *compDataSize)
{
    #define COMPRESSION_QUALITY_DEFLATE  8

    unsigned char *compData = NULL;

#if defined(SUPPORT_COMPRESSION_API)
    // Compress data and generate a valid DEFLATE stream
    struct sdefl *sdefl = RL_CALLOC(1, sizeof(struct sdefl));   // WARNING: Possible stack overflow, struct sdefl is almost 1MB
    int bounds = sdefl_bound(dataSize);
    compData = (unsigned char *)RL_CALLOC(bounds, 1);

    *compDataSize = sdeflate(sdefl, compData, data, dataSize, COMPRESSION_QUALITY_DEFLATE);   // Compression level 8, same as stbiw
    RL_FREE(sdefl);

    TRACELOG(LOG_INFO, "SYSTEM: Compress data: Original size: %i -> Comp. size: %i", dataSize, *compDataSize);
#endif

    return compData;
}

// Decompress data (DEFLATE algorithm)
unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize)
{
    unsigned char *data = NULL;

#if defined(SUPPORT_COMPRESSION_API)
    // Decompress data from a valid DEFLATE stream
    data = (unsigned char *)RL_CALLOC(MAX_DECOMPRESSION_SIZE*1024*1024, 1);
    int tempDataSize = sinflate(data, MAX_DECOMPRESSION_SIZE*1024*1024, compData, compDataSize);

    // WARNING: RL_REALLOC can make (and leave) data copies in memory, be careful with sensitive compressed data!
    // TODO: Use a different approach, create another buffer, copy data manually to it and wipe original buffer memory
    unsigned char *temp = (unsigned char *)RL_REALLOC(data, tempDataSize);

    if (temp != NULL) data = temp;
    else TRACELOG(LOG_WARNING, "SYSTEM: Failed to re-allocate required decompression memory");

    *dataSize = tempDataSize;

    TRACELOG(LOG_INFO, "SYSTEM: Decompress data: Comp. size: %i -> Original size: %i", compDataSize, *dataSize);
#endif

    return data;
}

Any help is really welcome, I've been reviewing it for hours but I couldn't find the source of the issue...

@vurtun Excuse me for bothering you, please, could you take a look to this issue whenever possible? Thank you very much!

@nesbox: Just an idea.
Since this is supposed to be an RFC1951 implementation, and raylib also already uses stb_image and stb_image_write, why not just simply use the one in those instead? Those are known to be working and won't freak out ASAN either. (Note: decoding and encoding PNG images also rely on RFC1951, that's why stb_image has this.)
CompressData could use stbi_zlib_compress:
unsigned char * stbi_zlib_compress(unsigned char *data, int data_len, int *out_len, int quality)

And DecompressData could just use stbi_zlib_decode_buffer (or maybe stbi_zlib_decode_noheader_buffer, see below):
int stbi_zlib_decode_buffer(char *obuffer, int olen, char const *ibuffer, int ilen)

The stb headers also have some other variants for comfort, for example one allocates the returned buffer (so you don't need to know the uncompressed size in advance) etc.
The one and only thing to be careful here is to check out whether sinfl currently adds the 2 bytes zlib header or not to the compressed buffer (stbi_zlib_compress adds it, so you should skip the compressed buffer's first 2 bytes if not needed, and in that case stbi_zlib_decode_noheader_buffer should be used for inflating). Otherwise I'm pretty sure these are 100% compatible, as both implement the same standard.
FYI: I've used stb's implementation successfully on multiple occasions to uncompress for example gzip and pkzip files and even Tiled TMX data, it works like a charm (it's just that you must be aware of that 2 bytes header in the compressed buffer, for example, it's needed in pkzip, but must not be present in gzip). The stbi compression is not the most efficient implementation (only using 32k window and fixed Huffman trees), so it generates a bit bigger and less compact compressed output than zlib (which supports multiple window sizes and adaptive Huffman trees too), but my guess is, sinfl's compression isn't very optimized either.
Just an idea, replacing sinfl with stbi would solve the issue and would also remove an unnecessary dependency.
Cheers,
bzt

Ok, I've checked, looks like sinfl and sdefl does NOT use the 2 bytes header (sdeflate writes no header, only zsdeflate does, and what's more, it writes the very same 2 bytes as stbi_zlib_compress :-) ).
Since CompressData calls sdeflate, so to be 100% compatible with the already existing data files, you must skip the first 2 bytes from the buffer that stbi_zlib_compress returns, and in DecompressData use stbi_zlib_decode_noheader_malloc (looks like uncompressed size isn't known in advance, so just let stbi allocate the necessary memory).
Cheers,
bzt

@bztsrc I prefer to keep both implementations separate, I like sdefl/sinfl being self-contained into its own libraries and not focused on image zlib-streams. I'd also like to know why that issue happens when ASAN is activated because it works perfectly without ASAN...

Just i guess, but looking at sinfl_decompress i see that it tries to read stuff 8 bytes at a time.
Meanwhile FONT_ATLAS_COMP_SIZE is not divisible by 8 so it is probably reading outside the global array towards the end, hence the "global-buffer-overflow"
Not sure if this is correct but this should be easily checkable if you just pad the array with 6 zeroes at the end without changing the FONT_ATLAS_COMP_SIZE

@wurunduk I just did a quick test but it keeps crashing, tried adding 2, 6, 8, 10 additional elements 0x00, but same crash... In any case, it seems the right direction to explore the issue...

Came here from X thread. My 2 cents: many decompressors require additional padding or excess bytes at the end of the buffer because they read fixed even blocks of bytes (4,8,16...) per performance reasons. It's a good habit, and a relatively common practise, to round up the number of output bytes to a divisible amount. If that sounds complicated just add some padding bytes at the size of the output buffer; amount will vary among compressors, but we can safely assume adding 16 excess bytes would work for most if not all current decompressors.

@raysan5: I see. It was just an idea.
@r-lyeh: it's not 16 excess bytes, but 8, and either way won't work. As @raysan5 pointed out, he have tried and it indeed doesn't work. (The problem here is, if you increase the buffer size to be multiple of something, then you also add more bytes to decompress, and sinfl does not guarantee that it only reads on 8 bytes boundaris, so you can't just round up the size anyway)
The real solution is not to read out of bounds. Here's a proper fix:
diff --git a/src/external/sinfl.h b/src/external/sinfl.h
index 8979fcd7..3a774436 100644
--- a/src/external/sinfl.h
+++ b/src/external/sinfl.h
@@ -122,6 +122,7 @@ extern "C" {

 struct sinfl {
   const unsigned char *bitptr;
+  const unsigned char *bitend;
   unsigned long long bitbuf;
   int bitcnt;

@@ -177,12 +178,6 @@ sinfl_bsr(unsigned n) {
   return 31 - __builtin_clz(n);
 #endif
 }
-static unsigned long long
-sinfl_read64(const void *p) {
-  unsigned long long n;
-  memcpy(&n, p, 8);
-  return n;
-}
 static void
 sinfl_copy64(unsigned char **dst, unsigned char **src) {
   unsigned long long n;
@@ -210,7 +205,9 @@ sinfl_copy128(unsigned char **dst, unsigned char **src) {
 #endif
 static void
 sinfl_refill(struct sinfl *s) {
-  s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt;
+  unsigned long long n = 0;
+  memcpy(&n, p, s->bitptr + 8 < s->bitend ? 8 : s->bitend - s->bitptr);
+  s->bitbuf |= n << s->bitcnt;
   s->bitptr += (63 - s->bitcnt) >> 3;
   s->bitcnt |= 56; /* bitcount in range [56,63] */
 }
@@ -384,6 +381,7 @@ sinfl_decompress(unsigned char *out, int cap, const unsigned char *in, int size)
   int last = 0;

   s.bitptr = in;
+  s.bitend = e;
   while (1) {
     switch (state) {
     case hdr: {

Few notes:

the buffer end pointer has to be added to the structure, because currently it's just a local variable in sinfl_decomress, so the other functions have no clue where the buffer ends, which is VERY bad.
I've removed sinfl_read64 and inlined it instead, because it was called at one place only and was just a wrapper around another function call (unnecessary waste of stack), and now sinfl_refill also checks the remaining buffer size.
The n local variable must be initialized as 0, because this time memcpy might copy less than 8 bytes, however n will still act as if it were read entirely from the buffer.
There's no issue with the other functions (like sinfl_copy64 or sinfl_write64), because it looks like they are only called inside properly guarded if blocks.
Another thing that might be worth considering, that using memcpy like this isn't endian-safe. It won't work across different endian machines, and I'm not sure if this implementation is RFC1951 compliant at all. (However this is not an issue if all raylib platforms are little-endian and supporting a big-endian platform isn't planned in the future. Not far fetched, all modern architectures are little-endian anyway.)

Cheers,
bzt

Hmmm, I take it back. All the other sinfl_copy64 etc. functions are problematic too (they are called within a badly formatted loop, that's why I haven't noticed at first). All these functions will guaranteed to read out of bounds or write out of bounds, and should be fixed by adding a similar "bitptr + 8 < bitend" check.
Also, sinfl_copy64 wastes stack without any reason, and it's inefficient. It should be just simply
sinfl_copy64(unsigned char **dst, unsigned char **src) {
-  unsigned long long n;
-  memcpy(&n, *src, 8);
-  memcpy(*dst, &n, 8);
+  memcpy(*dst, *src, 8);
   *dst += 8, *src += 8;
}

(plus the bound check of course)
Hope this helps,
bzt

There's no inefficiency there. That kind of memcpy calls will be inlined and there will be no stack space wasted. Binary code for sinflk_copy64 will be identical on any optimizing compiler.

@wurunduk I just did a quick test but it keeps crashing, tried adding 2, 6, 8, 10 additional elements 0x00, but same crash... In any case, it seems the right direction to explore the issue...

Adding 11+ zero bytes fixes crash… , it seems like in general having size as (len + (8 - (len % 8)) + 16) should fix this without additional fixes to sdefl.
Also, it works for 1 and 2 cases, because you allocate size * 2(on master sdefl_bound is commented out) for array which is much bigger than 2286, I haven’t tried it, but I suspect if you try changing size of allocation in compressdata to 2286 it will also crash(or you can jusr poison memory after 2286)

Adding 11+ zero bytes fixes crash… , it seems like in general having size as (len + (8 - (len % 8)) + 16) should fix this without additional fixes to sdefl.

In worst case this code tries to read 7 bytes out of bounds, no more. Therefore if adding (len + (8 - (len % 8)) + 16) does not crash, then that also means extra garbage is written at the end of the uncompressed buffer (from decoding that 16 zeros at the end). That extra space isn't accounted for in sinfl_bound, so you were just lucky not having yet another buffer overflow (this time writing the output buffer).
And again, adding extra zeros at the end isn't a solution, what if some calls
static unsigned char fontData[] = { ... };
char *data = DecompressData(fontData, sizeof(fontData), &dataSize);

It is perfectly reasonable to do like this, but in this case the passed size parameter would contain the padding too, which shouldn't be, and therefore DecompressData will crash again...
IMHO the only viable solution here is to fix sinfl not to read out of bounds.
Cheers,
bzt

Binary code for sinflk_copy64 will be identical on any optimizing compiler.

This isn't true. There will be no sinfl_copy64 at all in the first place with gcc. And not optimized away with tcc. And it's not optimized away with any compiler if you compile raylib in "DEBUG" mode. Having a so much different binary in release mode and debug mode will kick you in the butt every time in every debug session, trust me.
Cheers,
bzt

IMHO the only viable solution here is to fix sinfl not to read out of bounds.

@bztsrc Agree. Thank you very much for the review of this issue and the detailed explanation. I'll wait for an answer from sinfl creator, if this could be reviewed on base library.

And it's not optimized away with any compiler if you compile raylib in "DEBUG" mode. Having a so much different binary in release mode and debug mode will kick you in the butt every time in every debug session, trust me.

I'm very well aware on how compiler generated code affects "debug" vs optimized builds. But if two memcpy vs one memcpy in a such place as this is such a big "inefficiency" that then there should be no memcpy at all. Do unaligned uint64 load/store directly.

Adding 11+ zero bytes fixes crash… , it seems like in general having size as (len + (8 - (len % 8)) + 16) should fix this without additional fixes to sdefl.

In worst case this code tries to read 7 bytes out of bounds, no more.

From implementation, it looks like decod will stop only if we are out of space in the output buffer, or if we reach the block with the BFINAL bit set and reach the symbol with value eq to 256(after decoding), so I don't think that what you are saying is true, it can read more.

Therefore if adding (len + (8 - (len % 8)) + 16) does not crash, then that also means extra garbage is written at the end of the uncompressed buffer (from decoding that 16 zeros at the end).

Again, implementation expects the last block to have BFINAL bit set, so if you have this bit set + sym256 before those 16+ zero bytes you should be fine it won't decode them and you won't get extra garbage,
but if you don't have this bit set it means that you have your compressed data malformed, which I don't think this lib handles at all, but this is not part of the issue.
There is only 1 place where the size of input compressed data is taken into account - while trying to extract stored/uncompressed blocks of data.

And again, adding extra zeros at the end isn't a solution, what if some calls
static unsigned char fontData[] = { ... };
char *data = DecompressData(fontData, sizeof(fontData), &dataSize);

It is perfectly reasonable to do like this, but in this case the passed size parameter would contain the padding too, which shouldn't be, and therefore DecompressData will crash again...

Same explanation here

IMHO the only viable solution here is to fix sinfl not to read out of bounds.

Yeah, overall I agree)

@raysan5: you're welcome, hope sinfl gets fixed soon!
@fafok29: not sure I follow.

Again, implementation expects the last block to have BFINAL bit set

Where is that exactly? Are we looking at the same code? This is what I use: https://github.com/raysan5/raylib/blob/master/src/external/sinfl.h
In this code the decoding happens in sinfl_decompress, in a loop at line 387. This is just a switch, no BFINAL flag test of any kind. Then within the case blk at line 463, there are no BFINAL tests either, however it has multiple unguarded writes to the output buffer (at lines 474, 477, 506, 507, 512, 513 etc.) This code definitely won't stop when end of the buffer is reached. And no BFINAL tests in this switch-case either (it always uses the decoded len).
And as for the input, sinfl_refill calls sinfl_read64 which copies 8 bytes from the input buffer. There are no checks for BFINAL in this function either. Actually worse, there are zero checks where sinfl_refill gets called, this code just silently assumes that sinfl_refill was always able to read from the buffer (which is obviously isn't the case, as this issue demonstrates).

Adding 11+ zero bytes fixes crash

Considering that sinfl_read64 is the one and only place where the input buffer is read, and that reads 8 bytes at once, and 11 is bigger than 8, this means sinfl_read64 must be called at least one with a pointer which is entirely out of bounds (so it's not like the argument is correct bitptr < end but memcpy reads beyond bitptr + 8 >= end, but this means the argument must be already an out of bounds pointer in the first place, so bitptr > end when sinfl_read64 gets called). There's no other way how 11 bytes (> 8 bytes) could avoid crashing.
I'm just thinking out loud, do not mind me. Let's hope sinfl gets fixed soon.

Here are few unchecked cases, hope it's going to be useful to the sinfl's developer.
L415: only input buffer checked, but not the output, this will write out of bounds when out + len >= oe.
L477: this will write out of bounds when out + 1 == oe.
L508: this will read out of bounds, and even write out of bounds if oe - out == 49; len, offs or out - dst isn't multiple of 16.
L514: same issue, just not being multiple of 8.
L525: this might read out of bounds, and definitely will write out of bounds when dst >= out and dst + 3 <= out.
L558: same issue, only this time no oe > out checks of any kind. The set in line 500 could have moved out beyond oe, and this block would still write at least 3 bytes happily.
Hope this is useful and helps,
bzt

@raysan5: you're welcome, hope sinfl gets fixed soon!
@fafok29: not sure I follow.

Again, implementation expects the last block to have BFINAL bit set

Where is that exactly? Are we looking at the same code? This is what I use: https://github.com/raysan5/raylib/blob/master/src/external/sinfl.h

Yeah, sorry, should've been more explicit, BFINAL is how this flag is called in RFC
Each block of compressed data begins with 3 header bits
         containing the following data:

            first bit       BFINAL
    BFINAL is set if and only if this is the last block of the data set.

Here we read the value of BFINAL for each block and save it in a variable called last.
https://github.com/raysan5/raylib/blob/73b54c862e9034b7158980c0e6eb3b264fac4729/src/external/sinfl.h#L393
Here if we decoded 256 (from the RFC - the value 256 indicates end-of-block) and last is set -> return
https://github.com/raysan5/raylib/blob/73b54c862e9034b7158980c0e6eb3b264fac4729/src/external/sinfl.h#L481-L485
So if you have BFINAL + 256 adding 16 won't produce garbage as I said before, and this example will work fine
static unsigned char fontData[] = { ... };
char *data = DecompressData(fontData, sizeof(fontData), &dataSize);

but this means the argument must be already an out of bounds pointer in the first place, so bitptr > end when sinfl_read64 gets called). There's no other way how 11 bytes (> 8 bytes) could avoid crashing.

Yes
I'm ignoring all other issues with unbounded writes here,  just focusing on the case when with correct input sanitizer produces an error. Anyway, at this point it is better to wait for a response from the creator.

@bztsrc Just implemented the proposed fixes for next raylib release.

It seems implemented changes broke the function.

What is p in memcpy(&n, p, s->bitptr + 8 < s->bitend ? 8 : s->bitend - s->bitptr); line?
The sinfl_refill function does not have p variable. Code should not compile with such change.
It should be s->bitptr instead of p there.

@mmozeiko yeah, I fixed that but still it crashed on decompresion.

This will probably fix it:
    int bitswant = 63 - s->bitcnt;
    int byteswant = bitswant >> 3;
    int bytesuse = s->bitend - s->bitptr < byteswant ? (int)(s->bitend - s->bitptr) : byteswant;
    unsigned long long n = 0;
    memcpy(&n, s->bitptr, bytesuse);
    s->bitbuf |= n << s->bitcnt;
    s->bitptr += bytesuse;
    s->bitcnt += bytesuse << 3;

it's probably slower than old code. So you may want to leave it:
  if (s->bitend - s->bitptr >= 8) {
    s->bitbuf |= sinfl_read64(s->bitptr) << s->bitcnt;
    s->bitptr += (63 - s->bitcnt) >> 3;
    s->bitcnt |= 56; /* bitcount in range [56,63] */
  } else {
    ... // new code
  }

@mmozeiko Please, could you send a PR with the fix if it works for you?


fix: Standardize the hover menu options to always include the same options

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/39068
PROPOSAL: https://github.com/Expensify/App/issues/39068#issuecomment-2024186205
Tests

Open a report
Move the mouse to each report action
Verify that: the hover menu options to always include the same options

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

Open a report
Move the mouse to each report action
Verify that: the hover menu options to always include the same options

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/161821005/f2dfeff4-0cf2-4aca-ba23-dd61150dba34

MacOS: Desktop

https://github.com/Expensify/App/assets/161821005/195de5e6-902c-4082-b2f3-0ba6b4600f06

@shubham1206agra I moved the "download" option to the bottom:
https://github.com/Expensify/App/assets/161821005/17d9f216-bbdc-4167-96d5-df6ed15a0992

My take on the example above's order from top to bottom:

Copy link
Download
Delete commment

I think the deletion should always be the last option. I'll let @shawnborton and @dannymcclain chime in though

Yup I like that, and I like the idea that delete is always the last option.

@shubham1206agra I moved the "Remove" option to the bottom

@shubham1206agra Any update here.

Just for prosperity, can you show me a recording with an attachment so we can see the "Download" option too?

🚀 Deployed to staging by https://github.com/tylerkaraszewski in version: 1.4.65-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 1.4.65-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Need Auth user to be Tenant user data , because every tenancy user have its own Roles and permissions

Bug description
I have created 2 laravel applications and they are hosted on different servers. I laravel application is called Auth(central database) Application and other 1 is called Tenant Application( tenant databases ).My website have single login system and it will be on Auth App .Auth app is responsible for login register , create tenancy database and seeding .After login user can switch to any tenancy which he belongs, but with login . I need on my tenant application is that when authenticated request comes in with X-tenant approach it should give data from auth()->user from tenancy users table .So that my both apps should be independent .How can I achieve this from this package . I have manage authentication on both applications running on separate VMS  .I need get auth()->user data from tenant app.kindly help me out on this
thanks
Steps to reproduce
I have created 2 laravel applications and they are hosted on different servers. I laravel application is called Auth(central database) Application and other 1 is called Tenant Application( tenant databases )
Expected behavior
I have created 2 laravel applications and they are hosted on different servers. I laravel application is called Auth(central database) Application and other 1 is called Tenant Application( tenant databases )
Laravel version
8
stancl/tenancy version
3

Hey!
Thanks for opening the issue. This doesn't seem to be a bug in package, seems to be related to your setup.
If you need quick support, you can visit our Discord community here: https://archte.ch/discord
Thanks


Certificates

How can I set a local certificate file to the requests?

Hi, @julio-prezero.
Unfortunately, setting a client certificate is not possible as of now. It's definitely something on the list of possible improvements for version 2.0.

Hi Bruno. Thank you for your prompt response. Enabling certificates would be great. Is it possible to add runtime entries to the http request's header section? Like a cookie with a Session ID so that the SAP B1 service could be authenticated?
Regards!
From: Bruno Mulinari @.>
Sent: Monday, September 25, 2023 9:29 AM
To: bgmulinari/B1SLayer @.>
Cc: Julio Vasquez @.>; Mention @.>
Subject: Re: [bgmulinari/B1SLayer] Certificates (Issue #52)
Hi, @julio-prezerohttps://link.edgepilot.com/s/3d647126/mHxadNo3pUq0-4zGIx75GQ?u=https://github.com/julio-prezero.
Unfortunately, setting a client certificate is not possible as of now. It's definitely something on the list of possible improvements for version 2.0.

Reply to this email directly, view it on GitHubhttps://link.edgepilot.com/s/e9f8aed9/GyUTSb3EVES9BvQfZDr0EA?u=https://github.com/bgmulinari/B1SLayer/issues/52%23issuecomment-1734090265, or unsubscribehttps://link.edgepilot.com/s/8b98fc1a/fQWTepbTX0CDtpO627xflQ?u=https://github.com/notifications/unsubscribe-auth/ANSWDH6XD2XIJT5UXAMRDTTX4GWNBANCNFSM6AAAAAA5GLFN4Y.
You are receiving this because you were mentioned.Message ID<EMAIL_ADDRESS>

@julio-prezero, Service Layer's authentication is already taken care of automatically by B1SLayer. The login is performed whenever necessary and the required session cookies are always sent in your requests. If you wish to add additional entries to the request headers, you can use the WithHeader extension method.
The SLRequest class has a number of extension methods that can help you configure your request.
I recommend checking the README and my blog post for more info on B1SLayer's usage.

@julio-prezero, I'm closing this issue for now but this is something I may revisit in the future. For now I've decided to not implement support for client certificates.
If anyone else is interested in this improvement, we can resume the discussion on the best approach.


Store Device Location in Handler and inject in Uplink Metadata

Resolves #402

Coverage increased (+0.01%) to 75.019% when pulling ce8efe392d3affcd4b981ebd6a2afc14273ecb5b on issue/402-device-location into 1a6479de727ea16169e39d257e17ba2429a766a0 on develop.

Coverage increased (+0.01%) to 75.019% when pulling d07bb2e05a517f1c6628ef6933d372719bf9a66d on issue/402-device-location into 1a6479de727ea16169e39d257e17ba2429a766a0 on develop.

Rebased on develop. Will merge when CI passes.

Coverage increased (+0.01%) to 75.015% when pulling 2036b627a7a69681f66fb6edb3cfbda51a614e36 on issue/402-device-location into dac0246754747459fe0eea0f6b16d2eafd95097d on develop.


Fix twitter intent to properly show url

The twitter intent url was not showing up when clicked.

Thanks for the PR @rwilliams !