Limitations
Several limitations are applied to scripts when they are run. The limits should be more than sufficient for most scripts and are designed to catch erroneous scripts. These are detailed below here.
Timeouts
Scripts can run for no longer than 60 seconds. After running for 60 seconds the logs at that time will be collected and then the code will be terminated. Any logs from the first 60 seconds of execution will be logged in the Logs page.
Event Rate Limiting
Script Jobs and Script Listeners for the same principle (Pages, Spaces, User, etc) are restricted to 60 in a minute. When the limit is exceeded events will be dropped for that particular principle, other events are not affected. Any executions that are dropped are logged and can be found in the Logs page.
Package imports
Whilst you can import packages into your scripts in the Script Console, Script Listeners, you can only import from the standard Java 8 SE classes and the following libraries:
-
org.codehaus.groovy:groovy:2.5.12
-
org.codehaus.groovy:groovy-json:2.5.12
-
org.codehaus.groovy:groovy-jsr223:2.5.12
-
org.codehaus.groovy:groovy-templates:2.5.12
-
org.codehaus.groovy:groovy-xml:2.5.12
-
com.fasterxml.jackson.core:jackson-core:2.10.0
-
com.fasterxml.jackson.core:jackson-annotations:2.10.0
-
com.fasterxml.jackson.core:jackson-databind:2.10.0
-
io.github.openunirest:unirest-java:2.2.10
-
org.apache.httpcomponents:httpclient:4.5.6
-
org.apache.httpcomponents:httpcore:4.4.10
-
org.apache.httpcomponents:httpasyncclient:4.1.4
-
org.apache.httpcomponents:httpcore-nio:4.4.10
-
org.apache.httpcomponents:httpmime:4.5.6
-
commons-codec:commons-codec:1.10
-
org.json:json:20180130
-
org.slf4j:slf4j-api:1.7.25
-
org.slf4j:slf4j-log4j12:1.7.25
-
org.slf4j:jcl-over-slf4j:1.7.25
-
log4j:log4j:1.2.17
-
org.immutables:builder:2.5.6
-
io.jsonwebtoken:jjwt:0.9.1
-
jakarta.xml.ws:jakarta.xml.ws-api:2.3.3
-
com.sun.xml.ws:jaxws-rt:2.3.3
Script Listeners, Script Jobs and CQL Script Jobs Storage
At the moment, the maximum amount of code that can be stored across all Script Listeners is 32KB.
So, if one Script Listener contains 30KB of code then all your other Script Listeners must only contain 2KB of code between them.
The same applies for Script Jobs and CQL Script Jobs.