Commit Graph
107 Commits
Author SHA1 Message Date
Seth SmuckerandLaura Schanno dcb29be85f Finish the microservice starter bump from 4.0.12 to 4.0.13 (#3919)
Co-authored-by: Laura Schanno <[email protected]>
2026-10-01 17:56:10 +00:00
Ivan Bella fd1f5cc461 5.0.15 2026-09-02 17:20:34 +00:00
Ivan Bella 8bd2865af4 4.0.14 2026-09-02 17:17:39 +00:00
Ivan Bella b4527ebf53 Updated datawave dependencies to 8.0.0 2026-09-02 17:16:29 +00:00
807d61b52e Migrate to Wildfly 26.1.3.Final (#3508)
Co-authored-by: Ivan Bella <[email protected]>
Co-authored-by: Bill Oley <[email protected]>
Co-authored-by: Moriarty <[email protected]>
Co-authored-by: Claude Opus 5 <[email protected]>
2026-09-02 14:04:28 +00:00
Drew FarrisandCopilot 73ae0df3bc Update microservice pom parent version to fix log4j inconsistency (#3901)
Co-authored-by: Copilot <[email protected]>
2026-09-01 13:55:55 +00:00
Bill Oley 4e650f4e0b update versions of accumulo, in-memory-accumulo, datawave, and spring-boot-starter-datawave-query to resolve test failures 2026-08-25 18:48:15 -04:00
alerman 5bb076657c [maven-release-plugin] prepare for next development iteration 2026-07-09 19:44:43 +00:00
alerman c0aa165314 [maven-release-plugin] prepare release microservices/services/query/service-1.0.16 2026-07-09 19:44:40 +00:00
alerman 7a4ea9b9cf auto-update: update deps for microservices/services/query/service 2026-07-09 19:38:10 +00:00
alerman aff4f602d4 [maven-release-plugin] prepare for next development iteration 2026-07-09 16:31:18 +00:00
alerman 79419a9c4e [maven-release-plugin] prepare release microservices/services/query/api-1.0.4 2026-07-09 16:31:16 +00:00
alerman bebe734955 auto-update: update deps for microservices/services/query/api 2026-07-09 16:29:18 +00:00
Bill Oley da49027788 change log4j version to 2.26.1 (#3660) 2026-07-08 23:43:57 +00:00
Bill Oley 654750d057 Use new markings api and resolve compile errors (#3649) 2026-07-06 19:57:58 +00:00
Bill Oley eede0a78e7 update log4j to 2.26.0 (#3623) 2026-06-30 15:15:23 -04:00
Bill Oley bd3d04ec02 update module parent to latest datawave-microservice-parent:4.0.12 (#3624)
some of the modules had not been updated to the most recently released
datawave-microservice-parent
2026-06-29 14:59:17 -04:00
Joseph AlphonsoandJoe Alphonso 336293cafc Replace Markings Map with POJO (#3469)
update accumulo-utils to use a POJO for storing markings and then
updated the rest of the codebase that referenced it.
replaced some of the ColumnVisibility usage with AccessExpression to
improve performance.

---------

Co-authored-by: Joe Alphonso <[email protected]>
2026-06-12 15:25:43 -04:00
alerman 1d2e79bdaa Update version.datawave to last tag (#3584)
Update version.datawave across microservices to 7.39.1 (last released
tag)
2026-06-05 13:52:25 +00:00
alermanandalerman d470c8b2b5 Version bumps for released micro services (#3586)
Co-authored-by: alerman <[email protected]>
2026-06-05 08:27:14 -04:00
alerman 6dfc647e44 Update versions due to failed release. Add logic to ignore modifier versions when running (#3580) 2026-06-04 05:46:09 -04:00
alerman a24ece28d1 Reset snapshot versions (#3550) 2026-05-11 17:34:50 +00:00
alerman 67595b2bfa auto-update: bump spring-boot-starter-datawave-query to 1.0.11-test-cascade-6 2026-05-08 19:55:13 +00:00
alerman e9a258e81c auto-update: bump spring-boot-starter-datawave-query-metric to 3.0.6-test-cascade-6 2026-05-08 19:39:59 +00:00
alerman c85aed0601 auto-update: bump spring-boot-starter-datawave-audit to 4.0.6-test-cascade-6 2026-05-08 19:04:09 +00:00
alerman 8e0e11c048 auto-update: bump hazelcast-common to 4.0.5-test-cascade-6 2026-05-08 18:31:17 +00:00
alerman a167e4790c auto-update: bump spring-boot-starter-datawave to 4.0.8-test-cascade-6 2026-05-08 18:11:10 +00:00
alerman 5941d379ed auto-update: bump query-metric-api to 4.1.4-test-cascade-6 2026-05-08 18:02:26 +00:00
alerman 82d989db8e auto-update: bump query-api to 1.0.2-test-cascade-6 2026-05-08 17:58:01 +00:00
alerman 7723013633 [maven-release-plugin] prepare for next development iteration 2026-05-08 17:56:49 +00:00
alerman c8cd209d0a [maven-release-plugin] prepare release microservices/services/query/api-1.0.2-test-cascade-6 2026-05-08 17:56:47 +00:00
alerman e0ed31bf2a auto-update: update deps for microservices/services/query/api 2026-05-08 17:54:39 +00:00
alerman 80897dccf2 auto-update: bump authorization-api to 4.0.1-test-cascade-6 2026-05-08 17:30:31 +00:00
alerman a3903c58cb auto-update: bump audit-api to 4.0.1-test-cascade-6 2026-05-08 17:26:53 +00:00
alerman 51a7060044 auto-update: bump authorization-api to 4.0.3-test-cascade-5 2026-05-08 14:42:24 +00:00
alerman cbf54457a8 auto-update: bump audit-api to 4.0.3-test-cascade-5 2026-05-08 14:27:17 +00:00
Adam Lerman 3f0be96a4a Update versions 2026-05-08 10:06:03 -04:00
alerman 90efabbf2d auto-update: bump authorization-api to 4.0.3-test-cascade-2 2026-05-08 12:10:39 +00:00
alerman 992a4c7625 auto-update: bump audit-api to 4.0.3-test-cascade-2 2026-05-08 11:57:29 +00:00
2e0fc4187b Add ability to enforce concurrent query limits (#3257)
## Configuration
Add the ability to enforce concurrent query limits across a group of
webservers. Zookeeper is used to track active queries and the following
data:
- The query ID
- The user who submitted the query
- The system the query was submitted on
- The query logic the query originated from

Query limit enforcement is done through the `QueryLimiter` class. Given
a user, system, and query logic, it can determine if any of the
following limits have been exceeded:

- The max allowed concurrent queries for the user.
- The max allowed concurrent queries of the query logic for the user.
- The max allowed concurrent queries for the system.
- The max allowed concurrent queries of the query logic for the system.

Limits may be defined and customized on a per-user and per-system basis.
They may also be defined for groups of query logics. The classes
`UserLimitProvider`, `SystemLimitProvider`, and
`QueryLogicGroupLimitProvider` are respectively responsible for
identifying the best limits to enforce for a user, system, and query
logic. They will be initialized in the `QueryLimiter` after providing a
`QueryLimitConfiguration` instance. The following can be configured:

On a system-wide basis:
- The default concurrent user query limit. This applies to the total
number of queries a user may run across all systems. May be overridden
per user.
- The default concurrent system query limit. Primarily to avoid a system
getting overloaded. May be overridden per system.

On a per-system basis:
- The system name/ids the configuration targets. Regex matching is
supported. Pattern uniqueness is enforced.
- The concurrent system query limit. Overrides the system-wide value.
- Whether queries submitted to the system count towards a user's
concurrent query total. This is always true unless specified otherwise.
- The concurrent system query limit for different query logic groups.
Regex matching against group names is supported. Pattern uniqueness is
enforced.

On a per-user basis:
- The user DN.
- The user's concurrent query limit. Overrides the system-wide
configuration.
- The user's concurrent query limit for different query logic groups.
Regex matching against group names is supported.

On a per-query-logic-group basis:
- The group name.
- The query logics included in the group. Regex matching is supported.
Pattern uniqueness is enforced.
- The default concurrent user query limit. This applies to the total
concurrent queries a user may run that originate from a query logic in
the group across all systems.

Given the possibilities for exact matches, partial regex matches, and
wildcard regex matches, the determination of the best limit to use for
any particular system, query logic, or query logic group is done by
sorting matches into the following 'matching buckets' (in best-match
priority):

1. Exact match: We attempt to find an exact match first and use the
associated limit.
2. Partial regex (non-wildcard-only): If we cannot find an exact match,
then we attempt to find all partial matches, and see if any of their
limits are met.
3. Wildcard-only regex: In the case of no exact or partial matches, we
use the wildcard match with the lowest limit.

## Implementation

Checking limits and marking as active/inactive is done through the
`QueryLimiter` class. The three main methods to know are:
- `QueryLimiter.checkForLimits()`
- `QueryLimiter.countQueryTowardsLimits()`
- `QueryLimiter.stopCountingQueryTowardsLimits()`

When a query is marked as active via
`QueryLimiter.countQueryTowardsLimits()`, it will delegate to the
ActiveQueryTracker, which will in turn create nodes in Zookeeper under
the `ActiveQueries` namespace. When `ActiveQueryTracker.trackQuery()` is
called, the following nodes are created:

```
# Container nodes
/users/<userDn>/<queryLogic> # Only for queries on systems that count towards user limit
/systems/<system>/<queryLogic>
/distinctQueryLogics/<queryLogic>  [Only created if it does not exist.]

# Ephemeral nodes. These will auto-delete themselves if their associated Zookeeper connection ever goes down.
/users/<userDn>/<queryLogic>/<queryId> # Only for queries on systems that count towards user limit
/systems/<system>/<queryLogic>/<queryId>
```

`ActiveQueryTracker.trackQuery()` will return a `QueryHeartbeat` that
contain a list of `PersistentNode` (provided by the Apache Curator
library) wrappers around the ephemeral nodes listed above. The
`QueryHeartbeat` will maintain the connection to Zookeeper and attempt
to keep the ephemeral nodes present in Zookeeper until
`QueryHeartbeat.stop()` is called. If `QueryHeartbeat.stop()` is called,
or the webserver crashes, the ephemeral nodes will automatically be
deleted by Zookeeper.

The following error codes have been added:
```
412-20  - Concurrent query limit exceeded
500-164 - Error checking concurrent query limits
```
Closes #3100

---------

Co-authored-by: Bill Oley <[email protected]>
Co-authored-by: foster33 <[email protected]>
Co-authored-by: Ivan Bella <[email protected]>
2026-04-29 16:01:21 +00:00
Joseph AlphonsoandJoe Alphonso ebfd76f004 update microservices to use new parents (#3496)
bumps the microservice parent versions on the related modules that
reference them
re-enables formatting in CI now that all modules have the same plugin
configuration
verified there are no other commits in the microservice-parent and
microservice-service-parent besides the spotless plugin changes since
the last release

Co-authored-by: Joe Alphonso <[email protected]>
2026-04-02 15:43:05 +00:00
Joseph Alphonso fc05779672 Revert "spotless can format too" (#3495)
Reverts NationalSecurityAgency/datawave#3483
2026-04-02 09:13:58 -04:00
Joseph Alphonso 92ebbe013f Revert "bump microservice parents and enable formatting" (#3494)
Reverts NationalSecurityAgency/datawave#3490
2026-04-02 09:13:08 -04:00
Joseph AlphonsoandJoe Alphonso df83e5e5a4 bump microservice parents and enable formatting (#3490)
bumps the microservice parent versions on the related modules that
reference them
re-enables formatting in CI now that all modules have the same plugin
configuration
verified there are no other commits in the microservice-parent and
microservice-service-parent besides the spotless plugin change since the
last release

Co-authored-by: Joe Alphonso <[email protected]>
2026-04-01 16:12:04 +00:00
Joseph AlphonsoandJoe Alphonso 44b4033782 spotless can format too (#3483)
remove revelc formatter-maven-plugin and let spotless format all source
code

---------

Co-authored-by: Joe Alphonso <[email protected]>
2026-03-31 18:35:56 +00:00
Bill Oley 3cb9bb51a8 microservice property fixes, java-lang3 dependency update 2026-02-25 16:04:56 -05:00
alerman 9f6270235f [maven-release-plugin] prepare for next development iteration 2026-02-13 06:13:55 +00:00
alerman 87385b551a [maven-release-plugin] prepare release microservices/services/query/service-1.0.13 2026-02-13 06:13:53 +00:00
Bill Oley 81b431d065 Update to microservice-service-parent:5.0.9, starters, hazelcast in services 2026-02-12 23:52:05 -05:00
alerman 12fd49b9c5 [maven-release-plugin] prepare for next development iteration 2026-02-12 06:33:15 +00:00