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] - <Creating groovy object 
instance from class [/etc/cas/config/custom-attr.groovy]>
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 that    for 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] - 
<Creating groovy object instance from class 
[/etc/cas/config/custom-attr.groovy]>

commment: lag 9 seconds (creating groovy object)


2023-12-13 08:10:59,307 TRACE [org.apereo.cas.util.scripting.ScriptingUtils] - 
<Executing groovy script's [run] method, with parameters [[test, 
{principal=[test], credentialId=[test], 
credentialClass=[UsernamePasswordCredential], username=[test]}...>

commment: script run in 11ms

2023-12-13 08:10:59,318 DEBUG 
[org.apereo.cas.authentication.principal.resolvers.InternalGroovyScriptDao] - 
<Groovy-based attributes found are [{username=[test], likes=[cheese, food], 
id=[1234, 2, 3, 4, 5], another=[attribute]}]>










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: xxxxxxxxxxx

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] - 
<Fetching person attributes for query [{principal=xxxxxx data xxxxxxx}]>


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.resolvers.InternalGroovyScriptDao] - 
<Groovy-based attributes found are [{username=[christmas_banny], 
likes=[6cheese, 7food], id=[1234, 2, 3, 4, 5], another=[attribute]}]>





This problem has ocured only when we atached groovy without groovy 
authentication work smoth. Groovy is slow or wait but after let say 15sek 
returned additional metadata.What is the problem or where find out solution ?

środa, 6 grudnia 2023 o 17:02:45 UTC+1 artur miś napisał(a):
Hello,
Have you noticed that groovy 4.0.15 is slow ?  I have hached to 4.0.16 and the 
same .
Regards



-- 
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
--- 
You received this message because you are subscribed to the Google Groups "CAS 
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cas-user+unsubscr...@apereo.org.
To view this discussion on the web visit 
https://groups.google.com/a/apereo.org/d/msgid/cas-user/4022524a9a9f927c6ea830fa2cc888ba94c62c46.camel%40uvic.ca.

Reply via email to