Changelog for freckle-app-1.9.0.2
Unreleased
v1.9.0.2
- Fix for not setting ECS Metadata tags in
StatsClient
v1.9.0.1
-
Report errors getting ECS Metadata during
withStatsClient
initializationThis does change the type of
getEcsMetadata
, but we consider it a patch-level bump because that module is very unlikely to be used directly.
v1.9.0.0
- Refactor
Freckle.App.Wai
interface - Add
addThreadContextFromStatsTags
- Replace
HasXRayVaultData
withMonadTracer
- Introduce
AppT
v1.8.1.0
- Add
runDBSimple
for use cases where instrumentation is not valuable.
v1.8.0.0
- Fix bug: gauges not being published.
- Add HasVaultData type class to remove the dependency on Yesod's MonadHandler
v1.7.1.0
- Add Incremental CSV parsing
v1.7.0.0
-
Add XRay and EKG support to freckle-app's runDB.
This involves an breaking change in
runDB
's constraints, thus the major version bump.
v1.6.0.3
-
Revert regrouping of
SqlError
byurl
Consider
/foos/1
vs/foos/2
: grouping naively byurl
makes these two errors when we wanted them to be one. This can't be solved without knowledge of the routing system, so we can't do it from within this library as-is. Therefore, we've reverted the feature for now.
v1.6.0.2
- Strip query string from URLs used to group timeout exceptions in Bugsnag.
v1.6.0.1
- The built-in Bugsnag
BeforeNotify
will further groupSqlError
s that are timeouts (57014) by Request URL (when request info is present in theEvent
)
v1.6.0.0
-
Remove
AppVersion
This also removes the
test-git
flag.This was over-engineered, in our opinion. If you're making use of the conventional
DD_
variables that theStats
module expects, you should be able to:- Replace any
appVersion :: AppVersion
withappVersion :: Text
- Replace
appVersion <- getAppVersion
withappVersion <- maybe "unknown" pack <$> lookupEnv "DD_VERSION"
- Replace
avName appVersion
withappVersion
- Remove uses of
avCreatedAt
- Replace any
-
Add
Freckle.App.Dotenv
, wrappingdotenv
And move
Freckle.App.Test.withApp
to use it instead ofLoadEnv
. This is behavior-neutral except:-
We no longer load
.env
after.env.test
, we only load.env.test
Missing variables should generate errors prompting you to copy values from the former to the latter as required.
-
We will verify the
.env
file against an.env.example
if present.
-
-
Add
Freckle.App.Bugsnag.Metadata
v1.5.0.1
- Export
Freckle.App.Stats.tagsL
v1.5.0.1
- Relax lower bound on
primitive
v1.5.0.0
-
Remove
Freckle.App.Datadog
modules forFreckle.App.Stats
equivalentsIt's not a drop-in, but the required changes should be mechanical:
- Instead of
HasDogStats{Client,Tags}
, implement a singleHasStatsClient
- Instead of
mkStatsClient
usewithStatsClient
(the new style ofrunApp
had will enable that) - Use
tagged
instead of extra arguments to metric sends - Move to the new
Rts
,Gauge
, andMiddleware.Stats
modules
- Instead of
-
Change signature of
runApp
andwithApp
Instead of passing a loaded
App
(or a function that loads anApp
) torunApp
andwithApp
, you should now pass a function that takes a function and calls it on the loadedApp
.This is necessary for apps that hold onto values that require cleanup, like
withStatsClient
.-- This doesn't work loadApp :: IO App loadApp = do -- ... withStatsClient $ \appStatsClient -> do -- ??? -- This does loadApp :: (App -> IO a) -> IO a loadApp f = do -- ... withStatsClient $ \appStatsClient -> do f App { .. }
The old form can be trivially converted to the new form like so,
loadApp :: (App -> IO a) -> IO a loadApp f = f =<< loadApp' loadApp' :: IO App loadApp' = -- old code
-
Add functions that check properties that we like to commonly test.
v1.4.0.0
-
Remove
runCapturedLoggingT
We can use
Blammo.Logging.Logger.newTestLogger
instead. SeeMemcachedSpec
as an example. -
Compatibility down to LTS 12.26 / GHC 8.4
v1.3.0.0
- Adjust
Freckle.App.Test
interface- Remove
runAppTest
- Add
appExample
for making a expectation concretelyAppExample
- Add
expectationFailure
, andpending(With)
helpers inMonadIO
- Remove
v1.2.0.2
Env.kept
compatibility with envparse-0.5
v1.2.0.1
-
Use
Env.kept
with parsing that occurs inmakePostgresPool
This ensure all
PG
variables are kept in the environment after parsing, to again match pre-v1.1 behavior.If you would prefer not to keep these variables, parse them yourself (e.g. with
envParseDatabaseConf
) and usemakePostgresPoolWith
. -
Add
Freckle.App.Env.kept
to re-define aParser
so that all variables are kept after reading. Not doing this can break tests if you are re-parsing the environment for each example.Replace
Env.parse f
withEnv.parse f $ Env.kept
to recover how this module behaved prior to v1.1.
v1.2.0.0
-
Remove
Freckle.App.Logging
, integrate with blammo instead.This will require the following end-user changes:
-
Remove
HasLogging
instance and addHasLogger
This will require storing a
Logger
on your runtimeApp
type, instead of aLogLevel
(et al) in your staticAppSettings
type. (Or move torunSimpleLoggingT
.) -
Replace WAI middleware with Blammo integration
-
Replace Yesod functions with [Blammo integration][blammo-yesod]
And changes to environment variable values:
- If using
LOG_OUTPUT=std(out|err)
, useLOG_DESTINATION=std(out|err)
(note thatstdout
is the default) - If using
LOG_OUTPUT=file
, useLOG_DESTINATION=@fancy.log
(yes, that's this option did) - If using
LOG_FORMAT=terminal
, useLOG_FORMAT=tty
(note that this is the defualt)
-
v1.1.0.0
-
Require
MonadLoggerIO
inmakePostgresPool
(and so respect that logging context from DB activities).Previous behavior can be recovered by using
runNoLoggingT makePostgresPool
. -
Re-implement
FronRow.App.Env
via external library,envparse
Some conversions will be required:
-
Reader a
should now beReader Error a
-
Parser a
should now beParser Error a
-
parse
should now beparse id
-
var x X nonEmpty
should now bevar (x <=< nonempty) X mempty
Note that
(str <=< nonempty)
is redundant. -
var (f <$> g) X m
should now bef <$> var g X m
Note that
def
will now need a value the same type asg
, notf
. -
switch
andflag
no longer acceptdef
(the non-active value is an implicit default; the previous behavior was kind of surprising and ambiguous). -
handleEither
has been removed. Users will have to parse a complete value and then further validate/throw externally. -
Previously, we always behaved as if
keep
was applied. Add that explicitly if you need that behavior.
-
v1.0.4.0
- Add
Freckle.App.Bugsnag
for Bugsnag logging in applications. - Increased default PG poolsize to 10.
v1.0.3.0
-
Add
Freckle.App.Memcache
for using memcached in Apps -
Add
Freckle.App.Scientist
for using scientist in Apps
v1.0.2.10
-
Support GHC 9.0 and 9.2
-
Change
Wai
function arguments for producingRouteName
andTraceId
to tagsTo maintain the same behavior, replace
makeLoggingMiddleware app getRouteName getTraceId ...
With
makeLoggingMiddleware app getTags ... where getTags req = catMaybes [ ("route", ) <$> getRouteName req , ("trace_id", ) <$> getTraceId req ]
And similar for
makeRequestMetricsMiddleware
.
v1.0.2.9
- Add some common textual encoding functions to prelude
v1.0.2.8
- Don't allow
aeson-2.0
v1.0.2.7
- Remove explicit
--region
in IAM DB token call - Relax lower-bounds throughout
v1.0.2.6
- Add a looser lower-bound on
containers
v1.0.2.5
- Add a looser lower-bound on
bytestring
- Add a looser lower-bound on
template-haskell
v1.0.2.4
- Add a looser lower-bound on
base
v1.0.2.3
- Add Freckle-specific prelude.
v1.0.2.2
- Target
hspec-junit-formatter-1.0.3.0
(use1.1.0.0
in development)
v1.0.2.1
- Add
denyFrameEmbeddingMiddleware
for denying HTML frame embedding.
v1.0.2.0
- Add 'Freckle.App.Yesod.Route' to allow printing route names.
v1.0.1.0
- Added
Freckle.App.Datadog.Gauge
for client side stateful gauges. - Added
Freckle.App.Datadog.Rts
for sending RTS statistics to DataDog.
v1.0.0.4
-
Support seconds or milliseconds in
PGSTATEMENTTIMEOUT
NOTE: We consider this a non-breaking change because the environment variable interface is backwards-compatible. By normal Haskell rules, it would be major since it's changing the type of something exported.
-
Add
respondQueryCanceled
Yesod Middlewares -
Add
makeRequestMetricsMiddleware
v1.0.0.3
- Add
package.yaml
toextra-source-files
.
v1.0.0.2
- Extract tests that require
git
into a new suite.
v1.0.0.1
- Ensure
release
GitHub Action completes properly.
v1.0.0.0
First tagged release.