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.
- Create a text file called
get_source.sql
with the following query contents:
select * from attrib where is_attr_of="10455" and name="source";
- Run the SQL command as follows:
dbaccess test710 < get_source.sql
- 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
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.
Related Information
Was this topic helpful?
Document Information
Modified date:
22 December 2020
UID
swg21596578