Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ISPN-7641 Do not use the Triangle when in server mode #4994

Merged
merged 1 commit into from Mar 22, 2017

Conversation

pruivo
Copy link
Member

@pruivo pruivo commented Mar 20, 2017

@pruivo pruivo added the Preview label Mar 20, 2017
@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

run performance tests please
cs

@ghost
Copy link

ghost commented Mar 20, 2017

Performance tests didn't finish successfully. @Holmistr, can you review it?

@Holmistr
Copy link

@pruivo Investigating ...

@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

@Holmistr not needed. I found a problem :)

@Holmistr
Copy link

@pruivo We're well oiled machine ;-)

@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

run performance tests please
cs

@ghost
Copy link

ghost commented Mar 20, 2017

Performance tests run successfully. Link to the results here.

@pruivo pruivo changed the title WIP: use the old algorithm in server mode ISPN-7641 Do not use the Triangle when in server mode Mar 20, 2017
@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

updated with JIRA and inverted the condition.

@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

run performance tests please
cs

@ghost
Copy link

ghost commented Mar 20, 2017

Performance tests run successfully. Link to the results here.

@pruivo
Copy link
Member Author

pruivo commented Mar 20, 2017

run performance tests please
library dist writes

@ghost
Copy link

ghost commented Mar 20, 2017

Performance tests run successfully. Link to the results here.

@Sanne
Copy link
Member

Sanne commented Mar 20, 2017

Don't you think it's going to be confusing to have different "interpretations" of the same configuration files?

I think I'd rather have an explicit option, and the configuration files provided for server mode to use different - yet explicit - configuration regarding this.

@tristantarrant
Copy link
Member

To be honest, I'd rather not add explicit configuration for this: we already have too many options. I think this falls under the "ergonomics" category, i.e. choose one strategy over another based on the environment. Placing the burden on the user to understand yet another option is even less ideal than the solution used here
Ideally I'd prefer the triangle code to have code paths for this specific case, but for now this will do until we find a better solution.

@Sanne
Copy link
Member

Sanne commented Mar 20, 2017

Fair enough, but will we have some debugging facility to know what Infinispan is configured to do?

i.e. show the operating mode over JMX ?

I'd not want to get back into the "dark ages" in which I was not able to help anyone using Infinispan configured via WildFly's own configuration mechanism because the defaults would not be the same as I was used to...

@danberindei
Copy link
Member

+1, I'd like to keep this in the configuration as "computed attributes" that cannot change. (Not sure if they should be in the builder at all, maybe only in the configuration.) That would be nice for the write skew check and versioning settings as well.

@pruivo
Copy link
Member Author

pruivo commented Mar 21, 2017

@Sanne the interceptor list is printed in the beginning when in debug mode. If it has any triangle interceptor, it is using the triangle, otherwise it is not.

@pruivo
Copy link
Member Author

pruivo commented Mar 21, 2017

Maybe it is worth to say that I don't want this to be a definitive solution. I would like to improve the triangle in order to user per-key versioning to order the updates between primary->backup (instead of per-segment ordering). This would achieve similar performance to the old algorithm and it can be used server mode again.

@danberindei
Copy link
Member

@pruivo @tristantarrant WDYT about adding a generic PrivateConfiguration module configuration for settings that we don't want to expose in the configuration because they're experimental or only useful in a very restricted set of circumstances?

@tristantarrant
Copy link
Member

Yes, I like it.

@Sanne
Copy link
Member

Sanne commented Mar 21, 2017

+1 it's probably worth having a generic "conventional" way of expressing any such configuration property which we don't really want to expose.. as this won't be a unique case I guess. It would actually be nice to migrate more "ergonomic options" to maybe a read-only section of the configuration?

Just please don't have people re-run their app with debug level just to figure out how it's configured, but I don't mean this "wish" to block this PR.. just a suggestion to improve on for the future headaches prevention.

@pruivo
Copy link
Member Author

pruivo commented Mar 21, 2017

what do you suggest @Sanne?

@Sanne
Copy link
Member

Sanne commented Mar 21, 2017

  1. To ignore me for now and move on ;)

  2. and then follow @danberindei 's suggestion, hopefully in a timely way so that this won't cause too much confusion.

  3. document the approach for "private configurations" in a wiki and recommend everyone to take a look to other configuration attributes which could benefit from a similar approach. E.g. I'm thinking in Query we could also simplify a lot of stuff, I never wished to take away some "advanced options" as in some corner cases the options are needed, but a simplification would be welcome.

@pruivo
Copy link
Member Author

pruivo commented Mar 21, 2017

@Sanne @danberindei @tristantarrant I've added the PrivateGlobalConfiguration. let me know what you think.

* @author Pedro Ruivo
* @since 9.0
*/
@SerializedWith(PrivateGlobalConfigurationSerializer.class)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

probably it makes sense to exclude this package from javadocs using the @Private doclet

@pruivo
Copy link
Member Author

pruivo commented Mar 22, 2017

updated!

@pruivo
Copy link
Member Author

pruivo commented Mar 22, 2017

run performance tests please
cs dist writes

@tristantarrant
Copy link
Member

I see there are some failures related to joiners / leavers, but I doubt they are related

@tristantarrant
Copy link
Member

Ok, verified locally and everything works well.

@tristantarrant tristantarrant merged commit b9b4954 into infinispan:master Mar 22, 2017
@tristantarrant
Copy link
Member

Merged. Thanks @pruivo

@ghost
Copy link

ghost commented Mar 22, 2017

Performance tests didn't finish successfully. @Holmistr, can you review it?

@Holmistr
Copy link

@pruivo The perf test fail is not related to this PR, just FYI. As this is integrated now, I won't retrigger the tests.

@pruivo pruivo deleted the t_server_old_algo branch July 5, 2022 13:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
5 participants