Hi, Feng Sorry for reply late, but I’ve some comments about the FLIP
1. The introduced Public class CatalogDescriptor seems missed some necessary component a) How to construct a CatalogDescriptor ? b) How to visit the fields ? Could we use Configuration instead of Map<String, String> ? c) Could we offer a built-in factory method to build a CatalogDescriptor like public static CatalogDescriptor of(String catalogName, Configuration configuration) 2. The FLIP said “By default, there are two built-in CatalogStores available: the In-Memory CatalogStore and the File CatalogStore” , Do we have plan to offer a default CatalogStore if user didn’t config this? IIUC, users can obtains the benefits from lazy catalog initialization If we have a default catalogstore even it is in-memory. Best, Leonard > On Jun 6, 2023, at 7:08 PM, Feng Jin <jinfeng1...@gmail.com> wrote: > > Hi everyone, > > Thank you everyone for your valuable input. If there are no further > questions or concerns about the FLIP[1], I would like to start voting > tomorrow (6/7). > > > [1] > https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations > > > Best, > Feng > > > On Sun, Jun 4, 2023 at 3:33 PM Feng Jin <jinfeng1...@gmail.com> wrote: > >> Hi Samrat, >> >> Thanks for your advice. >> >>> 1. The createCatalog method does not mention any exceptions being >> thrown. >> >> CreateCatalog will throw CatalogException like registerCatalog. As >> CatalogException is a RuntimeException, >> there is no explicit declaration of throwing Exceptions in CatalogManager >> and TableEnvironment. >> To avoid misunderstandings, I have added the "throw CatalogException" flag >> to the createCatalog method definition of CatalogStore. >> >>> 2. Could you please provide an exhaustive list of the supported kinds? >> >> Sure, the documentation now includes the configuration of the built-in >> CatalogStore as well as how to configure a custom CatalogStore. >> >> >> Best, >> Feng >> >> >> On Sun, Jun 4, 2023 at 4:23 AM Samrat Deb <decordea...@gmail.com> wrote: >> >>> Hi Feng, >>> >>> Thank you for providing the proposal. I believe this feature will be >>> highly >>> valuable. >>> >>> I have a couple of inquiries: >>> >>> 1. According to the documentation [1], the createCatalog method does not >>> mention any exceptions being thrown. However, I would like to confirm if >>> it >>> is always true that there will be no failures in all scenarios. Please let >>> me know if there is any additional information I may have missed. >>> >>> 2. Regarding the registration process using the `table.catalog-store.kind` >>> configuration, could you please provide an exhaustive list of the >>> supported >>> kinds? >>> It would be great to have a comprehensive understanding of the options >>> available. >>> >>> Bests, >>> Samrat >>> >>> [1] >>> >>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations >>> >>> On Sat, Jun 3, 2023 at 5:54 PM Feng Jin <jinfeng1...@gmail.com> wrote: >>> >>>> Hi Hang and Jark >>>> >>>> Thank you very much for your reply. >>>> >>>> @Jark >>>>> 1. Could you move the CatalogStore registration API to the "Public >>>> Interface" section? >>>> >>>> Indeed, it is more reasonable. >>>> >>>>> 2. We should prefix "table." for the CatalogStore configuration. >>>> >>>> Sure, the names that you provided are indeed more logical and easier >>> to >>>> understand. >>>> >>>>> 3. About the open/close method in CatalogStoreFactory. >>>> >>>> I also agree with the proposed requirement scenario and design. I have >>>> already made modifications to the interface. >>>> >>>> @Hang >>>> >>>>> 1. The `CatalogStore` need the `open`/`close` methods to init or close >>>> the resource. >>>> >>>> I have already added the missing method. >>>> >>>>> 2. The `getCatalog` is misspelled as `optionalDescriptor`. >>>> >>>> Sorry for the misspelling, I updated this part. >>>> >>>>> 3. Then the `CatalogStoreFactory` may need the `open`/`close` methods >>>> to init or close its resource >>>> >>>> This is indeed a scenario that needs to be considered, and I have added >>>> relevant methods accordingly. >>>> Additionally, I have included some relevant description information in >>> the >>>> documentation to help others understand >>>> why the open/close methods need to be added. >>>> >>>> >>>> Best, >>>> Feng >>>> >>>> On Sat, Jun 3, 2023 at 12:35 PM Jark Wu <imj...@gmail.com> wrote: >>>> >>>>> Hi Jing, >>>>> >>>>> Thank you for the update. >>>>> >>>>> 1. Could you move the CatalogStore registration API to the "Public >>>>> Interface" section? >>>>> "Proposed Changes" is more like a place to describe the implementation >>>>> details. >>>>> >>>>> 2. We should prefix "table." for the CatalogStore configuration. >>> Besides, >>>>> the config key >>>>> name should be hierarchical[1]. Therefore, it may be better to use: >>>>> "table.catalog-store.kind" >>>>> "table.catalog-store.file.path" >>>>> >>>>> 3. I think Hang's suggestions make sense. >>>>> >>>>> Others look good to me. >>>>> >>>>> Best, >>>>> Jark >>>>> >>>>> On Fri, 2 Jun 2023 at 17:28, Hang Ruan <ruanhang1...@gmail.com> >>> wrote: >>>>> >>>>>> Hi, Feng. >>>>>> >>>>>> Thanks for the update. >>>>>> The current design looks good to me. I have some minor comments. >>>>>> >>>>>> 1. The `CatalogStore` need the `open`/`close` methods to init or >>> close >>>>> the >>>>>> resource. For example, when storing the information in MySQL, the >>> store >>>>>> needs to open and close the connections. >>>>>> >>>>>> 2. The `getCatalog` is misspelled as `optionalDescriptor`. >>>>>> >>>>>> 3. About the usage in the sql gateway. >>>>>> Considering the usage in sql gateway, the sql gateway may create a >>>>>> CatalogStore for each session. >>>>>> If we are using the MySqlCatalogStore, there would be so many >>>>> connections. >>>>>> How can we reuse the connection among these sessions? >>>>>> I think sql gateway need to maintain a connection pool in >>>>>> the CatalogStoreFactory and each session get its own connection from >>>> the >>>>>> pool when it is created. >>>>>> Then the `CatalogStoreFactory` may need the `open`/`close` methods >>> to >>>>> init >>>>>> or close its resource. >>>>>> Or is there a better way? >>>>>> >>>>>> Best, >>>>>> Hang >>>>>> >>>>>> Feng Jin <jinfeng1...@gmail.com> 于2023年6月2日周五 14:45写道: >>>>>> >>>>>>> Thanks Jingsong. >>>>>>> >>>>>>>> Just naming, maybe `createCatalog` in TableEnv >>>>>>> >>>>>>> +1 For this, I have already updated FLIP. >>>>>>> >>>>>>> >>>>>>> Best, >>>>>>> Feng >>>>>>> >>>>>>> >>>>>>> On Fri, Jun 2, 2023 at 11:32 AM Jingsong Li < >>> jingsongl...@gmail.com> >>>>>>> wrote: >>>>>>> >>>>>>>> Thanks Feng, >>>>>>>> >>>>>>>> Just naming, maybe `createCatalog` in TableEnv, I can see many >>>>>>>> functions are converted to createxxx from registerxxx. >>>>>>>> >>>>>>>> On Fri, Jun 2, 2023 at 11:04 AM Feng Jin <jinfeng1...@gmail.com >>>> >>>>>> wrote: >>>>>>>>> >>>>>>>>> Hi jark, thanks for your suggestion. >>>>>>>>> >>>>>>>>>> 1. How to register the CatalogStore for Table API? I think >>> the >>>>>>>>> CatalogStore should be immutable once TableEnv is created. >>>>> Otherwise, >>>>>>>> there >>>>>>>>> might be some data inconsistencies when CatalogStore is >>> changed. >>>>>>>>> >>>>>>>>> Yes, We should initialize the CatalogStore when creating the >>>>>> TableEnv. >>>>>>>>> Therefore, my current proposal is to add a method to configure >>>> the >>>>>>>>> CatalogStore in EnvironmentSettings. >>>>>>>>> >>>>>>>>> // Initialize a catalog Store >>>>>>>>> CatalogStore catalogStore = new FileCatalogStore(""); >>>>>>>>> >>>>>>>>> // set up the Table API >>>>>>>>> final EnvironmentSettings settings = >>>>>>>>> >>> EnvironmentSettings.newInstance().inBatchMode() >>>>>>>>> .withCatalogStore(catalogStore) >>>>>>>>> .build(); >>>>>>>>> >>>>>>>>> final TableEnvironment tableEnv = >>>>>>>> TableEnvironment.create(settings); >>>>>>>>> >>>>>>>>> >>>>>>>>>> 2. Why does the CatalogStoreFactory interface only have a >>>> default >>>>>>>> method, >>>>>>>>> not an interface method? >>>>>>>>> >>>>>>>>> Sorry, While I did refer to the Catalog interface, I agree >>> that >>>> as >>>>> a >>>>>>> new >>>>>>>>> interface, the CatalogStoreFactory should not have a default >>>> method >>>>>> but >>>>>>>> an >>>>>>>>> interface method. I have already modified the interface. >>>>>>>>> >>>>>>>>>> 3. Please mention the alternative API in Javadoc for the >>>>>>>>> deprecated`registerCatalog`. >>>>>>>>>> 4. In the "Compatibility" section, would be better to >>> mention >>>> the >>>>>>>> changed >>>>>>>>> behavior of CREATE CATALOG statement if FileCatalogStore (or >>>> other >>>>>>>>> persisted catalog store) is used. >>>>>>>>> >>>>>>>>> Thanks for the suggestion, I have updated the FLIP [1]. >>>>>>>>> >>>>>>>>> >>>>>>>>> [1]. >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations >>>>>>>>> >>>>>>>>> >>>>>>>>> Best, >>>>>>>>> Feng >>>>>>>>> >>>>>>>>> On Thu, Jun 1, 2023 at 9:22 PM Jark Wu <imj...@gmail.com> >>> wrote: >>>>>>>>> >>>>>>>>>> Hi Feng, >>>>>>>>>> >>>>>>>>>> This is a useful FLIP. Thanks for starting this discussion. >>>>>>>>>> The current design looks pretty good to me. I just have some >>>>> minor >>>>>>>>>> comments. >>>>>>>>>> >>>>>>>>>> 1. How to register the CatalogStore for Table API? I think >>> the >>>>>>>> CatalogStore >>>>>>>>>> should be immutable once TableEnv is created. Otherwise, >>> there >>>>>> might >>>>>>> be >>>>>>>>>> some data inconsistencies when CatalogStore is changed. >>>>>>>>>> >>>>>>>>>> 2. Why does the CatalogStoreFactory interface only have a >>>> default >>>>>>>> method, >>>>>>>>>> not an interface method? >>>>>>>>>> >>>>>>>>>> 3. Please mention the alternative API in Javadoc for the >>>>> deprecated >>>>>>>>>> `registerCatalog`. >>>>>>>>>> >>>>>>>>>> 4. In the "Compatibility" section, would be better to >>> mention >>>> the >>>>>>>> changed >>>>>>>>>> behavior of CREATE CATALOG statement if FileCatalogStore (or >>>>> other >>>>>>>>>> persisted catalog store) is used. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Best, >>>>>>>>>> Jark >>>>>>>>>> >>>>>>>>>> On Thu, 1 Jun 2023 at 11:26, Feng Jin < >>> jinfeng1...@gmail.com> >>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Hi , thanks all for reviewing the flip. >>>>>>>>>>> >>>>>>>>>>> @Ron >>>>>>>>>>> >>>>>>>>>>>> Regarding the CatalogStoreFactory#createCatalogStore >>>> method, >>>>>> do >>>>>>> we >>>>>>>>>> need >>>>>>>>>>> to provide a default implementation? >>>>>>>>>>> >>>>>>>>>>> Yes, we will provide a default >>> InMemoryCatalogStoreFactory to >>>>>>> create >>>>>>>> an >>>>>>>>>>> InMemoryCatalogStore. >>>>>>>>>>> >>>>>>>>>>>> If we get a Catalog from CatalogStore, after >>> initializing >>>>> it, >>>>>>>> whether >>>>>>>>>> we >>>>>>>>>>> put it in Map<String, Catalog> catalogs again? >>>>>>>>>>> >>>>>>>>>>> Yes, in the current design, catalogs are stored as >>> snapshots, >>>>> and >>>>>>>> once >>>>>>>>>>> initialized, the Catalog will be placed in the Map<String, >>>>>> Catalog> >>>>>>>>>>> catalogs. >>>>>>>>>>> Subsequently, the Map<String, Catalog> catalogs will be >>> the >>>>>> primary >>>>>>>>>> source >>>>>>>>>>> for obtaining the corresponding Catalog. >>>>>>>>>>> >>>>>>>>>>>> how about renaming them to `catalog.store.type` and >>>>>>>>>>> `catalog.store.path`? >>>>>>>>>>> >>>>>>>>>>> I think it is okay. Adding "sql" at the beginning may >>> seem a >>>>> bit >>>>>>>>>> strange. I >>>>>>>>>>> will update the FLIP. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> @Shammon >>>>>>>>>>> >>>>>>>>>>> Thank you for the review. I have made the necessary >>>>> corrections. >>>>>>>>>>> Regarding the modifications made to the Public Interface, >>> I >>>>> have >>>>>>> also >>>>>>>>>>> included the relevant changes to the `TableEnvironment`. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Best, >>>>>>>>>>> Feng >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Wed, May 31, 2023 at 5:02 PM Shammon FY < >>>> zjur...@gmail.com> >>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi feng, >>>>>>>>>>>> >>>>>>>>>>>> Thanks for updating, I have some minor comments >>>>>>>>>>>> >>>>>>>>>>>> 1. The modification of `CatalogManager` should not be in >>>>>> `Public >>>>>>>>>>>> Interfaces`, it is not a public interface. >>>>>>>>>>>> >>>>>>>>>>>> 2. `@PublicEvolving` should be added for `CatalogStore` >>> and >>>>>>>>>>>> `CatalogStoreFactory` >>>>>>>>>>>> >>>>>>>>>>>> 3. The code `Optional<Catalog> optionalDescriptor = >>>>>>>>>>>> catalogStore.get(catalogName);` in the `CatalogManager` >>>>> should >>>>>> be >>>>>>>>>>>> `Optional<CatalogDescriptor> optionalDescriptor = >>>>>>>>>>>> catalogStore.get(catalogName);` >>>>>>>>>>>> >>>>>>>>>>>> Best, >>>>>>>>>>>> Shammon FY >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Wed, May 31, 2023 at 2:24 PM liu ron < >>>> ron9....@gmail.com> >>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, Feng >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks for driving this FLIP, this proposal is very >>>> useful >>>>>> for >>>>>>>>>> catalog >>>>>>>>>>>>> management. >>>>>>>>>>>>> I have some small questions: >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Regarding the >>> CatalogStoreFactory#createCatalogStore >>>>>> method, >>>>>>>> do we >>>>>>>>>>>> need >>>>>>>>>>>>> to provide a default implementation? >>>>>>>>>>>>> 2. If we get Catalog from CatalogStore, after >>>> initializing >>>>>> it, >>>>>>>>>> whether >>>>>>>>>>> we >>>>>>>>>>>>> put it to Map<String, Catalog> catalogs again? >>>>>>>>>>>>> 3. Regarding the options `sql.catalog.store.type` and >>>>>>>>>>>>> `sql.catalog.store.file.path`, how about renaming >>> them to >>>>>>>>>>>>> `catalog.store.type` and `catalog.store.path`? >>>>>>>>>>>>> >>>>>>>>>>>>> Best, >>>>>>>>>>>>> Ron >>>>>>>>>>>>> >>>>>>>>>>>>> Feng Jin <jinfeng1...@gmail.com> 于2023年5月29日周一 >>> 21:19写道: >>>>>>>>>>>>> >>>>>>>>>>>>>> Hi yuxia >>>>>>>>>>>>>> >>>>>>>>>>>>>>> But from the code in Proposed Changes, once we >>>>> register >>>>>>> the >>>>>>>>>>> Catalog, >>>>>>>>>>>>> we >>>>>>>>>>>>>> initialize it and open it. right? >>>>>>>>>>>>>> >>>>>>>>>>>>>> Yes, In order to avoid inconsistent semantics of the >>>>>> original >>>>>>>>>> CREATE >>>>>>>>>>>>>> CATALOG DDL, Catalog will be directly initialized in >>>>>>>>>> registerCatalog >>>>>>>>>>> so >>>>>>>>>>>>>> that parameter validation can be performed. >>>>>>>>>>>>>> >>>>>>>>>>>>>> In the current design, lazy initialization is mainly >>>>>>> reflected >>>>>>>> in >>>>>>>>>>>>>> getCatalog. If CatalogStore has already saved some >>>>> catalog >>>>>>>>>>>>> configurations, >>>>>>>>>>>>>> only initialization is required in getCatalog. >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Best, >>>>>>>>>>>>>> Feng >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Mon, May 29, 2023 at 8:27 PM yuxia < >>>>>>>> luoyu...@alumni.sjtu.edu.cn >>>>>>>>>>> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi, Feng. >>>>>>>>>>>>>>> I'm trying to understanding the meaning of *lazy >>>>>>>> initialization*. >>>>>>>>>>> If >>>>>>>>>>>>> i'm >>>>>>>>>>>>>>> wrong, please correct me. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> IIUC, lazy initialization means only you need to >>>> access >>>>>> the >>>>>>>>>>> catalog, >>>>>>>>>>>>> then >>>>>>>>>>>>>>> you initialize it. But from the code in Proposed >>>>> Changes, >>>>>>>> once we >>>>>>>>>>>>>> register >>>>>>>>>>>>>>> the Catalog, >>>>>>>>>>>>>>> we initialize it and open it. right? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>> Yuxia >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> ----- 原始邮件 ----- >>>>>>>>>>>>>>> 发件人: "Jing Ge" <j...@ververica.com.INVALID> >>>>>>>>>>>>>>> 收件人: "dev" <dev@flink.apache.org> >>>>>>>>>>>>>>> 发送时间: 星期一, 2023年 5 月 29日 下午 5:12:46 >>>>>>>>>>>>>>> 主题: Re: [DISCUSS] FLIP 295: Support persistence of >>>>>> Catalog >>>>>>>>>>>>> configuration >>>>>>>>>>>>>>> and asynchronous registration >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Thanks for your effort! +1 for the proposal. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> One of the major changes is that current design >>> will >>>>>>> provide >>>>>>>>>>>>>>> Map<String,Catalog> catalogs as a snapshot instead >>>> of a >>>>>>>> cache, >>>>>>>>>>> which >>>>>>>>>>>>>> means >>>>>>>>>>>>>>> once it has been initialized, any changes done by >>>> other >>>>>>>> sessions >>>>>>>>>>> will >>>>>>>>>>>>> not >>>>>>>>>>>>>>> affect it. Point 6 described follow-up options for >>>>>> further >>>>>>>>>>>> improvement. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> On Mon, May 29, 2023 at 5:31 AM Feng Jin < >>>>>>>> jinfeng1...@gmail.com> >>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Hi all, I would like to update you on the latest >>>>>> progress >>>>>>>> of >>>>>>>>>> the >>>>>>>>>>>>> FLIP. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Last week, Leonard Xu, HangRuan, Jing Ge, >>> Shammon >>>> FY, >>>>>>>> ShengKai >>>>>>>>>>> Fang >>>>>>>>>>>>>> and I >>>>>>>>>>>>>>>> had an offline discussion regarding the overall >>>>>> solution >>>>>>>> for >>>>>>>>>>> Flink >>>>>>>>>>>>>>>> CatalogStore. We have reached a consensus and I >>>> have >>>>>>>> updated >>>>>>>>>> the >>>>>>>>>>>>> final >>>>>>>>>>>>>>>> solution in FLIP. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Next, let me briefly describe the entire design: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> 1. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Introduce CatalogDescriptor to store catalog >>>>>>>> configuration >>>>>>>>>>>> similar >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>> TableDescriptor. >>>>>>>>>>>>>>>> 2. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The two key functions of CatalogStore - void >>>>>>>>>>> storeCatalog(String >>>>>>>>>>>>>>>> catalogName, CatalogDescriptor) and >>>>>> CatalogDescriptor >>>>>>>>>>>>>>> getCatalog(String) >>>>>>>>>>>>>>>> will both use CatalogDescriptor instead of >>>> Catalog >>>>>>>> instance. >>>>>>>>>>>> This >>>>>>>>>>>>>> way, >>>>>>>>>>>>>>>> CatalogStore will only be responsible for >>> saving >>>>> and >>>>>>>>>>> retrieving >>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>> configurations without having to initialize >>>>>> catalogs. >>>>>>>>>>>>>>>> 3. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> The default registerCatalog(String >>> catalogName, >>>>>>> Catalog >>>>>>>>>>> catalog) >>>>>>>>>>>>>>>> function in CatalogManager will be marked as >>>>>>> deprecated. >>>>>>>>>>>>>>>> 4. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> A new function registerCatalog(String >>>> catalogName, >>>>>>>>>>>>> CatalogDescriptor >>>>>>>>>>>>>>>> catalog) will be added to serve as the >>> default >>>>>>>> registration >>>>>>>>>>>>> function >>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>> catalogs in CatalogManager. >>>>>>>>>>>>>>>> 5. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Map<String,Catalog> catalogs in CataloManager >>>> will >>>>>>>> remain >>>>>>>>>>>>> unchanged >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>> save initialized catalogs.This means that >>>> deletion >>>>>>>>>> operations >>>>>>>>>>>> from >>>>>>>>>>>>>> one >>>>>>>>>>>>>>>> session won't synchronize with other >>> sessions. >>>>>>>>>>>>>>>> 6. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> To support multi-session synchronization >>>> scenarios >>>>>> for >>>>>>>>>>> deletions >>>>>>>>>>>>>> later >>>>>>>>>>>>>>>> on we should make Map<String,Catalog>catalogs >>>>>>>>>>> configurable.There >>>>>>>>>>>>> may >>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>> three possible situations: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> a.Default caching of all initialized catalogs >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> b.Introduction of LRU cache logic which can >>>>>>>> automatically >>>>>>>>>>> clear >>>>>>>>>>>>>>>> long-unused catalogs. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> c.No caching of any instances; each call to >>>>>> getCatalog >>>>>>>>>>> creates a >>>>>>>>>>>>> new >>>>>>>>>>>>>>>> instance. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This is the document for discussion: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://docs.google.com/document/d/1HRJNd4_id7i6cUxGnAybmYZIwl5g1SmZCOzGdUz-6lU/edit >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This is the final proposal document: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-295%3A+Support+lazy+initialization+of+catalogs+and+persistence+of+catalog+configurations >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Thank you very much for your attention and >>>>> suggestions >>>>>> on >>>>>>>> this >>>>>>>>>>>>> FLIP. A >>>>>>>>>>>>>>>> special thanks to Hang Ruan for his suggestions >>> on >>>>> the >>>>>>>> entire >>>>>>>>>>>> design >>>>>>>>>>>>>> and >>>>>>>>>>>>>>>> organizing offline discussions. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> If you have any further suggestions or feedback >>>> about >>>>>>> this >>>>>>>> FLIP >>>>>>>>>>>>> please >>>>>>>>>>>>>>> feel >>>>>>>>>>>>>>>> free to share. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Feng >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Sat, May 6, 2023 at 8:32 PM Jing Ge >>>>>>>>>>> <j...@ververica.com.invalid >>>>>>>>>>>>> >>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Thanks for improving the FLIP. It looks good >>> to >>>> me. >>>>>> We >>>>>>>> could >>>>>>>>>>>> still >>>>>>>>>>>>>>>>> reconsider in the future how to provide more >>>> common >>>>>>>> built-in >>>>>>>>>>>> cache >>>>>>>>>>>>>>>>> functionality in CatalogManager so that not >>> every >>>>>>>>>> CatalogSotre >>>>>>>>>>>>>>>>> implementation has to take care of it. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> On Thu, May 4, 2023 at 1:47 PM Feng Jin < >>>>>>>>>> jinfeng1...@gmail.com >>>>>>>>>>>> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Hi Jing, >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Thanks for your reply. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> There might be more such issues. I would >>>>> suggest >>>>>>> you >>>>>>>>>>>>> completely >>>>>>>>>>>>>>> walk >>>>>>>>>>>>>>>>>> through the FLIP again and fix those issues >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> I am very sorry for my carelessness and at >>> the >>>>> same >>>>>>>> time, I >>>>>>>>>>>>> greatly >>>>>>>>>>>>>>>>>> appreciate your careful review. I have >>>> thoroughly >>>>>>>> checked >>>>>>>>>> the >>>>>>>>>>>>>> entire >>>>>>>>>>>>>>>> FLIP >>>>>>>>>>>>>>>>>> and made corrections to these issues. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> If I am not mistaken, with the current >>> FLIP >>>>>>> design, >>>>>>>>>>>>>>> CatalogManager >>>>>>>>>>>>>>>>>> could work without Optional CatalogStore >>> being >>>>>>>> configured. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Yes, in the original design, CatalogStore >>> was >>>> not >>>>>>>> necessary >>>>>>>>>>>>> because >>>>>>>>>>>>>>>>>> CatalogManager used Map<String, Catalog> >>>> catalogs >>>>>> to >>>>>>>> store >>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>> instances. >>>>>>>>>>>>>>>>>> However, this caused inconsistency issues. >>>>>>> Therefore, I >>>>>>>>>>>> modified >>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>> part >>>>>>>>>>>>>>>>>> of the design and removed Map<String, >>> Catalog> >>>>>>> catalogs >>>>>>>>>> from >>>>>>>>>>>>>>>>>> CatalogManager. >>>>>>>>>>>>>>>>>> At the same time, InMemoryCatalog will >>> serve >>>> as >>>>>> the >>>>>>>>>> default >>>>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>> to save catalogs in memory and replace the >>>>>>>> functionality of >>>>>>>>>>>>>>>>>> Map<String,Catalog>catalogs. >>>>>>>>>>>>>>>>>> The previous plan that kept >>>>>>>> Map<String,Catalog>catalogs has >>>>>>>>>>>> been >>>>>>>>>>>>>>> moved >>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>> Rejected Alternatives. >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>> Feng >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> On Sun, Apr 30, 2023 at 9:03 PM Jing Ge >>>>>>>>>>>>> <j...@ververica.com.invalid >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> There are still many places contain >>>>> inconsistent >>>>>>>> content, >>>>>>>>>>>> e.g. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> 1. "Asynchronous registration" is still >>> used. >>>>>>>>>>>>>>>>>>> 2. The java comment of the method >>>>>>>> registerCatalog(String >>>>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>>>> Catalog catalog) in CatalogManager does >>> not >>>>> tell >>>>>>>> what the >>>>>>>>>>>>> method >>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>> doing. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> There might be more such issues. I would >>>>> suggest >>>>>>> you >>>>>>>>>>>> completely >>>>>>>>>>>>>>> walk >>>>>>>>>>>>>>>>>>> through the FLIP again and fix those >>> issues. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> About the inMemoryCatalogStore, do you >>> mean >>>>> that >>>>>>> you >>>>>>>> will >>>>>>>>>>>> build >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>> cache >>>>>>>>>>>>>>>>>>> functionality in the CatalogStore? This >>> is a >>>>> very >>>>>>>>>> different >>>>>>>>>>>>>> design >>>>>>>>>>>>>>>>>> concept >>>>>>>>>>>>>>>>>>> from what the current FLIP described. If >>> I am >>>>> not >>>>>>>>>> mistaken, >>>>>>>>>>>>> with >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>> current FLIP design, CatalogManager could >>>> work >>>>>>>> without >>>>>>>>>>>> Optional >>>>>>>>>>>>>>>>>>> CatalogStore being configured. That is the >>>>> reason >>>>>>>> why I >>>>>>>>>>>>> mentioned >>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>> last email that the example code wrt the >>>>> Optional >>>>>>>>>>>> CatalogStore >>>>>>>>>>>>> is >>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>> correct. >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> On Thu, Apr 27, 2023 at 3:55 PM Feng Jin < >>>>>>>>>>>>> jinfeng1...@gmail.com> >>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Hi Jing >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> There are still some NIT issues in the >>>> FLIP >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Thank you very much for the careful >>>> review. I >>>>>>> have >>>>>>>>>>> already >>>>>>>>>>>>> made >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> relevant changes. >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Speaking of the conflict issues in >>> the >>>>>>>>>> multi-instance >>>>>>>>>>>>>>>> scenarios, I >>>>>>>>>>>>>>>>>> am >>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>> sure if this is the intended behaviour >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Currently, there are conflicts in >>> multiple >>>>>>>> scenarios >>>>>>>>>> with >>>>>>>>>>>> the >>>>>>>>>>>>>>>> current >>>>>>>>>>>>>>>>>>>> design. I am thinking whether we should >>>>> remove >>>>>>>>>>> 'Map<String, >>>>>>>>>>>>>>>> Catalog>' >>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>> make Cache the default behavior of >>>>>>>>>> InMemoryCatalogStore. >>>>>>>>>>>> This >>>>>>>>>>>>>>> way, >>>>>>>>>>>>>>>>>> users >>>>>>>>>>>>>>>>>>>> can implement their own CatalogStore to >>>>> achieve >>>>>>>>>>>>> multi-instance >>>>>>>>>>>>>>>>>>>> non-conflicting scenarios. What do you >>>> think? >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>> Feng >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> On Thu, Apr 27, 2023 at 9:03 PM Jing Ge >>>>>>>>>>>>>>> <j...@ververica.com.invalid >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Thanks for working on the FLIP. There >>> are >>>>>> still >>>>>>>> some >>>>>>>>>>> NIT >>>>>>>>>>>>>> issues >>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> FLIP >>>>>>>>>>>>>>>>>>>>> like: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 1. Optional<CatalogStore> catalogStore >>>> has >>>>>> been >>>>>>>> used >>>>>>>>>> as >>>>>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>>>>> instead of Optional in the code >>> example. >>>> It >>>>>>>> should be >>>>>>>>>>>> fine >>>>>>>>>>>>> to >>>>>>>>>>>>>>> use >>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>> as >>>>>>>>>>>>>>>>>>>>> pseudo code for now and update it >>> after >>>> you >>>>>>>> submit >>>>>>>>>> the >>>>>>>>>>>> PR. >>>>>>>>>>>>>>>>>>>>> 2. addCatalog(...) is still used >>>> somewhere >>>>> in >>>>>>> the >>>>>>>>>>>> rejected >>>>>>>>>>>>>>>> section >>>>>>>>>>>>>>>>>>> which >>>>>>>>>>>>>>>>>>>>> should be persistContext(...) to keep >>> it >>>>>>>> consistent. >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Speaking of the conflict issues in the >>>>>>>> multi-instance >>>>>>>>>>>>>>> scenarios, >>>>>>>>>>>>>>>> I >>>>>>>>>>>>>>>>> am >>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>> sure if this is the intended >>> behaviour. >>>> If >>>>>>>>>> Map<String, >>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>> catalogs >>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>> used as a cache, it should be invalid, >>>> once >>>>>> the >>>>>>>>>> related >>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>> has >>>>>>>>>>>>>>>>>>> been >>>>>>>>>>>>>>>>>>>>> removed from the CatalogStore by >>> another >>>>>>>> instance. >>>>>>>>>> Did >>>>>>>>>>> I >>>>>>>>>>>>> miss >>>>>>>>>>>>>>>>>>> something? >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> On Thu, Apr 13, 2023 at 4:40 PM Feng >>> Jin >>>> < >>>>>>>>>>>>>>> jinfeng1...@gmail.com> >>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Hi Jing,Shammon >>>>>>>>>>>>>>>>>>>>>> Thanks for your reply. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> @Jing >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> How about persistCatalog()? >>>>>>>>>>>>>>>>>>>>>> I think this is a good function >>> name, I >>>>>> have >>>>>>>>>> updated >>>>>>>>>>> it >>>>>>>>>>>>> in >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>> documentation. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Some common cache features >>> should >>>> be >>>>>>>>>> implemented >>>>>>>>>>>>>>>>>>>>>> Thank you for the suggestion. If >>>>>> alternative >>>>>>> 1 >>>>>>>>>> turns >>>>>>>>>>>> out >>>>>>>>>>>>> to >>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>> appropriate later, I will improve >>> this >>>>> part >>>>>>> of >>>>>>>> the >>>>>>>>>>>>> content. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> As the above discussion moves >>>> forward, >>>>>> the >>>>>>>>>> option 2 >>>>>>>>>>>>>>> solution >>>>>>>>>>>>>>>>>> looks >>>>>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>> like a replacement of option 1 >>>>>>>>>>>>>>>>>>>>>> Yes, after discussing with Shammon >>>>> offline, >>>>>>> we >>>>>>>>>> think >>>>>>>>>>>> that >>>>>>>>>>>>>>>>> solution >>>>>>>>>>>>>>>>>> 2 >>>>>>>>>>>>>>>>>>>>> might >>>>>>>>>>>>>>>>>>>>>> be more suitable and also avoid any >>>>>>>> inconsistency >>>>>>>>>>>> issues. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> There are some inconsistent >>>>> descriptions >>>>>> in >>>>>>>> the >>>>>>>>>>>>> content. >>>>>>>>>>>>>>>> Would >>>>>>>>>>>>>>>>>> you >>>>>>>>>>>>>>>>>>>>> like >>>>>>>>>>>>>>>>>>>>>> to clean them up? >>>>>>>>>>>>>>>>>>>>>> I will do my best to improve the >>>> document >>>>>> and >>>>>>>>>>>> appreciate >>>>>>>>>>>>>> your >>>>>>>>>>>>>>>>>>>>> suggestions. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> @Shammon >>>>>>>>>>>>>>>>>>>>>>> can you put the unselected option >>> in >>>>>>>> `Rejected >>>>>>>>>>>>>>> Alternatives` >>>>>>>>>>>>>>>>>>>>>> Sure, I have moved it to the >>> `Rejected >>>>>>>>>> Alternatives`. >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> Best >>>>>>>>>>>>>>>>>>>>>> Feng >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 13, 2023 at 8:52 AM >>> Shammon >>>>> FY >>>>>> < >>>>>>>>>>>>>>> zjur...@gmail.com> >>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Hi Feng >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Thanks for your update. >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> I found there are two options in >>>>>> `Proposed >>>>>>>>>>> Changes`, >>>>>>>>>>>>> can >>>>>>>>>>>>>>> you >>>>>>>>>>>>>>>>> put >>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> unselected option in `Rejected >>>>>>>> Alternatives`? I >>>>>>>>>>> think >>>>>>>>>>>>>> this >>>>>>>>>>>>>>>> may >>>>>>>>>>>>>>>>>> help >>>>>>>>>>>>>>>>>>>> us >>>>>>>>>>>>>>>>>>>>>>> better understand your proposal >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>>> Shammon FY >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 13, 2023 at 4:49 AM >>> Jing >>>> Ge >>>>>>>>>>>>>>>>>> <j...@ververica.com.invalid >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Thanks for raising this FLIP. I >>> am >>>>>> still >>>>>>>>>> confused >>>>>>>>>>>>> after >>>>>>>>>>>>>>>>>>> completely >>>>>>>>>>>>>>>>>>>>>>> reading >>>>>>>>>>>>>>>>>>>>>>>> the thread with following >>>> questions: >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> 1. Naming confusion - >>>>> registerCatalog() >>>>>>> and >>>>>>>>>>>>>> addCatalog() >>>>>>>>>>>>>>>> have >>>>>>>>>>>>>>>>>> no >>>>>>>>>>>>>>>>>>>> big >>>>>>>>>>>>>>>>>>>>>>>> difference based on their names. >>>> One >>>>> of >>>>>>>> them is >>>>>>>>>>>>>>> responsible >>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>> data >>>>>>>>>>>>>>>>>>>>>>>> persistence. How about >>>>>> persistCatalog()? >>>>>>>>>>>>>>>>>>>>>>>> 2. As you mentioned that >>>> Map<String, >>>>>>>> Catalog> >>>>>>>>>>>>> catalogs >>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>> used >>>>>>>>>>>>>>>>>>> as a >>>>>>>>>>>>>>>>>>>>>> cache >>>>>>>>>>>>>>>>>>>>>>>> and catalogStore is used for >>> data >>>>>>>> persistence. >>>>>>>>>> I >>>>>>>>>>>>> would >>>>>>>>>>>>>>>>> suggest >>>>>>>>>>>>>>>>>>>>>> describing >>>>>>>>>>>>>>>>>>>>>>>> their purpose conceptually and >>>>> clearly >>>>>> in >>>>>>>> the >>>>>>>>>>> FLIP. >>>>>>>>>>>>>> Some >>>>>>>>>>>>>>>>> common >>>>>>>>>>>>>>>>>>>> cache >>>>>>>>>>>>>>>>>>>>>>>> features should be implemented, >>>> i.e. >>>>>> data >>>>>>>> in >>>>>>>>>> the >>>>>>>>>>>>> cache >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> store >>>>>>>>>>>>>>>>>>>>>>> should >>>>>>>>>>>>>>>>>>>>>>>> be consistent. Same Catalog >>>> instance >>>>>>>> should be >>>>>>>>>>>> found >>>>>>>>>>>>> in >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>> store >>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>> the cache(either it has been >>>>>> initialized >>>>>>>> or it >>>>>>>>>>> will >>>>>>>>>>>>> be >>>>>>>>>>>>>>> lazy >>>>>>>>>>>>>>>>>>>>>> initialized) >>>>>>>>>>>>>>>>>>>>>>>> for the same catalog name. The >>>>>>> consistency >>>>>>>> will >>>>>>>>>>> be >>>>>>>>>>>>>> taken >>>>>>>>>>>>>>>> care >>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>> while >>>>>>>>>>>>>>>>>>>>>>>> updating the catalog. >>>>>>>>>>>>>>>>>>>>>>>> 3. As the above discussion moves >>>>>> forward, >>>>>>>> the >>>>>>>>>>>> option >>>>>>>>>>>>> 2 >>>>>>>>>>>>>>>>> solution >>>>>>>>>>>>>>>>>>>> looks >>>>>>>>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>>>> like a replacement of option 1, >>>>>> because, >>>>>>>> afaiu, >>>>>>>>>>>>> issues >>>>>>>>>>>>>>>>>> mentioned >>>>>>>>>>>>>>>>>>>>>>>> previously with option 1 are not >>>>> solved >>>>>>>> yet. Do >>>>>>>>>>> you >>>>>>>>>>>>>> still >>>>>>>>>>>>>>>>> want >>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>> propose >>>>>>>>>>>>>>>>>>>>>>>> both options and ask for >>>> suggestions >>>>>> for >>>>>>>> both >>>>>>>>>> of >>>>>>>>>>>>> them? >>>>>>>>>>>>>>>>>>>>>>>> 4. After you updated the FLIP, >>>> there >>>>>> are >>>>>>>> some >>>>>>>>>>>>>>> inconsistent >>>>>>>>>>>>>>>>>>>>> descriptions >>>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>> the content. Would you like to >>>> clean >>>>>>> them >>>>>>>> up? >>>>>>>>>>>>> Thanks! >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>>>>> Jing >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> On Fri, Apr 7, 2023 at 9:24 AM >>> Feng >>>>>> Jin < >>>>>>>>>>>>>>>>> jinfeng1...@gmail.com >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> hi Shammon >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Thank you for your response, >>> and >>>> I >>>>>>>> completely >>>>>>>>>>>> agree >>>>>>>>>>>>>>> with >>>>>>>>>>>>>>>>> your >>>>>>>>>>>>>>>>>>>> point >>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>> view. >>>>>>>>>>>>>>>>>>>>>>>>> Initially, I may have over >>>>>> complicated >>>>>>>> the >>>>>>>>>>> whole >>>>>>>>>>>>>> issue. >>>>>>>>>>>>>>>>> First >>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>> foremost, >>>>>>>>>>>>>>>>>>>>>>>>> we need to consider the >>>> persistence >>>>>> of >>>>>>>> the >>>>>>>>>>>>> Catalog's >>>>>>>>>>>>>>>>>>>> Configuration. >>>>>>>>>>>>>>>>>>>>>>>>> If we only need to provide >>>>>> persistence >>>>>>>> for >>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>> Configuration, >>>>>>>>>>>>>>>>>>>>> we >>>>>>>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>>>>>> add a toConfiguration method >>> to >>>> the >>>>>>>> Catalog >>>>>>>>>>>>>> interface. >>>>>>>>>>>>>>>>>>>>>>>>> This method can convert a >>> Catalog >>>>>>>> instance >>>>>>>>>> to a >>>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>>> String> >>>>>>>>>>>>>>>>>>>>>>>>> properties, and the default >>>>>>>> implementation >>>>>>>>>> will >>>>>>>>>>>>> throw >>>>>>>>>>>>>>> an >>>>>>>>>>>>>>>>>>>> exception. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> public interface Catalog { >>>>>>>>>>>>>>>>>>>>>>>>> /** >>>>>>>>>>>>>>>>>>>>>>>>> * Returns a map containing >>> the >>>>>>>> properties >>>>>>>>>> of >>>>>>>>>>>> the >>>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>>>> object. >>>>>>>>>>>>>>>>>>>>>>>>> * >>>>>>>>>>>>>>>>>>>>>>>>> * @return a map containing >>> the >>>>>>>> properties >>>>>>>>>> of >>>>>>>>>>>> the >>>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>>>> object >>>>>>>>>>>>>>>>>>>>>>>>> * @throws >>>>>>>> UnsupportedOperationException if >>>>>>>>>>> the >>>>>>>>>>>>>>>>>> implementing >>>>>>>>>>>>>>>>>>>>> class >>>>>>>>>>>>>>>>>>>>>>> does >>>>>>>>>>>>>>>>>>>>>>>>> not override >>>>>>>>>>>>>>>>>>>>>>>>> * the default >>> implementation >>>> of >>>>>> this >>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>>>>> */ >>>>>>>>>>>>>>>>>>>>>>>>> default Map<String, String> >>>>>>>> toProperties() >>>>>>>>>> { >>>>>>>>>>>>>>>>>>>>>>>>> throw new >>>>>>>>>>>> UnsupportedOperationException("Please >>>>>>>>>>>>>>>>> implement >>>>>>>>>>>>>>>>>>>>>>>> toProperties >>>>>>>>>>>>>>>>>>>>>>>>> for this catalog"); >>>>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> The specific process is as >>>> follows: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> 1. If the user has >>> configured a >>>>>>>>>> CatalogStore, >>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>> toConfiguration() >>>>>>>>>>>>>>>>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>>>>> will be called when >>> registering a >>>>>>> Catalog >>>>>>>>>>>> instance >>>>>>>>>>>>>> with >>>>>>>>>>>>>>>>>>>>>>>>> registerCatalog(String >>>> catalogName, >>>>>>>> Catalog >>>>>>>>>>>>> catalog). >>>>>>>>>>>>>>> The >>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>>> instance >>>>>>>>>>>>>>>>>>>>>>>>> will be converted to a >>>> Map<String, >>>>>>>> String> >>>>>>>>>>>>> properties >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>> saved >>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>> CatalogStore. If some Catalog >>>>>> instances >>>>>>>> do >>>>>>>>>> not >>>>>>>>>>>>>>> implement >>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>> method, >>>>>>>>>>>>>>>>>>>>>>> an >>>>>>>>>>>>>>>>>>>>>>>>> exception will be thrown. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> 2. If the user does not use a >>>>>>>> CatalogStore, >>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> toConfiguration() >>>>>>>>>>>>>>>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>>>>> will not be called, ensuring >>>>>>> consistency >>>>>>>> with >>>>>>>>>>> the >>>>>>>>>>>>>>>> original >>>>>>>>>>>>>>>>>>>> process. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> 3. Saving both the Map<String, >>>>>> Catalog> >>>>>>>>>>> catalogs >>>>>>>>>>>>> and >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>>>>>>> at >>>>>>>>>>>>>>>>>>>>>>>>> the same time can also avoid >>>>>> conflicts >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> For lazy initialization: >>>>>>>>>>>>>>>>>>>>>>>>> we can start from the Catalog >>>>> itself >>>>>>> and >>>>>>>>>>> provide >>>>>>>>>>>> a >>>>>>>>>>>>>>>>> dedicated >>>>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>>>> implementation for lazy >>> loading, >>>>> such >>>>>>> as >>>>>>>>>>>>>>>>> ConfigurationCatalog >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> public class >>> ConfigurationCatalog >>>>>>>> implements >>>>>>>>>>>>> Catalog >>>>>>>>>>>>>> { >>>>>>>>>>>>>>>>>>>>>>>>> >>> ConfigurationCatalog(Map<String, >>>>>>> String> >>>>>>>>>>>>> properties) >>>>>>>>>>>>>> { >>>>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>>>> } >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> I have added this design to >>> the >>>>> FLIP. >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>>>>> Feng >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> On Thu, Apr 6, 2023 at >>> 10:03 AM >>>>>> Shammon >>>>>>>> FY < >>>>>>>>>>>>>>>>>> zjur...@gmail.com> >>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Hi Feng >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for your answer. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> I have no questions about >>> the >>>>>>>> functionality >>>>>>>>>>> of >>>>>>>>>>>>>>>>>>> `CatalogStore`, >>>>>>>>>>>>>>>>>>>>> but >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>> different operations of >>>> multiple >>>>>>>>>>>>> `registerCatalog` >>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>> `storeCatalog` >>>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>>>> `CatalogManager`. The >>>>>> implementation >>>>>>> in >>>>>>>>>> Trino >>>>>>>>>>>> is >>>>>>>>>>>>>> also >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>> same, >>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>> `CatalogManager` in trino >>> only >>>>> has >>>>>>> one >>>>>>>>>>>>>>> `createCatalog`, >>>>>>>>>>>>>>>>>> which >>>>>>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>>>>> save >>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>> catalog to memory and >>>>>> `CatalogStore`. >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> I think we don't need to add >>>>>> another >>>>>>>>>>>>>>> `registerCatalog` >>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>> `addCatalog` >>>>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>>> save a catalog in >>> `Map<String, >>>>>>> Catalog> >>>>>>>>>>>> catalogs` >>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>> `CatalogStore >>>>>>>>>>>>>>>>>>>>>>>>>> catalogStore`. As you >>>> mentioned >>>>>>>> before, >>>>>>>>>> the >>>>>>>>>>>>>>>> `Map<String, >>>>>>>>>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>>>>>>>>> catalogs` is a cache in >>>>>>>> `CatalogManager`. >>>>>>>>>> How >>>>>>>>>>>>> about >>>>>>>>>>>>>>>>> saving >>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>>>> `Map<String, Catalog> >>> catalogs` >>>>> and >>>>>>>>>>>> `CatalogStore >>>>>>>>>>>>>>>>>>> catalogStore` >>>>>>>>>>>>>>>>>>>>>>>> together >>>>>>>>>>>>>>>>>>>>>>>>>> when it is registered or >>> added >>>> in >>>>>>>>>>>>> `CatalogManager`? >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>>>>>> Shammon FY >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 4, 2023 at >>> 5:22 PM >>>>> Feng >>>>>>>> Jin < >>>>>>>>>>>>>>>>>>> jinfeng1...@gmail.com >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> Thank you for your reply. >>> I >>>> am >>>>>> very >>>>>>>> sorry >>>>>>>>>>> for >>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>> misunderstanding >>>>>>>>>>>>>>>>>>>>>>>>> caused >>>>>>>>>>>>>>>>>>>>>>>>>>> by my deviation from the >>>>> original >>>>>>>>>>> discussion. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> @Shammon >>>>>>>>>>>>>>>>>>>>>>>>>>>> I found there is a >>>>>> pre-discussion >>>>>>>> [1] >>>>>>>>>> for >>>>>>>>>>>>> this >>>>>>>>>>>>>>> FLIP >>>>>>>>>>>>>>>>>>>>>>>>>>> Yes, there was indeed >>> such a >>>>>>>> discussion >>>>>>>>>>>> before. >>>>>>>>>>>>>>>>> However, >>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>> designing >>>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>> whole solution, I found >>> that >>>>> the >>>>>>>> logic of >>>>>>>>>>>>>>>>> CatalogManager >>>>>>>>>>>>>>>>>>>> itself >>>>>>>>>>>>>>>>>>>>>>>> doesn't >>>>>>>>>>>>>>>>>>>>>>>>>>> need to change much. *We >>>> cannot >>>>>>> only >>>>>>>>>>> persist >>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>> instances >>>>>>>>>>>>>>>>>>>>>>>>>> themselves*, >>>>>>>>>>>>>>>>>>>>>>>>>>> so exposing only >>>>>>>> registerCatalog(String >>>>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>>>>>>>>>>>>> might >>>>>>>>>>>>>>>>>>>>>>>>>>> not be enough to save >>>> Catalogs, >>>>>>>> because >>>>>>>>>> in >>>>>>>>>>>> the >>>>>>>>>>>>>> end >>>>>>>>>>>>>>> we >>>>>>>>>>>>>>>>>> still >>>>>>>>>>>>>>>>>>>>> need >>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>> save >>>>>>>>>>>>>>>>>>>>>>>>>>> the configurations >>>>> corresponding >>>>>> to >>>>>>>> the >>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>> instances. >>>>>>>>>>>>>>>>>>>>>>>> Therefore, >>>>>>>>>>>>>>>>>>>>>>>>> I >>>>>>>>>>>>>>>>>>>>>>>>>>> decided to introduce the >>>>>>> CatalogStore >>>>>>>>>>>> interface >>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>> configuration >>>>>>>>>>>>>>>>>>>>>>>>>>> persistence. Regarding >>> this >>>>>> part, I >>>>>>>> also >>>>>>>>>>> took >>>>>>>>>>>>>>>>> inspiration >>>>>>>>>>>>>>>>>>>> from >>>>>>>>>>>>>>>>>>>>>>>> Trino's >>>>>>>>>>>>>>>>>>>>>>>>>>> implementation[1]. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> @yuxia >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 1: The mechanism of >>>> handling >>>>>>>> catalog >>>>>>>>>> with >>>>>>>>>>>> the >>>>>>>>>>>>>>> same >>>>>>>>>>>>>>>>> name >>>>>>>>>>>>>>>>>>>>> looks a >>>>>>>>>>>>>>>>>>>>>>>>> little >>>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>> complex to me. >>>>>>>>>>>>>>>>>>>>>>>>>>> Thank you for the >>>> suggestion. I >>>>>>> will >>>>>>>>>>> provide >>>>>>>>>>>> a >>>>>>>>>>>>>>>> detailed >>>>>>>>>>>>>>>>>>>>>> description >>>>>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>>> code examples for this >>> part, >>>>> and >>>>>>> add >>>>>>>> it >>>>>>>>>> to >>>>>>>>>>>> the >>>>>>>>>>>>>>> FLIP. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 2: TBH, the method name >>>>>>>> `addCatalog` >>>>>>>>>>> still >>>>>>>>>>>>>> looks >>>>>>>>>>>>>>>>>> confused >>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>> me. >>>>>>>>>>>>>>>>>>>>>>>>> IIUC, >>>>>>>>>>>>>>>>>>>>>>>>>>> this method is for storing >>>>>> catalog >>>>>>> to >>>>>>>>>>>>>> CatalogStore, >>>>>>>>>>>>>>>> how >>>>>>>>>>>>>>>>>>> about >>>>>>>>>>>>>>>>>>>>>>>> renaming >>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>>> to `storeCatalog`? It's >>> very >>>>>>> personal >>>>>>>>>>>> opinion, >>>>>>>>>>>>>> you >>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>> decide >>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>> take >>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>>>>>> not by your self. >>>>>>>>>>>>>>>>>>>>>>>>>>> StoreCatalog looks more >>>>> intuitive >>>>>>> to >>>>>>>> me. >>>>>>>>>> I >>>>>>>>>>>>> don't >>>>>>>>>>>>>>> see >>>>>>>>>>>>>>>>> any >>>>>>>>>>>>>>>>>>>>> problem >>>>>>>>>>>>>>>>>>>>>>> with >>>>>>>>>>>>>>>>>>>>>>>>> it. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 3.For CREATE CATALOG >>>>> statement, >>>>>>>> which >>>>>>>>>>>> method >>>>>>>>>>>>>> will >>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>> called? >>>>>>>>>>>>>>>>>>>>>>>>>>> `registerCatalog` or >>>>>> `addCatalog`? >>>>>>>> I'm >>>>>>>>>>>>> wondering >>>>>>>>>>>>>>>>> whether >>>>>>>>>>>>>>>>>>> user >>>>>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>>>>> add a >>>>>>>>>>>>>>>>>>>>>>>>>>> catalog to store with SQL >>>>>> stement. >>>>>>>>>>>>>>>>>>>>>>>>>>> For CREATE CATALOG, my >>>> original >>>>>>>> design >>>>>>>>>> was >>>>>>>>>>> to >>>>>>>>>>>>> add >>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>> directly >>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>> CatalogStore, but this >>> would >>>>>>> disrupt >>>>>>>> the >>>>>>>>>>>>> existing >>>>>>>>>>>>>>>>> logic. >>>>>>>>>>>>>>>>>>>>>>> Therefore, I >>>>>>>>>>>>>>>>>>>>>>>>>> think >>>>>>>>>>>>>>>>>>>>>>>>>>> we can do both: save the >>>>>>>> configuration to >>>>>>>>>>> the >>>>>>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>> initialize >>>>>>>>>>>>>>>>>>>>>>>>>>> the Catalog instance at >>> the >>>>> same >>>>>>> time >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. Is it really >>> neccessary >>>> to >>>>>>>> provide a >>>>>>>>>>>>> default >>>>>>>>>>>>>>>>>>>> implmentation >>>>>>>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>>>>>>>> interface >>>>> `CatalogStoreFactory`? >>>>>>>>>>>>>>>>>>>>>>>>>>> I think it is necessary, >>>>>> otherwise >>>>>>> we >>>>>>>>>> would >>>>>>>>>>>>> need >>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>> introduce >>>>>>>>>>>>>>>>>>>>> an >>>>>>>>>>>>>>>>>>>>>>>>>> additional >>>>>>>>>>>>>>>>>>>>>>>>>>> Map to store the >>>> configuration >>>>>> for >>>>>>>> lazy >>>>>>>>>>>>> loading. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> 4: About asynchronous >>>>>>> registration >>>>>>>> for >>>>>>>>>>>>> catalog. >>>>>>>>>>>>>>>>>>>>>>>>>>> I don't think >>>>>>> registerCatalog(String >>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>>>>> made into an asynchronous >>>>>> interface >>>>>>>>>> because >>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>> already >>>>>>>>>>>>>>>>>>>>> an >>>>>>>>>>>>>>>>>>>>>>>>>> instance. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> It looks more like lazy >>>>>>>> initialization >>>>>>>>>>> for >>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>> than >>>>>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>> registration, right? >>>>>>>>>>>>>>>>>>>>>>>>>>> Indeed, my description was >>>>>>>> inaccurate. It >>>>>>>>>>>>> should >>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>> lazy >>>>>>>>>>>>>>>>>>>>>>> registration >>>>>>>>>>>>>>>>>>>>>>>>>>> instead of asynchronous >>>>>>>> registration. I >>>>>>>>>>> have >>>>>>>>>>>>>>> already >>>>>>>>>>>>>>>>>>> updated >>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>> title >>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>> the FLIP. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> [1]. >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> https://github.com/trinodb/trino/blob/master/core/trino-main/src/main/java/io/trino/connector/CatalogStore.java >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 4, 2023 at >>>> 4:27 PM >>>>>>>> Shammon >>>>>>>>>> FY < >>>>>>>>>>>>>>>>>>> zjur...@gmail.com >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Feng >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> I think if there is a >>>>>>>> `registerCatalog` >>>>>>>>>>>>> method >>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>> `CatalogManager`, >>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>>>>>>>>>> confuse users whether a >>>>> method >>>>>>>> named >>>>>>>>>>>>>> `addCatalog` >>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>> `storeCatalog` >>>>>>>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>>>>>>>> added. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> And as you mentioned, >>> the >>>>>> memory >>>>>>>>>> catalog >>>>>>>>>>>> is a >>>>>>>>>>>>>>>>> `cache`, >>>>>>>>>>>>>>>>>> I >>>>>>>>>>>>>>>>>>>>> think >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>> concept >>>>>>>>>>>>>>>>>>>>>>>>>>>> of `cache` should not be >>>>>> exposed >>>>>>> to >>>>>>>>>>> users. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> I found there is a >>>>>> pre-discussion >>>>>>>> [1] >>>>>>>>>> for >>>>>>>>>>>>> this >>>>>>>>>>>>>>>> FLIP. >>>>>>>>>>>>>>>>>>> Please >>>>>>>>>>>>>>>>>>>>>>> correct >>>>>>>>>>>>>>>>>>>>>>>>> me >>>>>>>>>>>>>>>>>>>>>>>>>> if >>>>>>>>>>>>>>>>>>>>>>>>>>>> I'm wrong, IIUC, the >>>>> conclusion >>>>>>> of >>>>>>>> that >>>>>>>>>>>>>>> discussion >>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>> use >>>>>>>>>>>>>>>>>>>>>>>>>>>> `CatalogManager` as an >>>>>> interface >>>>>>>> and >>>>>>>>>>>>> implement >>>>>>>>>>>>>> it >>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>> different >>>>>>>>>>>>>>>>>>>>>>>>> stores >>>>>>>>>>>>>>>>>>>>>>>>>>> such >>>>>>>>>>>>>>>>>>>>>>>>>>>> as memory, file and >>>> external >>>>>>>> system. >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> I think there is a gap >>>>> between >>>>>>> the >>>>>>>>>>> current >>>>>>>>>>>>> FLIP >>>>>>>>>>>>>>>>> design >>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>> that >>>>>>>>>>>>>>>>>>>>>>>>>>> conclusion. >>>>>>>>>>>>>>>>>>>>>>>>>>>> What about the proposal >>> of >>>>> the >>>>>>>>>> discussion >>>>>>>>>>>> in >>>>>>>>>>>>>>> thread >>>>>>>>>>>>>>>>>> [1] ? >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> [1] >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>> >>>>>> https://lists.apache.org/thread/9bnjblgd9wvrl75lkm84oo654c4lqv70 >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> Best, >>>>>>>>>>>>>>>>>>>>>>>>>>>> Shammon FY >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> On Tue, Apr 4, 2023 at >>>>> 3:41 PM >>>>>>>> yuxia < >>>>>>>>>>>>>>>>>>>>>>> luoyu...@alumni.sjtu.edu.cn> >>>>>>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks Feng for >>> driving >>>>> this >>>>>>>> FLIP. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I have few comments: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1: The mechanism of >>>>> handling >>>>>>>> catalog >>>>>>>>>>> with >>>>>>>>>>>>> the >>>>>>>>>>>>>>>> same >>>>>>>>>>>>>>>>>> name >>>>>>>>>>>>>>>>>>>>>> looks a >>>>>>>>>>>>>>>>>>>>>>>>>> little >>>>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>>>> complex to me. I think >>>>> it'll >>>>>> be >>>>>>>>>> better >>>>>>>>>>> to >>>>>>>>>>>>>>> explain >>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> java >>>>>>>>>>>>>>>>>>>>>>>>> doc >>>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>>>> these methods and >>> give a >>>>>> brief >>>>>>>>>> example >>>>>>>>>>> in >>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>> FLIP. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2: TBH, the method >>> name >>>>>>>> `addCatalog` >>>>>>>>>>>> still >>>>>>>>>>>>>>> looks >>>>>>>>>>>>>>>>>>> confused >>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>> me. >>>>>>>>>>>>>>>>>>>>>>>>>> IIUC, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> this method is for >>>> storing >>>>>>>> catalog to >>>>>>>>>>>>>>>> CatalogStore, >>>>>>>>>>>>>>>>>> how >>>>>>>>>>>>>>>>>>>>> about >>>>>>>>>>>>>>>>>>>>>>>>>> renaming >>>>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>>>>> to `storeCatalog`? >>> It's >>>>> very >>>>>>>> personal >>>>>>>>>>>>>> opinion, >>>>>>>>>>>>>>>> you >>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>> decide >>>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>> take >>>>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>>>>>>>> not by your self. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3: For CREATE CATALOG >>>>>>> statement, >>>>>>>>>> which >>>>>>>>>>>>> method >>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>> called? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> `registerCatalog` or >>>>>>>> `addCatalog`? >>>>>>>>>> I'm >>>>>>>>>>>>>>> wondering >>>>>>>>>>>>>>>>>>> whether >>>>>>>>>>>>>>>>>>>>> user >>>>>>>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>>>>>>> add a >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalog to store with >>> SQL >>>>>>>> stement. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3: Is it really >>>> neccessary >>>>> to >>>>>>>>>> provide a >>>>>>>>>>>>>> default >>>>>>>>>>>>>>>>>>>>> implmentation >>>>>>>>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>>>>>>>>>> interface >>>>>>> `CatalogStoreFactory`? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 4: About asynchronous >>>>>>>> registration >>>>>>>>>> for >>>>>>>>>>>>>> catalog. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> When creating a >>> catalog >>>>>> with >>>>>>>> CREATE >>>>>>>>>>>>>> CATALOG, >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>>>> registration method is >>>> used >>>>>> by >>>>>>>>>> default. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> If asynchronous >>>>> registration >>>>>> is >>>>>>>> the >>>>>>>>>>>> default >>>>>>>>>>>>>>>>> behavior, >>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>> there >>>>>>>>>>>>>>>>>>>>>>>> any >>>>>>>>>>>>>>>>>>>>>>>>>> way >>>>>>>>>>>>>>>>>>>>>>>>>>>>> that user can switch >>> to >>>>>>>> synchronous >>>>>>>>>>>>>>> registration >>>>>>>>>>>>>>>>> just >>>>>>>>>>>>>>>>>>>> like >>>>>>>>>>>>>>>>>>>>>>>> before? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Will both method >>>>> `addCatalog` >>>>>>> and >>>>>>>>>>>>>>>> `registerCatalog` >>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>>>> registration? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> IIUC, in asynchronous >>>>>>>> registration, >>>>>>>>>> it >>>>>>>>>>>> may >>>>>>>>>>>>>> well >>>>>>>>>>>>>>>>> that >>>>>>>>>>>>>>>>>>>> CREATE >>>>>>>>>>>>>>>>>>>>>>>> CATALOG >>>>>>>>>>>>>>>>>>>>>>>>>>>>> executes successfully, >>>> but >>>>>> then >>>>>>>> the >>>>>>>>>>>>> following >>>>>>>>>>>>>>>>> CREATE >>>>>>>>>>>>>>>>>>>> TABLE >>>>>>>>>>>>>>>>>>>>>>>>> statement >>>>>>>>>>>>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>>>>>>>>>>> fail for the catalog >>> fail >>>>> to >>>>>>>> open. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I think it's a break >>>> change >>>>>>> which >>>>>>>>>>> should >>>>>>>>>>>> be >>>>>>>>>>>>>>>>>> highlighted >>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>>>>>> FLIP, >>>>>>>>>>>>>>>>>>>>>>>>>>> may >>>>>>>>>>>>>>>>>>>>>>>>>>>>> be in compatibility >>> part. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> BTW, by saying >>>> asynchronous >>>>>>>>>>>> registration, I >>>>>>>>>>>>>>> would >>>>>>>>>>>>>>>>>> like >>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>> expect >>>>>>>>>>>>>>>>>>>>>>>>>> there >>>>>>>>>>>>>>>>>>>>>>>>>>>>> will be an executor to >>>> open >>>>>> or >>>>>>>>>> register >>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>> background, >>>>>>>>>>>>>>>>>>>>>>>>>> but >>>>>>>>>>>>>>>>>>>>>>>>>>>> from >>>>>>>>>>>>>>>>>>>>>>>>>>>>> your previous >>> comments, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> "the Catalog instance >>>> will >>>>> be >>>>>>>>>>> initialized >>>>>>>>>>>>> if >>>>>>>>>>>>>> it >>>>>>>>>>>>>>>> has >>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>> been >>>>>>>>>>>>>>>>>>>>>>>>>>> initialized >>>>>>>>>>>>>>>>>>>>>>>>>>>>> yet. If the >>>> initialization >>>>>>>> process >>>>>>>>>>> fails, >>>>>>>>>>>>>> these >>>>>>>>>>>>>>>>>>>> statements >>>>>>>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>>>>>>> executed >>> successfully." >>>>>>>>>>>>>>>>>>>>>>>>>>>>> It looks more like >>> lazy >>>>>>>>>> initialization >>>>>>>>>>>> for >>>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>> than >>>>>>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>>>> registration, right? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Yuxia >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> ----- 原始邮件 ----- >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 发件人: "Feng Jin" < >>>>>>>>>> jinfeng1...@gmail.com >>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 收件人: "dev" < >>>>>>> dev@flink.apache.org >>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 发送时间: 星期一, 2023年 4 月 >>> 03日 >>>> 下午 >>>>>>>> 3:27:45 >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 主题: Re: [DISCUSS] FLIP >>>> 295: >>>>>>>> Support >>>>>>>>>>>>>> persistence >>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>>>>>> configuration >>>>>>>>>>>>>>>>>>>>>>>>>>>>> and asynchronous >>>>> registration >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi everyone, Thank you >>>> all >>>>>> for >>>>>>>> your >>>>>>>>>>>>> interest >>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>> DISCUSS. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @Shammon >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> How to handle a >>> catalog >>>>>> with >>>>>>>> the >>>>>>>>>> same >>>>>>>>>>>>> name >>>>>>>>>>>>>>> that >>>>>>>>>>>>>>>>>>> exists >>>>>>>>>>>>>>>>>>>>> for >>>>>>>>>>>>>>>>>>>>>>> both >>>>>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>>> them? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I believe this is a >>>> crucial >>>>>>>> point. >>>>>>>>>>> Based >>>>>>>>>>>> on >>>>>>>>>>>>>> my >>>>>>>>>>>>>>>>>> current >>>>>>>>>>>>>>>>>>>>>> personal >>>>>>>>>>>>>>>>>>>>>>>>>>>>> understanding, the >>>>>> Map<String, >>>>>>>>>> Catalog> >>>>>>>>>>>>>>> catalogs >>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>> serve >>>>>>>>>>>>>>>>>>>>>> as >>>>>>>>>>>>>>>>>>>>>>> a >>>>>>>>>>>>>>>>>>>>>>>>>> cache >>>>>>>>>>>>>>>>>>>>>>>>>>>>> for instantiated >>> catalogs >>>>> and >>>>>>>> have >>>>>>>>>> the >>>>>>>>>>>>>> highest >>>>>>>>>>>>>>>>>>> priority. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> There are three >>> methods >>>>> that >>>>>>> can >>>>>>>>>> affect >>>>>>>>>>>> the >>>>>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogs: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. >>> registerCatalog(String >>>>>>>>>> catalogName, >>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This method puts the >>>>> catalog >>>>>>>> instance >>>>>>>>>>>> into >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogs. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. >>>> unregisterCatalog(String >>>>>>>>>>> catalogName) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This method removes >>> the >>>>>> catalog >>>>>>>>>>> instance >>>>>>>>>>>>>>>>>> corresponding >>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>> catalogName >>>>>>>>>>>>>>>>>>>>>>>>>>>>> from the Map<String, >>>>> Catalog> >>>>>>>>>> catalogs. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. getCatalog(String >>>>>>> catalogName) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This method first >>>> retrieves >>>>>> the >>>>>>>>>>>>> corresponding >>>>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>>>>>> instance >>>>>>>>>>>>>>>>>>>>>>>> from >>>>>>>>>>>>>>>>>>>>>>>>>>>>> the Map<String, >>> Catalog> >>>>>>>> catalogs. If >>>>>>>>>>> the >>>>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>>>> does >>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>> exist, >>>>>>>>>>>>>>>>>>>>>>>>> it >>>>>>>>>>>>>>>>>>>>>>>>>>>>> retrieves the >>>> corresponding >>>>>>>>>>> configuration >>>>>>>>>>>>>> from >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> CatalogStore, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> initializes it, and >>> puts >>>>> the >>>>>>>>>>> initialized >>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>> instance >>>>>>>>>>>>>>>>>>>>>> into >>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Map<String, Catalog> >>>>>> catalogs. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> The following two >>> methods >>>>>> only >>>>>>>> modify >>>>>>>>>>> the >>>>>>>>>>>>>>>>>> configuration >>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> CatalogStore: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. addCatalog(String >>>>>>> catalogName, >>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>> String> >>>>>>>>>>>>>>>>>>>>>>> properties) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This method saves the >>>>>>> properties >>>>>>>> to >>>>>>>>>> the >>>>>>>>>>>>>>>>> catalogStore >>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>> checks >>>>>>>>>>>>>>>>>>>>>>>>>>>>> whether there is a >>>>>> catalogName >>>>>>>> with >>>>>>>>>> the >>>>>>>>>>>>> same >>>>>>>>>>>>>>>> name. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. >>> removeCatalog(String >>>>>>>> catalogName) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This method removes >>> the >>>>>>> specified >>>>>>>>>>>>>> configuration >>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> specified >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogName in the >>>>>>> catalogStore. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> The following are >>>> possible >>>>>>>> conflict >>>>>>>>>>>>>> scenarios: >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. When the >>> corresponding >>>>>>>> catalogName >>>>>>>>>>>>> already >>>>>>>>>>>>>>>>> exists >>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> CatalogStore but not >>> in >>>> the >>>>>>>>>> Map<String, >>>>>>>>>>>>>>> Catalog>, >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> registerCatalog(String >>>>>>>> catalogName, >>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>> can >>>>>>>>>>>>>>>>>>>>>>>>>>>>> succeed and be >>> directly >>>>> saved >>>>>>> to >>>>>>>> the >>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>>>>>>> catalogs. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. When the >>> corresponding >>>>>>>> catalogName >>>>>>>>>>>>> already >>>>>>>>>>>>>>>>> exists >>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>> both >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> CatalogStore and the >>>>>>> Map<String, >>>>>>>>>>>> Catalog>, >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>> registerCatalog(String >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogName, Catalog >>>>> catalog) >>>>>>>> method >>>>>>>>>>> will >>>>>>>>>>>>>> fail. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> 3. When the >>> corresponding >>>>>>>> catalogName >>>>>>>>>>>>> already >>>>>>>>>>>>>>>>> exists >>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Map<String, Catalog>, >>> the >>>>>>>>>>>> addCatalog(String >>>>>>>>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> String> properties) >>>> method >>>>>> can >>>>>>>>>> directly >>>>>>>>>>>>> save >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> properties >>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogStore, but the >>>>>>>>>> getCatalog(String >>>>>>>>>>>>>>>>> catalogName) >>>>>>>>>>>>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>>>>>>>> use the new properties >>>> for >>>>>>>>>>> initialization >>>>>>>>>>>>>>> because >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>> corresponding >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalog instance >>> already >>>>>> exists >>>>>>>> in >>>>>>>>>>>> catalogs >>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>>> prioritized. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Therefore, using the >>>>>>>>>>>>> unregisterCatalog(String >>>>>>>>>>>>>>>>>>>> catalogName) >>>>>>>>>>>>>>>>>>>>>>> method >>>>>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>>>>>> remove the instance >>>>>>>> corresponding to >>>>>>>>>>> the >>>>>>>>>>>>>>> original >>>>>>>>>>>>>>>>>>>>> catalogName >>>>>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>>>>>>>>> necessary. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> I think it will >>> confuse >>>>>> users >>>>>>>> that >>>>>>>>>>>>>>>>>>>>> `registerCatalog(String >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogName,Catalog >>>>> catalog)` >>>>>>> in >>>>>>>> the >>>>>>>>>>>>>>> `Map<String, >>>>>>>>>>>>>>>>>>>> Catalog> >>>>>>>>>>>>>>>>>>>>>>>>> catalogs` >>>>>>>>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>> `registerCatalog(String >>>>>>>> catalogName, >>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>> String> >>>>>>>>>>>>>>>>>>>>>>>>> properties) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This could potentially >>>> lead >>>>>> to >>>>>>>>>>>> confusion. I >>>>>>>>>>>>>>>> suggest >>>>>>>>>>>>>>>>>>>>> changing >>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> method name, perhaps >>> to >>>>>>>>>>> addCatalog(String >>>>>>>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>>>>>>>>> Map<String, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> String> properties), >>> as >>>>>>>> previously >>>>>>>>>>>>> mentioned >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @Hang >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> add >>>>> `registerCatalog(String >>>>>>>>>>>>>>> catalogName,Catalog >>>>>>>>>>>>>>>>>>>> catalog, >>>>>>>>>>>>>>>>>>>>>>>>>>>>> boolean lazyInit)` >>> method >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Since a catalog is >>>> already >>>>> an >>>>>>>>>> instance, >>>>>>>>>>>>>> adding >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>> "lazyInit" >>>>>>>>>>>>>>>>>>>>>>>>>>>>> parameter to the >>>>>>>>>> registerCatalog(String >>>>>>>>>>>>>>>>> catalogName, >>>>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>>>> catalog) >>>>>>>>>>>>>>>>>>>>>>>>>>>>> method may not >>>> necessarily >>>>>>>> result in >>>>>>>>>>> lazy >>>>>>>>>>>>>>>>>>> initialization. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Do we need to think >>>> about >>>>>>>>>> encryption >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I think encryption is >>>>>>> necessary, >>>>>>>> but >>>>>>>>>>>>> perhaps >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> encryption >>>>>>>>>>>>>>>>>>>>>>> logic >>>>>>>>>>>>>>>>>>>>>>>>>>>>> should be implemented >>> in >>>>> the >>>>>>>>>>> CatalogStore >>>>>>>>>>>>>> when >>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>> data >>>>>>>>>>>>>>>>>>>> is >>>>>>>>>>>>>>>>>>>>>>>> actually >>>>>>>>>>>>>>>>>>>>>>>>>>>>> saved. For instance, >>> the >>>>>>>>>>> FileCatalogStore >>>>>>>>>>>>>> could >>>>>>>>>>>>>>>>>> encrypt >>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>> data >>>>>>>>>>>>>>>>>>>>>>>>> when >>>>>>>>>>>>>>>>>>>>>>>>>>>>> it is saved to a file, >>>>> while >>>>>>> the >>>>>>>>>>>>>>>> MemoryCatalogStore >>>>>>>>>>>>>>>>>>> does >>>>>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>>>>>>> require >>>>>>>>>>>>>>>>>>>>>>>>>>>>> encryption. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Do we really need >>> the >>>>>>>>>>>>>> `MemoryCatalogStore`? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> I think it is >>> necessary >>>> to >>>>>>> have a >>>>>>>>>>>>>>>>> MemoryCatalogStore >>>>>>>>>>>>>>>>>> as >>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>> default >>>>>>>>>>>>>>>>>>>>>>>>>>>>> implementation, which >>>> saves >>>>>>>> Catalog >>>>>>>>>>>>>>>> configurations >>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>> memory. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Otherwise, if we want >>> to >>>>>>>> implement >>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>> loading >>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>> Catalog, >>>>>>>>>>>>>>>>>>>>>>>>>> we >>>>>>>>>>>>>>>>>>>>>>>>>>>>> would need to >>> introduce >>>>>>>> additional >>>>>>>>>>> cache. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> @Xianxun >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> What if asynchronous >>>>>>>> registration >>>>>>>>>>>> failed? >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This is also a >>> critical >>>>>>> concern. >>>>>>>>>> When >>>>>>>>>>>>>>> executing >>>>>>>>>>>>>>>>> DDL, >>>>>>>>>>>>>>>>>>>> DQL, >>>>>>>>>>>>>>>>>>>>> or >>>>>>>>>>>>>>>>>>>>>>> DML >>>>>>>>>>>>>>>>>>>>>>>>>>>>> statements that >>>> reference a >>>>>>>> specific >>>>>>>>>>>>> Catalog, >>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>> Catalog >>>>>>>>>>>>>>>>>>>>>>>> instance >>>>>>>>>>>>>>>>>>>>>>>>>>>>> will be initialized >>> if it >>>>> has >>>>>>> not >>>>>>>>>> been >>>>>>>>>>>>>>>> initialized >>>>>>>>>>>>>>>>>> yet. >>>>>>>>>>>>>>>>>>>> If >>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> initialization process >>>>> fails, >>>>>>>> these >>>>>>>>>>>>>> statements >>>>>>>>>>>>>>>> will >>>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>> executed >>>>>>>>>>>>>>>>>>>>>>>>>>>>> successfully. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> nt. The Map<String, >>>>>> Catalog> >>>>>>>>>> catalogs >>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>>>>>>>>> catalogstore >>>>>>>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>>>>>>> the CatalogManager all >>>> have >>>>>> the >>>>>>>> same >>>>>>>>>>>>> catalog >>>>>>>>>>>>>>>> name, >>>>>>>>>>>>>>>>>> but >>>>>>>>>>>>>>>>>>>>>>>> correponding >>>>>>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>>>>>> different catalog >>>>> instances. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> This issue can be >>>> resolved >>>>> by >>>>>>>>>> referring >>>>>>>>>>>> to >>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>> previous >>>>>>>>>>>>>>>>>>>>>>>> responses. >>>>>>>>>>>>>>>>>>>>>>>>>> The >>>>>>>>>>>>>>>>>>>>>>>>>>>>> key principle is that >>> the >>>>>>> Catalog >>>>>>>>>> that >>>>>>>>>>>> has >>>>>>>>>>>>>> been >>>>>>>>>>>>>>>>> most >>>>>>>>>>>>>>>>>>>>> recently >>>>>>>>>>>>>>>>>>>>>>>> used >>>>>>>>>>>>>>>>>>>>>>>>>>>>> will be given priority >>>> for >>>>>>>> subsequent >>>>>>>>>>>> use. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> On Sun, Apr 2, 2023 at >>>>>> 10:58 PM >>>>>>>>>> Xianxun >>>>>>>>>>>> Ye >>>>>>>>>>>>> < >>>>>>>>>>>>>>>>>>>>>>>>> yesorno828...@gmail.com> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Hi Feng, >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Thanks for driving >>> this >>>>>> Flip, >>>>>>>> I do >>>>>>>>>>>>> believe >>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>> Flip >>>>>>>>>>>>>>>>>>>>> could >>>>>>>>>>>>>>>>>>>>>> be >>>>>>>>>>>>>>>>>>>>>>>>>> helpful >>>>>>>>>>>>>>>>>>>>>>>>>>>>> for users. The firm I >>>> work >>>>>> for >>>>>>>> also >>>>>>>>>>>>> manages a >>>>>>>>>>>>>>> lot >>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>> catalogs, >>>>>>>>>>>>>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> submission of tasks >>>> becomes >>>>>>> slow >>>>>>>>>>> because >>>>>>>>>>>> of >>>>>>>>>>>>>>>>> loading a >>>>>>>>>>>>>>>>>>>>> number >>>>>>>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>>>>>>>>> catalogs. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> We obtain the >>> catalogs in >>>>> the >>>>>>>> user's >>>>>>>>>>>> Flink >>>>>>>>>>>>>> SQL >>>>>>>>>>>>>>>>>> through >>>>>>>>>>>>>>>>>>>>>> regular >>>>>>>>>>>>>>>>>>>>>>>>>>> expression >>>>>>>>>>>>>>>>>>>>>>>>>>>>> to avoid loading all >>>>> catalogs >>>>>>> to >>>>>>>>>>> improve >>>>>>>>>>>>> the >>>>>>>>>>>>>>>> speed >>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>>>>> task >>>>>>>>>>>>>>>>>>>>>>>>>> submission. >>>>>>>>>>>>>>>>>>>>>>>>>>>>> After reading >>> flip-295, I >>>>>> have >>>>>>>> some >>>>>>>>>>>>>> questions: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 1. When creating a >>>>> catalog >>>>>>> with >>>>>>>>>>> CREATE >>>>>>>>>>>>>>> CATALOG, >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>>>> registration method is >>>> used >>>>>> by >>>>>>>>>> default. >>>>>>>>>>>>> What >>>>>>>>>>>>>> if >>>>>>>>>>>>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>>>>>>>>>>> registration >>>>>>>>>>>>>>>>>>>>>>>>>>>>> failed? And how to >>>>> implement >>>>>>>>>>> asynchronous >>>>>>>>>>>>>>>>>> registration? >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2. I also have the >>> same >>>>>>>> question >>>>>>>>>> with >>>>>>>>>>>>>>> Shammon’s >>>>>>>>>>>>>>>>>> first >>>>>>>>>>>>>>>>>>>>>>> comment. >>>>>>>>>>>>>>>>>>>>>>>>> The >>>>>>>>>>>>>>>>>>>>>>>>>>>>> Map<String, Catalog> >>>>> catalogs >>>>>>> and >>>>>>>>>>>>>> CatalogStore >>>>>>>>>>>>>>>>>>>> catalogstore >>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> CatalogManager all >>> have >>>> the >>>>>>> same >>>>>>>>>>> catalog >>>>>>>>>>>>>> name, >>>>>>>>>>>>>>>> but >>>>>>>>>>>>>>>>>>>>>> correponding >>>>>>>>>>>>>>>>>>>>>>>> to >>>>>>>>>>>>>>>>>>>>>>>>>>>>> different catalog >>>>> instances. >>>>>>> For >>>>>>>>>>> example: >>>>>>>>>>>>>>>>> catalog1-> >>>>>>>>>>>>>>>>>>>>>>> jdbcCatalog >>>>>>>>>>>>>>>>>>>>>>>> in >>>>>>>>>>>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>>>>>>>>>>> catalogs, but >>> catalog1 -> >>>>>>>> hiveCatalog >>>>>>>>>>> in >>>>>>>>>>>>> the >>>>>>>>>>>>>>>>>>>> catalogstore. >>>>>>>>>>>>>>>>>>>>>>> Would >>>>>>>>>>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>>>>>>>>>>>>> case >>>>>>>>>>>>>>>>>>>>>>>>>>>>> happen? Maybe we >>> should >>>>>> define >>>>>>>>>>> `catalogs` >>>>>>>>>>>>> and >>>>>>>>>>>>>>>>>>>>> `catalogstore` >>>>>>>>>>>>>>>>>>>>>>> more >>>>>>>>>>>>>>>>>>>>>>>>>>>> clearly. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Best regards, >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Xianxun >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2023年3月31日 >>> 11:13,Hang >>>>>> Ruan >>>>>>> < >>>>>>>>>>>>>>>>>> ruanhang1...@gmail.com >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> 写道: >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> MemoryCatalogStore >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>