[
https://issues.apache.org/jira/browse/GORA-105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13696568#comment-13696568
]
Hudson commented on GORA-105:
-----------------------------
Integrated in goraOracle #6 (See [https://builds.apache.org/job/goraOracle/6/])
GORA-105 DataStoreFactory does not properly support multiple stores
(Revision 9701ea398ba8a9fea6e84b84eb99dd0d405021ff)
Result = FAILURE
ferdy :
Files :
* gora-core/src/main/java/org/apache/gora/store/impl/DataStoreBase.java
*
gora-core/src/test/java/org/apache/gora/avro/mapreduce/TestDataFileAvroStoreMapReduce.java
* gora-core/src/main/java/org/apache/gora/util/WritableUtils.java
* gora-core/src/test/java/org/apache/gora/avro/store/TestAvroStore.java
* gora-core/src/main/java/org/apache/gora/store/DataStoreFactory.java
* gora-core/src/test/java/org/apache/gora/util/TestWritableUtils.java
* gora-core/src/test/java/org/apache/gora/store/TestDataStoreFactory.java
* gora-core/src/test/java/org/apache/gora/GoraTestDriver.java
* CHANGES.txt
> DataStoreFactory does not properly support multiple stores
> ----------------------------------------------------------
>
> Key: GORA-105
> URL: https://issues.apache.org/jira/browse/GORA-105
> Project: Apache Gora
> Issue Type: Bug
> Components: schema, storage
> Reporter: Ferdy Galema
> Priority: Blocker
> Fix For: 0.2
>
> Attachments: GORA-105.patch, GORA-105-v2.patch
>
>
> DataStoreFactory has a single, static properties field. This is completely
> unacceptable, because that way when multiple stores are instantiated in the
> same JVM, the last store instance will overwrite the "default.schema"
> property. This causes that all the previous stores will read a misconfigured
> default schema property. Beside this it may cause several other nasty future
> bugs. In my opinion this is a blocker because the methods on DataStoreFactory
> suggest that it can handle multiple stores, when as a matter fact it doesn't.
> I will attach and commit a patch that fixes this problem. It only modifies
> gora-core. All stores directly benefit from this bugfix because of
> DataStoreBase. This patch fixes the following property related problems.
> -It introduces a static method createProps in DataStoreFactory. This is the
> equivalent of Configuration.create(). Everyone can create a new properties
> object and set everything interesting on it and pass it on to whatever stores
> they like, instead of ALL stores.
> -It fixes the method javadoc of DataStoreBase#getSchemaName(String
> mappingSchemaName, Class<?> persistentClass). The previous description was
> simply wrong.
> -It SERIALIZES the properties field of DataStoreBase instead of grabbing the
> static DataStoreFactory.properties field. This has the additional benefit of
> making sure that the store can be used correctly with runtime modified
> properties in a mapreduce context.
> -It removes the caching functionality of DataStoreFactory. Because of the
> dynamic configuration in the Properties and Configuration object, it is very
> difficult to implement a correct key hash for the cache. At the moment it
> only uses the triple {datastoreClass, keyClass,valueClass} as a key hash.
> Multiple stores cannot be properly supported when the factory uses badly
> implemented hash keys. (For example, one might instantiate 2 SqlStores, both
> using the exact same {datastoreClass, keyClass,valueClass} triple, but
> pointing to different databases. When one is about the instantiate the second
> datastore, it will faulty return the first datastore from cache). We can
> always reintroduce caching functionality when we can implement a proper key.
> The patch passes all tests. Will commit when there are no objections.
--
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