All notable changes to Fili will be documented here. Changes are accumulated as new paragraphs at the top of the current major version. Each change has a link to the pull request that makes the change and to the issue that triggered the pull request if there was one.
- Removed excessive logging and exceptions caused during test runs
- Metadata Loader during test runs shouldn't try to connect to metadata service.
NoOpDataSourceMetadataLoadTask
- SegmentMetadata in tests do not parse correctly as lists, changing to a null object.
TestDruidWebService
- Noop cache shouldn't create useless connection to Memcached
StubTupleDataCache
- Metadata Loader during test runs shouldn't try to connect to metadata service.
-
Reworked RoleBased Request Mapping for greater generality and yet more flexibility
RoleBasedValidatorRequestMapper
has been added that applies to any ApiRequest, but otherwise behaves like the originalRoleBasedTableValidatorRequestMapper
.- The
RoleBasedTableValidatorRequestMapper
is now specific to the TablesApiRequest and handles requests for specific tables and fullview requests.
-
Dependency version bumps for security issues:
- Snakeyaml: https://bitbucket.org/snakeyaml/snakeyaml/issues/561/cve-2022-1471-vulnerability-in#comment-64634374
- json-smart: https://research.jfrog.com/vulnerabilities/stack-exhaustion-in-json-smart-leads-to-denial-of-service-when-parsing-malformed-json-xray-427633/
- protobuf: https://github.com/advisories/GHSA-h4h5-3hr4-j3g2
- netty-codec: https://github.com/advisories/GHSA-9vjp-v76f-g363
- replace cglib with bytebuddy (jdk conformance issues)
-
More flexible security in RoleBased Request Mapping
- Support default security mapping rule
- Support selecting security group from a property other than table name
The vast majority of improvements in 1.0 have been focused on better logging and resolving vulnerable dependencies.
-
Fixing intermittent test error related to json serialization
- Switched from String comparison to JsonNode comparison
-
Incompatbile jakson-joda and joda resulted in runtime error on deploy
- removed explicit joda depdendency to allow for implicit versioning from jackson.
-
New Dependent metric equality was too brittle
- Use dependent metric name equality instead of complete dependent metric equality.
- Use getter to pull both this and that dependent metrics to correctly utilize dynamic method dispatch.
- Added dependent metric time coalescence to base
PrototcolMetricImpl
-
Add Ability to Sort by Dimension
- Modified the DefaultOrderByGenerator.java for getting the order by column name
- Modified the DefaultOrderByGenerator.groovy for testing the dimension sorting feature.
- DatasourceMetadataLoader more extensible
- Changed internal resources to be protected to support extension
- Changed method that builds and executes callbacks to return those callbacks
-Support user configured messages for authorization failures
- Changed
AuthorizationStatus
from an enum to a class collecting constants. Make the description for failures be user configurable.
-ResultSet can carry messages to the response
- Added
ExtensibleResultSetSchema
and integrated it intoResultSetSerializationProxy
andResultSetResponseProcessor
-Cleaner weight check fields and names
-Total sketches and correct total lines in LogBlock
- Fixed total lines calculation
- Added total sketch calculation
-Log weight evaluation results in LogBlock
- Added logging for raw lines and raw sketches to Bard single log line.
- Added test data utilizing expanded WeightEvaluationQuery.
- Provided a QueryWeightUtilsAlwaysRun as a helper implementation.
-
Support protocol metrics reporting on dependent metrics
- Implemented
ExtendedMetricDependencies
on ProtocolMetricImpl - Updated all existing constructors to capture dependent metrics
- Implemented
-
Fili-sql minute timestampFormat support
- Add minute timestampFormat
-
Add better error messaging for invalid grain on base metrics
- Add better error message for base metrics with invalid grains by including the valid grains on the metrics
-
- Added metric columns part of data query with their type details to meta block
-
Support recurrence rules in dateTime expression
- Added explicit type parsing to dateTime Elements
- Added library to parse RRules from the dateTime elements
- Enhanced switches for various combinations of dateTimeElements
- Additional testing on new and old paths
- Created a limit parameter to prevent infinite recurrence rules from generating infinite reporting intervals.
-
Added long name contract to DimensionField
DimensionField
contains optionally serialized longName field.
-
Support macros on all granularity
- Support
current
andnext
onall
granularity - Added
currentDay
,currentWeek
,currentMonth
,currentQuarter
,currentYear
- Added
nextDay
,nextWeek
,nextMonth
,nextQuarter
,nextYear
- Support
-
- Added table name to partial data comparator
- Removed unmapped physical column warning
-
- Updated POM
- Explicitly added javax dependencies
- Removed reference to Corba error type
-
Extensions to support RateLimit reporting extensibility
- Renamed isUi to isExtended to more clearly indicate the purpose of the fields.
- Added extensible methods for generating global and personal rate limit generation.
- Added message to the
RateLimitRequestToken
interface to support richer logging of rate limit failures.
-
- Lost the use of the codenarc-maven-plugin because it's not compatible with groovy 2.5 and isn't supported.
- Possible solution: https://stackoverflow.com/questions/57576796/how-to-use-codenarc-maven-plugin-with-groovy-2-5
-
Make the default search results something more reasonable for a UI
- Gave the DimensionSearchServlet it's own default pagination that can be controlled via config, but defaulted to 50.
-
Added afterCache behavior to CacheV2ResponseProcessor
- Added afterCache() method
- Refactored
CacheV2ResponseProcessor
to make it more extensible (broke up component tasks into overridable methods) - Updated to add response context to after method and make the response construction extensible.
-
Capability to bypass URL in Role based authentication filter
- Added capability to bypass URL in
RoleBasedAuthFilter
even when user is not part of allowed user roles. - Added a config variable bard__allowed_urls to specify list of bypassed URLs.
- Added capability to bypass URL in
-
Update GeneratedMetricInfo to avoid StackOverflow
- Update getType() tp avoid recursion leading to stack overflow.
-
Enhance Rate Limiting Capability
- Add UI and non-UI user count capability to rate limiter
-
- Make field and constructor less private
-
- Make field less private
-
- Make field less private
- Decomposed getData into overridable methods
-
Make DataApiRequest Servlet Extensible
- Add parent subclass with query parameters to support adding general query elements
-
- Virtual dimensions have no storage associated with them and no physical columns
- Virtual dimensions will be bound in children of
ExtensibleDataApiRequestImpl
to maintain backwards compatibility for now inDataApiRequestImpl
SimpleVirtualDimension
will have its columns serialized without '|fieldname'- Output columns are not driven by requested columns not columns in the result set. Missing dimension rows will be expressed as null field values.
- parsing of PerDimensionFields will no longer rely on dimension dictionary but instead on the already chosen grouping dimensions
REQUESTED_API_DIMENSION_FIELDS
context property was added to support JobServlet asynchronous requests, however it doesn't work well with VirtualDimensions so if the ApiRequest is able to be the authority on requested fields it will be used instead.DataServlet
sanitized empty path elements early to avoid validation later
-
[Support null valued dimension, metric and time values to be null]#1183)
- Result to support null serialization of time, dimensions
- Sortable nullable DateTime in ResultSetMapper
- TimeDimensionResultSetMapper pulls dimension time into timestamp
- TimeDimension SimpleVirtualDimension to simplify time injecting queries
- Made virtual dimension equality based on apiName (to allow distinct but equal request and response dimensions)
-
[Bumping druid api dependency] (#1174)
- Moved druid dependency to Druid 0.20
- Disabled jackson validation error
-
Moving having and limitspec support to an interface and abstract implementation
- Added an interface for the group by and other related query types to offer abstract support for limitspec and having
- Deprecated withOrderBy because there hasn't been a lot of conceptual gain drawing a line between logical and actual sort implementations.
- Made
LookbackQuery
support withDimensions in cases where the inner datasource supports withDimensions. - Made
GroupByQuery
devolve limitspec and having support to parent abstract class.
-
Add MetricType subType and metadata
- Elaborated type into a class in
LogicalMetricInfo
supporting subtype and metadata - Updated metric makers to support type overrides
- Updated ProtocolMetric generator to support modifying types
- Updated
ThetaSketchMaker
to demonstrate having a type generated on the Maker that captured sketch precision as metadata.
- Elaborated type into a class in
-
Memcached client default size was smaller than expected
- Made timeout configurable on
TimeoutConfigureBinaryConnectionFactory
- Removed error generating error handling where response already submitted before attempting to write to session
- Made timeout configurable on
-
Fixed error where weekOfWeekYear moved backwards on sql set on years after 53 week years
- setWeekOfWeekYear behaves unexpectedly when the 53rd week of the prior is on the first of the year.
- Added test
- set default day of year to th 7th to guarantee correct calendar year resolution
- added utility to
DruidAggregationQuery
to simplify mocking
-
Update to fix for weekly rounding time grain on sql
- Moved from equality to acceptance.
-
Made unstable rate limit test more stable
- Made sure shared state was cleared more accurately between runs.
-
Turned down nuisance level logging of dictionaries to trace
- Made sure shared state was cleared more accurately between runs.
-
[Address zero day bug on log4j by removing dependencies] (#1219)
- Exclude all transitive dependencies on log4j version 1.