- Client: optimize code & memory
- Client: allow multiple send content for one connection
- Server: optmize code
- Server: optimize memory use & stream
Package server:
- Rework chan / cancel process
- Simplify & optimize chan / cancel process
- Add Function Action for Ticker as FuncTicker
- Rename type func Action to FuncAction
Package httpserver:
- Fix error on starting runner
- Log error on starting runner
- Optimize some code
Package config:
- Add log info for each starting / reloading component (if default logger is set)
- Add log error for starting error or not started for each component on start / reload (if default logger is set)
Package monitor:
- review ticker delay for starting puller (pass from 500ms to 50ms)
Other:
- bump dependencies
- Add DNS Mapper to force destination for a fqdn source
- Allow wildcard and multi wildcard for fqdn source
- DNS Mapper create Transport, Dialer & http client
- DNS Mapper allow a config input to customize timeout, limit and TLS config
- DNS Mapper use a gloabl transport connection poller
- DNS Mapper implement DialContext & Dial method for transport
- DNS Mapper use cache to accelerate process
- DNS Mapper cache is only dnsmapper, not DNS cache
- Replace old helper for http client with DNSMapper
- Add default DNSMapper into the main lib of http client
- Allow to overide the default DNS Mapper with a new one
- Add ticker to force clean idle connection every given duration
- "Compatible" with old config, as the default config will be used instead of old client build
- Clean code and fix minor bugs
- Add config component to allow use a global config
- Config Component httpcli can overide default httpcli dns mapper when updated
Package Certificates
- Add function type to impose function that return a slice of rootCA string
- update config/component/tls by replacing mutex with atomic
- optimize some code
Package Config
- expand errors code index to add component httpcli
Package Config/component:
- database: add new validation, that config key existing into viper
- head: add new validation, that config key existing into viper
- http: add new validation, that config key existing into viper
- ldap: add new validation, that config key existing into viper
- log: add new validation, that config key existing into viper
- mail: add new validation, that config key existing into viper
- smtp: add new validation, that config key existing into viper
Package AWS:
- update package following update of httpcli
- use interface for http cli that implement the Do function
- update following the config/component/aws
- rework config/component/aws to use atomic instead of mutex
- update test unit following change
Package Request:
- update following http client update
- use interface of HTTP Client that implement DO function, instead of http client struct pointer
- update config & code following
- apply same modification into config/component/request
- update config/component/request by replacing mutex to atomic
Package Server
- add function Uptime to model to expose the duration since last start
Package Semaphore
- apply change name of constant following bump of lib associated
Package Crypt
- fix bug into reader to remove suffix of EOF if prevent
Package Errors:
- expand index module to add DNS Mapper client
Package HTTP Server:
- update monitor to apply changes
Package Socket:
- add additional check if reading error: if buffer has data, send it to handler before break run
Other:
- bump dependencies
Package Errors:
- add function to check & cast error interface into golib Error interface
- update CodeError type to simplify management & error creation
- add function to simplify call of Error function from a generic error interface
- remove some useless function from Error interface
All Other Packages:
- apply change of package Errors into all other packages
- Rework logger
- Remove deprecated functions
- Split Logger to sub package (fields, level, config, ...)
- Optimize dependencies
- Rework Hookfile: fix error like FD still opened
- Rework Hooksyslog: use same model like Hookfile, use network/protocol instead of self lib
- Rework HookStd: use independent hook for std out & std err
- Fix std config make generic options for files & syslog
- Apply formatter to hook instead of main logger entry
- optimize code
Package ioutils:
- rework PathCheckCreate funct: optimize code & fix some error
Package Network:
- create sub package protocol for all network protocl use
- add encode function
Package httpcli:
- remove file network
- use package network/protocol instead of network file
Package archive:
- apply change following rework of logger
Package aws:
- apply change following rework of logger
Package cluster:
- apply change following rework of logger
Package cobra:
- apply change following rework of logger
Package Config Component:
- apply change following rework of logger to component log
- fix logger for monitoring
- fix component following fix of package request / monitoring
Package context:
- apply change following rework of logger
Package database:
- apply change following rework of logger
Package httpserver:
- apply change following rework of logger
Package ldap:
- apply change following rework of logger
Package monitor:
- apply change following rework of logger
- fix logger for monitoring
- fix minor bugs
Package nats:
- apply change following rework of logger
Package nutsdb:
- apply change following rework of logger
Package request:
- apply change following rework of logger
- fix minor bug
- fix missing logger for monitoring
- add one line for healthcheck (info or error)
Package router:
- apply change following rework of logger
Package static:
- apply change following rework of logger
Package status:
- apply change following rework of logger
- fix bug with mandatory component
Package viper:
- apply change following rework of logger
Other:
- bump dependencies
- github action workflow fix
- Add interface Errors to expose func for collection of errors
Package Server:
- Add runner packages for start/stop & ticker process launch in goroutines
- Runner Start/Stop : register a start and a stop function called into a managment instance of goroutines, expose package Server interface
- Runner Ticker : register a func periodycly called into a managment instance of goroutine with a time ticker, expose package server interface
- Add tools function to run x times a function or periodicly with a check function
Package HttpServer:
- Remove old run managment instance and use new Start&Stop Runner instead self runner
- Replace the poller in server start / stop with package server tools function
- Adjust code following this change
- Add in healthcheck a test of dialing to server binding network to perform the healthcheck
- Remove WaitNotify funct (cannot having multiple of waitnotify in same app) : keep waitnotify function in package config
Package Monitor:
- Remove old running system to use package server/runner/ticker
- Adjust code following
Package Cobra :
- Fix minor bug with writing configure
- Optimize code
Bump dependencies
Package Monitoring :
- use packag dedicated to monitor component
- each monitor work as standalone server to monitor health
- collect metrics to export them to prometheus exporter
Package Prometheus :
- review to simplify use for API and not API metrics
- optimize code
Package Status :
- Rework to use Monitor package
- Rework to use native json / text Marshaller interface
Context :
- rework context config (context var) to use sync map and sync RWMutex (WORM)
- move gin context to dedicated sub package (dependancies of logger make circular dependencies)
- optimize code
Config :
- rework to optimize sync / collect of component
- rework status to monitor
- remove monitor managment from config to each component
- add a func to set default logger to implement inherit default logger options
- optimize code
IOUtils :
- isolate logger / closer interface as a usable & public interface & instance
- this interface / instance allow to collect io.closer over a context to close all if context is done
Logger :
- rework to use context.config map
- rework to use ioutils closer
- rework to allow options to inherit a default options, or the last version of options
- optimize code
Size :
- Add package Size to calculate and manipulate size Byte or bit
- Add encoding : Text/JSON/Yaml/Toml...
- Add option to défine default unit : Byte or bit
Other :
- adjust following code
- optimize code
- limit use of atomic value
- rework to use RWMutex instead of sync.Mutex to maximize capabilities of read instead of write
- remove 32bit build for CI/CD
- add darwin/arm64 build for CI/CD
Bump Dependencies
- Fix too many open file for logger file
- Fix invalid FD for log file
- Fix bug with field into entry
- Fix race detection on testing
Package Status :
- Add capability to send short into query to received a short output without any result of component
- Add Connection Header as Close to router status return of Get
- Fix race detection into health with concurrent read/write data
- Fix race detection with update of main router
Package HTTPServer :
- Add option to disable keepalive for server
- Fix config tag error
- Fix logger usage / close
Package Config :
- Fix component using logger to implement a close
- Fix logger initialization :
- use local var to setup new logger based on logger clone if loger still existing
- if error while configuring new logger, do not change logger
- closing old logger before replace it with new
Package Router :
- Fix missing ignore error return
- Fix golib logger not closed
Other :
- Bump dependencies
- Bucket : add function Walk based on list but run a given function for each found bucket
- Object : add function Walk & WalkPrefix based on ListPrefix to run a given function for each returned object
- Object : add function WalkVersion & WalkVersionPrefix based on ListVersion to run a given function for each returned object version
Package logger:
- Fix bug with compat : a nil error not clean when sent to logger
Package Context:
- Fix bug with context/config : the load key return an atomic value instead of the interface stored
- major dependancies are :
- golib/context config
- golib/viper
- interface config extend :
- golib/context config interface
- component list
- interface component list :
this interface implement all function to manage a collection of component. All component are registred with they config key.
A component must implement basic function like start, stop, reload, defaultConfig...
The main config json is set by calling all component config with the config key attached
Each component have some status status like isStarted, isRunning, ...
Each component must also declare his dependencies with other component. As that when start or reload is called,
the component is sure that dependencies are still started or reloaded.
- They are 4 component for now : log, tls, headers and http server
- The config package will start a new context / cancelfunc on init to be sure to stop cleanly all component and process
Add Package Viper :
- this package is an helper to the config package with the spf13 viper lib
- this package can watch any change of a config file or can be connected to a remote config cluster like ETCD
Add Package Cobra :
- this package is an helper to make a CLI with flag / command
- this package is based on spf13 cobra has all method to be connected to viper golib
# Refactor Logger :
- Remove logger as globals to use dedicated pointer
- Add compat file to allow retro-compatibility (function are deprecated)
- Add field management to allow add custom information
- Add option struct to manage options
- Add entry struct to manage all log entry
- Add multithreading capabilities (with race prevention)
- Allow to log to file + stdout/stderr + syslog
- Add io.WriteCloser compatibility interface
- Add logrus hook to manage option by hook instance
- Add capabilities to custom each logfile/syslog/standard independently
- Add small test suite
# Update Packages for logger new options :
- archive
- cluster
- context
- httpcli
- httpserver
- ldap
- tests
# Other :
- bump dependancies
- update minio server for aws test
- Pkg HTTP Server : add option to force TLS as mandatory to start and server
- Pkg HTTP Server : add function to listen server with multiple handler (map[key string]http.handler)
- Pkg HTTP Server : add option to define an handler key to associate one server with one handler