Skip to end of metadata
Go to start of metadata

This page describes how to upgrade to a new version of FishEye.

  • For the latest FishEye release, see FishEye releases.
  • For production environments we recommend that you test the FishEye upgrade on a QA server before deploying to production.
  • The first time you run a new version of FishEye, it will automatically upgrade its data. This may involve a complete re-index of your repository.

On this page:

Upgrade steps

This section provides general instructions for upgrading FishEye. See also the specific notes on this page for the version of FishEye you are upgrading to. We strongly recommend that you upgrade FishEye by following these steps:

Your upgrade procedure depends on whether you are using a FISHEYE_INST directory (i.e. "FishEye instance" directory).

  • The FISHEYE_INST directory is the FishEye data directory (not the installation directory) and has a location defined by the FISHEYE_INST environment variable. It is used to keep the FishEye data completely separate from the FishEye/Crucible application files. We recommend that you configure FishEye/Crucible to use a FISHEYE_INST directory for production instances. Read more about FISHEYE_INST in Installing FishEye on Windows or Installing FishEye on Linux and Mac.
  • The <FishEye home directory> is the location of the FishEye/Crucible application files.

NOTE:  For all methods below, if you previously ran FishEye as a Windows service and are installing the new version of FishEye in a new location, you need to reinstall FishEye as a Windows service. Make sure to run ...\wrapper\bin\Fisheye-Uninstall-NTService.bat from the old location.  Subsequently, prior to starting the new instance of FishEye, follow these instructions to set up Fisheye as a Windows service again.  Make sure to copy over the changes from the old ...\wrapper\conf\wrapper.conf file to the new wrapper.conf file.

Method 1: Using a FISHEYE_INST directory
 Click here to expand...

If you have FishEye/Crucible configured to use a FISHEYE_INST directory, then follow the instructions below. This is the recommended scenario for production installations.

  1. Shut down your existing FishEye/Crucible server, using bin\stop.bat or bin\ from the <FishEye home directory>.
  2. Make a backup of your FISHEYE_INST directory.
  3. Download FishEye or Crucible.
  4. Extract the new FishEye/Crucible version to a new directory.
  5. Leave your FISHEYE_INST environment variable set to its existing location. Both FishEye and Crucible use this variable.
    • Please be aware that jar files in the FISHEYE_INST/lib directory may conflict with those required for FishEye's normal operation. Jar files in this directory should be limited to those which provide functionality not provided by FishEye (e.g. database drivers).
  6. Start FishEye/Crucible from the new installation directory by running bin/ (Use run.bat on Windows.)
  7. Follow any version-specific instructions found in the FishEye upgrade guide or Crucible upgrade guide.
Method 2: Without a FISHEYE_INST directory
 Click here to expand...

If you do not have FishEye/Crucible configured to use a FISHEYE_INST directory and do not want to set one up, then follow the instructions below. The <FishEye home directory> is the location of the existing FishEye/Crucible installation. Note that this is the typical scenario for evaluation installations, and is not recommended for production installations.

You will need to copy some files from your old FishEye/Crucible installation to your new one.

  1. Download FishEye or Crucible.
  2. Extract the new FishEye/Crucible archive into a directory such as <New FishEye home directory>.
  3. Shut down the old FishEye/Crucible server, using bin\stop.bat or bin\ from the <FishEye home directory>.
  4. Copy <FishEye home directory>/config.xml to <New FishEye home directory>.
  5. Delete the following directories from the <New FishEye home directory>/var directory:
    • <New FishEye home directory>/var/cache
    • <New FishEye home directory>/var/data
    • <New FishEye home directory>/var/log
  6. Copy (or move) the following directories from <FishEye home directory>/var to <New FishEye home directory>/var:
    • <FishEye home directory>/var/cache
    • <FishEye home directory>/var/data
    • <FishEye home directory>/var/log
    DO NOT include the following directories when you do that:
    • <FishEye home directory>/var/osgi-cache
    • <FishEye home directory>/var/plugins
    • <FishEye home directory>/var/tmp
  7. Delete the <New FishEye home directory>/cache directory.
  8. Copy (or move) the <FishEye home directory>/cache directory to <New FishEye home directory>/cache.
  9. Start FishEye/Crucible from the new installation by running <New FishEye home directory>/bin/ (Use run.bat on Windows.)
  10. Follow any version-specific instructions found in the FishEye upgrade guide  or Crucible upgrade guide.
Method 3: Without a FISHEYE_INST directory, but would like to set one up
 Click here to expand...

If you do not have FishEye/Crucible configured to use a FISHEYE_INST directory but would like to set one up, then follow the instructions below. You may wish to do this when reconfiguring an existing installation for a production environment.

The FISHEYE_INST directory is the FishEye data directory, which has a location defined by the FISHEYE_INST environment variable, and which should be completely separate from the <FishEye home directory>. The <FishEye home directory> is the location of the existing FishEye/Crucible installation.

  1. Download FishEye or Crucible.
  2. Shut down the existing FishEye/Crucible server, using bin\stop.bat or bin\ from the <FishEye home directory>.
  3. Set up the FISHEYE_INST environment variable, then create the FISHEYE_INST directory on your file system.
  4. Copy <FishEye home directory>/config.xml to the FISHEYE_INST directory.
  5. Copy the <FishEye home directory>/var directory to the FISHEYE_INST directory.
  6. Copy the <FishEye home directory>/cache directory to the FISHEYE_INST directory.
  7. If it exists, copy the <FishEye home directory>/data directory to the FISHEYE_INST directory.
  8. Extract the new FishEye/Crucible archive into a directory such as <New FishEye home directory>.
  9. Start FishEye/Crucible from the new installation by running <New FishEye home directory>/bin/ (Use run.bat on Windows.)
    • If your configuration is not automatically picked up and you cannot see your existing repositories, check your Administration > Sys-Info page, where you will see information about the <FishEye home directory> and FISHEYE_INST. Check that your FISHEYE_INST is pointing to the right directory.
  10. Follow any version-specific instructions found in the FishEye upgrade guide  or Crucible upgrade guide.

Upgrading to FishEye 3.4

Please also see the Upgrade steps section above.

Please read the End of Support Announcements for FishEye. See Supported platforms.

Windows installer

We've produced 32-bit and 64-bit installers for FishEye on Windows. Each installer adds FishEye as a Windows service, and starts the service, automatically. The express install creates, by default, a Data directory and a separate install directory  in C:\Atlassian. The custom install mode allows you to choose different locations for the install and Data directories, with the restriction that the Data directory must not be contained in the install directory. The installer creates the FISHEYE_INST system environment variable.

See Installing FishEye on Windows for detailed installation instructions.

Download the FishEye installer here.

Git manifest upgrade task

The Git manifest upgrade affects Git repositories. The rationale for the Git manifest change is described in Git manifest. There are two options that may be selected to control how the upgrade is performed. For medium to small sized Git repositories, we expect this upgrade process to be quite fast, in the order of minutes. For very large Git repositories, this could take up to a few hours.

Pre-indexing upgrade

By default, prior to indexing, each Git repository will be upgraded to add the manifest information for all changesets currently in the repository. Whilst this upgrade is in progress, the repository may be browsed normally and any existing reviews will be available for normal review workflow operations. New changesets will not be indexed, and will not be available for review until after the upgrade is complete.

Background upgrade

A background upgrade is performed during the normal repository indexing process. If there is time available within the polling interval, manifest upgrades are performed during the remaining time of the polling interval. The objective is that the next indexing poll should not be delayed unduly so new changesets continue to be indexed normally. The fisheye.manifest.upgradebatch system property is provided to control the minimum number of changesets that should be upgraded in each indexing poll. This is to ensure the background upgrade makes significant progress and may mean the indexing poll interval is longer than configured.

If repositories are configured to not poll, or they have a long polling period, FishEye will use the default Git polling period for the duration of the upgrade to ensure sufficient indexing occurs. 

Whilst the upgrade is in progress, new changesets will be processed using the existing pre-3.4.0 approach, using Git ls-tree. Only once the upgrade is complete, will the new 3.4.0+ manifest approach be used. This means that the improved performance of the 3.4.0+ manifest upgrade will only be realized once the process is complete.

Choosing an upgrade approach

Selection of which approach to use is controlled by the FishEye fisheye.manifest.forceupgrade system property. The upgrade approach selected applies to the whole FishEye instance and affects all Git repositories in the instance. It is not possible to choose different upgrade approaches for different repositories.

The default setting of the property is to perform the upgrade prior to resuming normal indexing and this is the approach that we recommend. This realizes the benefits of the new manifest code as soon as possible but it does impact indexing of new changesets. To minimize the impact of such an upgrade, the upgrade could be undertaken during a low traffic period or the upgrade could be performed off-line on a separate server.

If it not feasible to have indexing of new changesets delayed at all, then the background upgrade approach can be used. The fisheye.manifest.upgradebatch system property can be tuned to reduce the amount of time spent upgrading to further reduce new changeset indexing impact.

It also possible to change from one approach to the other until the upgrade is complete. FishEye records the upgrade progress so that if FishEye is stopped during an upgrade, the upgrade will resume at the next opportunity. So, if you have started the upgrade using the pre-indexing approach, you can stop the FishEye server, change the system property, restart and the upgrade will continue using the background upgrade approach. Changing from background upgrade to pre-indexing upgrade is also supported.

FishEye may now bind to a different IP address on Windows

Prior to FishEye 3.4, a bug in FishEye ( FE-4909 Closed ) meant that FishEye may not have correctly bound to the IP address you configured. This may have happened if you configured FishEye to bind to a single IP address on a network interface that has several IP addresses; FishEye may in fact have bound to a different IP address. For example, if you have an interface with the IP addresses and, and you configured FishEye to use, it may have incorrectly bound to

Now that the bug is fixed, FishEye 3.4, and later versions, will now correctly bind to the configured IP address, although this may now be different from the previously bound address.

v1 REST API resources deprecated

Note that the 'v1' REST API resources are deprecated and will be removed in a future release. See the FishEye Crucible REST API.

Known issues for FishEye 3.4


Upgrading to FishEye 3.3

Please also see the Upgrade steps section above.

As previously announced, the following platforms are no longer supported by FishEye 3.3:

  • Internet Explorer 8
  • MySQL 5.0
  • PostgreSQL 8.2
  • SQL Server 2005

Please read the End of Support Announcements for FishEye.

Supported platform upgrades

  • SVN 1.8 is supported by FishEye 3.3.
  • Microsoft Internet Explorer 11 is supported by FishEye 3.3.

See Supported platforms.

Known issues for FishEye 3.3



Upgrading to FishEye 3.2

Please also see the Upgrade steps section above, and read the End of Support Announcements for FishEye page.

Please note the following changes in FishEye 3.2:

Internally managed Git repositories no longer supported

As previously announced, internally managed Git repositories are no longer supported by FishEye 3.2.

Please read the migration guide for information about options and procedures for migrating your internally managed Git repositories – note that we recommend that you upgrade to FishEye 3.2 before migrating any internally managed repositories.

Supported platform upgrades

See Supported platforms.

User data is moved from data0.bin to the SQL database

An upgrade task is run on startup that moves user data to the SQL database. We are doing this to mitigate the risk of data corruption or loss.

Known issues for FishEye 3.2


Upgrading to FishEye 3.1

Please also see the Upgrade steps section above, and read the End of Support Announcements for FishEye page.

Please note the following changes in FishEye 3.1:

Native SVN access via JavaHL requires JavaHL 1.7

You do not need to upgrade your subversion repositories to 1.7. SVN 1.6 is still supported.

If you are using native JavaHL to connect to your SVN repositories you may need to upgrade the SVN JavaHL client on your FishEye server. Please read Native support for SVN for more information.

If you are using SVNKit (the default) you do not need to upgrade SVN.

FishEye 3.1 Merge some per-repository Lucene indices into a global cross-repository Lucene index

FishEye 3.1 has greatly improved performance and scalability for QuickSearch and QuickNav. To achieve this, the per-repository 'METADATA' Lucene indices will be moved into a single global cross-repository Lucene index. This means FishEye is able to search across more repositories in less time because now only a single search index needs to be queried instead of the previous N. Merging these indices into the single cross-repository index can be refreshed in two ways:

  1. Recommended: As an upgrade task that is run automatically when FishEye 3.1 is run for the first time.
  2. As an offline process on a separate staging server.

During the automatic upgrade task, FishEye is fully usable and functional, although search results for files, commits and committers may be incomplete.

In our testing we have found that the automatic upgrade task took 4 hours to complete on a FishEye instance with 144 repositories of different kinds, with 58 GB of data in the FISHEYE_INST folder (excluding logs). We are confident that the automatic upgrade task is suitable for the majority of production FishEye installations. It is worth repeating that the instance was fully functional (reviews, JIRA Integration, Activity Streams, Charts etc) apart from Quick Nav and Quick Search during this time.

Nevertheless, where required, we provide instructions for performing the reindex as an offline process on a separate staging server.

Plugin Settings will be moved from the config.xml to the SQL database

As of FishEye 3.1.0, plugin settings which were previously stored in the <properties> element inside config.xml will be stored in the SQL database. This includes settings for any bundled plugins such as ApplicationLinks, the UniversalPluginManager etc, and any 3rd party plugins. 

An upgrade task is run on startup which will first insert all the properties found in config.xml into a new table in the SQL database. Once successful, the properties are removed from config.xml. 

As part of this change, the RepositoryOptions.setProperties (Map<String, String>properties) and RepositoryOptions.getProperties() methods have been removed from our API. If you are using a plugin which uses either of these methods, you will need to update the plugin to a version which uses the Spring component PluginSettingsFactory. Plugins can use this to access the migrated global and per-repository properties that were previously available via the old RepositoryOptions API. 

Known issues for FishEye 3.1


Upgrading to FishEye 3.0

Please also see the Upgrade steps section above.

Please note the following changes in FishEye 3.0:

Jetty 8

FishEye 3.0 now uses Jetty 8 as its web server and Java servelet container. This change should be completely transparent when you upgrade to FishEye 3.0. However, if you have customised either your jetty-web.xml file, or the maxFormContentSize system property, you will need to update those in the new version. See Enabling Access Logging in FishEye and this FishEye KB page for more information.

Infinity DB

FishEye 3.0 now uses the InfinityDB 3.0 database internally to provide improved performance for concurrent access to FIshEye. This change is transparent to users in all respects.

Pipelined indexing

FIshEye 3.0 introduces a new indexing approach that splits the repository indexing process into separate tasks that can be performed in a phased and concurrent way. Users will benefit from the way in which FishEye functionality, such as repository browsing, now becomes available as indexing progresses. This change is transparent to users in all other respects. See Pipelined indexing.

Improved handling of user preferences with session cookies 

Upgrading may result in some users losing their preferences.

SQL Server transaction isolation configuration

We recommend a configuration change for SQL Server to use snapshot mode for the transaction isolation level – see Migrating to SQL Server. This change avoids occasional database deadlocks, and prevents performance warning messages in the FishEye logs and admin screens.

Known issues for FishEye 3.0


Checking for known issues and troubleshooting the FishEye upgrade

If something is not working correctly after you have completed the steps above to upgrade your FishEye installation, please check for known FishEye issues and try troubleshooting your upgrade as described below:

  • Check for known issues. Sometimes we find out about a problem with the latest version of FishEye after we have released the software. In such cases we publish information about the known issues in the FishEye Knowledge Base. Please check the FishEye and Crucible Known Issues in the FishEye Knowledge Base and follow the instructions to apply any necessary patches if necessary.
  • Did you encounter a problem during the FishEye upgrade? Please refer to the guide to troubleshooting upgrades in the FishEye Knowledge Base.
  • If you encounter a problem during the upgrade and cannot solve it, please create a support ticket and one of our support engineers will help you.


  1. If you're using mysql you'll have to copy the mysql connector from your old fisheye directory to the new one.  It's in FISHEYE_HOME/lib/

    1. I've placed my MySQL connector in FISHEYE_INST/lib, so there's no need for an extra step when upgrading FishEye.

  2. While doing some dry run migration testing.  Found out this and thought it's probably good to share.

    After you upgrade from 2.x to 3.x by starting the server in 3.x, you cannot turn back.  Once the database is updated, you can't go back and start 2.x server.  

    Backup and make sure you do your testing folks.  

  3. Hi,

    Currently trying to update from Fisheye v2.7.8 (its a copy of our environment to make sure the upgrade goes ok) when I launch the start.bat (windows server) a command box flashes up and disappears - Fisheye doesn't start. If I use the --debug command exactly the same happens - any ideas why please? Thanks 

    ***EDIT*** I hadn't added the command to the end of the environment variable stating that the its ok to update the repositories which are internally managed - seems to be working now. Thanks (smile)

    1. Please open a support request at and attach the files from the FISHEYE_INST/var/log directory.

  4. It would be great if documentation uses consistent terminology for home and installation directory. For example, in 'Method 1 ' of upgrade instructions the stop script refers to  <Fisheye home directory>, whereas, the start script uses term Fisheye installation directory (which is already confusing because of FISHEYE_INST variable name).