Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[rados] Development of RADOS binding of Ceph FS #670

Merged
merged 31 commits into from
Jun 20, 2016

Conversation

jaemyoun
Copy link
Contributor

Development of RADOS binding of Ceph File System
Even though Ceph FS is not NoSQL database, RADOS, Ceph utility, supports object-based storage.

For Ceph benchmark for cloud services. I implemented RADOS binding using rados-java library expect the scan() function.

@@ -93,6 +93,8 @@ LICENSE file.
<tarantool.version>1.6.5</tarantool.version>
<aerospike.version>3.1.2</aerospike.version>
<solr.version>5.4.0</solr.version>
<rados.version>0.3.0-SNAPSHOT</rados.version>
<json.version>20160212</json.version>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should just be set in the pom for the rados client, since it needn't be shared across different datastore bindings..

@busbey
Copy link
Collaborator

busbey commented Mar 25, 2016

The travis failure is because you need to add the new module to the list of dependencies for the distribution module.

@jaemyoun
Copy link
Contributor Author

I fixed all code you mentioned, and an additional error.

</dependencies>

<properties>
<rados.version>0.3.0-SNAPSHOT</rados.version>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't rely on SNAPSHOT versions in our releases. Can we rely on a prior version? If not, when is 0.3.0 expected to come out?

@jaemyoun
Copy link
Contributor Author

jaemyoun commented Apr 5, 2016

I changed the version to 0.2.0 and merged from YCSB master for updating to 0.9.0-SNAPSHOT.

pool = POOL_DEFAULT;
}

rados = new Rados(id);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be protected by a lock, sine rados is static and we instantiate a client for each thread.

Presuming the rados and ioctx objects are themselves threadsafe, then you should synchronize and use a threadcount to decide when it's safe to do shutdown in the cleanup method.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean these to change Static Strings? The three value will be different depend on user setting.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, I mean the member variables rados and ioctx are static. We instantiate a RadosClient per worker thread in the client, so access to initializing and cleaning up these static members must be protected by a lock.

If the member classes themselves aren't threadsafe, then you'll need to either guard all uses with a lock or switch to making them non-static.

@busbey
Copy link
Collaborator

busbey commented Apr 10, 2016

does rados provide any kind of testing utility jar that could be used to include a test?

@jaemyoun
Copy link
Contributor Author

I switched rados and ioctxto non-static, and implemented a test.
The test is success in my cluster, but the Travis CI building was failed because there is no the Ceph cluster.

@busbey
Copy link
Collaborator

busbey commented Apr 30, 2016

The test is success in my cluster, but the Travis CI building was failed because there is no the Ceph cluster.

Does Ceph have some kind of artifact for making a local test instance that we could make use of? (see the hbase10 or accumulo bindings for examples) If not, we should update the test to make use of the JUnit Assume API to skip the test when a Ceph instance is not present (see the mongodb or riak bindings as an example).

@jaemyoun
Copy link
Contributor Author

If not, we should update the test to make use of the JUnit Assume API to skip the test when a Ceph instance is not present (see the mongodb or riak bindings as an example).

I was not able to find the test instance for Ceph, so I updated to skip the test using JUnit AssumeNoException.

@busbey busbey changed the title Development of RADOS binding of Ceph FS [rados] Development of RADOS binding of Ceph FS Jun 20, 2016
@busbey busbey merged commit 28703c7 into brianfrankcooper:master Jun 20, 2016
@jaemyoun jaemyoun deleted the dev-ceph-rados branch June 21, 2016 05:32
@jaemyoun jaemyoun restored the dev-ceph-rados branch June 21, 2016 05:33
@busbey busbey mentioned this pull request Jun 22, 2016
@jaemyoun jaemyoun deleted the dev-ceph-rados branch May 22, 2017 06:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants