Skip to content

Instantly share code, notes, and snippets.

@chanmol1999
Last active September 1, 2020 02:14
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chanmol1999/d6bfaff4e52d5bfb499b9396bac9355f to your computer and use it in GitHub Desktop.
Save chanmol1999/d6bfaff4e52d5bfb499b9396bac9355f to your computer and use it in GitHub Desktop.
GSoC 2020 Work Submission

GSoC logo

GSoC 2020 SUBMISSION REPORT

Student Anmol Chaddha
Organisation HAZELCAST
Project IMPROVED TELEMETRY OF HAZELCAST
GitHub @chanmol1999
LinkedIn anmol-chaddha
Website https://anmolchaddha.tech

Special thanks to my mentors and community:

  • Bence Erős
  • Andrey Pechkurov

AIM

The telemetry (or Phone Home) is a hazelcast feature that lets us gather usage information about how the community uses the Hazelcast product. Previously, it collects only the minimal information, including the hazelcast version, java version, operating system, uptime, memory used, number of clients, number of clusters, etc.

The ultimate goal of this project is to give a fine-grained view to this by collecting detailed usage information about the Hazelcast features being used actively by the community. For this, we need to collect various metrics of several data structures provided by the hazelcast and of the cloud configuration used for the deployment of hazelcast. The Phone Home of the hazelcast gathers this data daily, which will continually help to enhance the hazelcast product.

Link to all pull requests highlighting separate changes in the improved-telemetry branch .

A BRIEF OVERVIEW OF MY WORK

Community Bonding Period

  • Build the project locally using maven and explored the different aspects of hazelcast codebase.
  • Refactored existing Phone Home code.
  • Learnt about various features of the core Java and hazelcast data structures.

Coding Phase 1

  • Enhanced the phone home to collect the various metrics of Hazelcast maps. Now the Phonehome could collect the details of hazelcast maps with backup read enabled, map store, eviction, at least one query cache, hot restart enabled, at least one index, WAN replication configured, and at least one custom attribute.
  • Also, added a few unit and integrations tests for PhoneHome using JUnit and Wiremock by applying Dependency Injection.

Coding Phase 2

  • Further improved the Phone Home to collect metrics for other Hazelcast data structures(sets, queues, multimaps, caches, list, ring buffer, topic, replicated maps, cardinality estimator, PN counter, Flake Id generator).
  • Also, covered the unit and integrations test for the same.

Coding Phase 3

  • Enhanced the Phone Home to measure throughput and latency of MapLoader and Mapstore by implementing an optimal OOPs design.
  • Also, added a feature to collect details about the cloud environment used to deploy the hazelcast along with the required tests.
  • Added a JMH(Java microbenchmark service) to calculate the average time taken by the entire phone home process for a significant amount of data structures used by a hazelcast node.

Final pull request containing all the changes : Improved Telemetry of Hazelcast .

Thank you HAZELCAST for an amazing summer of code!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment