Commit Graph
872 Commits
Author SHA1 Message Date
Kevin Toth c81c9fdc12 Update pom's for 8.6.0-SNAPSHOT 2026-10-29 11:47:11 +00:00
Kevin Toth 095ca160b2 Update pom's for 8.5.0-SNAPSHOT 2026-10-22 15:14:39 +00:00
Ivan Bella e4d59a5fa9 Updated springframework to 5.3.39 and security to 5.8.16 for java 17 (#4020) 2026-10-22 14:40:47 +00:00
awrigh11 120a430f3d bump accumulo version to 2.1.6 (#4029) 2026-10-14 17:57:48 +00:00
Laura Schanno aba4adffa2 Add helper classes for interacting with Zookeeper (#3815) 2026-10-13 14:01:35 +00:00
Moriarty 7852d921bc Migrate connection pool tests to JUnit 5 (#3987) 2026-10-13 11:48:46 +00:00
Kevin Toth 6f5624cc8c Update pom's for 8.4.0-SNAPSHOT 2026-10-13 10:31:37 +00:00
Kevin Toth 46e2ecddc5 8.2.1-SNAPSHOT 2026-10-05 12:23:56 +00:00
Kevin Toth 9bde7da67e 8.2.0 2026-10-05 12:23:35 +00:00
Kevin Toth a68175c01a Update pom's for 8.3.0-SNAPSHOT 2026-10-05 12:19:46 +00:00
Kevin Toth 045de2e906 Update pom's for 8.2.0-SNAPSHOT 2026-09-21 11:07:38 +00:00
alerman 4f0b97ec72 Task/java17 build baseline (#3907) 2026-09-16 14:24:41 +00:00
Kevin Toth b646acb79b Update pom's for 8.1.0-SNAPSHOT 2026-09-02 15:05:37 +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
MoriartyandClaude Opus 5 d50e7cc3a4 Make test fork reuse and heap configurable per module (#3904)
Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
2026-09-02 11:19:48 +00:00
Kevin Toth c8c648e12a Update pom's for 7.47.0-SNAPSHOT 2026-08-31 16:31:44 +00:00
Kevin Toth ed50f5a76f Update pom's for 7.46.0-SNAPSHOT 2026-08-26 15:39:22 +00:00
hgklohr a3b817a85b Update pom's for 7.45.0-SNAPSHOT 2026-08-13 16:56:05 +00:00
MoriartyandClaude Opus 5 40288a955e Upgrade Accumulo to 2.1.5 (#3811)
Pick up in-memory-accumulo 4.0.6, which is the first release built
against Accumulo 2.1.5.

2.1.5 registers an UpgradeUtil KeywordExecutable that every Accumulo
process service-loads at startup. It uses JCommander's IUsageFormatter,
added in 1.78, so with jcommander 1.72 on the classpath
MiniAccumuloCluster fails to launch ZooKeeper and the failure surfaces
as a misleading ZooKeeperBindException.

Co-authored-by: Claude Opus 5 <[email protected]>
2026-08-12 19:51:34 +00:00
hgklohr 2fa747e48e Update pom's for 7.44.0-SNAPSHOT 2026-08-05 13:44:37 +00:00
alerman 436fc48445 Remove findbugs now that we use spotbugs (#3724)
Removing findbugs since we have moved to spotbugs
2026-07-23 09:48:45 +00:00
hgklohr 3aeffd7c56 Update pom's for 7.43.0-SNAPSHOT 2026-07-21 15:40:23 +00:00
Daniel Roberts 0cd1fa3223 Switches from Jgit to using Native Git (#3661)
Updates the git-commit-id-maven-plugin version to 9.2.0 and switches it
from using JGit to native git.

This reduces the git.properties generation step time from ~65 seconds to
~20 seconds.
2026-07-09 09:00:02 +00:00
Bill Oley da49027788 change log4j version to 2.26.1 (#3660) 2026-07-08 23:43:57 +00:00
Laura Schanno e7d9f5a63c Always look for checkstyle.xml in project root (#3645)
Prefix the checkstyle.xml path with the property
`${maven.multiModuleProjectDirectory}`. This will prevent child modules
from looking inside their own sub-folders for checkstyle.xml. This will
allow us to build child modules from within their root folders without
maven complaining about not being able to find the checkstyle.xml.
2026-07-02 09:50:18 +00:00
Bill Oley eede0a78e7 update log4j to 2.26.0 (#3623) 2026-06-30 15:15:23 -04:00
MoriartyandClaude Sonnet 4.6 16e61e196d ban powermock (#3644)
ban powermock dependency and import

---------

Co-authored-by: Claude Sonnet 4.6 <[email protected]>
2026-06-30 13:46:03 +00:00
Bill Oley 6129a0901d Feature/banned dependencies (#3621)
the banned dependencies in web-service/pom.xml were a subset of those in
pom.xml and were overriding them
enforce trhe currently specified log4j version using banned dependencies
(of prior version)
2026-06-26 20:37:46 +00:00
Bill Oley 7bd790fce4 specify version of log4j dependency in spotbugs and spring-boot plugins in configcheck, parent poms (#3622)
specify version of log4j dependency in spotbugs and spring-boot plugins
in configcheck, parent poms

these plugins otherwise specify their own versions of log4j which get
downloaded when they are executed
2026-06-26 20:14:01 +00:00
hgklohr 7691b73e6b Update pom's for 7.42.0-SNAPSHOT 2026-06-18 20:06:11 +00:00
Joe Alphonso eb927b47bf bump select microservice starter and api versions 2026-06-12 18:16:01 -04:00
Joe Alphonso b3a6bbd133 Setting next Development version to 7.41.2-SNAPSHOT 2026-06-12 17:29:46 -04:00
Joe Alphonso 8bf504e095 Preparing for 7.41.1 Release 2026-06-12 17:29:01 -04:00
Joe Alphonso 388e99ded3 swap SNAPSHOT dependencies for Released versions 2026-06-12 17:22:43 -04:00
Joe Alphonso 22793bd004 Setting next Development version to 7.41.1-SNAPSHOT 2026-06-12 16:24:06 -04:00
Joe Alphonso f522829b14 Preparing for 7.41.0 Release 2026-06-12 16:20:53 -04:00
Joe Alphonso 2ee6e06c83 Set accumulo dictionary and query-metric api version to SNAPSHOT 2026-06-12 16:09:39 -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
hgklohr 872f374ec5 Update pom's for 7.41.0-SNAPSHOT 2026-06-09 17:24:05 +00:00
hgklohr d637c2d050 Update pom's for 7.40.0-SNAPSHOT 2026-05-20 11:17:19 +00:00
dtspence 8734ba3477 Log4j update to 2.25.4 (#3527) 2026-04-30 16:35:26 +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
hgklohr 75e32682d2 Update pom's for 7.39.0-SNAPSHOT 2026-04-27 11:11:00 +00:00
Moriarty e3aff7031f Ban hamcrest imports (#3501) 2026-04-07 20:06:15 +00:00
Joseph Alphonso fc05779672 Revert "spotless can format too" (#3495)
Reverts NationalSecurityAgency/datawave#3483
2026-04-02 09:13:58 -04: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
Moriarty 153bc363f4 Enforce static imports for JUnit5 assertions (#3482)
Do not allow qualified usages of JUnit5 Assertions class (i.e., enforce
static imports)
2026-03-30 20:40:22 +00:00
hgklohr d40f3c82cb Update pom's for 7.38.0-SNAPSHOT 2026-03-30 19:41:29 +00:00
cc9fd1caca Spotless maven plugin (#3478)
replace impsort with spotless maven plugin to automatically cleanup
unused imports
formatting is fast and occurs early in the maven lifecycle  
prevents checkstyle from failing later for unused imports

---------

Co-authored-by: Joe Alphonso <[email protected]>
Co-authored-by: alerman <[email protected]>
2026-03-27 14:03:39 +00:00
Bill Oley 871e2ea99b Code changes to support main datawave using accumulo 2.1.4 instead of 2.1.4-5792fed3-bulkv2 (#3453)
Accumulo changes from 2.1.4-5792fed3-bulkv2 (pre-2.1.4 release) to 2.1.4
reuire datawave code changes.

accumulo class ColumnFamily changed fields columnFamily,
columnQualifier, etc from public to private. Wes houldn't have been
using them anyway.
IteratorConfigUtil.loadIterators() declares throws
ReflectiveOperationException even though that exception is caught
internally and is thrown as a RuntimeException. Also, this declaration
is removed in accumulo 3.0.0.

The microservices can be upgraded to accumulo 2.1.4 after there is a
version of datawave that won't break at runtime while using accumulo
2.1.4. (illegal access)
2026-03-26 16:10:54 +00:00