Changelog for
icingadb-redis-1.1.0-1.19.i586.rpm :
* Wed May 10 2023 ecsosAATTopensuse.org- Update to version 1.1.0:
* Release 1.1.0
* Improve documentation for migration tool
* build(deps): bump github.com/mattn/go-sqlite3 from 1.14.6 to 1.14.16
* go mod tidy
* go get -u github.com/goccy/go-yaml
* cmd/icingadb-migrate: avoid unnecessary config option
* Fix release issue template
* Bump github.com/stretchr/testify from 1.8.0 to 1.8.1
* Bump go.uber.org/zap from 1.21.0 to 1.23.0
* Bump github.com/lib/pq from 1.10.6 to 1.10.7
* Migration: docs enhancements
* cmd/: rename ido2icingadb/ to icingadb-migrate/
* cmd/ido2icingadb: move docs to the main tree
* cmd/ido2icingadb: use built-in decorators for the progress bar
* cmd/ido2icingadb: build cache from [0,toId], not just [fromId,toId]
* Fix tests for new icinga2 master
* Increase Go version for integration tests to 1.18
* cmd/ido2icingadb: don\'t tell how to mess up everything
* cmd/ido2icingadb: Keep It Simple Stupid
* cmd/ido2icingadb: assert schema
* Make checkDbSchema() reusable as DB#CheckSchema()
* cmd/ido2icingadb: handle custom input data time range changes
* cmd/ido2icingadb: allow custom input data time range
* cmd/ido2icingadb: make sure not to return false-positive nil (i.e. EOF) checkpoints
* cmd/ido2icingadb: show ops/s
* cmd/ido2icingadb: remove unused code
* cmd/ido2icingadb: increase parallelism
* Introduce DB#CreateIgnoreStreamed()
* cmd/ido2icingadb: remove unnecessary transactions
* cmd/ido2icingadb: chunkCacheTx(): commit less often
* cmd/ido2icingadb: remove unnecessary mutex
* cmd/ido2icingadb: rename to Icinga DB Migration
* cmd/ido2icingadb: add docs
* cmd/ido2icingadb: make cache filling fast again
* cmd/ido2icingadb: allow to migrate multiple IDO databases
* cmd/ido2icingadb: reduce bulk size
* cmd/ido2icingadb: remove unused code
* cmd/ido2icingadb: upsert, not update, to make bulk statements
* cmd/ido2icingadb: allow converters to upsert
* cmd/ido2icingadb: centralise notification type conversion
* DB#BuildInsertIgnoreStmt(): handle primary key being not \"id\"
* cmd/ido2icingadb: clean up cache
* cmd/ido2icingadb: fix duplicate comment
* cmd/ido2icingadb: fix missing flapping_history#percent_state_change_end
* cmd/ido2icingadb: don\'t unnecessarily overwrite already written/migrated history
* cmd/ido2icingadb: fix missing ack clearings
* cmd/ido2icingadb: indicate no notification author as \"\", not \"-\"
* cmd/ido2icingadb: fix missing flapping end events
* cmd/ido2icingadb: build fix
* cmd/ido2icingadb: fix missing config defaults
* cmd/ido2icingadb: bulk, not prepare, upserts
* cmd/ido2icingadb: fix downtime SLA end time
* cmd/ido2icingadb: improve code docs
* cmd/ido2icingadb: don\'t unnecessarily pre-fill ido_migration_progress
* cmd/ido2icingadb: rename onNewUncommittedDml to commitPeriodically
* cmd/ido2icingadb: remove obsolete code
* cmd/ido2icingadb: let SQLite VACUUM automatically
* cmd/ido2icingadb: write SLA
* cmd/ido2icingadb: avoid &(
*ht)[i]
* cmd/ido2icingadb: improve comments
* cmd/ido2icingadb: go:embed large queries
* cmd/ido2icingadb: go:embed schemata
* cmd/ido2icingadb: build fix
* cmd/ido2icingadb: better ETA
* cmd/ido2icingadb: prefer generics over reflection
* cmd/ido2icingadb: support Postgres
* cmd/ido2icingadb: migrate(): run only one transaction at a time
* cmd/ido2icingadb: correct mismatching FK ID
* cmd/ido2icingadb: don\'t hash non-hashable types
* cmd/ido2icingadb: build fix
* cmd/ido2icingadb: reduce historyType#convertRows call complexity
* cmd/ido2icingadb: sliceIdoHistory(): reduce onRows call complexity
* cmd/ido2icingadb: sliceIdoHistory(): re-use memory
* cmd/ido2icingadb: env: \"Environment\" config constant value -> hex ID
* cmd/ido2icingadb: make IDs UUID -> SHA1
* cmd/ido2icingadb: merge countIdoHistory() and computeProgress()
* cmd/ido2icingadb: ensure migration progress bar finishes
* cmd/ido2icingadb: resume migration progress bar where interrupted
* cmd/ido2icingadb: simplify computeProgress() a lot
* cmd/ido2icingadb: sliceIdoHistory(): take named args
* cmd/ido2icingadb: migrate(): don\'t REPLACE, but upsert (one by one)
* cmd/ido2icingadb: simplify unnecessarily complex datatype
* cmd/ido2icingadb: document misc.go
* cmd/ido2icingadb: migrate(): UPDATE after REPLACE
* cmd/ido2icingadb: document cache.go
* cmd/ido2icingadb: document main.go
* Revert \"Outsource cmd/icingadb.Exit
* to cmd/internal\"
* cmd/ido2icingadb: remove redundant function
* cmd/ido2icingadb: don\'t re-invent sqlx.In()
* cmd/ido2icingadb: types: add keys and delete zero values
* cmd/ido2icingadb: document sliceIdoHistory()
* cmd/ido2icingadb: shorten SugaredLogger#With().Info() to #Infow()
* cmd/ido2icingadb: reason not actually used INNER JOINs
* cmd/ido2icingadb: reduce IDE warnings
* cmd/ido2icingadb: correct log levels
* cmd/ido2icingadb: actually migrate
* cmd/ido2icingadb: chunk all large queries
* cmd/ido2icingadb: fill cache
* cmd/ido2icingadb: generalize cache schemata
* cmd/ido2icingadb: support SELECT xh.foo_bar->FooBar int
* cmd/ido2icingadb: introduce barIncrementer
* cmd/ido2icingadb: make bulk a const
* cmd/ido2icingadb: introduce historyType#setupBar()
* cmd/ido2icingadb: separate cache schema
* cmd/ido2icingadb: make log a global var
* cmd/ido2icingadb: prepare cache
* cmd/ido2icingadb: split main()
* cmd/ido2icingadb: deduplicate parallelism
* cmd/ido2icingadb: compute previous progress
* .../compliance/check-licenses.sh: also check UNLICENSE
* cmd/ido2icingadb: count total IDO events
* cmd/ido2icingadb: connect to databases
* cmd/ido2icingadb: parse config file
* cmd/ido2icingadb: parse CLI flags
* Outsource cmd/icingadb.Exit
* to cmd/internal
* Save memory during config sync via SyncSubject#FactoryForDelta()
* Show diff of dependencies in GitHub Actions
* Bump github.com/stretchr/testify from 1.7.2 to 1.8.0
* parseString(): Don\'t Repeat Yourself
* Fri Jul 01 2022 ecsosAATTopensuse.org- Update to version 1.0.0:
* Changelog for 1.0.0
* Update internal/version.go for 1.0.0
* Update AUTHORS and .mailmap
* Add issue template for releasing a version
* Docs: Add Distributed Setups
* Docs: Update Upgrading
* CI: Check version
* Docs: Update Configuration
* Docs: Update Installation
* Example config: Add Redis password
* Set Redis server port to 6380 by default
* Remove RELEASE.md
* Update CHANGELOG.md
* Update README.md
* Docs: Update About
* Docs: Remove Redis installation
* Example config: Document retention
* Example config: Document logging
* Docs: Fix table borders
* Example config: retention.options override history-days, not days
* Docs: Don\'t require database password
* Docs: Don\'t require database port
* Docs: Use \'Database name\' instead of \'Database database\'
* Example config: Add newlines between history- and sla-days
* Example config: Document database section
* Example config: Don\'t specify database type
* Example config: Don\'t specify database port
* Docs: Use CHANGEME as database password
* icinga:
*:state: rename state to soft_state
* Schema: Include `environment_id` as part of the history retention indices
* Retry down and unreachable host or network errors
* Fix comment
* Retry ECONNRESET
* Retry: Detect ECONNREFUSED properly
* Block XREADs for a maxium of one second
* Fix Redis MaxRetries
* Telemetry: use mutex for synchronizing last database error
* Telemetry: change stats names in Redis
* Telemetry: rename keys in heartbeat stream
* Telemetry: send Go metrics as performance data string
* Make json keys and DB columns consistent
* Write own heartbeat into icingadb:telemetry:heartbeat
* Introduce Atomic[T]
* Remove unused StreamLastId()
* Clear icinga:runtime
* and read from 0-0 later
* XTRIM data XREAD from icinga:runtime
*
* oneBulk(): terminate once input closed (like the regular bulker)
* Add host:port log info when trying to connecto to database/redis
* Make Database/Redis schema mismatch error more user friendly
* Write ops/s by op and s to icingadb:telemetry:stats
* DB#CleanupOlderThan(): allow to get done work counted in real time
* DB#Delete(): allow monitoring succeeded items
* DB#CreateStreamed(): allow monitoring succeeded items
* DB#{
*BulkExec,
*Streamed}(): replace succeeded channel with callbacks
* Rename config.yml.example to config.example.yml
* schema: Merge all alter table statments of the same table into a single one
* Bump expected redis schema version to 5
* Docs: use AATTlocalhost instead of AATT127.0.0.1 for MySQL user
* Bump github.com/stretchr/testify from 1.7.1 to 1.7.2
* Fix integration tests
* Checkable: Adjust the naming of the struct/json keys according to the new scheme
* Add _name suffix to columns referring to name
* Fix `icingadb --version` output when using older Git versions
* Streamline IsRetryable functions and retry DNS errors
* Add more information to `icingadb --version` ouput
* Bump github.com/lib/pq from 1.10.5 to 1.10.6
* Quote column names for the case they\'re reserved
* Integration tests: use separate artifact names for MySQL/PostgreSQL
* Add CommandArgument#Separator
* Tests: Update go.mod
* Expect serverName only in TLS.MakeConfig()
* Split Redis address into host and port
* Retention: take environment_id into account
* PostgreSQL: add missing retention indices
* CleanupOlderThan: no longer return number of rounds
* Retention: remove StartWithCallback
* Build fix
* Check for required database and Redis config options during config validation
* PostgreSQL: Support text comparsion for int/enum columns
* SLA reporting: history retention for SLA tables
* SLA reporting: fill new tables from history in schema migration
* SLA reporting: integration tests
* SLA reporting: tests for the SQL stored function
* SLA reporting: add SQL stored function to calculate SLA value
* List required RDBMS versions and increase PostgreSQL minimum
* SLA reporting: additionally write relevant history events to dedicated SLA tables
* Use default MySQL port if none is specified
* Allow setting port for PostgreSQL Unix domain socket
* SLA reporting: SQL schema
* Retention: periodically log number of items removed
* Don\'t print a stacktrace on config errors
* Schema: Make custom variable names case insensitive
* go:embed LUA script
* On HA takeover set other instances\' icingadb_instance#responsible = n
* On HA handover: always set icingadb_instance#responsible=n
* Bump github.com/jmoiron/sqlx from 1.3.4 to 1.3.5
* Bump github.com/stretchr/testify from 1.7.0 to 1.7.1
* Update dependabot reviewers
* Bump github.com/go-redis/redis/v8 from 8.11.4 to 8.11.5
* Use Icinga DB docker instance for retention tests
* Retry EAGAIN
* Document Redis
*nix socket support
* RDBMS: support
*nix sockets as documented
* Run `go mod tidy` in tests/ after defaults update
* Bump github.com/creasty/defaults from 1.5.2 to 1.6.0
* Run `go mod tidy` in tests/ after pq update
* Bump github.com/lib/pq from 1.10.4 to 1.10.5
* Do x.UnixMilli(), not utils.UnixMilli(x)
* UnixMilli(x): don\'t overflow on 4/11/2262 (UTC)
* Schema: Adjust primary key irregularities of icon_image, notes_url & action_url tables
* Merge Bulker and EntityBulker
* Remove unused XMessageBulker
* Reuse generic com.Bulk() instead of redundant com.BulkXMessages()
* Make Bulker generic
* Require Go v1.18+
* Remove obsolete comment
* Bump github.com/lib/pq from 1.10.3 to 1.10.4
* Add tests for cleanup and history retention
* Start history retention immediately
* Add immediate option for periodic tasks
* Add indices for history retention
* Start history retention after config and state sync
* Document history retention configuration
* Allow history retention configuration
* Introduce config.HistoryRetention
* Introduce history.Retention
* Introduce db.CleanupOlderThan()
* Port integration tests to PostgreSQL
* Remove null bytes from strings
* Wrap \"icingadb-
*sql\" in constants
* Postgres: replace ENUM DOMAINs with TYPEs
* Docs: Postgres: explicitly set en_US.UTF-8
* Postgres: use case-insensitive CITEXT columns
* Decouple
*SQL schema versions
* Simplify BulkChunkSplitPolicy
* Throw BulkChunkSplitPolicy#Reset() away
* Pass BulkChunkSplitPolicyFactory-s, not BulkChunkSplitPolicy-s
* DB#BuildDeleteStmt(): don\'t pre-rebind `?`s
* NamedBulkExec(): allow custom BulkChunkSplitPolicy
* BulkEntities(): allow custom BulkChunkSplitPolicy
* NewEntityBulker(): allow custom BulkChunkSplitPolicy
* Introduce SplitOnDupId
* Introduce NeverSplit
* Introduce BulkChunkSplitPolicy
* Don\'t re-invent sqlx.DB#Rebind()
* Postgres: upsert: only handle primary key conflicts
* DB#Build
*Stmt(): quote table names
* Document Postgres support
* Support Postgres
* Handle Postgres-specific errors
* .github/workflows/compliance/anonymize-license.pl: handle github.com/lib/pq license
* Avoid SQL syntax Postgres doesn\'t understand
* Port MySQL schema to Postgres
* Remove parallelism from history test
* Bump icinga-testing version
* doc: Document the password option for Redis
* Fix typo
* Add previous_soft_state to host_state and service_state
* Docs: don’t explain MySQL installation
* Bump go.uber.org/zap from 1.20.0 to 1.21.0
* Don\'t embed TLS config
* Rename TLS.Tls to TLS.Enable
* HA#realize(): re-try transaction on temporary error
* GHA: use latest staticcheck version
* Schema: make notification_history#text longtext
* GHA: go mod tidy
* Run daily integration tests
* Update dependabot reviewers
* Bump go.uber.org/zap from 1.19.1 to 1.20.0
* Make sure Redis connection pool is large enough
* Integration tests: test downtime expiry history
* Integration tests: text comment expiry history
* Integration tests: test comment removal history
* Integration tests: add author/removed_by to downtime cancellations
* Integration tests: test that both icinga2 instances write identical history streams
* Docs: Replace GRANT command incompatible with newer MySQL versions
* Docs: Fix foreground command config parameter
* go.mod: remove redundant replacement
* Fri Jul 01 2022 ecsosAATTopensuse.org- Update to version 1.0.0-rc2:
* Integration tests: Add notifications and improve user runtime updates
* Update AUTHORS
* Update AUTHORS
* Remove authors whose code is no longer in the repo
* Use own connections for heartbeat and HA
* Insert schema version last
* Make NotificationRecipient struct readable
* Docs: Fix default config file location
* Refine remote Redis installation docs chapter
* Reduce max_hmget_connections to 8
* Change default configuration file path
* Improve MySQL commands in installation docs
* Fix whitespaces and too long lines in installation docs
* Add upgrading docs
* Change icinga-redis to icingadb-redis in remote Redis
* Add Fedora, CentOS 8, dnf and some cleanup
* Comment out flat config keys that have a default value
* Use localhost in our example config
* docs: Replace warning log level with warn
* Integration tests: test history sync with HA
* MySQL: Add more indexes
* Add a regression test that ensures that runtime updates are executed in order
* Runtime Updates: Use proper buffer channel sizes
* Add special handling for entity bulks of size 1
* Add special handling for bulks of size 1
* RuntimeUpdates#Sync(): force FIFO for config updates
* Set values for new host_id and downtime duration columns
* Add `service_state.host_id` column
* Downtime: Add `duration` & `scheduled_duration` columns
* Schema: Fix index typos introduced by #385
* Fix broken retry mechanics
* .github/workflows/compliance.yml: assert GPLv2 compatibility of all deps\' licenses
* .github/workflows/compliance/anonymize-license.pl: replace redundant info in license text
* .github/workflows/compliance/ls-deps.pl: extract all 3rd-party deps
* Raise expectedRedisSchemaVersion
* Schema: Prefix command_id with command type (check, event, notification)
* Rename periodic.Stoper to periodic.Stopper
* Use custom logger with 1 second interval for delta tests
* Use custom logger for accessing the interval for periodic logging
* Add periodic logging for runtime updates
* Use debug instead of info for some log messages
* Log which history sync started
* Remove syncing $subject log message
* Remove syncing $redisKey log message
* Remove waiting for heartbeat message
* Log time taken for the config and initial state sync
* Use pkg periodic for database logs
* Log which delta finished
* Use pkg periodic for history sync logs
* Use debug instead of info for overdue refresh logs
* Use pkg periodic for overdue sync logs
* Use internal.LoggingInterval()
* Log how many items to insert
* Speak of items instead of rows
* Use pkg periodic for Redis logs
* Introduce Counter.Total()
* Introduce package periodic
* Allow to configure interval for periodic logging
* Introduce Counter.Reset()
* Speak of Icinga heartbeat not Icinga 2 heartbeat
* Comment out component-logging level pairs
* Don\'t log if context is canceled
* Increase Redis schema version
* Update schema comments to match new use of environments
* No longer skip environment tests and adapt them to new behavior
* Exit on environment ID changes
* Use new environment ID
* Only sync entities that belong to the current environment
* Config: Validate max_rows_per_transaction
* Config: Validate max_placeholders_per_statement
* Don\'t use CamelCase for config keys
* Config: Validate xread_count
* Restart HA after environment change
* Use synctx instead of ctx
* Make v1.Environment#Name types.String
* Insert environment
* Add db.BuildIgnoreStmt()
* Replace Apache 2.0 licensed gopkg.in/yaml.v3 with MIT licensed github.com/goccy/go-yaml
* Raise expectedRedisSchemaVersion 1 -> 2
* Make History
*#Id UUID -> SHA1
* Make {NotificationHistory,StateHistory}#Id UUID -> SHA1
* Sync history independent of HA
* Enable tests for custom var flat runtime sync
* Move custom var sync to a new method
* Respect context in custom var sync
* Expect no custom var clear events during runtime
* Handle flat custom vars explicitly in runtime updates
* Handle contracts.Initer in common.NewSyncSubject()
* Use SyncSubject in RuntimeUpdates.Sync()
* Add method SyncSubject.Name()
* Use ExpandCustomvars() and synctx instead of ctx
* Introduce function ExpandCustomvars()
* Export DB.getSemaphoreForTable()
* Move method DB.getSemaphoreForTable()
* Use context from errgroup
* Sync state runtime updates ASAP
* Notify systemd that Icinga DB finished starting up
* Allow to configure the logging output
* Allow systemd-journald (and console) as log outputs
* Introduce zapcore.Core that sends logs to systemd-journald
* Use the app name as the default logger name
* Introduce function utils.AppName()
* Add ConvertCamelCase utility function
* Move logging from internal to pkg
* Bump github.com/go-redis/redis/v8 from 8.11.3 to 8.11.4
* Only do anything while icinga:schema version meets our expectations
* History sync: add benchmark
* Add foreign key with cascade delete constraints to history tables
* History sync: use information from notification stream for user_notification_history table
* History sync: use indefinitely blocking XREAD
* History sync: rewrite to use a sequential pipeline
* Redis/DB: export options member
* mysql.schema.sql: Add missing indices to
*_customvar tables
* HA: only set realize timeout when active
* HA: after heartbeat expiry, stop writing to database and hand over
* retry: if stopped due to outer context, return that error
* heartbeat: wrap messages with a timestamp
* heartbeat: use a single channel for all beat/loss events
* Add XMessageBulker
* History sync: add integration tests
* Support TLS
* Document logging configuration
* Use child loggers
* Use child loggers for Redis and database
* Use logger from logging pkg
* Allow to configure logging in the YAML configuration
* Introduce Logging config struct
* Introduce logging pkg with access to a default logger and named child logges
* Remove example configuration from docs
* Schema: s/mediumtext/longtext/
* Rewrite delta to use only a single goroutine
* Add tests and benchmarks for delta computation
* Log all recovered reconnects to backends
* Redis HYield: remove duplicates returned by HSCAN
* Use uint64 instead of Counter
* Use buffered channel
* Do not close channel too early
* Use pointer receiver for Counter.Val()
* Introduce WaiterFunc type
* Fix use of wrong log function on heartbeat loss
* Include CheckResult#scheduling_source in state and history
* Log all different failed reconnects to backends
* On shutdown: give up HA handover after 3s, not 5m
* Introduce Settings#OnSuccess
* Introduce Settings#OnError
* HA#Close(): allow custom context
* HA#removeInstance(): allow custom context
* WithBackoff(): aggregate optional settings in one struct
* Bump go.uber.org/zap from 1.19.0 to 1.19.1
* Update icinga-testing and use new features (#362)
* Bump github.com/creasty/defaults from 1.5.1 to 1.5.2
* Bump go.uber.org/zap from 1.18.1 to 1.19.0
* Bump github.com/go-redis/redis/v8 from 8.11.2 to 8.11.3
* Move etc/icingadb.service to packaging repositories (#345)
* Automatically run integration tests using GitHub Actions
* Start adding integration tests
* Ensure extra config options are properly initialized
* Clarify what MustPackAny() does
* Schema: Add description to downtime columns \'triggered_by_id\' and \'parent_id\'
* Don\'t print stack on CLI parsing failure or --help
* Don\'t allow 0 for timeout redis option
* Don\'t allow 0 for max_connections database option
* Remove UnmarshalYAML
* Don\'t inline Database options
* Remove UnmarshalYAML
* Don\'t inline Redis options
* Move method
* Introduce downtime#scheduled_by
* Bump github.com/go-redis/redis/v8 from 8.11.1 to 8.11.2
* Add missing doc in meta
* Add missing doc in meta
* Add missing doc in sync
* Add missing doc in ha
* Add missing doc in entitiesbyid
* Add missing doc in dump_signals
* Add missing doc in delta
* Rename start() to run()
* Add missing doc entitiy_bulker
* Add missing doc in bulker
* Add missing doc in stats_message
* Add missing doc in icinga_status
* Add missing doc in redis utils
* Add missing doc in client
* Add missing doc in utils
* Add missing doc in db
* Add missing doc in command
* Add newline before return
* Remove useless comments
* Return error instead of panicking
* Remove --datadir config flag
* Remove config.ValidateFile()
* Use cancelCtx() instead of just cancel()
* Always use data as paramter name in UnmarshalJSON()
* Always use text as paramter name in UnmarshalText()
* Fix comments
* Remove unused variables Yes and No
* Fix typo
* Fix different receiver names
* Remove unused function PipeError
* Use QueryxContext() instead of Query()
* Remove unused functions
* Validate specified config file only once
* Support --version
* Log MySQL driver errors at the debug level instead of discarding them
* Also retry driver.ErrBadConn
* Enlarge {comment,downtime}#name 255 -> 548
* Use SET SESSION for schema modes
* Clarify why acknowledgement_history#comment is NULLable
* Allow acknowledgement_history#{author,is_sticky,is_persistent} being NULL
* AcknowledgementHistory#Author: make missing value NULL, not \"\"
* Reduce the size of bulk statements and make the size configurable
* Don\'t append(x,y) if x is not to be modified
* Get the last IDs of the runtime update streams before starting anything else
* Stream state updates from icinga:runtime:state
* Bump github.com/go-redis/redis/v8 from 8.11.0 to 8.11.1
* Icinga DB: introduce Checkable#last_comment_id
* Downtime: Add parent_id
* Pointer receivers, Cond usage, pass ctx and Godoc for Heartbeat
* Bump github.com/google/uuid from 1.2.0 to 1.3.0
* Do not store ctx inside Cond and add Godoc
* Introduce
*_state#normalized_performance_data
* Assert the database schema of the expected version being present
* Fix SEGV due to empty config
* Bump github.com/go-redis/redis/v8 from 8.10.0 to 8.11.0
* Bump go.uber.org/zap from 1.17.0 to 1.18.1
* Use bulk upsert for bulk updates in sync
* Use bulk upsert in runtime updates
* Activate bulk upsert
* Return number of placeholders
* output, long_output and performance_data columns modified to mediumtext
* Support DriverContext
* Call errors.Wrap
*() unconditionally where appropriate
* Use errors.As() and Is() in favor of Unwrap()
* Print stack traces
* Use Info() instead of Infof() if no format string
* Wrap errors
* Replace custom err w/ func returing a wrapped err
* Fix imports
* Add utils for wrapping errors
* Bump github.com/go-redis/redis/v8 from 8.7.1 to 8.10.0
* Bump github.com/jessevdk/go-flags from 1.4.0 to 1.5.0
* Bump go.uber.org/zap from 1.16.0 to 1.17.0
* Bump github.com/jmoiron/sqlx from 1.3.1 to 1.3.4
* schema: Re-add indices for `host_id` and `service_id` in state tables
* Service File: Change config file in exec command to new YAML file
* Add stack of current goroutine to errors
* Compare errors smartly, i.e. unwrap them first
* HA: Respect context when operating channels
* HA: context used to start transaction must not be canceled before the transaction is committed
* Schema: Reverse order of entries in enums for boolean
* MySQL schema: reverse order of entries in enums for boolean to fix sort order
* Move `schema/1.0.0-rc2.sql` to `schema/mysql/upgrades/1.0.0-rc2.sql`
* Move `schema/mysql.schema.sql` to `schema/mysql/schema.sql`
* Add custom vars to the runtime update sync
* Add issue template for bug reports
* Increment icingadb_schema version
* 1.0.0-rc2.sql: add all changes since v1.0.0-rc1 git tag
* mysql.schema.sql: integrate changes from 1.0.0-rc2.sql
* Don\'t misuse loop as if
* s/CondClosed/ErrCondClosed/
* Make channel for signal.Notify() buffered
* Use !bytes.Equal(x,y), not bytes.Compare(x,y)!=0
* Use time.Since(x), not time.Now().Sub(x)
* Use time.NewTicker(), not time.Tick()
* Simplify code
* Un-capitalize error messages
* Drop unused stuff
* Avoid unreachable code
* Ensure context cancellation
* Don\'t \"misuse\" unsafe.Pointer
* README.md: Fix new config setup step
* Add a blank issue template with a link to the forum (#276)
* Bump github.com/go-sql-driver/mysql from 1.5.0 to 1.6.0
* README.md: Add information about the config and run command
* README.md: Add RC2 upgrade information
* Update configuration docs
* Move mysql.schema.sql
* Remove obsolete code
* Reduce \"Can\'t update or insert instance. Retrying\" log noise
* Also log environment info
* Log first Redis connection error while retrying
* Log first database connection error while retrying
* gofmt: behave like Goland
* GitHub actions: show what exactly is not well formatted
* GitHub actions: separate linters
* Include a Github Actions test
* Improve database and HA logging
* db.BulkExec(): Use ExecContext() instead of Query()
* SQL driver: de-duplicate retry.WithBackoff() logic
* Redis dialer: de-duplicate retry.WithBackoff() logic
* retry.WithBackoff(): return the most descriptive error
* retry.WithBackoff(): add optional timeout
* retry.WithBackoff(): pass a context to the function to be tried
* Don\'t execute runtime update upset queries concurrently
* Wrap Redis errors
* Introduce icingaredis.WrapCmdErr()
* Introduce utils.Ellipsize()
* HA: Add own instance ID to responsibility query
* config.Redis#NewClient(): work-around go-redis/redis#1737
* Redis: retry dial on syscall.ECONNREFUSED
* Change ID fields to match SQL schema
* types.AcknowledgementState: Fix state map
* Sync overdue indicators
* Flat CVs: represent null as \"null\", not \"
\"
* Make Redis/MySQL concurrency and batch sizes configurable
* Introduce objectpacker.MustPackAny()
* Remove time taken debug log for named queries
* Remove NewCustomvar from Factories
* Flatten: Fix keys
* Sync customvar flat
* Add func icingadb.v1.FlattenCustomvars()
* Precise log messages
* Remove log message
* Fix race
* Remove icingadb.Sync.fromRedis()
* Add NewCustomvarFlat()
* Introduce icingadb.Sync.ApplyDelta()
* Expect common.SyncSubject in icingadb.Delta
* Use type common.SyncSubject
* Introduce func icingaredis.Client.YieldAll()
* Introduce type common.SyncSubject
* PackAny(): Golangify spec doc
* PackAny(): pack [I]byte as string in map keys as well
* PackAny(): restore unit test case
* PackAny(): enhance code docs
* PackAny(): panic() explicitly, not due to a programming error
* Add comment explaining the purpose of ha.Close()
* Exit with an error code if not exiting due to a signal
* PackAny(): disallow types recursively more strictly
* PackAny(): support numbers only as float64
* Runtime updates must wait for config sync to complete
* Implement runtime updates
* Handle HA errors
* Remove always-false if
* Fix UsergroupMember.UserId JSON tag
* PackAny(): support types.Binary
* PackAny(): pack []byte as string, not array of numbers
* icingadb.DB: Rename functions that take a channel to
*Streamed()
* icingadb.DB: Add Delete() and DeleteStreamed()
* com.Bulker: Change type from contracts.Entity to interface{}
* Add com.EntityBulker
* icingaredis.Client: Add StreamLastId()
* types.NotificationTypes: Implement UnmarshalText()
* types.NotificationStates: Implement UnmarshalText()
* types.Int: Implement UnmarshalText()
* Structify: Allow for string ptr (e.g. NameCi)
* NameCiMeta: Add missing json tag to NameMeta
* Introduce PackAny()
* Schema (Host-/ServiceState): Add columns id and properties_checksum
* Add service state
* Add host state
* Add v1.State
* Add types.AcknowledgementState
* types.StateType: Implement UnmarshalJson()
* Change redis key prefix to \'icinga:
*\' instead of \'icinga:config:
*\'
* Read icinga:dump stream and respect dump signals
* Main loop: return if ctx has an error
* Handle SIGINT/SIGTERM/SIGHUP
* Move factories away from main and use v1.Factories
* Introduce v1.Factories
* Add EntityFactoryFunc.WithInit()
* Return ctx.Err() on ctx.Done()
* main(): don\'t panic on (intentional) context cancel
* Remove comment
* Remove customvar_flat sync draft
* HMYield(): handle missing values
* Sync#Sync(): don\'t run no-ops
* Fix missing import
* Drop utils.SyncMap
*()
* Delta: don\'t over-lock
* Introduce EntitiesById
* Sync history
* Introduce contracts.TableNamer
* DB#Upsert(): workaround jmoiron/sqlx#694
* DB#Upsert(): allow to update not all columns
* Introduce DB#Upsert()
* Deduplicate DB#Create() and DB#Update()
* DB#NamedBulkExec
*(): reduce channel requirements
* DB#NamedBulkExec(): optionally inform about successfully inserted rows
* Restrict Bulker to contracts.Entity
* Make types.UnixMilli an encoding.TextUnmarshaler
* Make types.String an encoding.TextUnmarshaler
* Make types.Bool an encoding.TextUnmarshaler
* Introduce types.StateType
* Introduce types.NotificationType
* Introduce types.Float
* Introduce types.UUID
* Introduce utils.MakeMapStructifier()
* Host: sync also address{,6}_bin
* Delta#start(): avoid a race across maps by using a mutex
* NameCiMeta#NameCi: don\'t (unneccessarily) decode from JSON
* shouldRetry(): retry on driver.ErrBadConn as well
* Actually use re-trying SQL driver
* Introduce types.CommentType
* EntityWithChecksum: fix missing `json:\",inline\"`
* Make CommandArgument an Initer
* Introduce types.NotificationStates
* Introduce types.NotificationTypes
* Sync timeperiods as well
* Sync notifications as well
* Sync comments as well
* Sync zones as well
* Sync downtimes as well
* Sync commands as well
* Introduce Int
* Introduce String
* Sync endpoints as well
* Sync groups as well
* Sync users as well
* Introduce CustomvarMeta
* Group related types
* Make channels more specific
* Sync URLs as well
* Host: re-use Checkable
* New
*(): don\'t re-do Init()
* Auto-init Initers
* Make NameCiMeta an Initer
* Make project a Go module
* HA: only execute query to remove old instances once
* Replace persisted instance ID with a random one and remove old rows from icingadb_instance
* Always write HA heartbeat
* Only signal HA takeover if a takeover was attempted
* Insert endpoint_id into icingadb_instance
* Add cmd
* Add first set of types to sync
* Introduce meta types
* Implement sync
* Add type icingadb.HA
* Introducte type icingaredis.Heartbeat
* Add types necessary for heartbeat and HA
* Add type icingaredis.Client
* Introduce pkg com
* Introduce flatten
* Auto-reconnect database conns
* Introduce retry functionality
* Increase timeout to 60s for database connections
* Add type icingadb.DB
* Add config.yml.example
* Add config utils
* Add type config.Redis
* Add type config.Database
* Add .gitignore
* Add type types.Bool
* Add type types.UnixMilli
* Add type types.Binary
* Add utils
* Add contracts
* Bump github.com/sirupsen/logrus from 1.7.0 to 1.8.0
* Set an explicit timeout for go test
* Drop
*Bridge
* SqlFetchAll
*(): return a slice of struct
* Drop unused SqlFetchAll
*()
* Make overdue sync HA-aware
* HA: only read new hearbeats from Redis
* HA: use separate MySQL connection
* HA: use separate Redis connection
* Improve log messages related to HA takeover/handover
* HA: prefer new Icinga 2 heartbeat over forced update
* Detect and warn about slow HA heartbeat SQL transactions
* Remove previous rows from icingadb_instance table
* Add test for HA RegisterStateChangeListener
* Rewrite HA logic to use SQL serializable transactions
* Add test demonstrating that multiple instances may take over at the same time
* Provide generic HA state change notifications
* Don\'t retry individual SQL transaction commands
* ChunkRows: replace float with int arithmetic
* ChunkRows(): ensure to never get an empty chunk
* configsync: fetch checksums using HSCAN if available, otherwise reuse config
* Schema: correct comments in flapping_history, acknowledgement_history
* configsync: use HSCAN instead of HKEYS
* Add support mysql unix domain socket
* Bump github.com/google/uuid from 1.1.5 to 1.2.0
* Bump github.com/google/uuid from 1.1.4 to 1.1.5
* Bump github.com/google/uuid from 1.1.3 to 1.1.4
* Bump github.com/google/uuid from 1.1.2 to 1.1.3
* Bump github.com/prometheus/client_golang from 1.8.0 to 1.9.0
* Fix error message for MySQL in tests which previously said that Redis is not working
* Actually insert NULL into NULLable columns
* Keep testing w/ MariaDB v10.4
* Test also w/ Redis v6+
* Keep testing w/ Go v1.14
* Bump github.com/go-ini/ini from 1.61.0 to 1.62.0
* Bump github.com/sirupsen/logrus from 1.6.0 to 1.7.0
* Bump github.com/prometheus/client_golang from 1.7.1 to 1.8.0
* mysql/schema: Add name indices to host,service,user,usergroup tables
* Adjust import sorting in main.go
* Fix formatting using go fmt
* Bump github.com/go-ini/ini from 1.60.1 to 1.61.0
* Bump github.com/google/uuid from 1.1.1 to 1.1.2
* Bump github.com/go-ini/ini from 1.57.0 to 1.60.1
* Fix CI/CD tests
* Doc: Add Redis password configuration settings
* Add Redis password authentication
* Bump github.com/prometheus/client_golang from 1.7.0 to 1.7.1
* Allow to serve metrics at ::
* GitHub actions: build Docker images
* Bump github.com/prometheus/client_golang from 1.6.0 to 1.7.0
* Create Dependabot config file
* Bump github.com/go-ini/ini from 1.56.0 to 1.57.0
* Bump github.com/json-iterator/go from 1.1.9 to 1.1.10
* Small fixes in doc
* Bump github.com/stretchr/testify from 1.5.1 to 1.6.1
* Bump github.com/go-redis/redis/v7 from 7.3.0 to 7.4.0
* Bump github.com/go-redis/redis/v7 from 7.2.0 to 7.3.0
* History: correct event time of cancelled downtimes
* Overdue: Fix indicators getting out of sync (Redis/DB)
*
*CommandArgument: Fix SetIf data type to accept any JSON data
* MySQL: Make sure to chunk rows
* Overdue: Make sure to chunk before updating in DB
* Upgrade Redis client
* User: Fix NotificationsEnabled not cast to DB bool
* Bump github.com/go-ini/ini from 1.55.0 to 1.56.0
* Bump github.com/prometheus/client_golang from 1.5.1 to 1.6.0
* Bump github.com/sirupsen/logrus from 1.5.0 to 1.6.0
* GitHub actions: test Go v1.13
* Schema: Change
*command_argument.argument_order to smallint
* Correct typo in context image
* Don\'t populate sticky acks as non-sticky
* mkMysql(): allow connections to idle
* Update .mailmap
* Update .mailmap
* Bump github.com/stretchr/testify from 1.4.0 to 1.5.1
* Update go mod
* SqlFetchChecksums(): close SQL rows ASAP
* Change icinga-redis to icingadb-redis in service file
* Docs: Remove release repo info
* Docs: Replace release repo with testing repo for RC
* Fri Jun 25 2021 ecsos - Initial version 1.0.0-rc1