├── .github
├── actions
│ └── setup
│ │ └── action.yml
├── files
│ ├── cassdc.yaml
│ ├── jmxremote.access
│ ├── jmxremote.password
│ ├── keystore.jks
│ ├── mutual_auth_ca.pem
│ ├── mutual_auth_server.crt
│ ├── mutual_auth_server.key
│ ├── reaper-cql-secret.yaml
│ ├── reaper-ui-secret.yaml
│ ├── reaper.yaml
│ └── truststore.jks
├── scripts
│ ├── before_deploy.sh
│ ├── configure-ccm.sh
│ └── run-tests.sh
├── stale.yml
└── workflows
│ ├── check_pr_linked_issue.yaml
│ └── ci.yaml
├── .gitignore
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── FORMATTING.md
├── LICENSE-EPL-2.0.txt
├── LICENSE.txt
├── NOTICE.md
├── README.md
├── codecov.yml
├── docs
├── 404.html
├── CNAME
├── categories
│ ├── index.html
│ ├── index.xml
│ └── page
│ │ └── 1
│ │ └── index.html
├── css
│ ├── animate.css
│ ├── custom.css
│ ├── owl.carousel.css
│ ├── owl.theme.css
│ ├── style.blue.css
│ ├── style.default.css
│ ├── style.green.css
│ ├── style.marsala.css
│ ├── style.pink.css
│ ├── style.red.css
│ ├── style.turquoise.css
│ └── style.violet.css
├── docs
│ ├── api
│ │ └── index.html
│ ├── backends
│ │ ├── astra
│ │ │ └── index.html
│ │ ├── cassandra
│ │ │ └── index.html
│ │ ├── h2
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ ├── memory
│ │ │ └── index.html
│ │ └── postgres
│ │ │ └── index.html
│ ├── community
│ │ └── index.html
│ ├── concepts
│ │ └── index.html
│ ├── configuration
│ │ ├── authentication
│ │ │ └── index.html
│ │ ├── backend_specific
│ │ │ └── index.html
│ │ ├── docker_vars
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ └── reaper_specific
│ │ │ └── index.html
│ ├── development
│ │ └── index.html
│ ├── download
│ │ ├── building
│ │ │ └── index.html
│ │ ├── docker
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ └── install
│ │ │ └── index.html
│ ├── index.html
│ ├── index.xml
│ ├── install
│ │ ├── building
│ │ │ └── index.html
│ │ ├── docker
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ └── packages
│ │ │ └── index.html
│ ├── metrics
│ │ ├── dashboards
│ │ │ └── index.html
│ │ ├── graphite
│ │ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ └── prometheus
│ │ │ └── index.html
│ └── usage
│ │ ├── add_cluster
│ │ └── index.html
│ │ ├── cassandra-diagnostics
│ │ └── index.html
│ │ ├── health
│ │ └── index.html
│ │ ├── index.html
│ │ ├── index.xml
│ │ ├── multi_dc
│ │ └── index.html
│ │ ├── multi_dc_distributed
│ │ └── index.html
│ │ ├── multi_dc_non-distributed
│ │ └── index.html
│ │ ├── schedule
│ │ └── index.html
│ │ ├── sidecar_mode
│ │ └── index.html
│ │ └── single
│ │ └── index.html
├── download
│ └── index.html
├── faq
│ └── index.html
├── googlee89a4301dd48258f.html
├── img
│ ├── add_cluster.png
│ ├── add_schedule.png
│ ├── apple-touch-icon.png
│ ├── banner.jpg
│ ├── banner2.jpg
│ ├── basketsquare.jpg
│ ├── blog-avatar.jpg
│ ├── blog-avatar2.jpg
│ ├── blog-medium.jpg
│ ├── blog-recent-2.jpg
│ ├── blog-recent-3.jpg
│ ├── blog-recent.jpg
│ ├── blog.jpg
│ ├── blog2.jpg
│ ├── carousel
│ │ ├── cluster-view.jpg
│ │ ├── repairs.png
│ │ └── schedules.png
│ ├── cluster_view.png
│ ├── detailbig1.jpg
│ ├── detailbig2.jpg
│ ├── detailbig3.jpg
│ ├── detailsquare.jpg
│ ├── detailsquare2.jpg
│ ├── detailsquare3.jpg
│ ├── favicon.ico
│ ├── filter_cluster.png
│ ├── fixed-background-1.jpg
│ ├── fixed-background-2.jpg
│ ├── grabbing.png
│ ├── home-try.jpg
│ ├── home.jpg
│ ├── homepage-slider.jpg
│ ├── logo-small.png
│ ├── logo.png
│ ├── main-slider1.jpg
│ ├── main-slider2.jpg
│ ├── main-slider3.jpg
│ ├── main-slider4.jpg
│ ├── marker.png
│ ├── men.jpg
│ ├── multireaper-multidc.png
│ ├── node.png
│ ├── page-1.jpg
│ ├── page-2.jpg
│ ├── page-3.jpg
│ ├── payment.png
│ ├── photogrid.jpg
│ ├── placeholder.png
│ ├── portfolio-1.jpg
│ ├── portfolio-2.jpg
│ ├── portfolio-3.jpg
│ ├── portfolio-4.jpg
│ ├── portfolio-5.jpg
│ ├── portfolio-6.jpg
│ ├── portfolio-7.jpg
│ ├── portfolio-8.jpg
│ ├── portfolio-9.jpg
│ ├── product1.jpg
│ ├── product2.jpg
│ ├── product3.jpg
│ ├── product4.jpg
│ ├── reaper_jmx_cred_add_cluster.png
│ ├── repair_page.png
│ ├── schedule.png
│ ├── segments_done.png
│ ├── segments_duration.png
│ ├── segments_last_hour.png
│ ├── segments_per_hour.png
│ ├── sidecar-mode.png
│ ├── simple_gauge.png
│ ├── simple_stat.png
│ ├── single_repair.png
│ ├── singlereaper-multidc-all.png
│ ├── singlereaper-multidc-local.png
│ ├── slide1.jpg
│ ├── slide2.jpg
│ ├── slide3.jpg
│ ├── slide4.jpg
│ ├── slide5.jpg
│ ├── slide6.jpg
│ ├── texture-bw.png
│ ├── texture-turquoise.png
│ ├── texture-violet.png
│ └── women.jpg
├── index.html
├── index.xml
├── js
│ ├── front.js
│ ├── gmaps.init.js
│ ├── hpneo.gmaps.js
│ ├── jquery-3.2.1.min.js
│ ├── owl.carousel.min.js
│ └── respond.min.js
├── quickstart
│ └── index.html
├── robots.txt
├── sitemap.xml
└── tags
│ ├── index.html
│ ├── index.xml
│ └── page
│ └── 1
│ └── index.html
├── pom.xml
└── src
├── ci
├── jmxremote.access
└── jmxremote.password
├── docs
├── .gitignore
├── Makefile
├── README.md
├── Reaper-IDEA.xml
├── archetypes
│ └── default.md
├── config.toml
├── content
│ ├── docs
│ │ ├── _index.md
│ │ ├── api.md
│ │ ├── backends
│ │ │ ├── _index.md
│ │ │ ├── cassandra.md
│ │ │ ├── h2.md
│ │ │ ├── memory.md
│ │ │ └── postgres.md
│ │ ├── community.md
│ │ ├── concepts.md
│ │ ├── configuration
│ │ │ ├── _index.md
│ │ │ ├── authentication.md
│ │ │ ├── backend_specific.md
│ │ │ ├── docker_vars.md
│ │ │ └── reaper_specific.md
│ │ ├── development.md
│ │ ├── download
│ │ │ ├── _index.md
│ │ │ ├── building.md
│ │ │ ├── docker.md
│ │ │ └── install.md
│ │ ├── metrics
│ │ │ ├── _index.md
│ │ │ ├── dashboards.md
│ │ │ ├── graphite.md
│ │ │ └── prometheus.md
│ │ └── usage
│ │ │ ├── _index.md
│ │ │ ├── add_cluster.md
│ │ │ ├── cassandra-diagnostics.md
│ │ │ ├── health.md
│ │ │ ├── multi_dc_distributed.md
│ │ │ ├── multi_dc_non-distributed.md
│ │ │ ├── schedule.md
│ │ │ ├── sidecar_mode.md
│ │ │ └── single.md
│ ├── faq.md
│ └── quickstart.md
├── data
│ ├── carousel
│ │ ├── cluster-ui.yaml
│ │ ├── intro.yaml
│ │ └── schedule.yaml
│ └── features
│ │ ├── cluster-view.yaml
│ │ ├── open-source.yaml
│ │ └── web-interface.yaml
├── layouts
│ └── shortcodes
│ │ ├── photo.html
│ │ └── screenshot.html
├── raw_images
│ ├── favicon.xcf
│ └── logo.xcf
├── static
│ ├── googlee89a4301dd48258f.html
│ ├── img
│ │ ├── add_cluster.png
│ │ ├── add_schedule.png
│ │ ├── carousel
│ │ │ ├── cluster-view.jpg
│ │ │ ├── repairs.png
│ │ │ └── schedules.png
│ │ ├── cluster_view.png
│ │ ├── favicon.ico
│ │ ├── filter_cluster.png
│ │ ├── logo.png
│ │ ├── multireaper-multidc.png
│ │ ├── node.png
│ │ ├── reaper_jmx_cred_add_cluster.png
│ │ ├── repair_page.png
│ │ ├── schedule.png
│ │ ├── segments_done.png
│ │ ├── segments_duration.png
│ │ ├── segments_last_hour.png
│ │ ├── segments_per_hour.png
│ │ ├── sidecar-mode.png
│ │ ├── simple_gauge.png
│ │ ├── simple_stat.png
│ │ ├── single_repair.png
│ │ ├── singlereaper-multidc-all.png
│ │ └── singlereaper-multidc-local.png
│ └── robots.txt
└── themes
│ ├── hugo-universal-theme-master.zip
│ └── hugo-universal-theme
│ ├── .eslintignore
│ ├── .eslintrc.yml
│ ├── .gitignore
│ ├── .travis.yml
│ ├── LICENSE
│ ├── README.md
│ ├── archetypes
│ └── default.md
│ ├── exampleSite
│ ├── .gitignore
│ ├── config.toml
│ ├── content
│ │ ├── blog
│ │ │ ├── creating-a-new-theme.md
│ │ │ ├── go-is-for-lovers.md
│ │ │ ├── hugo-is-for-lovers.md
│ │ │ ├── linked-post.md
│ │ │ └── migrate-from-jekyll.md
│ │ ├── contact.md
│ │ └── faq.md
│ ├── data
│ │ ├── carousel
│ │ │ ├── customizable.yaml
│ │ │ ├── design.yaml
│ │ │ ├── features.yaml
│ │ │ └── multipurpose.yaml
│ │ ├── clients
│ │ │ ├── 1.yaml
│ │ │ ├── 2.yaml
│ │ │ ├── 3.yaml
│ │ │ ├── 4.yaml
│ │ │ ├── 5.yaml
│ │ │ └── 6.yaml
│ │ ├── features
│ │ │ ├── consulting.yaml
│ │ │ ├── email.yaml
│ │ │ ├── print.yaml
│ │ │ ├── seo.yaml
│ │ │ ├── uiux.yaml
│ │ │ └── webdesign.yaml
│ │ └── testimonials
│ │ │ ├── 1.yaml
│ │ │ ├── 2.yaml
│ │ │ ├── 3.yaml
│ │ │ ├── 4.yaml
│ │ │ └── 5.yaml
│ └── static
│ │ └── img
│ │ ├── apple-touch-icon.png
│ │ ├── banners
│ │ ├── banner-1.jpg
│ │ ├── banner-2.jpg
│ │ ├── banner-3.jpg
│ │ ├── banner-4.jpg
│ │ └── banner-5.jpg
│ │ ├── carousel
│ │ ├── template-easy-code.png
│ │ ├── template-easy-customize-less.png
│ │ ├── template-easy-customize.png
│ │ ├── template-homepage.png
│ │ ├── template-mac.png
│ │ ├── template-tablets-2.png
│ │ └── template-tablets.png
│ │ ├── clients
│ │ ├── customer-1.png
│ │ ├── customer-2.png
│ │ ├── customer-3.png
│ │ ├── customer-4.png
│ │ ├── customer-5.png
│ │ └── customer-6.png
│ │ ├── favicon.ico
│ │ ├── logo-small.png
│ │ ├── logo.png
│ │ └── testimonials
│ │ ├── person-1.jpg
│ │ ├── person-2.jpg
│ │ ├── person-3.png
│ │ └── person-4.jpg
│ ├── i18n
│ ├── ca.yaml
│ ├── de.yaml
│ ├── en.yaml
│ ├── es.yaml
│ ├── fr.yaml
│ ├── ru.yaml
│ └── sv.yaml
│ ├── images
│ ├── screenshot.png
│ └── tn.png
│ ├── layouts
│ ├── 404.html
│ ├── _default
│ │ ├── list.html
│ │ └── single.html
│ ├── archetypes
│ │ └── default.md
│ ├── docs
│ │ ├── list.html
│ │ └── single.html
│ ├── index.html
│ ├── page
│ │ └── single.html
│ └── partials
│ │ ├── breadcrumbs.html
│ │ ├── carousel.html
│ │ ├── clients.html
│ │ ├── contact.html
│ │ ├── features.html
│ │ ├── footer.html
│ │ ├── head.html
│ │ ├── map.html
│ │ ├── nav.html
│ │ ├── page.html
│ │ ├── recent_posts.html
│ │ ├── scripts.html
│ │ ├── see_more.html
│ │ ├── side_doc_nav.html
│ │ ├── sidebar.html
│ │ ├── testimonials.html
│ │ ├── top.html
│ │ └── widgets
│ │ ├── categories.html
│ │ ├── search.html
│ │ └── tags.html
│ ├── package-lock.json
│ ├── package.json
│ ├── static
│ ├── css
│ │ ├── animate.css
│ │ ├── custom.css
│ │ ├── owl.carousel.css
│ │ ├── owl.theme.css
│ │ ├── style.blue.css
│ │ ├── style.default.css
│ │ ├── style.green.css
│ │ ├── style.marsala.css
│ │ ├── style.pink.css
│ │ ├── style.red.css
│ │ ├── style.turquoise.css
│ │ └── style.violet.css
│ ├── img
│ │ ├── apple-touch-icon.png
│ │ ├── banner.jpg
│ │ ├── banner2.jpg
│ │ ├── basketsquare.jpg
│ │ ├── blog-avatar.jpg
│ │ ├── blog-avatar2.jpg
│ │ ├── blog-medium.jpg
│ │ ├── blog-recent-2.jpg
│ │ ├── blog-recent-3.jpg
│ │ ├── blog-recent.jpg
│ │ ├── blog.jpg
│ │ ├── blog2.jpg
│ │ ├── detailbig1.jpg
│ │ ├── detailbig2.jpg
│ │ ├── detailbig3.jpg
│ │ ├── detailsquare.jpg
│ │ ├── detailsquare2.jpg
│ │ ├── detailsquare3.jpg
│ │ ├── favicon.ico
│ │ ├── fixed-background-1.jpg
│ │ ├── fixed-background-2.jpg
│ │ ├── grabbing.png
│ │ ├── home-try.jpg
│ │ ├── home.jpg
│ │ ├── homepage-slider.jpg
│ │ ├── logo-small.png
│ │ ├── logo.png
│ │ ├── main-slider1.jpg
│ │ ├── main-slider2.jpg
│ │ ├── main-slider3.jpg
│ │ ├── main-slider4.jpg
│ │ ├── marker.png
│ │ ├── men.jpg
│ │ ├── page-1.jpg
│ │ ├── page-2.jpg
│ │ ├── page-3.jpg
│ │ ├── payment.png
│ │ ├── photogrid.jpg
│ │ ├── placeholder.png
│ │ ├── portfolio-1.jpg
│ │ ├── portfolio-2.jpg
│ │ ├── portfolio-3.jpg
│ │ ├── portfolio-4.jpg
│ │ ├── portfolio-5.jpg
│ │ ├── portfolio-6.jpg
│ │ ├── portfolio-7.jpg
│ │ ├── portfolio-8.jpg
│ │ ├── portfolio-9.jpg
│ │ ├── product1.jpg
│ │ ├── product2.jpg
│ │ ├── product3.jpg
│ │ ├── product4.jpg
│ │ ├── slide1.jpg
│ │ ├── slide2.jpg
│ │ ├── slide3.jpg
│ │ ├── slide4.jpg
│ │ ├── slide5.jpg
│ │ ├── slide6.jpg
│ │ ├── texture-bw.png
│ │ ├── texture-turquoise.png
│ │ ├── texture-violet.png
│ │ └── women.jpg
│ └── js
│ │ ├── front.js
│ │ ├── gmaps.init.js
│ │ ├── hpneo.gmaps.js
│ │ ├── jquery-3.2.1.min.js
│ │ ├── owl.carousel.min.js
│ │ └── respond.min.js
│ └── theme.toml
├── packaging
├── Makefile
├── bin
│ ├── cassandra-reaper
│ └── spreaper
├── debian
│ ├── cassandra-reaper-cli.install
│ ├── cassandra-reaper.install
│ ├── cassandra-reaper.service
│ ├── cassandra-reaper.upstart
│ ├── changelog
│ ├── compat
│ ├── control
│ ├── postinstall.sh
│ ├── preinstall.sh
│ ├── reaper.init
│ └── rules
├── docker-build
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── docker-entrypoint.sh
├── docker-compose.yml
├── docker-services
│ ├── README.md
│ ├── cassandra-ssl
│ │ ├── cassandra-ssl.env
│ │ └── docker-entrypoint.sh
│ ├── cassandra
│ │ ├── cassandra.env
│ │ ├── jmxremote.access
│ │ └── jmxremote.password
│ ├── cqlsh-initialize-reaper_db-ssl
│ │ ├── cqlsh-initialize-reaper_db-ssl.env
│ │ └── docker-entrypoint.sh
│ ├── cqlsh-initialize-reaper_db
│ │ ├── cqlsh-initialize-reaper_db.env
│ │ └── docker-entrypoint.sh
│ ├── cqlsh-ssl
│ │ └── cqlsh-ssl.env
│ ├── cqlsh
│ │ ├── Dockerfile
│ │ ├── cql.env
│ │ └── docker-entrypoint.sh
│ ├── generate-ssl-stores
│ │ ├── Dockerfile
│ │ └── docker-entrypoint.sh
│ ├── nodetool-ssl
│ │ └── nodetool-ssl.env
│ ├── nodetool
│ │ ├── Dockerfile
│ │ ├── docker-entrypoint.sh
│ │ ├── nodetool-ssl.properties
│ │ └── nodetool.env
│ ├── reaper-in-memory
│ │ └── reaper-in-memory.env
│ ├── reaper-ssl
│ │ └── reaper-ssl.env
│ └── reaper
│ │ └── reaper.env
├── etc
│ └── bash_completion.d
│ │ └── spreaper
├── redhat
│ ├── postinstall.sh
│ └── preinstall.sh
└── resource
│ ├── ca_cert.conf
│ ├── cassandra-reaper-cassandra-sidecar.yaml
│ ├── cassandra-reaper-cassandra-ssl.yaml
│ ├── cassandra-reaper-cassandra.yaml
│ ├── cassandra-reaper-memory.yaml
│ ├── cassandra-reaper-ssl.properties
│ └── cassandra-reaper.yaml
├── server
├── pom.xml
└── src
│ ├── checkstyle
│ ├── java.header
│ └── suppressions.xml
│ ├── main
│ ├── docker
│ │ ├── Dockerfile
│ │ ├── Dockerfile-spreaper
│ │ ├── cassandra-reaper.yml
│ │ ├── configure-jmx-credentials.sh
│ │ ├── configure-metrics.sh
│ │ ├── configure-persistence.sh
│ │ ├── configure-webui-authentication.sh
│ │ ├── entrypoint.sh
│ │ └── shiro.ini
│ ├── java
│ │ └── io
│ │ │ └── cassandrareaper
│ │ │ ├── AppContext.java
│ │ │ ├── ReaperApplication.java
│ │ │ ├── ReaperApplicationConfiguration.java
│ │ │ ├── ReaperDbMigrationCommand.java
│ │ │ ├── ReaperException.java
│ │ │ ├── core
│ │ │ ├── Cluster.java
│ │ │ ├── ClusterProperties.java
│ │ │ ├── Compaction.java
│ │ │ ├── CompactionStats.java
│ │ │ ├── DiagEventSubscription.java
│ │ │ ├── DroppedMessages.java
│ │ │ ├── EditableRepairSchedule.java
│ │ │ ├── GenericMetric.java
│ │ │ ├── JmxCredentials.java
│ │ │ ├── JmxStat.java
│ │ │ ├── MetricsHistogram.java
│ │ │ ├── Node.java
│ │ │ ├── PercentRepairedMetric.java
│ │ │ ├── RepairRun.java
│ │ │ ├── RepairSchedule.java
│ │ │ ├── RepairSegment.java
│ │ │ ├── RepairType.java
│ │ │ ├── RepairUnit.java
│ │ │ ├── Segment.java
│ │ │ ├── Snapshot.java
│ │ │ ├── Table.java
│ │ │ ├── ThreadPoolStat.java
│ │ │ └── package-info.java
│ │ │ ├── crypto
│ │ │ ├── Cryptograph.java
│ │ │ ├── CryptographFactory.java
│ │ │ ├── NoopCrypotograph.java
│ │ │ ├── SymmetricCryptograph.java
│ │ │ └── SymmetricFactory.java
│ │ │ ├── management
│ │ │ ├── ClusterFacade.java
│ │ │ ├── CompactionProxy.java
│ │ │ ├── DiagnosticProxy.java
│ │ │ ├── EndpointSnitchInfoProxy.java
│ │ │ ├── HostConnectionCounters.java
│ │ │ ├── ICassandraManagementProxy.java
│ │ │ ├── IManagementConnectionFactory.java
│ │ │ ├── MetricsProxy.java
│ │ │ ├── RepairStatusHandler.java
│ │ │ ├── SnapshotProxy.java
│ │ │ ├── StorageServiceProxy.java
│ │ │ ├── http
│ │ │ │ ├── Compactions.java
│ │ │ │ ├── HttpCassandraManagementProxy.java
│ │ │ │ ├── HttpManagementConnectionFactory.java
│ │ │ │ ├── HttpMetricsProxy.java
│ │ │ │ └── models
│ │ │ │ │ └── JobStatusTracker.java
│ │ │ └── jmx
│ │ │ │ ├── ColumnFamilyStoreMBeanIterator.java
│ │ │ │ ├── DiagnosticEventPersistenceMBean.java
│ │ │ │ ├── JmxAddresses.java
│ │ │ │ ├── JmxCassandraManagementProxy.java
│ │ │ │ ├── JmxConnectionsInitializer.java
│ │ │ │ ├── JmxManagementConnectionFactory.java
│ │ │ │ ├── JmxMetricsProxy.java
│ │ │ │ ├── LastEventIdBroadcasterMBean.java
│ │ │ │ ├── StorageServiceMBean20.java
│ │ │ │ └── package-info.java
│ │ │ ├── metrics
│ │ │ ├── MetricNameUtils.java
│ │ │ ├── PrometheusMetricsConfiguration.java
│ │ │ └── PrometheusMetricsFilter.java
│ │ │ ├── package-info.java
│ │ │ ├── resources
│ │ │ ├── ClusterResource.java
│ │ │ ├── CryptoResource.java
│ │ │ ├── DiagEventSseResource.java
│ │ │ ├── DiagEventSubscriptionResource.java
│ │ │ ├── NodeStatsResource.java
│ │ │ ├── PingResource.java
│ │ │ ├── ReaperHealthCheck.java
│ │ │ ├── ReaperResource.java
│ │ │ ├── RepairRunResource.java
│ │ │ ├── RepairScheduleResource.java
│ │ │ ├── RequestUtils.java
│ │ │ ├── SnapshotResource.java
│ │ │ ├── auth
│ │ │ │ ├── LoginResource.java
│ │ │ │ ├── RestPermissionsFilter.java
│ │ │ │ ├── ShiroExceptionMapper.java
│ │ │ │ ├── ShiroJwtProvider.java
│ │ │ │ └── ShiroJwtVerifyingFilter.java
│ │ │ ├── package-info.java
│ │ │ └── view
│ │ │ │ ├── ClusterStatus.java
│ │ │ │ ├── DiagnosticEvent.java
│ │ │ │ ├── NodesStatus.java
│ │ │ │ ├── RepairRunStatus.java
│ │ │ │ ├── RepairScheduleStatus.java
│ │ │ │ └── package-info.java
│ │ │ ├── service
│ │ │ ├── AutoSchedulingManager.java
│ │ │ ├── ClusterRepairScheduler.java
│ │ │ ├── CompactionService.java
│ │ │ ├── DiagEventPoller.java
│ │ │ ├── DiagEventSubscriptionService.java
│ │ │ ├── Heart.java
│ │ │ ├── MetricsService.java
│ │ │ ├── PurgeService.java
│ │ │ ├── RepairManager.java
│ │ │ ├── RepairParameters.java
│ │ │ ├── RepairRunService.java
│ │ │ ├── RepairRunner.java
│ │ │ ├── RepairScheduleService.java
│ │ │ ├── RepairUnitService.java
│ │ │ ├── RingRange.java
│ │ │ ├── SchedulingManager.java
│ │ │ ├── SegmentGenerator.java
│ │ │ ├── SegmentRunner.java
│ │ │ ├── SimpleCondition.java
│ │ │ ├── SnapshotService.java
│ │ │ └── package-info.java
│ │ │ ├── storage
│ │ │ ├── IDistributedStorage.java
│ │ │ ├── IStorageDao.java
│ │ │ ├── InitializeStorage.java
│ │ │ ├── JsonParseUtils.java
│ │ │ ├── MemoryStorageFacade.java
│ │ │ ├── OpType.java
│ │ │ ├── cassandra
│ │ │ │ ├── CassandraConcurrencyDao.java
│ │ │ │ ├── CassandraStorageFacade.java
│ │ │ │ ├── MigrationManager.java
│ │ │ │ ├── ReaperRetryPolicyFactory.java
│ │ │ │ ├── RetryPolicyImpl.java
│ │ │ │ ├── migrations
│ │ │ │ │ ├── FixRepairRunTimestamps.java
│ │ │ │ │ ├── FixRepairSegmentTimestamps.java
│ │ │ │ │ ├── Migration016.java
│ │ │ │ │ ├── Migration018.java
│ │ │ │ │ ├── Migration019.java
│ │ │ │ │ ├── Migration021.java
│ │ │ │ │ ├── Migration024.java
│ │ │ │ │ ├── Migration025.java
│ │ │ │ │ ├── Migration034.java
│ │ │ │ │ └── package-info.java
│ │ │ │ └── network
│ │ │ │ │ ├── MultiIpPerNodeAddressTranslator.java
│ │ │ │ │ └── MultiIpPerNodeAddressTranslatorFactory.java
│ │ │ ├── cluster
│ │ │ │ ├── CassandraClusterDao.java
│ │ │ │ ├── IClusterDao.java
│ │ │ │ └── MemoryClusterDao.java
│ │ │ ├── events
│ │ │ │ ├── CassandraEventsDao.java
│ │ │ │ ├── IEventsDao.java
│ │ │ │ └── MemoryEventsDao.java
│ │ │ ├── memory
│ │ │ │ ├── MemoryStorageRoot.java
│ │ │ │ └── ReplicaLockManagerWithTtl.java
│ │ │ ├── metrics
│ │ │ │ ├── CassandraMetricsDao.java
│ │ │ │ ├── IDistributedMetrics.java
│ │ │ │ ├── IMetricsDao.java
│ │ │ │ └── MemoryMetricsDao.java
│ │ │ ├── operations
│ │ │ │ ├── CassandraOperationsDao.java
│ │ │ │ └── IOperationsDao.java
│ │ │ ├── package-info.java
│ │ │ ├── repairrun
│ │ │ │ ├── CassandraRepairRunDao.java
│ │ │ │ ├── IRepairRunDao.java
│ │ │ │ └── MemoryRepairRunDao.java
│ │ │ ├── repairschedule
│ │ │ │ ├── CassandraRepairScheduleDao.java
│ │ │ │ ├── IRepairScheduleDao.java
│ │ │ │ └── MemoryRepairScheduleDao.java
│ │ │ ├── repairsegment
│ │ │ │ ├── CassandraRepairSegmentDao.java
│ │ │ │ ├── IRepairSegmentDao.java
│ │ │ │ └── MemoryRepairSegmentDao.java
│ │ │ ├── repairunit
│ │ │ │ ├── CassandraRepairUnitDao.java
│ │ │ │ ├── IRepairUnitDao.java
│ │ │ │ └── MemoryRepairUnitDao.java
│ │ │ └── snapshot
│ │ │ │ ├── CassandraSnapshotDao.java
│ │ │ │ ├── ISnapshotDao.java
│ │ │ │ └── MemorySnapshotDao.java
│ │ │ └── validators
│ │ │ ├── EditableRepairScheduleValidator.java
│ │ │ ├── NullOrNotBlank.java
│ │ │ ├── NullOrNotBlankValidator.java
│ │ │ └── ValidEditableRepairSchedule.java
│ └── resources
│ │ ├── META-INF
│ │ └── services
│ │ │ ├── io.cassandrareaper.crypto.CryptographFactory
│ │ │ ├── io.dropwizard.jackson.Discoverable
│ │ │ └── systems.composable.dropwizard.cassandra.network.AddressTranslatorFactory
│ │ ├── banner.txt
│ │ ├── db
│ │ └── cassandra
│ │ │ └── 034_init_reaper_db.cql
│ │ └── shiro.ini
│ └── test
│ ├── java
│ └── io
│ │ └── cassandrareaper
│ │ ├── AssertionTest.java
│ │ ├── ReaperApplicationConfigurationBuilder.java
│ │ ├── ReaperApplicationConfigurationTest.java
│ │ ├── SimpleReaperClient.java
│ │ ├── acceptance
│ │ ├── BasicSteps.java
│ │ ├── ReaperCassandraEachIT.java
│ │ ├── ReaperCassandraIT.java
│ │ ├── ReaperCassandraSidecarIT.java
│ │ ├── ReaperHttpIT.java
│ │ ├── ReaperIT.java
│ │ ├── ReaperMetricsIT.java
│ │ ├── ReaperShiroIT.java
│ │ ├── ReaperTestJettyRunner.java
│ │ └── TestContext.java
│ │ ├── core
│ │ ├── ClusterTest.java
│ │ ├── EditableRepairScheduleTest.java
│ │ ├── LongCollectionSqlTypeTest.java
│ │ └── RepairRunTest.java
│ │ ├── crypto
│ │ └── SymmetricCryptographTest.java
│ │ ├── management
│ │ ├── ClusterFacadeTest.java
│ │ ├── MetricsProxyTest.java
│ │ ├── http
│ │ │ ├── HttpCassandraManagementProxyTest.java
│ │ │ └── HttpMetricsProxyTest.java
│ │ └── jmx
│ │ │ ├── CassandraManagementProxyTest.java
│ │ │ ├── JmxAddressesTest.java
│ │ │ ├── JmxConnectionsInitializerTest.java
│ │ │ ├── JmxCustomPortTest.java
│ │ │ └── JmxManagementConnectionFactoryTest.java
│ │ ├── resources
│ │ ├── ClusterResourceTest.java
│ │ ├── ReaperResourceTest.java
│ │ ├── RepairRunResourceTest.java
│ │ ├── RepairScheduleResourceTest.java
│ │ ├── RequestUtilsTest.java
│ │ ├── auth
│ │ │ ├── EmbeddedLdapTest.java
│ │ │ ├── LoginResourceLdapTest.java
│ │ │ ├── LoginResourceTest.java
│ │ │ ├── RestPermissionsFilterTest.java
│ │ │ └── ShiroJwtVerifyingFilterTest.java
│ │ └── view
│ │ │ ├── NodesStatusHttpTest.java
│ │ │ ├── NodesStatusTest.java
│ │ │ ├── RepairRunStatusTest.java
│ │ │ └── RepairScheduleStatusTest.java
│ │ ├── service
│ │ ├── AutoSchedulingManagerTest.java
│ │ ├── ClusterRepairSchedulerTest.java
│ │ ├── HeartTest.java
│ │ ├── MetricsServiceTest.java
│ │ ├── PurgeServiceTest.java
│ │ ├── RepairManagerTest.java
│ │ ├── RepairRunServiceTest.java
│ │ ├── RepairRunnerHangingTest.java
│ │ ├── RepairRunnerTest.java
│ │ ├── RepairRunnerTopologyChangeTest.java
│ │ ├── RepairUnitServiceTest.java
│ │ ├── RingRangeTest.java
│ │ ├── SchedulingManagerTest.java
│ │ ├── SegmentGeneratorTest.java
│ │ ├── SegmentRunnerTest.java
│ │ ├── SnapshotServiceTest.java
│ │ └── TestRepairConfiguration.java
│ │ ├── storage
│ │ ├── CassandraStorageFacadeTest.java
│ │ ├── DiagEventSubscriptionMapper.java
│ │ ├── MultiIpPerNodeAddressTranslatorFactoryTest.java
│ │ ├── UuidUtil.java
│ │ └── memory
│ │ │ └── ReplicaLockManagerWithTtlTest.java
│ │ └── validators
│ │ ├── EditableRepairScheduleValidatorTest.java
│ │ └── NullOrNotBlankValidatorTest.java
│ └── resources
│ ├── README.md
│ ├── assets
│ └── login.html
│ ├── cassandra-reaper-access-control-enabled-at.yaml
│ ├── cassandra-reaper-at.yaml
│ ├── cassandra-reaper-cassandra-at.yaml
│ ├── cassandra-reaper-http-at.yaml
│ ├── cassandra-reaper-https-at.yaml
│ ├── cassandra-reaper-metrics-test.yaml
│ ├── cassandra-reaper.yaml
│ ├── driver-config.conf
│ ├── generate-certs.sh
│ ├── io.cassandrareaper.acceptance
│ ├── access_control.feature
│ ├── integration_reaper_functionality.feature
│ ├── integration_reaper_functionality_http.feature
│ └── integration_reaper_metrics.feature
│ ├── io
│ └── cassandrareaper
│ │ └── management
│ │ └── http
│ │ └── example_snapshot_details.json
│ ├── logback-test.xml
│ ├── metric-samples
│ ├── prom-metrics.txt
│ └── stream-session.json
│ ├── mockito-extensions
│ └── org.mockito.plugins.MockMaker
│ ├── openssl.cnf
│ ├── reaper-cassandra-each1-at.yaml
│ ├── reaper-cassandra-each2-at.yaml
│ ├── reaper-cassandra-sidecar1-at.yaml
│ ├── reaper-cassandra-sidecar2-at.yaml
│ ├── reaper-cassandra-sidecar3-at.yaml
│ ├── reaper-cassandra-sidecar4-at.yaml
│ ├── repair-samples
│ ├── stream-report-2-0-17.txt
│ ├── stream-report-2-1-20.txt
│ ├── stream-report-2-2-12.txt
│ ├── stream-report-3-11-2.txt
│ └── stream-report-4-0-0.txt
│ ├── test-ldap-users.ldif
│ └── test-shiro-ldap.ini
└── ui
├── README.md
├── app
├── bootstrap-theme.css
├── bootstrap.css
├── events.js
├── html_template.ejs
├── index.js
├── jsx
│ ├── active-compactions.jsx
│ ├── client-request-latency.jsx
│ ├── cluster-form.jsx
│ ├── cluster-list.jsx
│ ├── cluster-screen.jsx
│ ├── cluster-selection.jsx
│ ├── dropped-messages.jsx
│ ├── event-list.jsx
│ ├── event-screen.jsx
│ ├── event-subscription-form.jsx
│ ├── event-subscription-list.jsx
│ ├── login-form.jsx
│ ├── mixin.jsx
│ ├── node-status.jsx
│ ├── repair-form.jsx
│ ├── repair-list.jsx
│ ├── repair-schedule-form.jsx
│ ├── repair-screen.jsx
│ ├── schedule-list.jsx
│ ├── schedule-screen.jsx
│ ├── segment-list.jsx
│ ├── server-status.jsx
│ ├── sidebar.jsx
│ ├── snapshot-form.jsx
│ ├── snapshot-list.jsx
│ ├── snapshot-screen.jsx
│ ├── snapshot.jsx
│ └── tpstats.jsx
├── login.js
├── navbar.template.jsx
├── node-utils.js
├── observable.js
├── repair.js
├── schedules.js
├── segments.js
├── snapshot.js
└── style.scss
├── bower.json
├── build-navbar.sh
├── package.json
├── server.js
├── start-webpack.sh
├── theming
└── bootstrap
│ ├── CHANGELOG.md
│ ├── Gruntfile.js
│ ├── LICENSE
│ ├── README.md
│ ├── dist
│ ├── css
│ │ ├── bootstrap-theme.css
│ │ ├── bootstrap-theme.min.css
│ │ ├── bootstrap.css
│ │ └── bootstrap.min.css
│ ├── fonts
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── js
│ │ ├── bootstrap.js
│ │ ├── bootstrap.min.js
│ │ └── npm.js
│ ├── fonts
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.svg
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ └── glyphicons-halflings-regular.woff2
│ ├── grunt
│ ├── .jshintrc
│ ├── .stylelintrc
│ ├── browsers.js
│ ├── bs-commonjs-generator.js
│ ├── bs-glyphicons-data-generator.js
│ ├── bs-lessdoc-parser.js
│ ├── bs-raw-files-generator.js
│ ├── change-version.js
│ ├── configBridge.json
│ ├── generate-sri.js
│ └── karma.conf.js
│ ├── js
│ ├── affix.js
│ ├── alert.js
│ ├── button.js
│ ├── carousel.js
│ ├── collapse.js
│ ├── dropdown.js
│ ├── modal.js
│ ├── popover.js
│ ├── scrollspy.js
│ ├── tab.js
│ ├── tooltip.js
│ └── transition.js
│ ├── less
│ ├── alerts.less
│ ├── badges.less
│ ├── bootstrap.less
│ ├── breadcrumbs.less
│ ├── button-groups.less
│ ├── buttons.less
│ ├── carousel.less
│ ├── close.less
│ ├── code.less
│ ├── component-animations.less
│ ├── dropdowns.less
│ ├── forms.less
│ ├── glyphicons.less
│ ├── grid.less
│ ├── input-groups.less
│ ├── jumbotron.less
│ ├── labels.less
│ ├── list-group.less
│ ├── media.less
│ ├── mixins.less
│ ├── mixins
│ │ ├── alerts.less
│ │ ├── background-variant.less
│ │ ├── border-radius.less
│ │ ├── buttons.less
│ │ ├── center-block.less
│ │ ├── clearfix.less
│ │ ├── forms.less
│ │ ├── gradients.less
│ │ ├── grid-framework.less
│ │ ├── grid.less
│ │ ├── hide-text.less
│ │ ├── image.less
│ │ ├── labels.less
│ │ ├── list-group.less
│ │ ├── nav-divider.less
│ │ ├── nav-vertical-align.less
│ │ ├── opacity.less
│ │ ├── pagination.less
│ │ ├── panels.less
│ │ ├── progress-bar.less
│ │ ├── reset-filter.less
│ │ ├── reset-text.less
│ │ ├── resize.less
│ │ ├── responsive-visibility.less
│ │ ├── size.less
│ │ ├── tab-focus.less
│ │ ├── table-row.less
│ │ ├── text-emphasis.less
│ │ ├── text-overflow.less
│ │ └── vendor-prefixes.less
│ ├── modals.less
│ ├── navbar.less
│ ├── navs.less
│ ├── normalize.less
│ ├── pager.less
│ ├── pagination.less
│ ├── panels.less
│ ├── popovers.less
│ ├── print.less
│ ├── progress-bars.less
│ ├── responsive-embed.less
│ ├── responsive-utilities.less
│ ├── scaffolding.less
│ ├── tables.less
│ ├── theme.bak.less
│ ├── theme.less
│ ├── thumbnails.less
│ ├── tooltip.less
│ ├── type.less
│ ├── utilities.less
│ ├── variables.less
│ ├── variables.superhero.less
│ ├── variables.var.less
│ └── wells.less
│ ├── package-lock.json
│ └── package.json
└── webpack.config.js
/.github/files/cassdc.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: cassandra.datastax.com/v1beta1
2 | kind: CassandraDatacenter
3 | metadata:
4 | name: dc1
5 | namespace: cass-operator
6 | spec:
7 | clusterName: test
8 | config:
9 | jvm-options:
10 | additional-jvm-opts:
11 | - -Dcassandra.system_distributed_replication_dc_names=dc1
12 | - -Dcassandra.system_distributed_replication_per_dc=1
13 | - -Dcassandra.jmx.remote.login.config=CassandraLogin
14 | - -Djava.security.auth.login.config=/etc/cassandra/cassandra-jaas.config
15 | - -Dcassandra.jmx.authorizer=org.apache.cassandra.auth.jmx.AuthorizationProxy
16 | initial_heap_size: 512m
17 | max_heap_size: 512m
18 | users:
19 | - secretName: reaper-cql-secret
20 | superuser: true
21 | serverType: cassandra
22 | serverVersion: 5.0.3
23 | size: 1
24 | racks:
25 | - name: r1
26 | storageConfig:
27 | cassandraDataVolumeClaimSpec:
28 | accessModes:
29 | - ReadWriteOnce
30 | resources:
31 | requests:
32 | storage: 5Gi
33 | storageClassName: standard
34 | podTemplateSpec:
35 | spec:
36 | containers:
37 | - name: cassandra
38 | env:
39 | - name: "LOCAL_JMX"
40 | value: "no"
--------------------------------------------------------------------------------
/.github/files/jmxremote.access:
--------------------------------------------------------------------------------
1 | monitorRole readonly
2 | cassandra readwrite
3 | controlRole readwrite \
4 | create javax.management.monitor.,javax.management.timer. \
5 | unregister
6 |
--------------------------------------------------------------------------------
/.github/files/jmxremote.password:
--------------------------------------------------------------------------------
1 | monitorRole QED
2 | controlRole R&D
3 | cassandra cassandrapassword
4 |
--------------------------------------------------------------------------------
/.github/files/keystore.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thelastpickle/cassandra-reaper/b0c172a9bb0389d7fc76757172fa1c7c60d4fa0f/.github/files/keystore.jks
--------------------------------------------------------------------------------
/.github/files/mutual_auth_ca.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDEzCCAfugAwIBAgIUFKo4A37pUPXWajJdf5/7EnpSNyEwDQYJKoZIhvcNAQEN
3 | BQAwGDEWMBQGA1UEAwwNTmV0dHlUZXN0Um9vdDAgFw0yNDAxMTkxNjUxNTlaGA8y
4 | MTIzMTIyNjE2NTE1OVowGDEWMBQGA1UEAwwNTmV0dHlUZXN0Um9vdDCCASIwDQYJ
5 | KoZIhvcNAQEBBQADggEPADCCAQoCggEBAJzEkIoOIu/A+p6OOvNJc2Zny86gW0sR
6 | r5UPFT415Z78sH/gd3RYxvdpe3JCtTTMbmKaC5rQBkkYPbE1096+aTfEudzXIAyM
7 | Zj/q53C4yPCc0FX56Isv24lMSL98yFtd1ZOloFICKOGCA1hrtoASjpmmiTGllI6s
8 | WceThVr19EllNtNtacDumoNZz5keXHuyoLvrPLWo9gU4ldJP8dziqYDUkigJe0xD
9 | L0DmVNgNLPLKnuiHLTJviuuPoWQCkUOCdOFlNXooo37Za6PT5no0Hin1WJFAgEWK
10 | U3da9Hbgn8nwRUQVBPgywuE7+MX0R4nLuBoo02BeKQc/xAvfjnDdgBECAwEAAaNT
11 | MFEwHQYDVR0OBBYEFFBkDgjEaXUiN3FUgRfmK5oGrGnvMB8GA1UdIwQYMBaAFFBk
12 | DgjEaXUiN3FUgRfmK5oGrGnvMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEN
13 | BQADggEBABQ19Qnt9wp6rkPMJ/rPESaPh+uQU313m/Vgfjp/7ExvY8OkyDkOLs4r
14 | 2OtO38mi9pBTmAMwF0UH38a2/OK8g/kNSwHu7zIjp52Ic5BUxSMXt7MWE/FD8LQR
15 | sd++w32CEYSd5XqaVYNDrNQkYKM/G2QEK8FsHPnEC9JnL4TglH9b2+cEdxqfvraH
16 | VduamM85xvA2qyR2pgStO2I94pnVbXCpGCSts9AEVMTGXhDhMEyCwTcgpyUgsYfc
17 | njVfnKhXEM1ODlGMDOsNbzETgKIR8rZRu6auBOI15G07DHiBJTKIlu6OgAwWfxbY
18 | 6+q3zBcb5lbLib+zfxGCm9Pb8gInU0o=
19 | -----END CERTIFICATE-----
20 |
--------------------------------------------------------------------------------
/.github/files/mutual_auth_server.crt:
--------------------------------------------------------------------------------
1 | -----BEGIN CERTIFICATE-----
2 | MIIDJDCCAgygAwIBAgIUJTGy6IraiFSQh5LsKwXXFuW5RAQwDQYJKoZIhvcNAQEL
3 | BQAwGDEWMBQGA1UEAwwNTmV0dHlUZXN0Um9vdDAeFw0yNDAxMTkxNjUxNTlaFw0y
4 | OTAxMTcxNjUxNTlaMBoxGDAWBgNVBAMMD05ldHR5VGVzdFNlcnZlcjCCASIwDQYJ
5 | KoZIhvcNAQEBBQADggEPADCCAQoCggEBAN9p7uvZl4LkTVNLZPVaWG0KSXh66ZnV
6 | YaQB2tsj1BaOHZsmW7xfwptrZp5L+adPQfeAg1wSq3EKqAg2fiatysWPJciVFLnZ
7 | pnCGho4VFzWtwMfjCpgeJ3JM1u4h4gCXlZKAQeEMrcfdzB8azqqDyF0ip4oydGRn
8 | NfG3apK1wMVA5yi3MsXrklEQZrbKCOj913JNS/W2pJGFyXS5ljJIME7BPv1aWngv
9 | RZRLRPWj+1fDzfwvbaJ01+YJW9h3vuy3whBrpCx8koTx5mTgWm9ywD9CXhycM7Sr
10 | NvYJ3Ip2qfmPcFDbLt6+6mKx9i0400DLuQs7mp4D6q4mXlv1d7sOmIkCAwEAAaNk
11 | MGIwIAYDVR0RBBkwF4IJbG9jYWxob3N0hwR/AAABhwR/AAACMB0GA1UdDgQWBBSo
12 | rmVS78ucWg8iOxzl10T63yn1HDAfBgNVHSMEGDAWgBRQZA4IxGl1IjdxVIEX5iua
13 | Bqxp7zANBgkqhkiG9w0BAQsFAAOCAQEAMgjD6WyeuvJ7695Fz/KkG/dJlf6tf5CO
14 | Bv6fV1IC4hKQfux34uuidH4Isp4tlou9gscQiX6tX5aUHCJns6slGvIyiV+niMPO
15 | g681gaInTJ2qEfvsP6Mzcb/liPUYNgS1iG2tQG+eWkEPEAlizOufCUzK+RCJtoIR
16 | JZgarU4Y5mdE9Yi+0qEqjnuDGqKMr/eyywnkQ7Ys/rMybPEpz75lXPXMpx9iZTub
17 | c/InE0o4SftTyYBieOb6fzYt9UwwtU8XT5eGNk+I41COWGYJKYbfkgfitXR1xgSM
18 | 4B3aZjXr0L8H0RTbPLk+Zl+jtZnQXe4e40CX1jk+T2+yz9QMrv5FhQ==
19 | -----END CERTIFICATE-----
20 |
--------------------------------------------------------------------------------
/.github/files/reaper-cql-secret.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: reaper-cql-secret
5 | namespace: cass-operator
6 | data:
7 | # username: reaper-cql
8 | username: cmVhcGVyLWNxbA==
9 | # password: R3ap3r
10 | password: UjNhcDNy
11 |
--------------------------------------------------------------------------------
/.github/files/reaper-ui-secret.yaml:
--------------------------------------------------------------------------------
1 | apiVersion: v1
2 | kind: Secret
3 | metadata:
4 | name: reaper-ui-secret
5 | namespace: cass-operator
6 | data:
7 | # username: reaper-ui
8 | username: cmVhcGVyLWpteA==
9 | # password: R3ap3r
10 | password: UjNhcDNy
11 |
--------------------------------------------------------------------------------
/.github/files/truststore.jks:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thelastpickle/cassandra-reaper/b0c172a9bb0389d7fc76757172fa1c7c60d4fa0f/.github/files/truststore.jks
--------------------------------------------------------------------------------
/.github/workflows/check_pr_linked_issue.yaml:
--------------------------------------------------------------------------------
1 | # Copyright 2022-2022 DataStax, Inc.
2 | #
3 | # Licensed under the Apache License, Version 2.0 (the "License");
4 | # you may not use this file except in compliance with the License.
5 | # You may obtain a copy of the License at
6 | #
7 | # http://www.apache.org/licenses/LICENSE-2.0
8 | #
9 | # Unless required by applicable law or agreed to in writing, software
10 | # distributed under the License is distributed on an "AS IS" BASIS,
11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | # See the License for the specific language governing permissions and
13 | # limitations under the License.
14 | on:
15 | pull_request_target:
16 | types: [opened, edited, reopened, synchronize]
17 |
18 | jobs:
19 | check_pull_requests:
20 | runs-on: ubuntu-latest
21 | name: Check linked issues
22 | steps:
23 | - uses: nearform-actions/github-action-check-linked-issues@v1
24 | continue-on-error: true
25 | id: check-linked-issues
26 | with:
27 | exclude-branches: "dependabot/**"
28 | comment: true
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Build products and artifacts
2 | .m2-repository/
3 | pom.xml.versionsBackup
4 | target/
5 | target-ide/
6 | dependency-reduced-pom.xml
7 |
8 | # Stuff from various IDE's and editors
9 | *.iml
10 | *~
11 | .idea/*
12 | *.log
13 | *.log.gz
14 | nb-configuration.xml
15 | .metals/
16 |
17 | # Mac OS X Finder
18 | .DS_Store
19 |
20 | .classpath
21 | .settings/
22 | .project
23 | /src/server/build/
24 | src/packaging/build/
25 | *.deb
26 | *.rpm
27 |
28 | # frontend dev stuff
29 | src/ui/bower_components
30 | src/ui/node_modules
31 | src/ui/package-lock.json
32 | src/ui/app/jsx/navbar.jsx
33 | src/ui/build
34 |
35 | # Docker Compose persistent storage directory
36 | src/packaging/data
37 | /src/packages/
38 |
39 | # SSL stores directory
40 | src/packaging/ssl-stores
41 | /src/server/nbproject/
42 | src/ui/theming/bootstrap/node_modules
43 | .vscode
44 |
--------------------------------------------------------------------------------
/NOTICE.md:
--------------------------------------------------------------------------------
1 | Reaper for Apache Cassandra
2 | Licensed under the Apache 2.0 License
3 |
4 | Files are copyrighted in one of the three following ways.
5 |
6 | a)
7 | ```
8 | Copyright 201X-2017 Spotify AB
9 | Copyright 201X-2018 The Last Pickle Ltd
10 | ```
11 | b)
12 | ```
13 | Copyright 2015-2016 Stefan Podkowinski
14 | Copyright 201X-2018 The Last Pickle Ltd
15 | ```
16 | c)
17 | ```
18 | Copyright 201X-2018 The Last Pickle Ltd
19 | ```
20 |
21 |
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | coverage:
2 | precision: 2
3 | round: down
4 | range: "63...100"
5 | status:
6 | project:
7 | default:
8 | target: 63%
9 | threshold: 6%
10 | base: auto
11 | comment:
12 | layout: "reach, diff, flags, files"
13 | behavior: default
14 | require_changes: false # if true: only post the comment if coverage changes
15 | after_n_builds: 17
16 | codecov:
17 | require_ci_to_pass: no
18 | notify:
19 | after_n_builds: 17
20 | wait_for_ci: no
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | cassandra-reaper.io
--------------------------------------------------------------------------------
/docs/categories/index.xml:
--------------------------------------------------------------------------------
1 |
2 |
Business. Corporate. Agency.
Portfolio. Blog. E-commerce.
All reaper statements are idempotent. Reaper generates few read and writes requests, so it's 11 | * ok to keep retrying. 12 | * 13 | *
Sleep 100 milliseconds in between subsequent read retries. Fail after the tenth read retry. 14 | * 15 | *
Writes keep retrying forever.
16 | */
17 | public final class ReaperRetryPolicyFactory implements RetryPolicyFactory {
18 |
19 | @Override
20 | public void accept(DropwizardProgrammaticDriverConfigLoaderBuilder builder) {
21 | builder.withClass(DefaultDriverOption.RETRY_POLICY_CLASS, RetryPolicyImpl.class);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/server/src/main/java/io/cassandrareaper/storage/cassandra/migrations/Migration018.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * Copyright 2019-2019 The Last Pickle Ltd
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package io.cassandrareaper.storage.cassandra.migrations;
19 |
20 | import com.datastax.oss.driver.api.core.CqlSession;
21 |
22 | public final class Migration018 {
23 |
24 | private Migration018() {}
25 |
26 | /** fix repair start, pause and end times in the repair_run table. */
27 | public static void migrate(CqlSession session) {
28 | FixRepairRunTimestamps.migrate(session);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/server/src/main/java/io/cassandrareaper/storage/cassandra/migrations/Migration019.java:
--------------------------------------------------------------------------------
1 | /*
2 | *
3 | * Copyright 2019-2019 The Last Pickle Ltd
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package io.cassandrareaper.storage.cassandra.migrations;
19 |
20 | import com.datastax.oss.driver.api.core.CqlSession;
21 |
22 | public final class Migration019 {
23 |
24 | private Migration019() {}
25 |
26 | /** fix repair start, pause and end times in the repair_run table. */
27 | public static void migrate(CqlSession session) {
28 | FixRepairRunTimestamps.migrate(session);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/src/server/src/main/java/io/cassandrareaper/storage/cassandra/migrations/package-info.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014-2017 Spotify AB
3 | * Copyright 2016-2018 The Last Pickle Ltd
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | @javax.annotation.ParametersAreNonnullByDefault
19 | package io.cassandrareaper.storage.cassandra.migrations;
20 |
--------------------------------------------------------------------------------
/src/server/src/main/java/io/cassandrareaper/storage/metrics/IDistributedMetrics.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2014-2017 Spotify AB
3 | * Copyright 2016-2019 The Last Pickle Ltd
4 | *
5 | * Licensed under the Apache License, Version 2.0 (the "License");
6 | * you may not use this file except in compliance with the License.
7 | * You may obtain a copy of the License at
8 | *
9 | * http://www.apache.org/licenses/LICENSE-2.0
10 | *
11 | * Unless required by applicable law or agreed to in writing, software
12 | * distributed under the License is distributed on an "AS IS" BASIS,
13 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | * See the License for the specific language governing permissions and
15 | * limitations under the License.
16 | */
17 |
18 | package io.cassandrareaper.storage.metrics;
19 |
20 | import io.cassandrareaper.core.GenericMetric;
21 |
22 | import java.util.List;
23 | import java.util.Optional;
24 |
25 | public interface IDistributedMetrics {
26 | List