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

Ferdy Galema closed GORA-105.
-----------------------------

    Resolution: Fixed

committed.
                
> 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-v2.patch, GORA-105.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: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to