Which is reponsible for:
* (de)serializing requests / responses
* providing request / response metadata for events
Also permit wider service / args models depending on chosen server / client codecs.
Backport #22.
Turns out resolving server endpoint and sending request to this endoint
are racy with respect to domain name resolution: for some reason
`gen_tcp` resolves literal IP addresses through general DNS
mechanism. This means that in the event DNS goes down between resolving
step and sending step one could get `{error, nxdomain}` in the second
step.
It's usually needed earlier than the message itself. And may even be used
to skip formatting altogether, with `msg_fun()` facility in Erlang
logger.
Simplify event handler interface which should make this module more
usable down the line.
Also use monotonic timestamps when measuring time intervals.
* Increase request id length limit up to 64
According to rbkmoney/coredocs#226.
* Bump joint worker timeout in tests
So they would flap less frequently, hopefully.
* Implement woody_client_thrift_v2 over new thrift codec facility, make it default
* Move tracing facilities into woody_trace_h
* Implement woody_server_thrift_v2 over thrift codec facility, make it default
* Bump to rbkmoney/genlib@54920e76
* Enforce tuple-based args representation
* Enable cross tests between impls
* Switch to master rbkmoney/thrift_erlang@4eda678c
* Monitor to detect client disconnetion on server side
* Renaming save_woody_state
* Rework monitor to use one per connection
* Changed event type
* wip: stream handler skeleton
* wip: log abnormal termination
* Upgrade cowboy to 2.7.0
* Finish migration to stream_handler
* Upgrade more dependencies
* Fix state type, remove early_error logging
* rename woody_monitor to comply with cowboy naming
* remove redundant monitor pid from state
* Log only socket errors
* wrap put_woody_state
* experimental: monitor for woody_events
* add missing update
* match on handle_event return, don't monitor tracing
* Rework update_woody_state
* Slightly increase min_complexity in linter config
* Make event state transition explicit
* Remove handle_event wraper
* Revert "Slightly increase min_complexity in linter config"
This reverts commit 38301e3b5b66967cb08c0bf7f27a2a8042a40a19.
* match unmetched returns
* Add test
* Erase trailing whitespace
* Refactor test
* Delete mistakenly added file
* Rename function
* Review fixes
* Match supervisor return
Co-Authored-By: Andrew Mayorov <a.mayorov@rbkmoney.com>
Co-authored-by: Andrew Mayorov <encube.ul@gmail.com>
* Add compex term formatting microbenchmark
* Format FP numbers more neatly
* Provide fast-path verbatim term formatter
* Add memory pressure benchmark runner
* Switch to rebar3_bench 0.2.1 package
* Employ assert macros throughout main ct suite
* Don't breal unicode
* Monir optimizations
* Strict strings via options
* Do not wrap call
* Add '...' to cuted lines
* Replace whitespace with single space
* Typo
* Typo
* Remove io_lib:format from hot path where possible
* Don't breal unicode
* Monir optimizations
* Strict strings via options
* Do not wrap call
* Add '...' to cuted lines
* Replace whitespace with single space
* Typo
* Typo
* Pass union value properly
* Fix exception handling for simple benary messages
* Fix and cleanup test
* Add missing format_as_exception to meta_client()
* Typo
* Force print trace_id and Co
* Use integer control char for formtatting numbers
* Sync
* Fix format for "wrong" struct
* Replace string formatting with inplace string representation
* Replace foldl with tail call
* Added opts comntainer
* Add formatting with depth
* Simplify depth increment
* More depth tests
* Format test data
* lint fixes
* Fix dialyzer errors
* Introduce current_length and max_length
* Add first tests for max_length
* Add length options
* Fix state in format_struct
* Fix test
* Move depth to stack from state
* Move length from state to stack
* Added more test on chars limit
* More tests
* Try to log more data nj logs
* Cleanup
* Fix line count in arguments
* Add missing formatted text in list and map
* Add comment to raw_string
* Formating
* Replace format with concatenation
* Fix dialyzer errors
* Fix lint errors
* Ignore false positives
* Added tests for max_length and max_depth
* Let logger decide how to format data in case of error
* Add formatter options to meta
* Fix lint error
* Increase complexity for dont_repeat_yourself
* Increase compliexity - 2
* Decrease complexity to minimal for current codebase
* Do not add '...' if no more argemunts in call
* Unify arguments for maybe_add_delimiter and may_be_add_more_marker
* Fix formating for list/set/map
* Simplify format build
* Log error
* Review fixes
* Move formatter options to environment
* Minor fixes and code cleanup
* Fix Opts
* Review fix
* Rework exception handling
* Move list and set format to separate functions
* Fix possible injection
* Eliminate possible badmatch
* Allow more complex dry
* Add test for sets
* Rework list formatter
* More strict limit for length
* Minor cleanup
* Remove unreachable code
* Switch back to formatter
* Remove unneeded flatten
* Do not format last list element if there is no room for it
* Remove unused Param
* Fix
* Simplify formatting call
* Add missing delimiter length
* Fix woody_event_formatter:format_reply/3
* Cleanup
* Add Opts to formatters
* Make skip message compact
* use ~w instead of ~p
* Typo
* Add formatter_opts to woody:options()
* Rework options
* Added escape for "'"
* Rework tests
* Fix tests
* Rework