question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

managedLedgerOffloadDeletionLagMs and managedLedgerOffloadAutoTriggerSizeThresholdBytes are not used from config file

See original GitHub issue

Describe the bug Flags managedLedgerOffloadDeletionLagMs and managedLedgerOffloadAutoTriggerSizeThresholdBytes are not used anywhere so default offloader doesn’t pick these values properly and always use defaults null and -1 respectively, even if these flags are set in config file.

To Reproduce Deploy pulsar and set these values in broker.conf file (https://github.com/apache/pulsar/blob/master/conf/broker.conf#L812) to some values different from default, also set offloader settings (https://github.com/apache/pulsar/blob/master/conf/broker.conf#L1070) so it can be tested. Try to produce data and check if ledgers are being offloaded if u set managedLedgerOffloadAutoTriggerSizeThresholdBytes to 0.

Expected behavior Offloader should use values provided from config file. In my test case if i set managedLedgerOffloadAutoTriggerSizeThresholdBytes to 0, offloads should be done immediately after ledger rollover which i inspect with stats-internal and ledgers are properly closed. But that don’t happen unless i manually set offload threshold with set-offload-threshold command from pulsar admin, after that everything work as expected.

Screenshots For above test case, before and after i change offload manually states are: (first ledger is offloaded manually)

Desktop (please complete the following information):

  • OS: Linux

Additional context These 2 flags are not read anywhere, in previous implementation they are taken here https://github.com/apache/pulsar/blob/ffe29c30d8963850770f55db86bbcd9ea2f2a095/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java#L1009 but this part is now removed, i think that should be inserted here https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/service/BrokerService.java#L1214.

Also these 2 flags are, in my opinion, more closely part of offloading config instead of managed ledger config, so other solution can be that these 2 parameters are moved in offloader part of configuration and renamed so this function https://github.com/apache/pulsar/blob/ffe29c30d8963850770f55db86bbcd9ea2f2a095/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java#L101 can pick them up properly.

One more thing, values for these 2 flags are stored both in OffloadPolicies class and Policies class (https://github.com/apache/pulsar/blob/master/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/Policies.java#L95), and in Policies class they are not used for anything except for reading that value for pulsar admin get command (https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java#L2672). And they are set (https://github.com/apache/pulsar/blob/master/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/NamespacesBase.java#L2699) at the same time so maybe they are redundant and maybe better solution is to move them to offload config and remove them from Policies class.

Issue Analytics

  • State:closed
  • Created 3 years ago
  • Comments:8 (8 by maintainers)

github_iconTop GitHub Comments

2reactions
addisonjcommented, Oct 20, 2020

@gaoran10 We should make sure we support the original value names (managedLedgerOffloadAutoTriggerSizeThresholdBytes) as well as the new value names (managedLedgerOffloadThresholdInBytes) from the broker.conf, I think we should fix this by either:

A) just going back to use the constructor here: https://github.com/apache/pulsar/blob/9f687d3f67d7534cb9ee77ddd2c7d0f24d34d0b4/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/OffloadPolicies.java#L79 and override the getter for getManagedLedgerOffloadAutoTriggerSizeThresholdBytes() to also look at the other properties OR

B) add a method to ServiceConfiguration that builds up all the relevant properties. Instead of using the .getProperties() method we could build .getOffloadPolicyProperties() which would normalize the values.

Personally, I think I prefer B.

Also, just an an FYI, I talked with @milos-matijasevic and one improvement we could make is that when we construct a new namespace policy with the pulsar-admin namespaces set-offload-policies that you wouldn’t need to set all the properties and instead if you don’t specify an argument, it will just merge it from the cluster default policy, but we should consider that a separate improvement

1reaction
gaoran10commented, Oct 20, 2020

@milos-matijasevic @addisonj I added an issue to record the offload configuration setting improment, PTAL. https://github.com/streamnative/pulsar/issues/1578

Maybe we could fix this issue first and make the improvements in other PRs.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Pulsar configuration
Name Description Default exposePublisherStats Whether to enable topic level metrics. true statsUpdateFrequencyInSecs 60 statsUpdateInitialDelayInSecs 60
Read more >
Configuration and credential file settings - AWS Documentation
You can save your frequently used configuration settings and credentials in files that are maintained by the AWS CLI.
Read more >
nuget.config File Reference - Microsoft Learn
Identifies the URL or path of the package source that should be used as the default if no other package sources are found...
Read more >
Using config file in .NET Standard does not work
config settings in a .NET Standard project. But I get this error message: System.IO.FileNotFoundException: 'Could not load file or assembly ' ...
Read more >
configparser — Configuration file parser — Python 3.11.1 ...
You can use this to write Python programs which can be customized by end users ... Config parsers do not guess datatypes of...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found