IBM Support

Finding the path to an archive file in Rational Synergy

Troubleshooting


Problem

Steps to find the path to an archive file for an object in IBM Rational Synergy from release 7.1 and after.

Cause

When you get archive errors it may be necessary to find the path to an archive file. Since release 7.1 the archive process and structure has changed.

Diagnosing The Problem

Archiving Process

Firstly you need to know how objects are now archived. When you check in an object it is not archived immediately. The object is left in the cache and the attribute _archive_info is created and set to the value "none".
The Rational Synergy server periodically queries for all objects with _archive_info="none" and sends the results of the query to the archiver process. The archiver creates archive entries as zip entries using Open Source Software TrueZip. It then sends details of the archive back to the server which sets; _archive_info to hash of new archive path, _archive_version to 1, and updates source attribute with full zip file path and entry id. All new archive files are created in "database_path/st_root/archive/ccm_delta"


Archive Directory Structure

The archive directory has the following structure:
database_path/st_root/archive/ccm_delta/source/<super_type>/<type>/#<4digit dir> /<number>.1.zip


For example:
database_path/st_root/archive/ccm_delta/source/text/java/#3451/76532871.1.zip
database_path/st_root/archive/ccm_delta/source/binary/jpeg/#1372/0172592645.1.zip


Archives created by the new archiver will be in  database_path/st_root/archive/ccm_delta
Unconverted archives will be in database_path/st_root/archive/source
All files are archived in zip files.
Separate directories are used for text and binary and for each type in case you need to process them with stand-alone tools.

Hashed directory and file names
• File names under database must be 7-bit ASCII for portability so object name cannot be used.
• Hash of object name + platform is used for file name
• Extra directory levels are used to reduce number of files per directory
• Type name (Which is constrained to 7-bit ascii even in 'a' stream)
• Hash modulo 4-digit prime

The old archives are stores as a Delta. This is as a difference between two versions of a file. GNU Revision Control System(RCS) in Rational Synergy release 6.5 and earlier used deltas only for text files; GNU zip with no deltas were used for binary files.

The new archiver uses Open Source Software TrueZip. This is a file compression and archiving tool. It may also be called as a stand-alone tool. In Rational Synergy 7.1, it is used to replace GNU/BSD RCS and zip tools for archiving. TrueZip supports 64-bit zip files and therefore files larger than 4 GB.

Resolving The Problem

Rational Synergy 7.2

In release 7.2 some new some new keywords were added to the pseudo-attribute list in query results formatting. These new keywords give access to the archive path name, archive version among others.


So you should be able to run the commands:


    ccm query -n <name> -f "%objectname %_archive_path"

    ccm attr -s _archive_path <object specification>


Rational Synergy 7.1

The path to the archive is stored in the source attribute. But you cannot display it from the Command Line Interface (CLI) because the CLI will display the actual source code for you.

There are two possible ways to display the archive path in this release.

Option 1: Using SQL
So for example you want to get the archive path for object with CVID of 10455.

  1. Create a text file called get_source.sql with the following query contents:
    select * from attrib where is_attr_of="10455" and name="source";


  2. Run the SQL command as follows:
    dbaccess test710 < get_source.sql



  3. The results should be similar to the following:

    • Database selected.
      id 14268
      name source
      modify_time 1335962347
      textval
      ol88,ccm_delta'*1/ascii/dos4.txt/2'*
      archive/ccm_delta/source/text2/ascii/#8337/0090094446.1.zip
      binval <BYTE value>
      strval ccm_delta
      1/ascii/dos4.txt/2
      archive/ccm_delta/source/text2/ascii/#8337/
      intval
      floatval
      is_attr_of 10455
      has_attype 10070
      1 row(s) retrieved.
      Database closed.


      The archive path is the third part in textval field. That is: archive/ccm_delta/source/text2/ascii/#8337/0090094446.1.zip
You need to append this to the database path to get the full path.



Option 2: Using fs_check.
Alternatively you could run fs_check on the object with ACcent tracing turned on (ccm trace on -a). Then you will see the archive path in the ccm_eng.log. Search for the string "return from  storage:root_path(string(" in the log file. The path is the next string.

[{"Product":{"code":"SSC6Q5","label":"Rational Synergy"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":"General Information","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"7.2;7.1a;7.1","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
22 December 2020

UID

swg21596578