blob: 7f4bdae3746f0dc2089717f9d36020c52c1b3dff [file] [log] [blame]
# Datastore Composite Index Configuration.
# https://developers.google.com/appengine/docs/python/config/indexconfig
#
# Below, most indexes come in pairs; one with the internal_only property,
# one without. This is because all queries when the user is not logged in
# have the filter internal_only == False.
#
# Composite index properties must be listed differently depending on how the
# properties are used. There are three main ways to use properties in a query:
# (1) In an equality filter.
# (2) In an inequality filter.
# (3) In a sort order.
# The properties below must be listed in this order. The "direction" only needs
# to be specified for properties used for sort order.
#
# To update the indexes in production after editing them here, you must run
# appcfg.py vacuum_indexes or appcfg.py update_indexes.
indexes:
# Used in main.py when fetching top improvements/regressions in past N days.
- kind: Anomaly
properties:
- name: sheriff
- name: timestamp
- kind: Anomaly
properties:
- name: internal_only
- name: sheriff
- name: timestamp
# Used in alerts.py for fetching recent un-triaged regressions for one sheriff.
- kind: Anomaly
properties:
- name: bug_id
- name: is_improvement
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
- kind: Anomaly
properties:
- name: internal_only
- name: bug_id
- name: is_improvement
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
# Used in alerts.py for fetching recent un-triaged anomalies, both regressions
# and improvements, for one sheriff, i.e. when the improvements button is on.
- kind: Anomaly
properties:
- name: bug_id
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
- kind: Anomaly
properties:
- name: internal_only
- name: bug_id
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
# Used in alerts.py for fetching recent regressions for one sheriff, regardless
# of triaged vs un-triaged status, i.e. when the triaged button is on.
- kind: Anomaly
properties:
- name: is_improvement
- name: sheriff
- name: timestamp
direction: desc
- kind: Anomaly
properties:
- name: internal_only
- name: is_improvement
- name: sheriff
- name: timestamp
direction: desc
# Used in alerts.py for fetching recent anomalies for one sheriff, including
# improvements and triaged, i.e. both improvements and triaged buttons are on.
- kind: Anomaly
properties:
- name: sheriff
- name: timestamp
direction: desc
- kind: Anomaly
properties:
- name: internal_only
- name: sheriff
- name: timestamp
direction: desc
# Used in group_report.py when querying for anomalies around a revision.
# No composite index is required without internal_only because then the
# query uses only one (indexed) property, end_revision.
- kind: Anomaly
properties:
- name: internal_only
- name: end_revision
# Might be unused!
# This index would enable querying for points for a particular test,
# filtering or sorting by revision, and possibly doing a projection
# query including value.
- kind: Row
properties:
- name: parent_test
- name: revision
- name: value
# Used in find_anomalies.GetRowsToAnalyze when getting latest points,
# with projection query for properties revision and value.
- kind: Row
properties:
- name: parent_test
- name: revision
direction: desc
- name: value
# Used in graph_revisions.py to do a projection query for timestamp, revision
# and value for points from a particular test.
- kind: Row
properties:
- name: parent_test
- name: revision
- name: timestamp
- name: value
# Used in several modules (graph_json.py and graph_csv.py) to fetch the latest
# points for a test.
- kind: Row
properties:
- name: parent_test
- name: revision
direction: desc
# This composite index enables querying for points for a particular test,
# filtering or sorting by revision. This may be unused, but it may be useful
# for queries on the interactive console.
- kind: Row
properties:
- name: parent_test
- name: revision
# May be unused!
# Likely used in new_points.py to query newest points for a particular test.
# However listing the latest points for a test also works when not logged in
# currently, although there appears to be no index in this file for that.
- kind: Row
properties:
- name: parent_test
- name: timestamp
direction: desc
# May be used in send_stoppage_alert_emails to fetch recent StoppageAlert
# entities for a particular sheriff, for both internal-only and public alerts.
- kind: StoppageAlert
properties:
- name: sheriff
- name: mail_sent
- kind: StoppageAlert
properties:
- name: internal_only
- name: sheriff
- name: mail_sent
# Used in alerts to fetch recent StoppageAlert entities for a particular
# sheriff, for both internal and non-internal users.
- kind: StoppageAlert
properties:
- name: sheriff
- name: timestamp
direction: desc
- kind: StoppageAlert
properties:
- name: internal_only
- name: sheriff
- name: timestamp
direction: desc
# Used in /alerts to query for stoppage alerts, for internal and external
# sheriffs.
- kind: StoppageAlert
properties:
- name: bug_id
- name: internal_only
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
- kind: StoppageAlert
properties:
- name: bug_id
- name: recovered
- name: sheriff
- name: timestamp
direction: desc
# Used in update_test_suites to query keys of test suites (parent_test == None)
# with deprecated and description projection. Two separate lists of
# test suites are kept, one for external and one for internal.
- kind: Test
properties:
- name: parent_test
- name: deprecated
- name: description
- kind: Test
properties:
- name: internal_only
- name: parent_test
- name: deprecated
- name: description
# Used in update_test_suites to query keys of test suites (parent_test == None)
# with monitored projection. Two separate lists of test suites are kept, one for
# external and one for internal.
- kind: Test
properties:
- name: parent_test
- name: monitored
- kind: Test
properties:
- name: internal_only
- name: parent_test
- name: monitored
# Used in list_tests.py to query Test by test path pattern.
- kind: Test
properties:
- name: master_name
- name: bot_name
- name: suite_name
- name: test_part1_name
- name: test_part2_name
- name: test_part3_name
- name: test_part4_name
- kind: Test
properties:
- name: internal_only
- name: master_name
- name: bot_name
- name: suite_name
- name: test_part1_name
- name: test_part2_name
- name: test_part3_name
- name: test_part4_name