# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

#-----------------------------------------------------------------
# CODEOWNERS and .asf.yml - ownerless so everyone "owns" it
#-----------------------------------------------------------------
#CODEOWNERS
#.asf.yml

#-----------------------------------------------------------------
# Serialization
#-----------------------------------------------------------------
geode-serialization/**                                            @bschuchardt @Bill
geode-core/**/org/apache/geode/pdx/**                             @upthewaterspout @dschneider-pivotal @agingade
geode-core/**/org/apache/geode/internal/*                         @bschuchardt @Bill @kirklund

#-----------------------------------------------------------------
# Membership
#-----------------------------------------------------------------
geode-membership/**                                               @bschuchardt @Bill
geode-old-client-support/**                                       @bschuchardt @Bill
geode-tcp-server/**                                               @bschuchardt @Bill
geode-core/**/org/apache/geode/distributed/internal/membership/** @bschuchardt @Bill

#-----------------------------------------------------------------
# P2P Messaging
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/tcp/**                    @bschuchardt @Bill
geode-core/**/org/apache/geode/distributed/internal/direct/**     @bschuchardt @Bill
geode-core/**/org/apache/geode/internal/net/**                    @bschuchardt @Bill
geode-core/**/org/apache/geode/net/**                             @bschuchardt @Bill
geode-core/**/org/apache/geode/distributed/*                      @bschuchardt @Bill @kirklund
geode-core/**/org/apache/geode/distributed/internal/*             @bschuchardt @Bill @kirklund

#-----------------------------------------------------------------
# Client/server messaging and cache operations
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/cache/client/**                    @bschuchardt @Bill @kirklund
geode-core/**/org/apache/geode/cache/server/**                    @bschuchardt @Bill @kirklund
geode-core/**/org/apache/geode/internal/cache/client/**           @bschuchardt @echobravopapa
geode-core/**/org/apache/geode/internal/cache/tier/**             @bschuchardt @echobravopapa @agingade

#-----------------------------------------------------------------
# Client Queues
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/ha/**               @agingade @boglesby
geode-core/**/org/apache/geode/internal/cache/tier/CacheClient*   @agingade @boglesby

#-----------------------------------------------------------------
# Experimental Protobuf based Client/Server
#-----------------------------------------------------------------
#geode-experimental-driver/**
#geode-protobuf/**
#geode-protobuf-messages/**

#-----------------------------------------------------------------
# Core Public API packages - Cache, Region, etc.
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/*                                  @dschneider-pivotal @boglesby @kirklund
geode-core/**/org/apache/geode/cache/*                            @dschneider-pivotal @boglesby @kirklund
geode-core/**/org/apache/geode/cache/util/**                      @dschneider-pivotal @boglesby

#-----------------------------------------------------------------
# Distributed Locks
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/distributed/internal/locks/**      @dschneider-pivotal @pivotal-eshu @kirklund

#-----------------------------------------------------------------
# Core region implementations and plumbing
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/*                   @nabarunnag @DonalEvans @jchen21 @kirklund

#-----------------------------------------------------------------
# Region entry management
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/entries/**          @dschneider-pivotal @sabbey37 @bschuchardt @upthewaterspout @kirklund @mhansonp
geode-core/**/org/apache/geode/internal/cache/region/entry/**     @dschneider-pivotal @sabbey37 @bschuchardt @upthewaterspout @kirklund @mhansonp
geode-core/**/org/apache/geode/internal/cache/map/**              @dschneider-pivotal @sabbey37 @bschuchardt @upthewaterspout @kirklund @mhansonp
geode-core/**/org/apache/geode/compression/**                     @dschneider-pivotal @sabbey37 @kirklund
geode-core/**/org/apache/geode/internal/cache/compression/**      @dschneider-pivotal @sabbey37 @kirklund

#-----------------------------------------------------------------
# Partitioned Regions
#-----------------------------------------------------------------
geode-rebalancer/**                                               @boglesby @BenjaminPerryRoss
geode-core/**/org/apache/geode/internal/cache/partitioned/**      @boglesby @BenjaminPerryRoss @mhansonp @kirklund
geode-core/**/org/apache/geode/cache/partition/**                 @boglesby @BenjaminPerryRoss @mhansonp @kirklund

#-----------------------------------------------------------------
# Event tracking
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/event/**            @agingade @nabarunnag @gesterzhou

#-----------------------------------------------------------------
# Eviction
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/eviction/**         @agingade @dschneider-pivotal @mhansonp @kirklund
geode-core/**/org/apache/geode/internal/size/**                   @agingade @dschneider-pivotal @kirklund

#-----------------------------------------------------------------
# Offheap
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/offheap/**                @pivotal-eshu @dschneider-pivotal @kirklund

#-----------------------------------------------------------------
# Transactions
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/tx/**               @pivotal-eshu @gesterzhou
geode-core/**/org/apache/geode/internal/jta/**                    @pivotal-eshu @gesterzhou
geode-core/**/org/apache/geode/internal/cache/locks/**            @pivotal-eshu @gesterzhou @kirklund

#-----------------------------------------------------------------
# Function Execution
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/execute/**          @boglesby @sabbey37 @kirklund
geode-core/**/org/apache/geode/cache/execute/**                   @boglesby @sabbey37 @kirklund

#-----------------------------------------------------------------
# Querying
#-----------------------------------------------------------------
geode-cq/**                                                       @nabarunnag @DonalEvans @agingade
geode-core/**/org/apache/geode/cache/query/**                     @nabarunnag @DonalEvans @agingade

#-----------------------------------------------------------------
# Session State:
#-----------------------------------------------------------------
extensions/**                                                     @sabbey37 @jdeppe-pivotal @BenjaminPerryRoss
geode-core/**/org/apache/geode/internal/modules/util/**           @sabbey37 @jdeppe-pivotal @BenjaminPerryRoss

#-----------------------------------------------------------------
# DEV rest API
#-----------------------------------------------------------------
geode-web-api/**                                                  @jdeppe-pivotal @jinmeiliao

#-----------------------------------------------------------------
# Lucene integration
#-----------------------------------------------------------------
geode-lucene/**                                                   @nabarunnag @DonalEvans

#-----------------------------------------------------------------
# Memcached integration
#-----------------------------------------------------------------
geode-memcached/**                                                @nabarunnag @DonalEvans

#-----------------------------------------------------------------
# Misc Utilities
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/util/concurrent/**        @nabarunnag @boglesby @kirklund
geode-core/**/org/apache/geode/internal/shared/**                 @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/sequencelog/**            @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/concurrent/**             @nabarunnag @boglesby @kirklund
geode-core/**/org/apache/geode/distributed/internal/unsafe/**     @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/lang/**                   @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/monitoring/**             @nabarunnag @boglesby @kirklund
geode-core/**/org/apache/geode/internal/exception/**              @nabarunnag @boglesby @kirklund
geode-core/**/org/apache/geode/lang/**                            @nabarunnag @boglesby @kirklund
geode-core/**/org/apache/geode/ra/**                              @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/util/**                   @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/cache/vmotion/**          @nabarunnag @boglesby
geode-core/**/org/apache/geode/internal/jndi/**                   @nabarunnag @boglesby
geode-common/**                                                   @nabarunnag @boglesby @kirklund
geode-unsafe/**                                                   @nabarunnag @boglesby @kirklund

#-----------------------------------------------------------------
# Persistence
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/cache/persistence/**               @dschneider-pivotal @jchen21 @upthewaterspout @gesterzhou
geode-core/**/org/apache/geode/internal/cache/persistence/**      @dschneider-pivotal @jchen21 @upthewaterspout @gesterzhou
geode-core/**/org/apache/geode/internal/cache/backup/**           @dschneider-pivotal @agingade @jchen21 @upthewaterspout @gesterzhou

#-----------------------------------------------------------------
# Region Version Vectors - used for sychronization on
# member failures and persistent recovery
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/cache/versions/**         @dschneider-pivotal @gesterzhou @bschuchardt

#-----------------------------------------------------------------
# WAN messaging and queues
#-----------------------------------------------------------------
geode-wan/**                                                      @gesterzhou @boglesby
geode-core/**/org/apache/geode/cache/asyncqueue/**                @gesterzhou @boglesby
geode-core/**/org/apache/geode/cache/wan/**                       @gesterzhou @boglesby
geode-core/**/org/apache/geode/internal/cache/wan/**              @gesterzhou @boglesby

#-----------------------------------------------------------------
# Management
#-----------------------------------------------------------------
geode-management/**                                               @jdeppe-pivotal @jinmeiliao
geode-web-management/**                                           @jdeppe-pivotal @jinmeiliao
geode-gfsh/**                                                     @jdeppe-pivotal @jinmeiliao @mhansonp @kirklund
geode-pulse/**                                                    @jdeppe-pivotal @jinmeiliao @mhansonp
geode-http-service/**                                             @jdeppe-pivotal @jinmeiliao
geode-web/**                                                      @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/admin/**                           @jdeppe-pivotal @jinmeiliao @kirklund
geode-core/**/org/apache/geode/alerting/**                        @jdeppe-pivotal @jinmeiliao @kirklund
geode-core/**/org/apache/geode/management/**                      @jdeppe-pivotal @jinmeiliao @kirklund
geode-core/**/org/apache/geode/cache/configuration/**             @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/admin/**                  @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/cache/xmlcache/**         @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/cache/extension/**        @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/config/**                 @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/process/**                @jdeppe-pivotal @jinmeiliao @kirklund
geode-core/**/org/apache/geode/cache/internal/*                   @jdeppe-pivotal @jinmeiliao

#-----------------------------------------------------------------
# Security
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/examples/security/**               @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/examples/**                        @jdeppe-pivotal @jinmeiliao @mhansonp
geode-core/**/org/apache/geode/security/**                        @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/security/**               @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/cache/operations/**                @jdeppe-pivotal @jinmeiliao
geode-core/**/org/apache/geode/internal/cache/operations/**       @jdeppe-pivotal @jinmeiliao

#-----------------------------------------------------------------
# Logging
#-----------------------------------------------------------------
geode-log4j/**                                                    @mhansonp @kirklund
geode-logging/**                                                  @mhansonp @kirklund
geode-core/**/org/apache/geode/logging/**                         @mhansonp @kirklund
geode-core/**/org/apache/geode/internal/logging/**                @mhansonp @kirklund
geode-core/**/org/apache/geode/i18n/**                            @agingade @kirklund
geode-core/**/org/apache/geode/internal/i18n/**                   @agingade @kirklund
geode-core/**/org/apache/geode/internal/io/**                     @agingade @kirklund

#-----------------------------------------------------------------
# Metrics & Statistics
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/internal/statistics/**             @mhansonp @kirklund
geode-core/**/org/apache/geode/internal/stats50/**                @mhansonp @kirklund
geode-core/**/org/apache/geode/metrics/**                         @mhansonp @kirklund

#-----------------------------------------------------------------
# Region Snapshots
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/cache/snapshot/**                  @agingade @jchen21
geode-core/**/org/apache/geode/internal/cache/snapshot/**         @agingade @jchen21

#-----------------------------------------------------------------
# JDBC connector
#-----------------------------------------------------------------
geode-connectors/**                                               @agingade @jchen21
geode-core/**/org/apache/geode/datasource/**                      @agingade @BenjaminPerryRoss @jchen21
geode-core/**/org/apache/geode/internal/datasource/**             @agingade @BenjaminPerryRoss @jchen21

#-----------------------------------------------------------------
# Resource manager
#-----------------------------------------------------------------
geode-core/**/org/apache/geode/cache/control/**                   @kirklund @DonalEvans
geode-core/**/org/apache/geode/internal/cache/control/**          @kirklund @DonalEvans

#-----------------------------------------------------------------
# Testing utilities
#-----------------------------------------------------------------
#geode-concurrency-test/**
geode-dunit/**                                                    @mhansonp @kirklund
geode-junit/**                                                    @mhansonp @kirklund
#geode-jmh/**
geode-junit/**/org/apache/geode/test/util                         @jdeppe-pivotal @onichols-pivotal

#-----------------------------------------------------------------
# Redis API
#-----------------------------------------------------------------
geode-redis/**                                                    @sabbey37 @jdeppe-pivotal @nonbinaryprogrammer

#-----------------------------------------------------------------
# Build and tooling
#-----------------------------------------------------------------
#etc/**
*gradle*                                                          @rhoughton-pivot @onichols-pivotal
buildSrc/**                                                       @rhoughton-pivot @jdeppe-pivotal
buildSrc/**/DependencyConstraints.groovy                          @onichols-pivotal @dickcav
ci/**                                                             @onichols-pivotal @dickcav
ci/scripts/**                                                     @onichols-pivotal @dickcav @rhoughton-pivot
ci/scripts/repeat-new-tests.sh                                    @onichols-pivotal @dickcav @rhoughton-pivot @upthewaterspout @jdeppe-pivotal
dev-tools/**                                                      @onichols-pivotal @dickcav
docker/**                                                         @onichols-pivotal @dickcav
geode-management/src/test/script/update-management-wiki.sh        @onichols-pivotal @dickcav
#boms/**
static-analysis/**                                                @rhoughton-pivot @onichols-pivotal
geode-old-versions/**                                             @onichols-pivotal @dickcav
KEYS                                                              @onichols-pivotal @dickcav
geode-assembly/**                                                 @rhoughton-pivot @onichols-pivotal

#-----------------------------------------------------------------
# Documentation
#-----------------------------------------------------------------
geode-book/**                                                     @karensmolermiller @davebarnes97
geode-docs/**                                                     @karensmolermiller @davebarnes97
BUILDING.md                                                       @rhoughton-pivot @upthewaterspout
CODE_OF_CONDUCT.md                                                @upthewaterspout @pivotal-amurmann @nonbinaryprogrammer
LICENSE                                                           @onichols-pivotal @dickcav @metatype
NOTICE                                                            @onichols-pivotal @dickcav @metatype
/README.md                                                        @upthewaterspout @pivotal-amurmann
#TESTING.md
