Showing posts with label checksum. Show all posts
Showing posts with label checksum. Show all posts

Thursday, August 27, 2009

Fixes in GFAL and lcg_util

lcg_util: should use -1 length for gridftp/CKSM

In GFAL, we always calculate checksums for the whole file (if it is needed). However, the corresponding Globus API function (globus_ftp_client_cksm) was used with wrong length parameter: it was 0 (calculate checksum for 0-length data) instead of -1 (calculate until the end of the file). This error also pointed out an inconsistency in DPM, it interpreted this value a bit differently than in the API specification above.

GFAL: shall handle abreviated checksum names


It is a workaround on how DPM calls the checksum algorithms. Actually, the endpoints should follow the GridFTP specification, but DPM has already implemented a different name set. It will be changed in DPM as well, however, it may not be deployed everywhere soon. So, internally and temporarily, GFAL detects and converts the DPM names to the GridFTP conventions.

The fixes have been sent for integration and certification.

Friday, August 7, 2009

transfer-url-copy version 3.2.1-rel2 released

The affected module is: org.glite.data.transfer-url-copy.

The changes are:
  • Warning removal
  • The result of the code review implemented partially: descriptive enum-s to signal the actual checksum checking use case.
The new release tag is:

glite-data-transfer-url-copy_R_3_2_1_2

The functionality and the behaviour have not been changed.

See the component in the CVS.

Thursday, August 6, 2009

Checksum code review

The latest FTS development was adding checksum support to verify if the data has been transferred properly, and the source/destination files has not been altered. The related requirement specification can be found in the wiki:

FtsChecksums

The feature has been transferred to the package certification process.

Today, we had a code review with Rosa and Ákos, we reviewed the checksum-related code. After a discussion about some fancy C++, Boost, STL features + some potential Google interview questions :), we had two findings that will be changed:

- The system determines the actual checksum use case and stores it in bool variables - enum-s should be used instead, with descriptive names.
- The asynchronous SRM operations called synchronously, so the same send/poll pairs go always together in the code. Should be merged into one function that encapsulates the new exponential backoff functionality as well.

We found no bugs and the changes above will not modify the behaviour, so we do not need a new release now.