GT 3.9.5 RLS : Developer's Guide

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:

  1. Include the client header file at:
    $GLOBUS_LOCATION/include/globus_rls_client.h
  2. 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:

  1. Include the RLS Jar, $GLOBUS_LOCATION/lib/rls.jar, in the CLASSPATH.
  2. Import the RLS Package: org.globus.replica.rls.*
  3. 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-cli exists 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-cli rename 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 catalog
  • globus_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 index
  • globus_result_t globus_rls_client_lrc_renamelfn (globus_rls_handle_t *h, char *oldname, char *newname) added to support rename of LFN in LRC catalog
  • globus_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 catalog
  • globus_result_t globus_rls_client_lrc_renamepfn (globus_rls_handle_t *h, char *oldname, char *newname) added to support rename of PFN in LRC catalog
  • globus_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 catalog
  • ArrayList org.globus.replica.rls.RLSClient.LRC.existsBulk(ArrayList strlist, int objtype) added to support bulk exists on LRC catalog
  • ArrayList org.globus.replica.rls.RLSClient.RLI.existsBulk(ArrayList strlist, int objtype) added to support bulk exists on RLI index
  • void org.globus.replica.rls.RLSClient.LRC.renameLFN(String name, String newname) added to support rename of LFN in LRC catalog
  • ArrayList org.globus.replica.rls.RLSClient.LRC.renameLFNBulk(ArrayList str2list) added to support bulk rename of LFNs in LRC catalog
  • void org.globus.replica.rls.RLSClient.LRC.renamePFN(String name, String newname) added to support rename of PFN in LRC catalog
  • ArrayList 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.