> User disabling `AppendBrokerTimestampMetadataInterceptor` does not mean that they allow this bug. This is a configuration, not an API. It is difficult to use documentation to regulate user behavior.
Actually, they need to know why they want to disable ` AppendBrokerTimestampMetadataInterceptor`. Otherwise, why do they want to disable `AppendBrokerTimestampMetadata Interceptor`? Pulsar's default configuration tries to provide a best practice for most of the cases. To avoid the potential problem, Pulsar enables `AppendBrokerTimestampMetadataInterceptor` by default. But it doesn't mean all the cases should enable `AppendBrokerTimestampMetadataInterceptor`. If users don't use TTL, the producers are well-maintained. Is there any reason to have at least 16 bytes append to each entry? The default configuration behavior change also needs to be highlighted in the release note. Users need to know if they don't disable the `AppendBrokerTimestampMetadataInterceptor` manually on a newer version, the retained data size will increase. BTW, we need to explain each interceptor in the `broker.conf` and why ` AppendBrokerTimestampMetadataInterceptor` is enabled by default. If users don't want to read it, change anything in `broker.conf` they don't really know what it is. How can they know what they expect? Regards, Penghui On Mon, Jan 15, 2024 at 11:09 PM Lin Lin <lin...@apache.org> wrote: > User disabling `AppendBrokerTimestampMetadataInterceptor` does not mean > that they allow this bug. > This is a configuration, not an API. It is difficult to use documentation > to regulate user behavior. > > Maybe we can add a new field (BrokerTimestamp) to save the timestamp on > the Broker side. > The time priority for trimming Ledger is as follows: > > BrokerPublishTime > BrokerTimestamp > > If `BrokerPublishTime` exists, `BrokerReceiveTime` is not set. > If not, we set `BrokerReceiveTime` and is no longer affected by client > time. > > On 2024/01/15 02:15:17 PengHui Li wrote: > > IMO, we should enable `AppendBrokerTimestampMetadataInterceptor` by > default. > > Users can still have a way to disable it if they care about the > additional > > metadata stored > > in each entry. > > > > For the `hasBrokerPublishTime` API. The topic might also have historical > > data without > > broker publish time. So, it should be fine to keep this API because we > > don't know how > > long users will retain their data. > > > > Regards, > > Penghui > > > > On Sat, Jan 6, 2024 at 10:35 PM linlin <lin...@apache.org> wrote: > > > > > Now, if the message's metadata does not set a broker side timestamp, > the > > > ledger expiration check is based on the client's publish time. > > > > > > When the client machine's clock is incorrect (eg: set to 1 year later) > , > > > the ledger can not be cleaned up. Issue > > > https://github.com/apache/pulsar/issues/21347 > > > > > > `AppendBrokerTimestampMetadataInterceptor` can set timestamp for > messages > > > on the broker side, but we can not ensure that the > > > `AppendBrokerTimestampMetadataInterceptor` is always enable > > > > > > Therefore, I open this PR(https://github.com/apache/pulsar/pull/21835) > to > > > always set the broker timestamp for messages on the broker side. > > > > > > With this change , firstly we should deprecate > > > AppendBrokerTimestampMetadataInterceptor. > > > It no longer needs to exist > > > > > > Secondly, we should deprecate `hasBrokerPublishTime` in interface > Message. > > > It always returns true. > > > This API is created in PR (https://github.com/apache/pulsar/pull/11553 > ) > > > This PR is for the client to obtain BrokerPublishTime, so the > > > `hasBrokerPublishTime` API is not necessary. > > > > > >