Re: [cas-user] Re: cas 7.0.0-RC9 - slow groovy ?
artur, Does it take a long time on each request or only the first? If only the first, then you could trigger all the scripts after deployment (thought this is not ideal). I am no groovy expert, but even a few seconds to compile the script is too long. Ray On Wed, 2023-12-13 at 02:55 -0800, artur miś wrote: Notice: This message was sent from outside the University of Victoria email system. Please be cautious with links and sensitive information. > Where does the additional metadata come from : We have added it in groovy staticly for checking purposes . > You could put a timer around each statement in the script to see which one(s) > takes a long time Ray: 11ms but : I have found out that problem coming from groove just before executing script : 2023-12-13 08:10:50,698 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - And this creation takes 5sec for very basic script . Of course if you add somthing what colecting metadata this time rise up to 10 sec. This that 5 sec is too much . We observed too thatfor dockerized cas creating groovy object instance for basic script takes 10 sec but mor advanced scenario 15sec. Startup without Contenetization ./gradlew clean build ./gradlew CopyCasConfiguration ./gradlew run Start up with contenerization docker start etc/itd how to reproduce this: 1) cas.properties cas.authn.accept.enabled=true cas.authn.accept.order=1 cas.authn.accept.users=test::test123 cas.authn.accept.name=Static Credentials cas.authn.attribute-repository.groovy[0].location=file:/etc/cas/config/custom-attr.groovy logging.level.org.apereo.cas=TRACE 2) /etc/cas/config/custom-attr.groovy (default documentation script) import java.util.* def run(final Object... args) { def (username,attributes,logger,properties,appContext) = args def startTime = System.currentTimeMillis() logger.debug("[{}]: The received uid is [{}]", this.class.simpleName, username) def result = [username:[username], likes:["cheese", "food"], id:[1234,2,3,4,5], another:["attribute"]] < - aditional metadata comming from this script/line not from other sophisticated resources . In production we have other ldaps etc but not here, becouse we have discovered posibilile problems here so we simplified case . def stopTime = System.currentTimeMillis() def executionTime = stopTime - startTime logger.debug("Czas wykonania skryptu to: ${executionTime} ms") return result } 3) start cas and login as test/test123 few times logs: 2023-12-13 08:10:50,698 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - commment: lag 9 seconds (creating groovy object) 2023-12-13 08:10:59,307 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - commment: script run in 11ms 2023-12-13 08:10:59,318 DEBUG [org.apereo.cas.authentication.principal.resolvers.InternalGroovyScriptDao] - wtorek, 12 grudnia 2023 o 19:12:55 UTC+1 Ray Bon napisał(a): artur, Where does the additional metadata come from? That script looks very basic. You could put a timer around each statement in the script to see which one(s) takes a long time. Ray On Tue, 2023-12-12 at 02:19 -0800, artur miś wrote: Notice: This message was sent from outside the University of Victoria email system. Please be cautious with links and sensitive information. Buddys i atached some more information : I have got problem with long execution time of basic groovy script: cas.authn.attribute-repository.groovy[0].location=file:/etc/cas/config/custom-attr.groovy import java.util.* import java.text.SimpleDateFormat import groovy.transform.Field import javax.naming.directory.* import java.util.Hashtable import javax.naming.* @Field File file = new File("/etc/cas/config/groovy_logs.txt") def run(final Object... args) { def (username,attributes,logger,properties,appContext) = args logger.debug("[{}]: The received uid is [{}]", this.class.simpleName, username) file.append "\n login: "+args[0]+" cas-id:"+args[1]['principal']+"\n" file.append "\n version groove: "+GroovySystem.version+"\n" // All attribute values must be defined as a collection wrapped in [] return [username:[username], likes:["6cheese", "7food"], id:[1234,2,3,4,5], another:["attribute"] ] println GroovySystem.version } System CAS: CAS Version: 7.0.0-RC9 CAS Branch: master CAS Commit Id: xxx CAS Build Date/Time: 2023-11-25T07:12:15.881468Z Spring Boot Version: 3.2.0 Spring Version: 6.1.0 Java Home: /usr/lib/jvm/zulu21-ca-amd64 Java Vendor: Azul Systems, Inc. Java Version: 21.0.1 Servlet Version: 6.0.0 JVM Free Memory: 345 MB JVM Maximum Memory: 4 GB JVM Total Memory: 512 MB OS Architecture: amd64 OS Name: Linux OS Version: 5.4.0-167-generic OS Date/Time: 2023-12-12T10:35:50.786113719 OS Temp Directory: /tmp Logs: 2023-12-12 10:41:41,731 DEBUG [org.apereo.cas.authentication.attribute.PrincipalAttributeRepositoryFetcher] - no activity in the log (just wa
Re: [cas-user] Re: cas 7.0.0-RC9 - slow groovy ?
> Where does the additional metadata come from : We have added it in groovy staticly for checking purposes . > You could put a timer around each statement in the script to see which one(s) takes a long time Ray: 11ms but : I have found out that problem coming from groove just before executing script : 2023-12-13 08:10:50,698 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - And this creation takes 5sec for very basic script . Of course if you add somthing what colecting metadata this time rise up to 10 sec. This that 5 sec is too much . We observed too thatfor dockerized cas creating groovy object instance for basic script takes 10 sec but mor advanced scenario 15sec. Startup without Contenetization ./gradlew clean build ./gradlew CopyCasConfiguration ./gradlew run Start up with contenerization docker start etc/itd how to reproduce this: 1) cas.properties cas.authn.accept.enabled=true cas.authn.accept.order=1 cas.authn.accept.users=test::test123 cas.authn.accept.name=Static Credentials cas.authn.attribute-repository.groovy[0].location=file:/etc/cas/config/custom-attr.groovy logging.level.org.apereo.cas=TRACE 2) /etc/cas/config/custom-attr.groovy (default documentation script) import java.util.* def run(final Object... args) { def (username,attributes,logger,properties,appContext) = args def startTime = System.currentTimeMillis() logger.debug("[{}]: The received uid is [{}]", this.class.simpleName, username) def result = [username:[username], likes:["cheese", "food"], id:[1234,2,3,4,5], another:["attribute"]] < - aditional metadata comming from this script/line not from other sophisticated resources . In production we have other ldaps etc but not here, becouse we have discovered posibilile problems here so we simplified case . def stopTime = System.currentTimeMillis() def executionTime = stopTime - startTime logger.debug("Czas wykonania skryptu to: ${executionTime} ms") return result } 3) start cas and login as test/test123 few times logs: 2023-12-13 08:10:50,698 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - commment: lag 9 seconds (creating groovy object) 2023-12-13 08:10:59,307 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - commment: script run in 11ms 2023-12-13 08:10:59,318 DEBUG [org.apereo.cas.authentication.principal.resolvers.InternalGroovyScriptDao] - wtorek, 12 grudnia 2023 o 19:12:55 UTC+1 Ray Bon napisał(a): > artur, > > Where does the additional metadata come from? > That script looks very basic. You could put a timer around each statement > in the script to see which one(s) takes a long time. > > Ray > > On Tue, 2023-12-12 at 02:19 -0800, artur miś wrote: > > Notice: This message was sent from outside the University of Victoria > email system. Please be cautious with links and sensitive information. > > > Buddys i atached some more information : > > > > > I have got problem with long execution time of basic groovy script: > > > > cas.authn.attribute-repository.groovy[0].location=file:/etc/cas/config/custom-attr.groovy > > > import java.util.* > > import java.text.SimpleDateFormat > > import groovy.transform.Field > > import javax.naming.directory.* > > import java.util.Hashtable > > import javax.naming.* > > > @Field File file = new File("/etc/cas/config/groovy_logs.txt") > > > > def run(final Object... args) { > > def (username,attributes,logger,properties,appContext) = args > > logger.debug("[{}]: The received uid is [{}]", this.class.simpleName, > username) > > > file.append "\n login: "+args[0]+" cas-id:"+args[1]['principal']+"\n" > > file.append "\n version groove: "+GroovySystem.version+"\n" > > > > // All attribute values must be defined as a collection wrapped in [] > > return [username:[username], likes:["6cheese", "7food"], > id:[1234,2,3,4,5], another:["attribute"] ] > > > > println GroovySystem.version > > } > > > > > System CAS: > > > CAS Version: 7.0.0-RC9 > > CAS Branch: master > > CAS Commit Id: xxx > > CAS Build Date/Time: 2023-11-25T07:12:15.881468Z > > Spring Boot Version: 3.2.0 > > Spring Version: 6.1.0 > > Java Home: /usr/lib/jvm/zulu21-ca-amd64 > > Java Vendor: Azul Systems, Inc. > > Java Version: 21.0.1 > > Servlet Version: 6.0.0 > > JVM Free Memory: 345 MB > > JVM Maximum Memory: 4 GB > > JVM Total Memory: 512 MB > > OS Architecture: amd64 > > OS Name: Linux > > OS Version: 5.4.0-167-generic > > OS Date/Time: 2023-12-12T10:35:50.786113719 > > OS Temp Directory: /tmp > > > > > Logs: > > > 2023-12-12 10:41:41,731 DEBUG > [org.apereo.cas.authentication.attribute.PrincipalAttributeRepositoryFetcher] > - > > > no activity in the log (just waiting ) > > > > 2023-12-12 10:41:55,497 DEBUG > [org.apereo.cas.authentication.principal.resolvers.InternalGroovyScriptDao] > - <[custom-attr]: The received uid is [christmas_banny]> > > > 2023-12-12 10:41:55,497 DEBUG > [org.apereo.cas.authentication.principal.r