Note

The Grid Community Toolkit documentation was taken from the Globus Toolkit 6.0 documentation. As a result, there may be inaccuracies and outdated information. Please report any problems to the Grid Community Forums as GitHub issues.

GCTXIO → GCT 6.0 XIO: System Administrator’s Guide

Introduction

Globus XIO is a development API. The only administration required is to install it according to the GT6.0 installation instructions.

This information is in addition to the basic Grid Community Toolkit prerequisite, overview, installation, security configuration instructions in the Installing GCT 6.0. Read through this guide before continuing!

Building and Installing

XIO is built and installed with a default GCT 6.0 installation, see the Installing GCT 6.0.

Configuring

Globus XIO is a development API; therefore, configuration details are largely in the hands of the applications using it.

Deploying

Once a user has a successful installation of Globus XIO they may wish to use their own drivers. Once the driver is compiled, it can be used at runtime by Globus XIO so long as it can be found in the LD_LIBRARY_PATH.

Testing

A test suite is available to test the Globus XIO framework. The tests are included in the XIO source packages, and are run automatically when the XIO binary packages are generated. If you are building from the source installer, you can run the following command to run the tests:

    % make globus_xio-check

Security Considerations

Security considerations for XIO

Globus XIO is a framework for creating network protocols. Several existing protocols, such as TCP, come built into the framework. XIO itself introduces no known security risks. However, all network applications expose systems to the risks inherent when outsiders can connect to them. Also included in the XIO distribution is the GSI driver, which provides a driver that allows for secure connections.

Troubleshooting

Set GLOBUS_LOCATION correctly

  • The environment variable GLOBUS_LOCATION must be set to a valid GCT 6.0 installation.

  • Various other environment variables must be set in order to easily use the GlobusXIO application. The proper environment can be established by running: source $GLOBUS_LOCATION/etc/globus-user-env.sh or source $GLOBUS_LOCATION/etc/globus-user-env.csh depending on the shell you are using.

Errors

Table 1. XIO Errors
Error Code Definition Possible Solutions

Operation was canceled

An I/O operation has been canceled by a close or a cancel

In most cases this will be intentionally performed by the application developer. In unexpected cases the applciation developer should verify that there is not a race condition relating to closing a handle.

Operation timed out

Occurs when the application developer associates a timeout with a handle’s I/O operations. If no I/O is performed before the timeout expires this error will be triggered.

The remote side of connection might be hung and busy. The network could have higher latencies than expected. The filesystem might be over worked.

An end of file occurred

This occurs when and EOF is detected on the file descriptor

When doing file I/O this like means you read to the end of the file and thus you are finished and should now close it. On network connections however it means the socket was closed on the remote end. This can happen it the remote side suddenly dies (seg-fault is common here) or if the remote side chooses to close the connection.

Contact string invalid

A poorly formed contact string was passed in to open

Verify the format of the contact string with the documentation of the drivers in use.

Memory allocation failed on XXXX

malloc failed. The system is likely quite overloaded

Free up memory in your application

System error in XXXX

A low level system error occurred. The errno and errstring should indicate more information.

Invalid stack

The requested stack does not meet XIO standards

Most likely a transport driver is not on the bottom of the stack, or 2 transport drivers are in the stack.

Operation already registered

With certain common drivers like TCP and FILE, only one specific operations can be registered at a time (1 read, 1 write). If another operation of the same type is posted to the handle before receiving the previous operations callback, this error can occur.

Restructure the application code so that it waits for the callback before registering the next IO operation.

Unexpected state

The internal logic of XIO came across a logical path that should not be possible. Often times this is due to application memory corruption or trying to perform an IO operation on a closed or otherwise invalid handle.

Use valgrind or some sort of memory managment tool to verify there is no memory corruption. Try to recreate the problem in a small program. Submit the program and the memory trace to the Globus bug tracker.

Driver in handle has been unloaded

A driver associated with the offending operation has already been unloaded by the application code.

Verify that you are not unloading drivers until they are no longer in use.

Module not activated

globus_module_activate(GLOBUS_XIO_MODULE); has not been called.

Call this before making any other XIO API calls.