Frequently Asked Questions

General

  1. How can I not load the Sample Data?
  2. Is there suitable 'propaganda' material that I could use to convince my boss to use Scarab?
  3. Is Scarab ready for production use?
  4. What are Scarab's disadvantages over Bugzilla?
  5. What problems might arise if I deploy Scarab now?
  6. What documentation is available?
  7. Why am I getting an error connecting to MySQL?
  8. How can I contribute to Scarab and why?
  9. How do I hook Scarab up to (or behind) Apache?
  10. How do I populate the database with my own issue types, attributes and attribute options?
  11. How do I setup Scarab so that it will send a copy of each issue change to a particular email address (ie: a mailing list or the project leader)?
  12. When I receive notification email from scarab, the url to the issue starts with http://localhost:8080/. Clearly that is bad because I want the email to point to the server that Scarab is on. How to I make it say the server domain name instead?
  13. How can I set defaults for the various attributes on issue entry?
  14. What is the process for upgrading Scarab?
  15. I tried to register for Scarab's issue tracker and got the following error:
  16. Can I see Scarab in action without installing it myself?
  17. I get a funny error when trying to run Scarab on Tomcat 4.1.x:
  18. I want the Velocity templates to be copied into the webapp directory so that I can deploy Scarab as a WAR.
  19. What is the best way to make duplicate installations of Scarab on multiple machines/databases? In other words, I want to have multiple installations of Scarab and I don't want to have to setup each one by hand.
  20. I see a lot of little temp files created on disk.
  21. Is there a way to turn off the auto-logoff feature or extend the amount of time before it automatically invalidates a user and forces them to log in again?

XML Import

  1. I need to add issues to scarab. How do I begin?
  2. Can running an import break my scarab instance?
  3. What can I do via xml import?
  4. Does import support the import of inter-issue dependencies?
  5. I want to import users and attributes. Can I?
  6. When would I start a new activity set?
  7. How does workflow affect xml import?
  8. Are there sample xml issues that I can study?
  9. Why when I import is issue 'created-by' not respected?
  10. How could I control the encoding of the generated XML?
  11. How I do an import from Excel or from a simple XML from other systems?

Default workflow questions and answers

  1. Can I have some values in a dropdown list restricted when editing, but visible when querying?
  2. I've added a blocking dependency to my issue, but I cannot see how this affects to it.
  3. Ok, my issue now appears as "Blocked", but I don't want my users to change the state of a blocked issue!
  4. I'm looking for a way to let a new issue appear in status "new" immediately after sending and without interaction of any person. If I use the transition from "empty option" to "new", scarab presents a checkbox for the "new" status. I would like to avoid this checkbox.

General

General
How can I not load the Sample Data?
There is a LoadOrder.lst file in src/sql that you should be able to modify to get what you want. Just remove the last file which is the sample data. If you don't want to modify the default LoadOrder.lst, you can also specify a different file to use with -l or --loadorder option to create-db.sh.
Is there suitable 'propaganda' material that I could use to convince my boss to use Scarab?
The website and use of Scarab itself are all we currently have. Scarab is very easy to install and setup, so it should not take you much time to become comfortable with Scarab so that you can perform your own demonstration.
Is Scarab ready for production use?
Scarab is in pre-1.0 beta. It has been in development for over two years now and there is quite a lot of features in it. On July 9th, 2002, we became self hosting. This means that we now use Scarab to track Scarab so we feel it is ready enough for usage. We also know that there are several large corporations using Scarab. Please note that we do not promise anything. If Scarab eats your database, then we hope you have good backups.
What are Scarab's disadvantages over Bugzilla?

Scarab has many features and advantages over Bugzilla, which we are not going to get into here, but the primary disadvantages are:

#1. Simple implementation of workflow

Scarab default workflow implementation is simple, and does not try to provide a full-blown Workflow engine. This means that Scarab does not have any logic implemented within it that allows you to say things like: when the State is changed to closed, change the resolution to resolved. There is an API for allowing this to happen, and you can ask in the mailing lists for the experiences of Scarab's users successfully implementing it.

#2. testing and deployment as wide as Bugzilla

Bugzilla has been deployed far and wide over a number of years and has undergone a great amount of testing and visibility on the Mozilla.org website. Scarab has not had the same level of testing and usage.

What problems might arise if I deploy Scarab now?

We have not heard of any major data integrity issues. In other words, we have not heard of Scarab destroying its own database. However, we have found several bugs along the way where things were not being logged properly or other such annoyances.

We recommend strongly that you make regular backups of your database by doing full dumps. That way, if something does go wrong, not only can you send us a copy of your database (if appropriate) but you can also revert to the previous state.

We provide database upgrade scripts for each revision of Scarab. That way you can be sure that if you start using Scarab now, you will be able to forward migrate your data when there are Scarab updates. Please see the upgrade instructions below for more information.

You may also run into various bugs or missing features within Scarab. It is best to first search our issue database and KNOWN_ISSUES.txt file to see if we know about the issue. If not, please let us know by reporting it to the issue tracker. Whatever you do, please don't send it to the mailing lists.

Remember, Scarab is still pre-1.0 beta software and is still under heavy development.

What documentation is available?

There is three types of documentation for Scarab.

  1. This page.
  2. There is what is available on the website (which tends towards administration and other questions).
  3. There is user level documentation that is built into the application itself and is available in the left side navigation.

Why am I getting an error connecting to MySQL?

From the README.txt file:

NOTE: If you get a 'Server configuration denies access to data source' or 'access denied' or 'Invalid authorization' or 'java.lang.NullPointerException: Connection object was null.' error from MySQL in the log files, please read the MySQL documentation on how to fix this error. We will not provide support for this since it is really a MySQL configuration issue.

Hint: On some operating systems, there seems to be a weird interation between the JVM, DNS resolution and the MySQL driver where a JDBC url pointing to 'localhost' will resolve as 'localhost.localdomain' and will prevent the connection to MySQL from authenticating correctly because most people configure MySQL for 'localhost'. One way to get around this is to use IP addresses in both the MySQL ACL as well as in the JDBC url.

At least one person has reported that using '127.0.0.1' instead of 'localhost' resolved a 'Server configuration denies access to data source' connection issue.

In order to setup the right permissions in MySQL, you may wish to try executing this command on a Unix command line (it has been reported to work for one person):

echo "GRANT ALL ON scarab.* to ''@localhost" | mysql mysql

NOTE: Sometimes it may be useful to use "ant create-db" rather than "create-db.sh" to diagnose connection issues since ant uses jdbc and the same URL that Scarab does while running.

Here is a couple links to also help you solve the permissions problem:

MySQL documentation

MySQL driver documentation

How can I contribute to Scarab and why?

How: Please see our Getting involved document.

Why: Because the need for a first class issue tracking system that is open source is badly needed.

How do I hook Scarab up to (or behind) Apache?

Here is my configuration for the Scarab Live Server:

NameVirtualHost 157.22.245.3
<VirtualHost 157.22.245.3>
    ServerName scarab.collab.net
    RewriteEngine on
    RewriteRule /(.+) http://scarab.collab.net:8081/$1 [P]
    ProxyPassReverse / http://scarab.collab.net:8081/s/
</VirtualHost>

The above might not be optimal or even correct, but it works for me. You will need to have mod_rewrite and mod_proxy enabled on your server. A 'faster' method of doing the same thing would be to use Tomcat's mod_jk/mod_webapp with some rewrite rules (to get the short url's), but I'm not doing that, so I don't have configuration to show for it. Contributions welcome.

For hiding Scarab behind Apache SSL, a similar setup as above would work, you would just want to make sure to listen to the https port 443 in the VirtualHost declaration.

How do I populate the database with my own issue types, attributes and attribute options?

When you first install Scarab using the ./create-db.sh -e script, you will get an empty database that is only populated with the required data. Therefore, you will need to setup your installation with new Modules, Issue types, Attributes and Attribute options.

Login as the Scarab Administer account that you created/defined in your build.properties when you built Scarab.

#1. Create a new module.

Admin -> Modules -> Manage modules -> Create new module

#2. Select the module by clicking the 'Modules' link in the top-left of the screen.

#3. Now, create a new global issue type.

Admin -> Global -> Global issue types

#4. Add the new issue type to the module.

Admin -> Modules -> Manage issue types -> Create new

#5. Set the issue type to be active and shown in the left hand nav.

(should be the next screen after #4. if not, then it is: Admin -> Modules -> Manage issue types)

#6. Edit the issue type and create attributes and attribute options.

Admin -> Modules -> Manage issue types (click the issue type name).

#7. Add attributes to an attribute group.

(click the attribute group name on the 'Edit issue type' screen and then click the 'Add new' button. If there are no global attributes to add (most likely in this case), click the 'Create new' button to define a global attribute.)

#8. Defining an attribute and its options.

(Set the name/description/type of the attribute and then save it. If you have created a Dropdown list, then the ability to create attribute options will show up below. Simply add options and click Save. When you are done, click done and it will take you back to step #7. The attribute should also appear in the group.)

Continue to repeat the steps above until all of your issue types, attributes and attribute options have been defined.

How do I setup Scarab so that it will send a copy of each issue change to a particular email address (ie: a mailing list or the project leader)?
As either the module administrator or the domain administrator user, go to the Admin->Modules->Manage modules screen and edit the particular module that you are interested in tracking issue changes in. Set the 'Archive email' address to the email address that you want. Please note, do not try to do this in the Global module, only modules which are children of the Global module. If you want this email to go to multiple people, setup a mailing list and subscribe the people to that mailing list and then set the 'Archive email' address to be the address of the mailing list.
When I receive notification email from scarab, the url to the issue starts with http://localhost:8080/. Clearly that is bad because I want the email to point to the server that Scarab is on. How to I make it say the server domain name instead?
In order to have one fewer thing to have to configure, Scarab uses whatever you type into the browser url as the url that is sent in the emails. So, if your server name is foo.com, then going to http://foo.com:8080/ instead of http://localhost:8080/ will generate the right url in the emails.
How can I set defaults for the various attributes on issue entry?
Right now, that is what issue templates do. Click on the 'Templates' link in the left hand side navigation, create the template and it will then show up when you go to enter a new issue. You can create as many templates as you wish and just 'apply' them when you enter a new issue. A nice feature addition would be to have a setting on the template administration screen that denotes which one should be automatically applied.
What is the process for upgrading Scarab?

The Scarab developers provide MySQL database upgrade scripts for each new version of Scarab. We also take contributions for other databases. These scripts reside in the scarab/src/sql/upgrade directory. Some of these scripts are .sql files and some are unix shell .sh files. If you are using another database or operating system, we welcome your contributions to port these files.

To execute the .sql scripts you should type something along the lines of:

mysql DATABASE_NAME < mysql-upgrade-1.0b8-1.0b9-1.sql

To execute the .sh scripts you should type something along the lines of:

./mysql-upgrade-1.0b8-1.0b9-3.sh --password

Note that you will need to execute ALL of the scripts in order of upgrade version number and script order. For example, if you are upgrading from 1.0b8 to 1.0b9, then you should execute mysql*b8*b9-1.sql, mysql*b8*b9-2.sql, etc. Also note that the --password argument to the shell script is optional and not required if you do not need to specify a password.

If you have deployed Scarab with the default settings and are running out of the default target directory, then you should download the new version of Scarab, move the target directory into the new version of Scarab, cd into target/webapps/scarab/WEB-INF and backup and remove the following directories: classes, conf, lib, sql, src. You should be careful to not remove the indexes and attachments directories (if they exist). Once you have done that, you can build Scarab again following the directions in the README.txt file. You should take note to create a ~/build.properties file which stores your changes to the Scarab settings so that when you build again, your settings remain intact.

I tried to register for Scarab's issue tracker and got the following error:
Alert! Sorry, the email you submitted (EMAIL) does not have a DNS A or MX record defined. It is likely that the domain is invalid and that we cannot send you email. Please see ftp://ftp.isi.edu/in-notes/rfc2505.txt for more details. Please try another email address or contact your system administrator.

Scarab has an optional feature which is enabled by setting the scarab.register.email.checkRFC2505=true property in your build.properties. This feature uses DNS to check that the domain which is being registered has a valid A or MX record which is the minimum required to send email to a domain name. This feature is enabled to help try to prevent people from creating bogus accounts on the server.

The fix is simple, create an A or MX record for your domain entry.

Can I see Scarab in action without installing it myself?

If you want to use a Scarab instance for testing, please use this address of the instance which is rebuilt nightly from the latest source code: http://www.saxess.com/en/components/scarab/testserver.page.

Please note that, as it's always rebuilt from the HEAD, this instance could show bugs or errors that does not appear in the released versions.

Scarab also has the self-tracker availaible but please, don't use it for testing. It should be used only for reporting of Scarab's issues.

I get a funny error when trying to run Scarab on Tomcat 4.1.x:
java.lang.VerifyError: (class:
org/apache/fulcrum/intake/transform/XmlToAppData, method: parseFile
signature:
(Ljava/lang/String;Z)Lorg/apache/fulcrum/intake/xmlmodel/AppData;)
Incompatible object argument for function call

Tomcat has several directories setup in order to create different 'levels' of classpaths. There is a classpath that is specific to Tomcat and a classpath that is shared by all of the webapplications that Tomcat is running. Since Scarab still depends on Xerces 1.x, we need to make sure that that is the only Xerces available to Scarab at runtime.

In order to make Scarab work with Tomcat 4.1.x, you will need to move the xercesImpl.jar from tomcat/common/endorsed to tomcat/server/lib. This makes it so that the Xerces 2.x that comes with Tomcat is only used by Tomcat. You will also need to make sure that if you have any other webapplications which depend on Xerces (1.x or 2.x), that they include a copy of the .jar file in their WEB-INF/lib directory.

It is sad that this needs to be this way, but due to Xerces incompatibility issues, that is the way it is. Note that we will eventually make Scarab dependent on Xerces 2.x so that this is not an issue, but we are not quite there yet.

I want the Velocity templates to be copied into the webapp directory so that I can deploy Scarab as a WAR.

In your build.properties, add the line: scarab.copy.templates=true

What is the best way to make duplicate installations of Scarab on multiple machines/databases? In other words, I want to have multiple installations of Scarab and I don't want to have to setup each one by hand.

Right now, the easiest way is to setup one installation of Scarab, then mysqldump the database and import it into the other database. Eventually, we will have the ability to export/import the Scarab 'settings'.

I see a lot of little temp files created on disk.

The reason for this is because when you upload a file attachment, the upload system also sends the form data. Because of this, each little bit of data will get a file created for it. You can adjust the size of the memory cache so that more of this data is held in temp memory (and not created as files) with this property:

# The maximum size of a request that will have it's elements cached in
# memory by TurbineUploadService class.
#
services.UploadService.size.threshold=8192

These files should get cleaned up as the object is garbage collected, or the Java Virtual Machine is shutdown. If they persist after a shutdown, you can most likely safely remove them.

Is there a way to turn off the auto-logoff feature or extend the amount of time before it automatically invalidates a user and forces them to log in again?

In your build.properties, define the following by removing the #:

# This is the timeout in seconds for sessions. If the value is 
# left commented out, the servlet container's default timeout 
# will be left as is.
scarab.session.timeout = # session.timeout = 1800

If you want to disable logging people off, just set the value to a very high number.

XML Import

XML Import
I need to add issues to scarab. How do I begin?
The best place to start is by studying an issue exported by scarab. First study how the issue sits in scarab, and then browse to Admin->Modules->XML export issues and export that issue. issue. Correlate UI w/ its representation in xml. Also study the comments in the scarab dtd for clarification on scarab's interpretation of xml elements. Note that many elements have subtly different representations in the UI than they do in the dtd.
Can running an import break my scarab instance?

It shouldn't. The way the scarab import works is that it first parses the passed xml to import to ensure all dependencies resolve, and that all modules, users, attributes and attribute options mentioned in the xml exist. If any are missing, then the entire import fails and a report is produced listing the problems found ("No such user 'jon'", etc.). If importing via the UI, the error report shows in the result screen. If importing via ant, check the scarab-xmlimport.log file. If the validation parse runs to the end w/o error, then begins the insertion parse.

Note, the scarab validation parse mentioned above is distinct from an xml validation parse: The latter checks the validity of the xml submitted, the former examines the data contained in the xml making sure its coherent with respect to scarab.

What can I do via xml import?
The import of 'new' issues has been well tested. Updating extant issues w/ comments, etc., works at least for the simple cases but is in need of testing. The import of dependencies amongst issues works but it too is in need of testing, and has some limitations and requirements if included as part of an initial issue import.
Does import support the import of inter-issue dependencies?
You cannot declare dependencies between separate scarab xml files being imported; dependencies can only be reliably established (that is, reconciled) within a single xml import file. The way dependencies are done is that on import, after the validation parse and insert of issues, a dependency resolving step runs: It 'decorates' the just inserted issues w/ the interdependencies mentioned in the xml (providing certain information, like activity-set id, is correctly set between issues). This step must happen after insert because in order to make the interdependencies, the actual scarab issue ids must exist. At this time, it does not seem as though you can add dependencies via the xml import update mechanism.
I want to import users and attributes. Can I?
You cannot currently import nor export modules, users, attributes nor attribute options. This facility is to be added soon.
When would I start a new activity set?

You'd start a new activity-set when:

  1. Importing an issue and its initial state.
  2. Adding physical attachments to an issue.
  3. Adding comments to an issue (Scarab treats attachments and comments as roughly equivalent).
  4. Adding an activity entry: e.g., one or more state changes such as 'Changed from NEW to STARTED', or issue dependencies.

How does workflow affect xml import?
Workflow is disabled in the importing thread so there should be no possibility for conflict.
Are there sample xml issues that I can study?
  • /src/extensions/update-example.xml is an Example that updates an existing issue adding a comment.
  • /src/extensions/interdependencies.xml is an Example that imports 3 issues preserving the dependency issue 3 has on issue 1.
Why when I import is issue 'created-by' not respected?

What may be happening is that the activity-set id in your xml may be that of an already existing activity-set; you may be picking up the 'created-by' of the activity-set that already exists in scarab. Ensure your activity-set id is definetly not that of an already existing activity-set in scarab. This section from the scarab.dtd is pertinent:

    The activity-set id passed is checked against the db to see if
    this activity-set already exists (The activity-set id 
    == SCARAB_TRANSACTION.TRANSACTION_ID).  If the activity-set id
    does not refer to an already-existing activity-set, a new
    activity-set id is created by taking the next id off the top of 
    auto-incrementing sequence; the passed activity-set id is
    discarded.  If an activity-set w/ the passed id already exists,
    then we'll use the already-existing activity-set during import of
    this activity-set's activites. To avoid picking up an extant
    activity-set unintentionally on import, i.e. in the case where
    you are doing an import of all new issues w/ no desire to refer
    to already existing activity-sets, do not use a purely numerical
    id for your activity-set id: Give the activity-set an alphabetic 
    prefix.  In other words, instead of using numeric ids like 
    1,2,3,4,5, use ids that run new1, new2, new3, etc. Or simply do not
    supply the id element at all. The latter is what the jira import xsl
    does.

How could I control the encoding of the generated XML?

By default, Scarab will set the generated XML to encoding="UTF-8". You can set other target encoding (for example, iso-8859-1) in the scarab.dataexport.encoding property.

    scarab.dataexport.encoding=iso-8859-1

How I do an import from Excel or from a simple XML from other systems?
Take a look at the ant script in dir '$SCARAB__ROOT/extensions/excel2scarab'.

The instructions are here.

This should make it easy to prepare a valid XML for Scarab from other 'flat' data files. If you want you can check it out from Scarab's repository:
svn co http://scarab.tigris.org/svn/scarab/extensions/excel2scarab

Default workflow questions and answers

Default workflow questions and answers
Can I have some values in a dropdown list restricted when editing, but visible when querying?
An example of this would be a "Target Milestone" list, where I want to disable the released milestones but still be able to search them. If my milestones are:
    Release 0.8
    Release 0.9
    Release 1.0
    Release 1.1
    Release 1.2
    Release 1.3
    Deferred to future
and I've already released 1.0, I'd define this transitions (Global attribute definition screen) setting the needed role to "Any role" and defining no conditions,
    Any option -> Release 1.1
    Any option -> Release 1.2
    Any option -> Release 1.3
    Any option -> Deferred to future
This will disable non mentioned releases when editing issues.
I've added a blocking dependency to my issue, but I cannot see how this affects to it.
Blocking is designed to be configurable, and dependant on the issue type and module of an issue. It's based in a few concepts:

  • Blocking dependency: A dependency between two issues, with the verb "is blocked by". This is needed for the blocking system to work, but it's not enough for an issue to appear as "Blocked".
  • Blocking issue: An issue in a "Blocking" state (values in attributelists), that will make other issues that are "blocked by" it to be "Blocked".
  • Blocking condition: Defined for a given issue type in a module, is the condition that, if True, will make an issue "Blocking".
  • Blocked issue: An issue with any dependency via an "is blocked by" verb on any issue that is currently a "Blocking issue".
So you should have defined beforehand the blocking condition for your potentially blocking issuetypes. Only when an issue's actual values make that condition true, will the issue block those being "blocked by" it.

Whenever an issue is currently blocked or blocking, you will get a notification in the attributes Tab.
Ok, my issue now appears as "Blocked", but I don't want my users to change the state of a blocked issue!
You can restrict the state-transitions that are availaible for a given attribute list. Use the "Disabled if blocked" checkbox in the transition definition subscreen (Global Attributes). This way, you're enforcing the workflow, so the blocking issues will have to be resolved before the blocked one can make the state transition.
I'm looking for a way to let a new issue appear in status "new" immediately after sending and without interaction of any person. If I use the transition from "empty option" to "new", scarab presents a checkbox for the "new" status. I would like to avoid this checkbox.
Additionally to defining the "empty->new" transition, you should set the field as "Required" in this issue-type. Thus, as the only possible value for a new issue will be "new", this value will be "hardcoded" in this moment.