2020-12-30 06:58

Titan 1.0 support

Titan is already 1.0, and in particular this latest version of Titan supports gremlin 3.x. Is there anything in this backend implementation that isn't compatible with these more advanced versions of Titan and tinkerpop?


  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答


  • weixin_39822184 weixin_39822184 4月前

    I've got Titan 1.0.0 working. I'm running into some trouble attempting to run the tests though. I'm trying to follow the instructions here, but I was just going to run the tests locally (on OS X, if it matters). Running mvn install works fine, but mvn test -Pstart-dynamodb-local gives me the following error:

    [INFO] --- exec-maven-plugin:1.2:exec (default) @ dynamodb-titan100-storage-backend ---
    Error: A JNI error has occurred, please check your installation and try again
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)
        at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)
    Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 7 more

    If I add commons-cli:commons-cli:1.2 as a compile scope dependency, it fails with a different class not found. So I think it may just be classpath problems, but I can't find it. Not sure if this is relevant (I don't think so, but figured I'd mention it), but the src/assembly/component.xml mentioned in the share profile doesn't exist. Since the profile is triggered on the file's existence, I'm guessing this is something you drop in when you need it and it shouldn't affect anything else.

    Just to make sure it wasn't my changes causing the problem, I tried the 0.5.4 branch. I can't even get that branch to compile. Running mvn clean install fails with the this error:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (default-compile) on project dynamodb-titan054-storage-backend: Compilation failure: Compilation failure:
    [ERROR] /Users/jfklin1/projects/public/dynamodb-titan-storage-backend/src/main/java/com/amazon/titan/diskstorage/dynamodb/DynamoDBDelegate.java:[36,40] package org.apache.commons.lang3.builder does not exist
    [ERROR] /Users/jfklin1/projects/public/dynamodb-titan-storage-backend/src/main/java/com/amazon/titan/diskstorage/dynamodb/DynamoDBDelegate.java:[809,15] cannot find symbol
    [ERROR] symbol:   class EqualsBuilder
    [ERROR] location: class com.amazon.titan.diskstorage.dynamodb.DynamoDBDelegate
    [ERROR] /Users/jfklin1/projects/public/dynamodb-titan-storage-backend/src/main/java/com/amazon/titan/diskstorage/dynamodb/DynamoDBDelegate.java:[809,43] cannot find symbol
    [ERROR] symbol:   class EqualsBuilder
    [ERROR] location: class com.amazon.titan.diskstorage.dynamodb.DynamoDBDelegate

    If it'd be helpful, I can post the full command output, but I was trying to keep this readable. Like I said though, the core functionality seems to be working. I just can't seem to get the tests to run. Any help would be appreciated.

    点赞 评论 复制链接分享
  • weixin_39822184 weixin_39822184 4月前

    If I use the standard dynamodb-local distribution, instead of running it through the pom, I am able to get the tests running. There was an issue with a jackson version mismatch between dynamodb-titan-storage-backend and aws-sdk-java, but I'm running tests now.

    点赞 评论 复制链接分享
  • weixin_39899244 weixin_39899244 4月前
    • have you finalized your testing on titan 1.0? Were you using the 0.5.4 branch or some other branch? Curious how this has been going as we would like to consider a move to titan 1.0 in the near future.
    点赞 评论 复制链接分享
  • weixin_39822184 weixin_39822184 4月前

    The tests always stall out after a couple of hours. Haven't had much time to look into that yet. FWIW, we've been running Titan 1.0 against dynamo in our test system for a couple of weeks without issue. I'm working on making my changes available so hopefully I can get some AWS folks to see if they see the same behavior in the tests.

    点赞 评论 复制链接分享
  • weixin_39725118 weixin_39725118 4月前

    Any updates on this? I am blocked at the same point with Titan 1.0 since am getting other exceptions with the vanilla version of this repo. Titan 0.5.4 does not seem to work for me due to issues #17 and #19.

    点赞 评论 复制链接分享
  • weixin_39624733 weixin_39624733 4月前

    We are aware of Titan 1.0.0 and will update this issue and other venues as soon as we have any updates to share. I am leaving this issue open for now.

    点赞 评论 复制链接分享
  • weixin_39624733 weixin_39624733 4月前

    please paste in your configuration. The exception you received is clear - it is not due to missing class - it is due to an unexpected configuration value.

    点赞 评论 复制链接分享
  • weixin_39822184 weixin_39822184 4月前

    Branch with 1.0.0 support is here: https://github.com/MonsantoCo/dynamodb-titan-storage-backend/tree/1.0.0

    Didn't want to send a PR just yet since the tests aren't passing yet, but if you'd prefer, I certainly can.

    点赞 评论 复制链接分享
  • weixin_39624733 weixin_39624733 4月前

    We released support for Titan 1.0.0. Closing.

    点赞 评论 复制链接分享
  • weixin_39952800 weixin_39952800 4月前

    Agree, Titan 1.0 support is very interesting as starting out with a version that will require a big upgrade in the future is no fun.

    点赞 评论 复制链接分享
  • weixin_39570838 weixin_39570838 4月前

    You read my mind. On the same note, the whole notion of Titan support for non-Cassandra is somewhat of a bet as of the Datastax acquisition isn't it, another reason to stay clear of using a one-off release of the DynamoDB storage binding. Better wait for a 1.0 compatibility statement maybe.

    On Sun, Nov 1, 2015 at 5:02 AM, Tymur Maryokhin notifications.com wrote:

    Agree, Titan 1.0 support is very interesting as starting out with a version that will require a big upgrade in the future is no fun.

    — Reply to this email directly or view it on GitHub https://github.com/awslabs/dynamodb-titan-storage-backend/issues/16#issuecomment-152789512 .

    点赞 评论 复制链接分享
  • weixin_39822184 weixin_39822184 4月前

    Just to see if it would accidentally work, I tried using Titan 1.0.0. It didn't. I got the exception below when configuring Titan with the two conf lines show here. I'm running DynamoDB as installed by Homebrew which says it's version dynamodb-local: stable 2015-07-16_1.0, but I don't think that even matters since it doesn't seem to like the configuration. I don't have or need a proxy so I'm wondering if it might be as simple as an updated version of commons-configuration or guava that's binary compatible, but behaves differently. I doubt it's that simple, but I haven't looked into it yet - that's the next step.

     java.lang.IllegalArgumentException: Could not instantiate implementation: com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager
        at com.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:55)
        at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:473)
        at com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:407)
        at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1320)
        at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:94)
        at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:74)
     Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
        at com.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:44)
        ... 45 more
     Caused by: com.thinkaurelius.titan.diskstorage.PermanentBackendException: Bad configuration used: com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration
        at com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager.<init>(DynamoDBStoreManager.java:87)
        ... 50 more
     Caused by: java.lang.IllegalArgumentException: Invalid configuration value for [root.storage.dynamodb.client.proxy.domain]:
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145)
        at com.thinkaurelius.titan.diskstorage.configuration.ConfigOption.verify(ConfigOption.java:227)
        at com.thinkaurelius.titan.diskstorage.configuration.ConfigOption.get(ConfigOption.java:219)
        at com.thinkaurelius.titan.diskstorage.configuration.BasicConfiguration.get(BasicConfiguration.java:56)
        at com.amazon.titan.diskstorage.dynamodb.Client.<init>(Client.java:96)
        at com.amazon.titan.diskstorage.dynamodb.DynamoDBStoreManager.<init>(DynamoDBStoreManager.java:85)
        ... 50 more
    点赞 评论 复制链接分享