At first I wanted to write a persistence manager for Amazon SimpleDB with a straigt-forward mapping of Nodes -> Items and Properties -> Attributes, but it turned out not feasible at all. The problem is that Attributes (the only ones that can store actual data) are String-only and limited to 1024 chars (!). Also you can have a maximum of 256 attributes per Item.

So I swapped to S3. It is out of beta and gives you immediate access anyway ;-) I hope to get that remaining issue(s) fixed and will contribute the project to the Jackrabbit sandbox, hopefully during next week. The actual implementation is rather trivial, I am using the JetS3t lib, which makes it very simple. From there on one can think about doing an spi2amazon implementation or similar thing, based on the experiences with S3 as bundle PM backend.

Alex

Am 11.01.2008 um 16:45 schrieb Sena Gbeckor-Kove:

Hi,

I haven't looked at the JackRabbit code for ages, I was thinking abut doing something similar a while back. With the release of the Amazon database, I was thinking that a mixture of the database and S3 (binaries etc) might be a really good fit.

Maybe we should have a chat and do it together?

S


On 11 Jan 2008, at 15:32, Alexander Klimetschek wrote:

Hi all,

I am currently writing a BundlePersistenceManager for Amazon S3 (first started with a normal PM, but bundle seemed more feasible) . I am using the binary serialization of the BundleBinding that is also used by the DB Bundle PMs and always store the node data inside the serialized node bundles, avoiding the BlobStore interface (by setting the BundleBinding minBlobSize to the maximum).

Now I have problems when I test it with the JCR API test suite. Some test cases work, but some fail. I just want to know if it is normal for thoses test cases to fail or if someone has an idea what the problem could be? I develop against the 1.3 branch and use the tests from there as well. Here are two errors:

junit.framework.AssertionFailedError: Workspace does not contain test data at: /testdata
        at junit.framework.Assert.fail(Assert.java:47)
at org .apache.jackrabbit.test.AbstractJCRTest.setUp(AbstractJCRTest.java: 357) at org.apache.jackrabbit.test.api.RootNodeTest.setUp(RootNodeTest.java: 47)
        at junit.framework.TestCase.runBare(TestCase.java:125)
        at junit.framework.TestResult$1.protect(TestResult.java:106)
        at junit.framework.TestResult.runProtected(TestResult.java:124)
        at junit.framework.TestResult.run(TestResult.java:109)
        at junit.framework.TestCase.run(TestCase.java:118)
at org.apache.jackrabbit.test.AbstractJCRTest.run(AbstractJCRTest.java: 404)
        
testGetName (org.apache.jackrabbit.test.api.WorkspaceReadMethodsTest) Time elapsed: 0.004 sec <<< ERROR!
javax.jcr.NoSuchWorkspaceException: test
at org .apache .jackrabbit .core.RepositoryImpl.getWorkspaceInfo(RepositoryImpl.java:678) at org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java: 1169) at org .apache .jackrabbit .core.jndi.BindableRepository.login(BindableRepository.java:185) at org .apache .jackrabbit .test.RepositoryHelper.getReadOnlySession(RepositoryHelper.java:133) at org .apache .jackrabbit .test .api .WorkspaceReadMethodsTest.testGetName(WorkspaceReadMethodsTest.java: 63)

The latter one is odd: I couldn't find the place in the test case where the workspace "test" would be created. There is no "test" workspace in the file system structure as well.

I have only these 6 bundles stored in S3 when the test cases are done:

default/013b1937-85f4-45a6-8e16-1b136d693cea
default/0fab396b-92b3-45cb-b13b-b6501b72d8f7
default/5f949e64-4bb8-4689-8c22-469f07b1dfaa
default/cafebabe-cafe-babe-cafe-babecafebabe
default/deadbeef-cafe-babe-cafe-babecafebabe
version/deadbeef-face-babe-cafe-babecafebabe

Thanks for any hints in advance!
Alex

BTW: I know that this won't be the most efficient PM as the HTTP connection delay to S3 is slowing things down. It's more a fun project - and maybe it's fast enough when running on a EC2 machine. I w


--
Alexander Klimetschek
[EMAIL PROTECTED]




Reply via email to