[ 
https://issues.apache.org/jira/browse/KYLIN-2506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15970363#comment-15970363
 ] 

liyang commented on KYLIN-2506:
-------------------------------

[~kangkaisen], I briefly reviewed at the module and class level. Made some 
changes, rebased on master, and pushed to {{master-KYLIN-2506}}. We can 
continue work together on that branch.

- It is not a good design to let dictionary to use a job lock. Refactored to 
split the JobLock from a general purpose DistributedLock.
- Renamed many methods on the interfaces so they look better on one class 
(ZookeeperDistributedJobLock).
- Removed the curator dependency from core-common.

Also some open questions / suggestions.

- Seems the number of classes in {{org.apache.kylin.dict}} are too many, maybe 
move the global dictionary classes to a new sub-package?
- DictNode / DictSlice / DictSliceKey are vague names, better rename them to 
show their are specific to global dictionary
- Are the global dict metadata still backward compatibility? If user upgrade 
from an older version, anything to watch out? Move/rename classes may cause 
problem here.
- How necessary or urgent is this for 2.0.0 release? Personally I feel it is 
too big for 2.0.0.




> Refactor Global Dictionary
> --------------------------
>
>                 Key: KYLIN-2506
>                 URL: https://issues.apache.org/jira/browse/KYLIN-2506
>             Project: Kylin
>          Issue Type: Improvement
>          Components: General
>    Affects Versions: v2.0.0
>            Reporter: kangkaisen
>            Assignee: kangkaisen
>             Fix For: v2.0.0
>
>
> The main points of this refactor:
> 1 Fix the bug that the RemoveListener of LoadingCache swallowed any 
> exceptions when building the GlobalDict.
> 2 Fix the bug that the HDFS filename of DictSliceKey had Illegal characters.
> 3 Fix the bug that the HDFS filename of DictSliceKey maybe longer than 255.
> 4 Fix the bug that DictNode split failed if value length greater than 255 
> bytes.
> 5 Decouple the build and query of GlobalDict: 
> Abstract the builder of AppendTrieDictionary to AppendTrieDictionaryBuilder; 
> Add LoadingCache to AppendTrieDictionary and make AppendTrieDictionary is 
> only readable.
> 6 Remove dependence of LoadingCache when building the GlobalDict.
> 7 Abstract the HDFS operations to GlobalDictStore.
> 8 Abstract the metadata of GlobalDict to GlobalDictMetadata.
> 9 Delete CachedTreeMap.
> 10 Add distributed lock for GlobalDict.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to