GT 3.9.5 RLS : Developer's Guide
- Introduction
- Architecture and design overview
- Public interface
- Usage scenarios
- Tutorials
- Feature summary
- Tested platforms
- Backward compatibility summary
- Technology dependencies
- Security considerations
- Debugging
- Troubleshooting
- Related Documentation
Introduction
This guide contains information of interest to developers working with the RLS. It provides reference information for application developers, including APIs, architecture, procedures for using the APIs and code samples.
Architecture and design overview
The Replica Location Service design consists of two components. Local Replica Catalogs (LRCs) maintain consistent information about logical-to-physical mappings on a site or storage system. The Replica Location Indexes (RLIs) aggregate state information contained in one or more LRCs and build a global, hierarchical distributed index to support discovery of replicas at multiple sites. LRCs send summaries of their state to RLIs using soft state update protocols. The server consists of a multi-threaded front end server and a back-end relational database, such as MySQL or PostgreSQL. The front end server can be configured to act as an LRC server and/or an RLI server. Clients access the server via a simple string-based RPC protocol. The client APIs support C, Java and Python. The APIs contain operations to create and delete mappings, associate attributes with mappings, and perform queries.
Detailed information on the architecture and design can be found in A Framework for Constructing Scalable Replica Location Services and Performance and Scalability of a Replica Location Service.
Public interface
The semantics and syntax of the APIs for the component, along with descriptions of domain-specific structured interface data, can be found in the public interface guide.
Usage scenarios
This section provides examples illustrating the basic usage of the client interfaces supported by the RLS. Using the client API, developers may create client applications that interact with the RLS server to perform replica location operations.
Developing in C
Client applications developed in C must do both of the following:
- Include the client header file at:
$GLOBUS_LOCATION/include/globus_rls_client.h
- Link to the client shared library at:
$GLOBUS_LOCATION/lib/libglobus_rls_client_gcc32dbgpthr
For C language example code, click here.
Developing in Java
Client applications developed in Java must do all of the following:
- Include the RLS Jar,
$GLOBUS_LOCATION/lib/rls.jar, in the CLASSPATH. - Import the RLS Package:
org.globus.replica.rls.* - Depend on the client shared library via the Java Native Interface (JNI).
For Java language example code, click here.
Tutorials
There are no tutorials available at this time.
Feature summary
Features new in release 3.9.5
- Bulk exists API to check existence of LFN, PFN or LRC entries
globus-rls-cliexists and bulk exists commands- Rename and bulk rename API to rename LFN or PFN entries in LRC. Renaming LFNs causes an LRC to RLI update to reflect changes at the RLI
globus-rls-clirename and bulk rename commands
Other Supported Features
- Comprehensive C and Java library for catalog manipulation, index queries, and administrative tasks
- Command line (
globus-rls-cli) tool for client operations on catalogs and indexes - Command line (
globus-rls-admin) tool for administrative tasks
Deprecated Features
- None
Tested platforms
Tested platforms for RLS include most 32-bit flavors of Linux and UNIX, including RedHat, Solaris, and others.
Backward compatibility summary
Protocol changes since GT version 3.2
- None
API changes since GT version 3.2
globus_result_t globus_rls_client_lrc_exists_bulk (globus_rls_handle_t *h, globus_list_t *keylist, globus_rls_obj_type_t objtype, globus_list_t **str2bulk_list)added to support bulk exists on LRC catalogglobus_result_t globus_rls_client_rli_exists_bulk (globus_rls_handle_t *h, globus_list_t *keylist, globus_rls_obj_type_t objtype, globus_list_t **str2bulk_list)added to support bulk exists on RLI indexglobus_result_t globus_rls_client_lrc_renamelfn (globus_rls_handle_t *h, char *oldname, char *newname)added to support rename of LFN in LRC catalogglobus_result_t globus_rls_client_lrc_renamelfn_bulk (globus_rls_handle_t *h, globus_list_t *str2_list, globus_list_t **str2bulk_list)added to support bulk rename of LFNs in LRC catalogglobus_result_t globus_rls_client_lrc_renamepfn (globus_rls_handle_t *h, char *oldname, char *newname)added to support rename of PFN in LRC catalogglobus_result_t globus_rls_client_lrc_renamepfn_bulk (globus_rls_handle_t *h, globus_list_t *str2_list, globus_list_t **str2bulk_list)added to support bulk rename of PFNs in LRC catalogArrayList org.globus.replica.rls.RLSClient.LRC.existsBulk(ArrayList strlist, int objtype)added to support bulk exists on LRC catalogArrayList org.globus.replica.rls.RLSClient.RLI.existsBulk(ArrayList strlist, int objtype)added to support bulk exists on RLI indexvoid org.globus.replica.rls.RLSClient.LRC.renameLFN(String name, String newname)added to support rename of LFN in LRC catalogArrayList org.globus.replica.rls.RLSClient.LRC.renameLFNBulk(ArrayList str2list)added to support bulk rename of LFNs in LRC catalogvoid org.globus.replica.rls.RLSClient.LRC.renamePFN(String name, String newname)added to support rename of PFN in LRC catalogArrayList org.globus.replica.rls.RLSClient.LRC.renamePFNBulk(ArrayList str2list)added to support bulk rename of PFNs in LRC catalog
Exception changes since GT version 3.2
- None
Schema changes since GT version 3.2
- None
Technology dependencies
RLS depends on the following GT components:
- XIO
RLS depends on the following 3rd party software:
- Relational Database Management System (RDBMS) including MySQL or PostgreSQL
- iODBC
- ODBC driver including MyODBC or psqlODBC
Security considerations
[describe security considerations relevant for this component]
Debugging
[information on standard debugging]
Troubleshooting
Information on troubleshooting can be found in the FAQ.
Related Documentation
For additional details, see the RPC Protocol Description.