If the rpc in `emqx_dashboard_monitor_api:get_collect/1` fails, an
empty map is return. But the current function expects a 4-tuple,
which results in a 500 error returned on such occasions.
```
curl -su admin:public localhost:8888/api/v5/monitor/current | jq .
{
"code": "INTERNAL_ERROR",
"message": "error, function_clause, [{emqx_dashboard_monitor_api,format_current_metrics,[[#{},{0,0,0,0},{0,0,0,0}],{0,0,0,0}],[{file,\"emqx_dashboard_monitor_api.erl\"},{line,179}]},{emqx_dashboard_monitor_api,current_counters,2,[{file,\"emqx_dashboard_monitor_api.erl\"},{line,167}]},{minirest_handler,apply_callback,3,[{file,\"minirest_handler.erl\"},{line,112}]},{minirest_handler,init,2,[{file,\"minirest_handler.erl\"},{line,38}]},{cowboy_handler,execute,2,[{file,\"cowboy_handler.erl\"},{line,41}]},{cowboy_stream_h,execute,3,[{file,\"cowboy_stream_h.erl\"},{line,318}]},{cowboy_stream_h,request_process,3,[{file,\"cowboy_stream_h.erl\"},{line,302}]},{proc_lib,init_p_do_apply,3,[{file,\"proc_lib.erl\"},{line,226}]}]"
}
```
* fix: ./bin/emqx ping return pong
* chore: waiting longer for logger flush log to disk
* fix: change swagger page's limit from 100 to 1000
* chore: type wrong
* fix: sync log to disk by logger_disk_log_h:filesync
* fix(dashboard_api): delete non-exist user wrongly return 204
* fix(dashboard): dashboard user should use `tags` not `tag`
* fix(dashboard): create/update user return 200 with full users list
* fix(dashboard): logout status code 204
* fix(dashboard): update pwd status code 204
* test: test suite for dashboard APIs
* refactor(dashboard): user info mnesia record name use description
* style: make elvis happy
* fix(api): dashboard swagger check request should not override env
* fix(dashboard): add/modify dashboard returns single record
* ci: update emqx-fvt version to new tag 1.0.2-dev1
* refactor(dashboard): rename 'password' field to 'pwdhash'
rename as it is not plaintext password stored in db
* refactor(emqx_dashboard): rename records
* test(emqx_dashboard_token): add test case to cover match specs
* feat(emqx_conf): move conf manager for emqx_machine to emqx_conf
* chore(emqx_conf): change emqx:get_config/2 to emqx_conf:get/2
* fix: common test failed
* fix: badmatch by typo wrong key
* fix(emqx_conf): get the wrong core nodes
* fix(emqx_conf): get core node's tnx_id not latest tnx_id
* fix: add ro_transation when copy conf file
* fix: delete debug info
* fix: change ekka_rlog to mria_rlog
* fix: remove cluster_rpc from emqx_machine.
* fix: don't call ekka:start/0 explicitly
* fix: ekka should be start in emqx_machine
The serious influence:
authn:
api
authz:
api; api test suit
dashboard:
all closed
lwm2m:
api;
modules:
api(api_topic_metrics, modules_api); test suit(emqx_modules_SUITE)
prometheus:
api
retainer:
api; api test suit
rule_engine:
api: api test suit
telemetry:
api
One step closer for better code abstraction for opensorce vs enterprise
So far this relocation is to make opensource to enterprise merges
conflict free.
And move emqx app back to root level
After realising the challenges of developing plugins in standalone
rebar projects. it is perhaps more smooth to keep using emqx as
a rebar dependency