Ensure that when external APIs have rate-limiting that calls are repeated until a result is received
Issues resolved:
Patchwork: Add client filter for 429 (toomanyrequests) responses (#8697kpfba)
Improved screenshot rendering performance and reliability by maintaining a single instance of Chrome per container
Issues resolved:
[4610] ChromeDriver Session Not Created Error (#8696wmn5y)
[4618] Error: Chrome failed to start during task execution (#8696ypr33)
[4593] ChromeDriver Session Not Created Error (#8696tqfjg)
[4592] Script Timeout Error During Export Task (#8696t4m41)
[4588] Chrome Driver Session Creation Error (#8696hxw1c)
Resolved issue where API calls to external services failed due to rate limiting
Issues resolved:
RateLimitedFilter error (#8697qe61e)
Resolved issue where tasks sometimes weren't scheduled because input data was missing
Issues resolved:
Patchwork: Remove mustBeNotNull from task API (#8697k7ej6)
Changed deployment to use Google Artifact Registry rather than Google Container Registry which is deprecated
Issues resolved:
Switch from Google Container Registry to Google Artifact Registry (#8696z8xp5)
Added interactive statistics graphs to orders and customers pages, made customers page faster
Issues resolved:
Customers API is too slow (#8697f7ddk)
Configurator/Workspace user statistics (#8694abch0)
Resolved error that occurs when a document is fetched in a task using a null identifier
Issues resolved:
[2423] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rcyum)
[2425] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rrdtz)
[2422] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rc2gh)
[2415] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r4m0j)
[2417] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r5fgk)
[2418] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r7a90)
[2419] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r879w)
[2421] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rc20h)
[2416] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r5794)
[2414] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697r1qkn)
[2427] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rtkd6)
[2420] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rbyeb)
[2408] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697hxtzg)
[2426] java.lang.IllegalArgumentException 	at org.bson.types.ObjectId.isValid(ObjectId.java:104) 	a... (#8697rtk61)
