atlas-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Hemanth Yamijala (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (ATLAS-628) Starting two Atlas instances at the same time causes exceptions in HA mode.
Date Fri, 08 Apr 2016 13:47:25 GMT

     [ https://issues.apache.org/jira/browse/ATLAS-628?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Hemanth Yamijala updated ATLAS-628:
-----------------------------------
    Attachment: ATLAS-628.patch

Attaching a patch that implements a setup option in {{atlas_start.py}}. When run as {{atlas_start.py
-setup}}, this runs a list of registered setup steps. Currently the only registered step is
the initialization of the Graph backend schema.

The slightly generic approach I have chosen is because I see at least one other use case for
this: the setting up of Kafka topics with appropriate replicas in ATLAS-515, as listed in
the comments above. There can be more that we can add to this list.

Tested this out with setting up HBase and then starting atlas HA instances at exactly the
same time. The startup is fine and the issue reported does not come.

> Starting two Atlas instances at the same time causes exceptions in HA mode.
> ---------------------------------------------------------------------------
>
>                 Key: ATLAS-628
>                 URL: https://issues.apache.org/jira/browse/ATLAS-628
>             Project: Atlas
>          Issue Type: Bug
>    Affects Versions: 0.7-incubating
>            Reporter: Hemanth Yamijala
>            Assignee: Hemanth Yamijala
>            Priority: Blocker
>             Fix For: 0.7-incubating
>
>         Attachments: ATLAS-628.patch
>
>
> Configure HA parameters for Atlas. Use SOLR and HBase as backends. From two terminals
start two instances of Atlas at roughly the same time. This causes failure exceptions and
at least one instance does not start up properly (in either active or passive mode). The relevant
stack trace is:
> {code}
> Caused by: java.lang.ExceptionInInitializerError
>     at org.apache.atlas.repository.graph.GraphBackedMetadataRepository.<clinit>(GraphBackedMetadataRepository.java:67)
>     at java.lang.Class.forName0(Native Method)
>     at java.lang.Class.forName(Class.java:278)
>     at com.google.inject.internal.cglib.core.$ReflectUtils.defineClass(ReflectUtils.java:386)
>     at com.google.inject.internal.cglib.core.$AbstractClassGenerator.create(AbstractClassGenerator.java:219)
>     at com.google.inject.internal.cglib.proxy.$Enhancer.createHelper(Enhancer.java:377)
>     at com.google.inject.internal.cglib.proxy.$Enhancer.createClass(Enhancer.java:317)
>     at com.google.inject.internal.ProxyFactory$ProxyConstructor.<init>(ProxyFactory.java:252)
>     at com.google.inject.internal.ProxyFactory.create(ProxyFactory.java:178)
>     at com.google.inject.internal.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:90)
>     at com.google.inject.internal.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:29)
>     at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:37)
>     at com.google.inject.internal.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:33)
>     at com.google.inject.internal.FailableCache$1.load(FailableCache.java:37)
>     at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3599)
>     at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2379)
>     at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2342)
>     at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2257)
>     at com.google.common.cache.LocalCache.get(LocalCache.java:4000)
>     at com.google.common.cache.LocalCache.getOrLoad(LocalCache.java:4004)
>     at com.google.common.cache.LocalCache$LocalLoadingCache.get(LocalCache.java:4874)
>     at com.google.common.cache.LocalCache$LocalLoadingCache.getUnchecked(LocalCache.java:4880)
>     at com.google.inject.internal.FailableCache.get(FailableCache.java:48)
>     at com.google.inject.internal.ConstructorInjectorStore.get(ConstructorInjectorStore.java:50)
>     at com.google.inject.internal.ConstructorBindingImpl.initialize(ConstructorBindingImpl.java:136)
>     at com.google.inject.internal.InjectorImpl.initializeJitBinding(InjectorImpl.java:547)
>     at com.google.inject.internal.InjectorImpl.createJustInTimeBinding(InjectorImpl.java:884)
>     at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive(InjectorImpl.java:805)
>     at com.google.inject.internal.InjectorImpl.getJustInTimeBinding(InjectorImpl.java:282)
>     at com.google.inject.internal.InjectorImpl.getBindingOrThrow(InjectorImpl.java:214)
>     at com.google.inject.internal.InjectorImpl.getInternalFactory(InjectorImpl.java:890)
>     at com.google.inject.internal.FactoryProxy.notify(FactoryProxy.java:46)
>     at com.google.inject.internal.ProcessedBindingData.runCreationListeners(ProcessedBindingData.java:50)
>     at com.google.inject.internal.InternalInjectorCreator.initializeStatically(InternalInjectorCreator.java:134)
>     ... 24 more
> Caused by: java.lang.IllegalArgumentException: Database has already been initialized
but not frozen
>     at com.google.common.base.Preconditions.checkArgument(Preconditions.java:92)
>     at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1294)
>     at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:93)
>     at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:73)
>     at org.apache.atlas.repository.graph.TitanGraphProvider.getGraphInstance(TitanGraphProvider.java:105)
>     at org.apache.atlas.repository.graph.GraphHelper.<clinit>(GraphHelper.java:64)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message