> 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/00a40cdf-da3f-4e0e-835e-f0798b3acc87n%40apereo.org.

Reply via email to