sonar-runner getting java.lang.ClassNotFoundException: org.picocontainer.Startable - sonarqube

I upgraded my test Sonar server to 5.2 and am using sonar-runner-2.5-RC1 and haven't had any issues running sonar-runner to analyze my code. I then upgrade my production Sonar server to 5.2 and ran a production build using the same command line settings and sonar-runner.properties file and I get the following error:
Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/Startable
I then ran the build on my 'test' build machine against the production sonar server and it ran correctly. So it appears to me that there must be some difference on the production build machine that is impacting sonar-runner but I can't figure out what the issue might be.
All I have in my sonar runner properties file is:
sonar.sourceEncoding=UTF-8
sonar.sources=src
sonar.modules=svc1, \
svc2
svc1.sonar.java.binaries=../build/gradle/svc1/classes/
svc1.sonar.projectName=SVC1
svc2.sonar.java.binaries=../build/gradle/svc2/classes/
svc2.sonar.projectName=SVC2
cli.sonar.language=py
cli.sonar.projectName=CLI
SONAR_RUNNER_OPTS='-Xmx2048m -XX:MaxPermSize=512m' sonar-runner-2.5-RC1/bin/sonar-runner
-e
-Dproject.settings=/workspace/build/workspace/sonar-runner.properties
-Dsonar.host.url=http://192.XXX.XXX.X -Dsonar.projectKey=TEST
-Dsonar.projectName=TEST-driver -Dsonar.branch=master
-Dsonar.projectVersion=2.0.0.0
-Dsonar.java.libraries=/workspace/build/workspace/jars/*.jar,/workspace/build/workspace/build/gradle/portal/compile/lib/*.jar,/usr/lib64/jvm/java/lib/*.jar'
Logs:
INFO: Runner configuration file: NONE
INFO: Project configuration file: /workspace/build/workspace/CH-coprhd-controller-master-sonar/coprhd-controller-sonar-runner.properties
INFO: SonarQube Runner 2.5-RC1
INFO: Java 1.7.0_71 Oracle Corporation (64-bit)
INFO: Linux 3.16.6-2-desktop amd64
INFO: SONAR_RUNNER_OPTS=-Xmx2048m -XX:MaxPermSize=512m
INFO: Error stacktraces are turned on.
INFO: User cache: /workspace/build/workspace/CH-coprhd-controller-master-sonar/.sonar/cache
INFO: Load global repositories
INFO: Load global repositories (done) | time=166ms
INFO: User cache: /workspace/build/workspace/CH-coprhd-controller-master-sonar/.sonar/cache
INFO: Load plugins index
INFO: Load plugins index (done) | time=3ms
INFO: Download sonar-issues-density-plugin-1.0.jar
INFO: Download sonar-javascript-plugin-2.8.jar
INFO: Download sonar-findbugs-plugin-3.3.jar
INFO: Download sonar-groovy-plugin-1.3.jar
INFO: Download sonar-build-stability-plugin-1.3.jar
INFO: Download sonar-xml-plugin-1.3.jar
INFO: Download sonar-web-plugin-2.4.jar
INFO: Download sonar-clover-plugin-3.0.jar
INFO: Download sonar-sonargraph-plugin-3.4.2.jar
INFO: Download sonar-python-plugin-1.5.jar
INFO: Download sonar-scm-git-plugin-1.1.jar
INFO: Download sonar-scm-svn-plugin-1.2.jar
INFO: Download sonar-checkstyle-plugin-2.4.jar
INFO: Download sonar-pmd-plugin-2.5.jar
INFO: Download sonar-java-plugin-3.7.1.jar
INFO: Download sonar-generic-coverage-plugin-1.1.jar
INFO: Download sonar-css-plugin-1.5.jar
INFO: Default locale: "en_US", source code encoding: "UTF-8"
INFO: Process project properties
Exception in thread "main" java.lang.NoClassDefFoundError: org/picocontainer/Startable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at org.sonar.classloader.ClassRealm.loadClassFromSelf(ClassRealm.java:125)
at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:37)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
at org.sonar.plugins.issuesdensity.IssuesDensityPlugin.getExtensions(IssuesDensityPlugin.java:37)
at org.sonar.batch.bootstrap.ExtensionInstaller.install(ExtensionInstaller.java:51)
at org.sonar.batch.scan.ProjectScanContainer.addBatchExtensions(ProjectScanContainer.java:234)
at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:119)
at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:98)
at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:85)
at org.sonar.batch.bootstrap.GlobalContainer.executeAnalysis(GlobalContainer.java:153)
at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:110)
at org.sonar.runner.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.sonar.runner.impl.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:61)
at com.sun.proxy.$Proxy0.execute(Unknown Source)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:275)
at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:166)
at org.sonar.runner.api.EmbeddedRunner.runAnalysis(EmbeddedRunner.java:153)
at org.sonar.runner.cli.Main.runAnalysis(Main.java:118)
at org.sonar.runner.cli.Main.execute(Main.java:80)
at org.sonar.runner.cli.Main.main(Main.java:66)
Caused by: java.lang.ClassNotFoundException: org.picocontainer.Startable
at org.sonar.classloader.ParentFirstStrategy.loadClass(ParentFirstStrategy.java:39)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:87)
at org.sonar.classloader.ClassRealm.loadClass(ClassRealm.java:76)
... 34 more
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 9,469ms last 8 cycles average is 1,183ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 28,431ms last 8 cycles average is 3,553ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 33,431ms last 8 cycles average is 4,178ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 2,661ms last 8 cycles average is 332ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 10,554ms last 8 cycles average is 1,319ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 9,480ms last 8 cycles average is 1,185ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 8,480ms last 8 cycles average is 1,060ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 11,104ms last 8 cycles average is 1,388ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 39,183ms last 8 cycles average is 4,897ms
INFO: [JOURNAL_FLUSHER] WARNING Journal flush operation took 4,995ms last 8 cycles average is 624ms
Build timed out (after 180 minutes). Marking the build as aborted.

This Issues Density Plugin is not compatible with SQ 5.2 and is no more maintained. See http://docs.sonarqube.org/display/PLUG/Issues+Density+Plugin. Moreover I recommend to open the page Administration > System > Update Center before upgrading SonarQube. It displays the list of incompatible plugins.

The issue turned out to be that when SONAR_USER_HOME pointed to the same folder where sonar_runner was executed in, the SonarQube plugins were first downloaded to $SONAR_USER_HOME and then as the analysis started, that location was wiped out for the analysis files for each module to be placed in the same folder. Ensuring SONAR_USER_HOME was in a different location resolved the issue.

Related

How to handle "Re-run SonarQube Scanner using the -X switch to enable full debug logging" Error

We've suddenly got the SonarQube Error on CI/CD pipeline, Concourse. Since we had no change around sonar properties recently, totally confused what this error requires us.
Preparing SonarQube scanner...
Starting sonar-scanner (type: cli)...
INFO: Scanner configuration file: /opt/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: /tmp/build/put/sonar-input/sonar-project.properties
INFO: SonarQube Scanner 4.0.0.1744
INFO: Java 1.8.0_151 Oracle Corporation (64-bit)
INFO: Linux 4.15.0-159-generic amd64
INFO: User cache: /root/.sonar/cache
INFO: SonarQube server 7.9.1
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
WARN: SonarScanner will require Java 11+ to run starting in SonarQube 8.x
INFO: Sensor SurefireSensor [java] (done) | time=70ms
~
INFO: Sensor JavaXmlSensor [java]
INFO: Sensor JavaXmlSensor [java] (done) | time=3ms
INFO: Sensor HTML [web]
INFO: Sensor HTML [web] (done) | time=14ms
INFO: ------------- Run sensors on project
INFO: Sensor Zero Coverage Sensor
INFO: Sensor Zero Coverage Sensor (done) | time=4ms
INFO: Sensor Java CPD Block Indexer
INFO: Sensor Java CPD Block Indexer (done) | time=81ms
INFO: 55 files had no CPD blocks
INFO: Calculating CPD for 44 files
INFO: CPD calculation finished
INFO: Analysis report generated in 91ms, dir size=696 KB
INFO: Analysis report compressed in 319ms, zip size=316 KB
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 18.928s
INFO: Final Memory: 32M/995M
INFO: ------------------------------------------------------------------------
ERROR: Error during SonarQube Scanner execution
ERROR: The 'report' parameter is missing
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
ERROR in /opt/resource/out : line 251 with exit code 2
Is there any way to handle this error...?
And just wondering it would be clear this issue if we would reboot the sonarqube docker.
Any adivise would be highly appreciated.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
968xxxxxxx5b bitnami/sonarqube:7.9.1 "/app-entrypoint.sh …" 9 months ago Up 8 months 0.0.0.0:80->9000/tcp docker_sonarqube_1
Thanks to following discussion, we understood that caused by the lack of disk spaces. After clean-up, it worked fine in our case.
Error: The ‘report’ parameter is missing
https://community.sonarsource.com/t/error-the-report-parameter-is-missing/9616
– Faced similar issue, and found disk space issue on the server. Once clearing the disk space it worked.
Sonarqube : The 'report' parameter is missing
https://stackoverflow.com/questions/48805695/sonarqube-the-report-parameter-is-missing
--I just had the same problem here: my Linux server ran out of disk space and Sonarqube started to produce the report parameter is missing error. After deleting some unused files and restarting sonarqube, everything worked normal again

How to solve Sonarqube java.lang.OutOfMemoryError: Java heap space

I'm using Sonarqube community version. I'm getting the following error,
Exception in thread "LOG_FLUSHER" Exception in thread "CHECKPOINT_WRITER" java.lang.OutOfMemoryError: Java heap space
at java.util.ArrayList.iterator(ArrayList.java:840)
at java.util.Collections$SynchronizedCollection.iterator(Collections.java:2031)
at com.persistit.Persistit.pollAlertMonitors(Persistit.java:2285)
at com.persistit.Persistit$LogFlusher.run(Persistit.java:192)
java.lang.OutOfMemoryError: Java heap space
at java.util.HashMap$Values.iterator(HashMap.java:968)
at com.persistit.Persistit.earliestDirtyTimestamp(Persistit.java:1439)
at com.persistit.CheckpointManager.pollFlushCheckpoint(CheckpointManager.java:271)
at com.persistit.CheckpointManager.runTask(CheckpointManager.java:301)
at com.persistit.IOTaskRunnable.run(IOTaskRunnable.java:144)
at java.lang.Thread.run(Thread.java:748)
WARNING: WARN: [JOURNAL_FLUSHER] WARNING Journal flush operation took 7,078ms last 8 cycles average is 884ms
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
INFO: Total time: 1:17.852s
ERROR: Error during SonarQube Scanner execution
ERROR: Java heap space
ERROR:
Exception: java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "CLEANUP_MANAGER"
INFO: Final Memory: 40M/989M
INFO: ------------------------------------------------------------------------
The SonarQube Scanner did not complete successfully
I have Changed the size in sonar.properties, still I'm facing the same problem. How to solve this.
sonar.web.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts =-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
sonar.search.javaOpts=-Xmx4G -Xms2048m -XX:+HeapDumpOnOutOfMemoryError
What you've changed are the settings that allocate memory to SonarQube itself.
What you need to change is the setting that allocates memory to the analysis process. You haven't said which analyzer you're using, so the details will vary a little, but
for SonarQube Scanner export SONAR_SCANNER_OPTS="-Xmx512m"
for SonarQube Scanner for Maven export MAVEN_OPTS="-Xmx512m"
Large files in Project cause this problem, for me a 50MB XML file gives this error and this file was not important to the analysis process. I excluded this file in the configuration file (SonarQube.Analysis.xml) and the problem was solved

Error during Sonar-runner execution, Fail to download libraries from server

I'm trying to install SonarQube Runner.
I am using this versions:
sonarqube-5.1
sonar-runner-dist-2.4
mysql 5.1.63
jdk 1.7.0_79
ubuntu 11.4, 32 bits
I've already configured:
sonar/conf/sonar.properties
sonar-runner/conf/sonar-runner.properties
And created the project configuration file to analyze, in the directory of my project:
sonar-project.properties
The SonarQube is running correctly, I can corroborate doing:
service sonar status
If I run:
sonar-runner -X
I get the following error:
SonarQube Runner 2.4
Java 1.7.0_79 Oracle Corporation (32-bit)
Linux 2.6.38-8-generic i386
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: /opt/sonar-runner/conf/sonar-runner.properties
INFO: Project configuration file: /home/taller/taller2016/U3D_2016/sonar-project.properties
INFO: Default locale: "es_AR", source code encoding: "UTF-8"
INFO: Work directory: /home/taller/taller2016/U3D_2016/./.sonar
INFO: SonarQube Server 5.1
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 0.185s
Final Memory: 0M/53M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
java.lang.IllegalStateException: Fail to download libraries from server
at org.sonar.runner.impl.Jars.dowloadFiles(Jars.java:78)
at org.sonar.runner.impl.Jars.download(Jars.java:57)
at org.sonar.runner.impl.JarDownloader.download(JarDownloader.java:46)
at org.sonar.runner.impl.JarDownloader.checkVersionAndDownload(JarDownloader.java:37)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:71)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
at org.sonar.runner.api.Runner.execute(Runner.java:100)
at org.sonar.runner.Main.executeTask(Main.java:70)
at org.sonar.runner.Main.execute(Main.java:59)
at org.sonar.runner.Main.main(Main.java:53)
Caused by: java.io.IOException: Status returned by url : 'http://localhost:9002/sonar/batch_bootstrap/index' is invalid : 404
at org.sonar.runner.impl.ServerConnection.downloadString(ServerConnection.java:94)
at org.sonar.runner.impl.Jars.dowloadFiles(Jars.java:64)
... 12 more
What do I need to do or change to solve it?
The access.log contains:
127.0.0.1 - - [06/oct/2016:16:17:34 -0300] "GET /sonar/api/server/version HTTP/1.1" 200 3 "-" "SonarQubeRunner/2.4"
127.0.0.1 - - [06/oct/2016:16:17:34 -0300] "GET /sonar/batch_bootstrap/index HTTP/1.1" 302 109 "-" "SonarQubeRunner/2.4"
127.0.0.1 - - [06/oct/2016:16:17:34 -0300] "GET /sonar/api/maintenance HTTP/1.1" 404 1045 "-" "SonarQubeRunner/2.4"
Thanks!
I found that the version of Java that was running on the server was 6, and this SonarQube needs Java 7. So, I upgraded the version of java. Then continued giving other errors, but droping the database and regenerating it, it worked correctly.
In my case it was too old SonarQube scanner(runner) version. Update to 4.x should fix the problem. See also https://community.sonarsource.com/t/error-during-sonarqube-scanner-execution-after-upgrade-to-sonarqube-8/17378/2.

Access denied for Sonar database

I encounter an 'Access denied' error when connecting to the Sonar database. Below the trace:
[workspace] $ /var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Sonar/bin/sonar-runner -Dsonar.jdbc.driver=com.mysql.jdbc.Driver -Dsonar.jdbc.url=jdbc:mysql://tridev002.xxxxx.net:3306/sonar ******** ******** -Dsonar.host.url=http://tridev002.xxxx.net:9000/ ******** ******** "-Dsonar.projectBaseDir=/var/lib/jenkins/jobs/Test Sonar/workspace"
SonarQube Runner 2.4
Java 1.7.0_72 Oracle Corporation (64-bit)
Linux 3.2.0-4-amd64 amd64
INFO: Runner configuration file: /var/lib/jenkins/tools/hudson.plugins.sonar.SonarRunnerInstallation/Sonar/conf/sonar-runner.properties
INFO: Project configuration file: NONE
INFO: Default locale: "en_US", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Work directory: /var/lib/jenkins/jobs/Test Sonar/workspace/.sonar
INFO: SonarQube Server 4.5.1
13:44:54.656 INFO - Load global referentials...
13:44:54.825 INFO - Load global referentials done: 173 ms
13:44:54.833 INFO - User cache: /var/lib/jenkins/.sonar/cache
13:44:54.841 INFO - Install plugins
13:44:54.920 INFO - Install JDBC driver
13:44:54.926 INFO - Create JDBC datasource for jdbc:mysql://tridev002.xxxxx.net:3306/sonar
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 1.494s
Final Memory: 8M/241M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: Fail to connect to database
ERROR: Caused by: Cannot create PoolableConnectionFactory (Access denied for user 'jenkins-sonar'#'tridev002.xxxxx.net' (using password: YES))
ERROR: Caused by: Access denied for user 'jenkins- sonar'#'tridev002.xxxxx.net' (using password: YES)
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
Build step 'Invoke Standalone Sonar Analysis' marked build as failure
In the Jenkins configuration the Database URL, Database login en Database password are set correctly. With this URL and credentials it is possible to log in via a mysql command line client and we can view the sonar database tables.
We also checked the permissions of the database user and these are set correctly.
We checked the sonar.properties file and everything is commented out.
If we add sonar.jdbc.username and sonar.jdbc.password to the project properties, the connection with the database is successfull. But the password is in plain text then, which is unadvisable.
Does anyone know why the credentials of the system configuration is not used? And what is the solution? Is this a bug in SonarQube?

Read timed out on /batch/project (SonarQube 4.5)

I am struggling with the following problem.
Log of the executed when sonar-runner in Jenkins.
SonarQube Runner 2.4
Java 1.7.0_67 Oracle Corporation (64-bit)
Windows 7 6.1 amd64
SONAR_RUNNER_OPTS=-Xms256m -Xmx512m
INFO: Runner configuration file: D:\CI_BUILD\sonar-runner-2.4\conf\sonar-runner.properties
INFO: Project configuration file: NONE
INFO: Default locale: "ko_KR", source code encoding: "UTF-8"
INFO: Work directory: D:\CI_BUILD\jenkins_home\jobs\CAFE-CLIENT\workspace\.sonar
INFO: SonarQube Server 4.5
05:17:52.119 INFO - Load global referentials...
05:17:53.382 INFO - Load global referentials done: 1263 ms
05:17:53.414 INFO - User cache: C:\Users\pcms_build\.sonar\cache
05:17:53.445 INFO - Install plugins
05:17:54.225 INFO - Install JDBC driver
05:17:54.303 INFO - Create JDBC datasource for jdbc:jtds:sqlserver://10.240.232.145/sonardb;SelectMethod=Cursor
05:17:56.222 INFO - Initializing Hibernate
05:17:59.217 INFO - Load project referentials...
05:18:19.232 INFO - Load project referentials done: 20015 ms
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 34.757s
Final Memory: 21M/291M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
ERROR: Unable to execute Sonar
ERROR: Caused by: Unable to request: /batch/project?key=CAFE-CLIENT&preview=false
ERROR: Caused by: Read timed out
ERROR:
ERROR: To see the full stack trace of the errors, re-run SonarQube Runner with the -e switch.
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.
Build step 'Invoke Standalone Sonar Analysis' marked build as failure
05:18:19.232 INFO - Load project referentials done: 20015 ms
When "Load project referentials done" value is larger than 20,000 ms,
Always "Read timed out" occurs.
Loading of project referentials is not expected to take more than a few seconds. It is very likely you have a performance issue on your SQ server (or with your DB). Here are some criteria that may increase duration of this web service:
you have installed a lot of language plugins or you have enabled a lot of rules in quality profiles
your project is a multi-module project with a lot of modules
Compare for example with:
http://nemo.sonarqube.org/batch/project?key=org.codehaus.sonar%3Asonar&preview=true
that returns more than 1000 rules and 33 modules. It takes less than 2 seconds to return data.
EDIT: it seems there was some SQL issues depending on your DB vendor. See http://jira.codehaus.org/browse/SONAR-5849 and http://jira.codehaus.org/browse/SONAR-6063. Should be fixed in upcoming 4.5.3

Resources