hi, Hang Thanks for your reply, Make sense to me, I updated the FLIP.
Best, Feng On Fri, Jun 9, 2023 at 3:34 PM Hang Ruan <ruanhang1...@gmail.com> wrote: > Hi, Feng. > > I reviewed this FLIP again and found some little places that may need to > optimize. > > 1. `CatalogDescriptor` may need a private constructor. > 2. The method `initCatalog` in `CatalogManager` is not introduced. > > Best, > Hang > > Feng Jin <jinfeng1...@gmail.com> 于2023年6月6日周二 21:17写道: > > > Hi Leonard, > > > > Thanks for your reply. > > > > > 1. a How to construct a CatalogDescriptor ? > > > > I think it would be helpful to add a method for constructing a > > CatalogDescriptor, as you mentioned in 1.c. I will update the > documentation > > later. > > > > > 1.b How to visit the fields ? Could we use Configuration instead of > > Map<String, String> ? > > > > I believe that the use of Map<String, String> options is only intended > for > > creating a catalog and not for accessing internal parameters. > > > > Since all of the relevant parameters for CREATE CATALOG are also stored > in > > Map<String, String> options, my understanding is that using Map<String, > > String> options should suffice. > > > > Here is the implementation of execute CREATE CATALOG statement. > > ```java > > private TableResultInternal createCatalog(CreateCatalogOperation > operation) > > { > > String exMsg = getDDLOpExecuteErrorMsg(operation.asSummaryString()); > > try { > > String catalogName = operation.getCatalogName(); > > Map<String, String> properties = operation.getProperties(); > > > > Catalog catalog = > > FactoryUtil.createCatalog( > > catalogName, > > properties, > > tableConfig, > > resourceManager.getUserClassLoader()); > > catalogManager.registerCatalog(catalogName, catalog); > > > > return TableResultImpl.TABLE_RESULT_OK; > > } catch (CatalogException e) { > > throw new ValidationException(exMsg, e); > > } > > } > > ``` > > > > > > > 2. Do we have plan to offer a default CatalogStore if user didn’t > config > > this? > > > > Yes, the in-memory catalogStore will be used as the default CatalogStore > > even if the user has not configured one > > > > > > Best, > > Feng > > > > > > On Tue, Jun 6, 2023 at 8:02 PM Leonard Xu <xbjt...@gmail.com> wrote: > > > > > 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 > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>>> > > > >>>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>> > > > >>>>>>>> > > > >>>>>>> > > > >>>>>> > > > >>>>> > > > >>>> > > > >>> > > > >> > > > > > > > > >