CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

20
CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai

Transcript of CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Page 1: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

CERN SRM Development

Benjamin CoutourierShaun de Witt

CHEP06 - Mumbai

Page 2: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Background Original version based on SRM 1.1

Specification implemented by CERN Latest version based on SRM 2.1.1

Specification Collaborative Effort

CERN (CH) RAL (UK)

Based on modified WSDL (http://sdm.lbl.gov/srm-wg/srm.v2.1.1.modified.wsdl)

Page 3: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Tools

Based on modified WSDL (http://sdm.lbl.gov/srm-wg/srm.v2.1.1.modified.wsdl)

Selected gsoap-2.7.2

Page 4: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Tools

cgsi-soap plugin Oracle (10.2.1) umbrello (

http://uml.sourceforge.net) g++ (3.2.3) valgrind

Page 5: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Design Objectives

Low latency Short requests handled synchronously Longer requests (involving CASTOR

stager) mostly handled asynchronously Multi-threading architecture

Robustness Asynchronous requests stored in

database

Page 6: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Design Objectives Interoperability

Actually a common theme with all SRMs Using common WSDL Tested CASTOR SRM with DCACHE

clients and DCACHE SRM with CASTOR clients

Robustness Load testing submitting many requests

near simultaneously – using Tier1 machines

Page 7: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Design

DatabaseSRMServer

SRMDaemon

CASTORStager

CASTORNameserver

SRM

CASTOR

ClientClientClientClients

Page 8: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Design

Significant reuse of CASTOR code dlf threadpools database services IObject model

Page 9: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Server Design

Thread pool default 10 threads but can be

overridden Currently no maximum, but it should

probably exist Soap backlog

default 40 messages, but can be overridden

Page 10: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Daemon Design

Four dedicated threads pool of threads for PUT requests pool of threads for GET requests single thread for COPY request single thread for SRM Garbage

collection Selection from database triggered

by database entry (TBC).

Page 11: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Data Flow Summary Directory Functions

client – server – nameserver PrepareToXXX, Copy, putDone

client – server – daemon – stager Other Data Transfer

client - server Space Management

client - server

Page 12: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Development Issues

gsoap Steep learning curve default namespace issues

sometimes generated ns1__, sometimes ns2__

We explicitly use srm__ API changes between minor releases

using same wsdl Meaning the generated API’s.

Page 13: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Development Issues Umbrello

Not as robust or well documented as similar commercial tools

Spent several days recovering from undocumented problems.

ORACLE Need matching versions of client and

sever libraries (not v9 clients and v10 servers anyway

Page 14: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Interoperability issues

SRM Specs do not state when/where to use status codes For a request like srmRm with

multiple files If any file succeeds, we return SUCCESS If all files fail, we return FAILURE Each file that is successful, we return

DONE Each file that fails we return FAILURE

Page 15: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Interoperability Issues

Explanation in return status CASTOR SRM returns empty string DPM SRM returns NULL

Type Promotion Castor only supports Permanent file

types If client requests volatile or durable –

SRM returns SUCCESS Return PERMANENT is file structure

Page 16: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Status By end of January

All methods implemented except Permission functions

Full regression test suite available Still to do

Permission functions VOMS integration Complete memory leak checking Thread Tuning/Signal handling/documentation

Page 17: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Status

Few issues with interface to CASTOR still need investigating. Some methods only log first DLF call Some APIs which accept multiple files

only return a single result.

Page 18: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

CASTOR specific Only permanent files supported Space reservation is notional

Handled entirely within SRM with no reference to CASTOR

CASTOR storage considered semi-infinite

srmLs limits number of returns Configurable limit Set to 2048 currently

Page 19: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

CASTOR specific Suspend/Resume not supported Dynamic space compacting not

supported Pin lifetimes are advisory

Used in weighting CASTOR garbage collection policy

Pins are applied once files are staged putDone issued or file staged.

Page 20: CERN SRM Development Benjamin Coutourier Shaun de Witt CHEP06 - Mumbai.

Castor Specific

Non-static TURL Need to call status to get new TURL

srmRmdir does not support recursion