I think the configuration pojo is the issue. There are hundreds of
getters and setters. I did an experiment in my local env. First, copy
`ServiceConfiguration` to another class named
`PulsarServiceConfiguration`. Then write the following code

```java
PulsarServiceConfiguration conf = new PulsarServiceConfiguration();
conf.
```

and see how much time it would take between typing the dot symbol and
the popup window being shown on my Intellij Idea.

- Default: about 15 seconds
- Remove the `@Getter`: about 5 seconds
- Remove the `@Setter`: about 4 seconds

> one problem is that if split in this way, most config should change access by 
> conf.getLoadBalancerConfiguration().getXXXXX().

It's unacceptable because it's a big breaking change. My idea is to
add another configuration class and mark `ServiceConfiguration` as
deprecated. Once a new config was added, add it to the new class.

Thanks,
Yunze

On Mon, May 1, 2023 at 2:13 PM Asaf Mesika <asaf.mes...@gmail.com> wrote:
>
> The Config file size is the issue or the configuration pojo ?
>
> On Sun, 30 Apr 2023 at 19:51 lifepuzzlefun <wjl_is_...@163.com> wrote:
>
> > current file is 3470 line with all pulsar configuration.
> > it is slow in my local ide.
> >
> >
> > 59 config in loadbalancer.
> > 17 config in metric.
> > 64 config in policies.
> > 41 config for bk client.
> > 50 for managed ledger.
> > 100+ for all other server cofig.
> >
> >
> > if split by category maybe more clear
> >
> >
> > class ServiceConfiguration {
> >          LoadbalancerConfiguration
> >          MetricConfiguration
> >          BookkeeperClientConfiguration
> >          ....
> > }
> >
> >
> > one problem is that if split in this way, most config should change access
> > by conf.getLoadBalancerConfiguration().getXXXXX().
> >
> >
> > so most of the code base will be changed.
> >
> >
> > any ideas ?
> >
> >
> >
> >

Reply via email to