Unknown configuration element in namespace [root.storage]: hbase

308 views
Skip to first unread message

subs4...@gmail.com

unread,
Aug 29, 2014, 2:14:52 PM8/29/14
to aureliu...@googlegroups.com
I am trying to use Titan 0.5 GA with hbase as backend and using Graph of Gods sample program to test it. When I run the java program it worked fine, however when I wrote the same program in Scala (2.11 version) then I get the above error for hbase configuration element for property "storage.hbase.table". 

My test code -
    def create(): TitanGraph = {
    println("Building Titan Graph - GreekGods")
        var config:TitanFactory.Builder = TitanFactory.build()
        config.set("storage.backend","hbase")
        config.set("storage.hostname","localhost")
        config.set("storage.hbase.table","GreekGods") // this is the line where exception is thrown for hbase being part of "storage.hbase.table" property name
       
        println("Opening Titan Graph - GreekGods")
        var graph:TitanGraph  = config.open()
        println("Loading Titan Graph - GreekGods")
        //GraphOfTheGodsFactory1.load(graph)
        return graph

    }  

Error I am getting - 
[error] (run-main-0) java.lang.IllegalArgumentException: Unknown configuration element in namespace [root.storage]: hbase
java.lang.IllegalArgumentException: Unknown configuration element in namespace [root.storage]: hbase
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:120)
at com.thinkaurelius.titan.diskstorage.configuration.ConfigElement.parse(ConfigElement.java:168)
at com.thinkaurelius.titan.diskstorage.configuration.UserModifiableConfiguration.set(UserModifiableConfiguration.java:81)
at com.thinkaurelius.titan.core.TitanFactory$Builder.set(TitanFactory.java:124)
at GraphOfTheGodsFactory1$.create(GraphOfTheGodsFactory1.scala:21)
at GraphOfTheGodsFactory1$.main(GraphOfTheGodsFactory1.scala:133)
at GraphOfTheGodsFactory1.main(GraphOfTheGodsFactory1.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)

Kishore Senji

unread,
Aug 29, 2014, 3:59:23 PM8/29/14
to aureliu...@googlegroups.com
Looks like there was some issue when loading ConfigOptions via ReflectiveConfigOptionLoader. Did you see any errors prior to IllegalArgumentException?

subs4...@gmail.com

unread,
Aug 29, 2014, 4:17:10 PM8/29/14
to aureliu...@googlegroups.com
No there is no error before that. I am also expecting this related to something related to reflection hence some version compatibility between scala and jdk but not able to figure it out. 

Dan LaRocque

unread,
Sep 1, 2014, 5:18:08 AM9/1/14
to aureliu...@googlegroups.com
Hi,

This is probably ReflectiveConfigOptionLoader failing in your runtime environment, as you guys inferred.  I recently rewrote that class in 0.5.1-SNAPSHOT on the titan05 branch to make it an order of magnitude faster in most cases, allow customization of the classloader chain that it uses, and to provide several ways to disable it.  It also no longer uses the "java.class.path" system property indirectly through the Reflections library, which I bet is causing problems in this case.

Please try inserting `println(com.thinkaurelius.titan.diskstorage.hbase.HBaseStoreManager.HBASE_TABLE.toString())` before calling set("storage.hbase.table",...) in your snippet below.  The idea is to force the static initializer on HBASE_TABLE to evaluate prior to calling set, which should allow the string key to resolve.  ReflectiveConfigOptionLoader tries to do this in 0.5.0 inside TitanFactory.build, but it's failing, probably because java.class.path does not contain the titan-hbase jar.

I think this is already fixed in titan05 -- no println workaround required -- and could point you at specific commits (or you could take the current HEAD) if you want to test it out in a devel environment.

thanks,
Dan
--
You received this message because you are subscribed to the Google Groups "Aurelius" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aureliusgraph...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aureliusgraphs/16261f33-eda9-4616-902f-1c39ca93af34%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

subs4...@gmail.com

unread,
Sep 2, 2014, 6:39:48 PM9/2/14
to aureliu...@googlegroups.com
Thanks Dan, that worked !

However I am curios why it was not working earlier as I am already using 0.5 GA. Is titan05 is different branch then 0.5 GA version?

Dan LaRocque

unread,
Sep 2, 2014, 9:36:00 PM9/2/14
to aureliu...@googlegroups.com
On 09/02/2014 06:39 PM, subs4...@gmail.com wrote:
Thanks Dan, that worked !

However I am curios why it was not working earlier as I am already using 0.5 GA. Is titan05 is different branch then 0.5 GA version?

Hi,

In my previous message and in this message, "titan05" means the git branch with that name: https://github.com/thinkaurelius/titan/tree/titan05.

The git branch titan05 is not identical to 0.5.0 GA.  At present, titan05 is 0.5.0 GA plus subsequent changes that will eventually become part of 0.5.1.  titan05 is not a release; it should be treated as an evolving development branch and potentially unstable.

If you're uncertain, then I would strongly suggest sticking with 0.5.0 GA and avoiding titan05.

thanks,
Dan

subs4...@gmail.com

unread,
Sep 4, 2014, 4:00:14 PM9/4/14
to aureliu...@googlegroups.com
Sure, Thanks Dan. Appreciated this !
Reply all
Reply to author
Forward
0 new messages