Introduction
OODT is a framework that allows distributed storage and cataloging of objects. To achieve its scalability OODT uses the concept of grid computing.
Proposal Idea
Currently OODT uses XMLRPC to enable communication between computers is the grid. "Our version of this library currently sits at 2.0.1, which was released on 28th December 2005." Apache Avro is a more moders data serialization system which also has a RPC implementation. Among the advantages of Avro to XMLRPC are smaller size (serialization can be done to binary or JSON) which means better speed.
Uses of XMLRPC are littered thoughout the OODT code. Sometimes XMLRPC is used in an implementation of an abstract class like XmlRpcCommunicationChannelClient or XmlRpcCommunicationChannelServer. Other times XMLRPC is used directly - like in CrawlDaemon.
So my idea is to first try to abstract the XMLRPC creation and calling logic behind an RPC interface. This will keep the existing functionality the code will have mentions of XMLRPC in as few places as possible.
Then, I will create similar implementations as for XMLRPC that will actually use Avro for object serialization and remote procedure call.
The code will gert the RPC implementation using a factory method for example.
I think abstraction of the method names and RPC client creations should be straightforward because method names are strings. I see difficutlies with this approach if OODT uses some special arguments that are specific to XMLRPC.
Timeline
Community bonding
- Get familiar with the OODT project source code
- Set up a GRID like environment which uses OODT
- Get familiar with the Avro library
Weeks 1-5
Refactor current code to use and abstract RPC interfacte which is implemented using XMLRPC
Weeks 6-12
Implement the RPC interface using Avro RPC
Throughout the implmentation I plan to write tests that exercise new functionality or that are missing for the old functionality.
Deliverables
- Abstractisation of the RPC framework used in OODT
- Implementation of RPC communication using Apache AVRO
Reporting
Bonding Period
At the start of bonding period I started to document about the xmlrpc API looking through tutorials for the beginners like: http://www.tutorialspoint.com/xml-rpc/ etc. than looking at more complex data. Like how server/client side works: https://ws.apache.org/xmlrpc/client.html. Read more about avro's rpc, got familiar with the classes through tutorial such as:https://avro.apache.org/docs/1.7.7/gettingstartedjava.html#download_install. Launched filemanager server, tried ingestion of files.
Review of Previous Actions
No previous action.
Objectives
Find a separate module to build a prototype for replacing xmlrpc with avrorpc.
Future Actions
Build a prototype for replacing xmlrpc with avrorpc in a standalone module. Establish a path for switching to avrorpc (with the mentor) - try to abstract the places where xmlrpc is used directly and support both technologies side by side, or directly replace xmlrpc with avrorpc.
Mentors Comments
Week 1
Looked thought the code and located in witch classes xmlrpc is used directly and where its used thought abstraction. Most used classes are WebServer, XmlRpcServer/Client and XmlRpcTransport. Studied the crawlerdeamon class and crawlerdeamonController and tried to build a prototype to replace xmlrpc with avrorpc, without abstraction.
Review of Previous Actions
Objectives
- Replace xmlrpc with avrorpc, without abstraction in CrawlerDaemon.
Future Actions
Establish a path for switching to avrorpc (with the mentor) - try to abstract the places where xmlrpc is used directly and support both technologies side by side, or directly replace xmlrpc with avrorpc
Mentors Comments
Week 2
?
Review of Previous Actions
Objectives
- ?"
Future Actions
?
Mentors Comments
About me
My name is Radu Manole and I am a student at the Alexandru Ioan Cuza Univerisy of IASI, Romania. I am very interested in web services and distributed computing (although I am just a beginner) and I would like to expand my knowledge while contributing to an open source project.