Q: Something went wrong, I don't know where to look?

A: Fear not. Check $ORCA_HOME/tomcat/logs/orca.log and $ORCA_HOME/tomcat/logs/catalina.out


Q: Where is antlib.xml?

A: Install maven ant tasks (you can download and install maven-ant-tasks-2.1.0.jar directly from apache.com and in Linux put it in /usr/share/ant/lib/). See Prerequisites.

You can check it:

$ jar -tf $ANT_HOME/lib/maven-ant-tasks*.jar | grep antlib.xml
org/apache/maven/artifact/ant/antlib.xml
$

Q: Maven complains about heap space while doing "mvn install", what's this about?

A:

$ export MAVEN_OPTS="-XX:MaxPermSize=512m -Xmx1024m"
$ mvn install

Q: Webapp complains about not being able to find container.properties

A: As of Anacortes 1.2 ORCA no longer packages container.properties with the webapp. Create a directory (e.g. /opt/orca), make sure tomcat has a definition of $ORCA_HOME in its start.sh pointing to it (e.g. add 'export ORCA_HOME=/opt/orca') to tomcat start.sh, then copy container.properties in $ORCA_HOME/config/ and try again.


Q: My node agent randomly quits

A: Nodeagents ship with remote debugging port open by default. Port scans on that port tend to kill the NA. Reconfigure the NA not to use remote debugging (/root/na/bin/httpserver.sh):

# Uncomment this line to turn on debugging. Note that a port scan on the debug port will kill the
# JVM. This is a known bug in Java 1.5.
#DEBUG_OPTIONS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=${DEBUG_PORT}"

Q: My webapp randomly quits

A: You may have opened debug port in tomcat/start.sh. Close it by commenting out the long CATALINA_OPTS declaration and uncommenting the short one:

declare -x CATALINA_OPTS="-Xmx1024m"
#declare -x CATALINA_OPTS="-ea -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=11111 -Xmx1024m"

Q: How do I modify the path to Java executables used by ORCA?

A: Different ORCA components deal with it differently. For command-line testing, it is enough that your shell environment has proper $PATH and $JAVA_HOME settings. For container deployments, you can prepend tomcat/start.sh with

export JAVA_HOME=<new path to java installation>
export PATH=$JAVA_HOME/bin:$PATH

For node agents, you can prepend the /etc/init.d/na script after the node agent is deployed to a host:

export JAVA_HOME=<new path to java installation>
export PATH=$JAVA_HOME/bin:$PATH

Q: What do I need to do to cancel a lease in Bella 2.x?

A: A controller injects a reservation object in the system by calling the service manager's demand(IReservation) method. All you need to cancel the lease is to call close() on that same reservation object.

You can close a reservation at any time. The internal state machine is designed to handle this and should do the right thing.


Q: I'm confused about all the steps needed to build ORCA?

A: Builds got much easier after Bella. These instrux are old. Please see the wiki instrux for building Bella. Basically you just check out from the subversion repo and then type 'mvn install'.

For pre-bella, the correct sequence when starting with a fresh orca build is:

 ant get.all
 ant get.certificate (or ant get.certificate.sudo) - ONLY IF DOING FOR THE FIRST TIME ON THIS HOST
 ant prepare.build
 mvn install
 ant prepare.use

ant get.all will check the code out from the different subversion projects that constitute ORCA

ant get.certificate will install RENCI's (geni-orca.renci.org) host certificate in your host's Java keystore - this only needs to be done once on a given host

ant prepare.build will create Maven pom files at the top level of each project

mvn install will compile the jars and place them in target/ of each project and in ~/.m2/repository

ant prepare.use executes the following script: build-all/use.sh. If you take a look at this script, you will see that it executes ant get.packages in tools/cmdline.

The story about ant get.packages is as follows: when Orca starts it loads all extensions under $ORCA_HOME/startup. ant get.packages places the default extensions there. It should be rerun every time one of these extensions changes, so that $ORCA_HOME/startup would contain the most recent version of that extension. These versions come from the Maven repository (~/.m2/repository)


Q: What login/password do I use to login to ORCA portal?

A: In the pre 2.0 ORCA the password was stored in MySQL database and the default was 'admin' with an empty password. Starting from Bella 2.0 the password is stored in the container.properties file. This file is placed in $ORCA_HOME/config/. A stub for container.properties can be found under $ORCA_SRC/webapp2/config/


Q: I get an artifact missing error during one of the build stages?

A: Sometimes these errors are due to problems with pom files, however a lot of times they are transient, having to do with the behavior of Maven. Re-running 'mvn install' may clear them.


Q: How do I get actor certificate?

A: From $ORCA_SRC/tools/config:

ant -emacs export64.actor.certificate -Dactor=guid_of_the_actor

Q: How can I add an external jar file to maven project?

A: An out-of-date procedure is described below. A better way is to deploy it using Nexus repository (http://ci-dev.renci.org). You need to have RENCI LDAP credentials to do it.

Outdated procedure: get this file from svn:

https://geni-orca.renci.org/svn/orca/tools/pom/tags/orca-parent-1.0/deploy.sh. Copy it in the root of your code checkout.

Read the file and create ~/.m2/settings.xml as directed.

Invoke the file like this:

deploy.sh groupid artifactid version packaging path_to_artifact

groupid: flowvisor
artifactid: flowvisor
version: 1.0
packaging: jar
path_to_artifact: path_to_your jar

Then you can refer to this jar in your pom file like this:

       <dependency>
           <groupId>flowvisor</groupId>
           <artifactId>flowvisor</artifactId>
           <version>1.0</version>
       </dependency

NOTE: change the groupid/artifactid/version as you see fit. Just make sure you remember what you passed to deploy.sh so that you can use the same parameters in your dependency declaration.


Q: I'm getting a RuntimeException "Cannot obtain actor portal plugin"?

A: You are missing an extension package in the deployed webapp. Stop Tomcat, remove tomcat/webapps/orca/ subtree, remove $ORCA_HOME/state_recovery.lock file, then do

$ cd $ORCA_SRC/webapp
$ mvn clean; mvn package; ant deploy

Q: Tomcat is running out of memory? e.g. logs/catalina.out reports exceptions

Caused by: java.lang.OutOfMemoryError: PermGen space

A: locate Tomcat's start.sh, within there is a line that looks like this:

declare -x CATALINA_OPTS="-ea -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xmx1024m"

add another option to it:

declare -x CATALINA_OPTS="-ea -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xmx1024m  -XX:MaxPermSize=512M"

Here we are declaring PermGen? space to be 512M, which is quite large. Anything at 128M or above would improve the situation as Tomcat default is 64M.


Q: The logs are too verbose, how do I reduce that?

A: Logging is controlled via the $ORCA_HOME/config/container.properties file. If you don't have one, copy it from $ORCA_SRC/webapp/config/container.properties. Find the log4j section. Set log4j.logger.orca to 'INFO' instead of 'DEBUG'. This will reduce the overall logging verbosity. You can also do it per actor by setting 'log4j.logger.orca.actor-name' property to the appropriate logging level.

Just to be clear, ORCA uses the log4j system for logging and the default configuration uses 10 rotating log files at 10MB each, so you will not run out of disk space just because the logs are too verbose (the maximum the logs will ever occupy is 100MB). However if you are trying to debug and logs are interfering, you can modify parts of the logging system using container.properties.


Q: Where are the references to the MySQL database used by ORCA located?

A: Several places, unfortunately:

  • $ORCA_HOME/config/container.properties
  • $ORCA_HOME/config/context.xml
  • $ORCA_SRC/webapp/src/main/webapp/META-INF/context.xml
  • $ORCA_SRC/webapp/src/main/webapp/WEB-INF/service.properties

Q: I'm getting a 'PKIX path building failed' error when building orca or its elements?

A: You need to import the certificate of the host ci-dev.renci.org into the java default truststore.

$ which java
/opt/java/jdk....
$ openssl s_client -connect ci-dev.renci.org:443 > cert
$ sudo keytool -importcert -keystore /opt/java/jdkX.X.X/jre/lib/security/cacerts -alias ci-dev.renci.org -file cert