[
https://issues.apache.org/jira/browse/HADOOP-8545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13697728#comment-13697728
]
Steve Loughran commented on HADOOP-8545:
----------------------------------------
The auth package classes are all designed for Jackson binding and MUST NOT be
final, else you see a stack trace. Test to replicate this is
{{TestSwiftRestClient}}
{code}
at org.apache.hadoop.fs.swift.util.JSONUtil.toObject(JSONUtil.java:81)
at
org.apache.hadoop.fs.swift.http.SwiftRestClient$AuthenticationPost.extractResult(SwiftRestClient.java:1127)
at
org.apache.hadoop.fs.swift.http.SwiftRestClient$AuthenticationPost.extractResult(SwiftRestClient.java:1085)
at
org.apache.hadoop.fs.swift.http.SwiftRestClient.perform(SwiftRestClient.java:1407)
at
org.apache.hadoop.fs.swift.http.SwiftRestClient.authenticate(SwiftRestClient.java:1080)
at
org.apache.hadoop.fs.swift.http.TestSwiftRestClient.testPutAndDelete(TestSwiftRestClient.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:62)
Caused by: org.codehaus.jackson.map.JsonMappingException: No suitable
constructor found for type [simple type, class
org.apache.hadoop.fs.swift.auth.AuthenticationWrapper]: can not instantiate
from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@7d0c3a08; line: 1, column: 2]
at
org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at
org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:483)
at
org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:350)
at
org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2402)
at
org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1602)
at org.apache.hadoop.fs.swift.util.JSONUtil.toObject(JSONUtil.java:75)
... 14 more
{code}
Same for {{SwiftObjectFileStatus}}
{code}
Running org.apache.hadoop.fs.swift.TestSwiftFileSystemBasicOps
Tests run: 16, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 130.317 sec
<<< FAILURE!
testLsRoot(org.apache.hadoop.fs.swift.TestSwiftFileSystemBasicOps) Time
elapsed: 3267 sec <<< ERROR!
org.apache.hadoop.fs.swift.exceptions.SwiftJsonMarshallingException:
org.codehaus.jackson.map.JsonMappingException: No suitable constructor found
for type [simple type, class
org.apache.hadoop.fs.swift.snative.SwiftObjectFileStatus]: can not instantiate
from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@6179d854; line: 1, column: 3] source:
[{"hash": "d41d8cd98f00b204e9800998ecf8427e", "last_modified":
"2013-05-13T21:05:26.066260", "bytes": 0, "name": "user", "content_type":
"application/octet-stream"}, {"subdir": "user/"}]
at org.apache.hadoop.fs.swift.util.JSONUtil.toObject(JSONUtil.java:121)
at
org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystemStore.listDirectory(SwiftNativeFileSystemStore.java:354)
at
org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystemStore.listSubPaths(SwiftNativeFileSystemStore.java:399)
at
org.apache.hadoop.fs.swift.snative.SwiftNativeFileSystem.listStatus(SwiftNativeFileSystem.java:436)
at
org.apache.hadoop.fs.swift.TestSwiftFileSystemBasicOps.testLsRoot(TestSwiftFileSystemBasicOps.java:51)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
at
org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:62)
Caused by: org.codehaus.jackson.map.JsonMappingException: No suitable
constructor found for type [simple type, class
org.apache.hadoop.fs.swift.snative.SwiftObjectFileStatus]: can not instantiate
from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@6179d854; line: 1, column: 3]
at
org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
at
org.codehaus.jackson.map.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:483)
at
org.codehaus.jackson.map.deser.BeanDeserializer.deserialize(BeanDeserializer.java:350)
at
org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:120)
at
org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:97)
at
org.codehaus.jackson.map.deser.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
at
org.codehaus.jackson.map.ObjectMapper._readMapAndClose(ObjectMapper.java:2402)
at
org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1616)
at org.apache.hadoop.fs.swift.util.JSONUtil.toObject(JSONUtil.java:115)
... 13 more
{code}
The variable names are fixed to match those in the Keystone and Swift
protocols, hence the use of underscores.
I've reverted those files and pulled in taken the other changes: the switch to
{{isDirectory()}}, the javadocs on the exceptions and the various minor
formatting patches; added some more javadocs on the tests. Tested against
public OpenStack implementations
> Filesystem Implementation for OpenStack Swift
> ---------------------------------------------
>
> Key: HADOOP-8545
> URL: https://issues.apache.org/jira/browse/HADOOP-8545
> Project: Hadoop Common
> Issue Type: New Feature
> Components: fs
> Affects Versions: 1.2.0, 2.0.3-alpha
> Reporter: Tim Miller
> Assignee: Dmitry Mezhensky
> Labels: hadoop, patch
> Attachments: HADOOP-8545-026.patch, HADOOP-8545-027.patch,
> HADOOP-8545-028.patch, HADOOP-8545-029.patch, HADOOP-8545-030.patch,
> HADOOP-8545-10.patch, HADOOP-8545-11.patch, HADOOP-8545-12.patch,
> HADOOP-8545-13.patch, HADOOP-8545-14.patch, HADOOP-8545-15.patch,
> HADOOP-8545-16.patch, HADOOP-8545-17.patch, HADOOP-8545-18.patch,
> HADOOP-8545-19.patch, HADOOP-8545-1.patch, HADOOP-8545-20.patch,
> HADOOP-8545-21.patch, HADOOP-8545-22.patch, HADOOP-8545-23.patch,
> HADOOP-8545-24.patch, HADOOP-8545-25.patch, HADOOP-8545-2.patch,
> HADOOP-8545-3.patch, HADOOP-8545-4.patch, HADOOP-8545-5.patch,
> HADOOP-8545-6.patch, HADOOP-8545-7.patch, HADOOP-8545-8.patch,
> HADOOP-8545-9.patch, HADOOP-8545-javaclouds-2.patch, HADOOP-8545.patch,
> HADOOP-8545.patch, HADOOP-8545.suresh.patch
>
>
> ,Add a filesystem implementation for OpenStack Swift object store, similar to
> the one which exists today for S3.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira