anchor.diff:  %% @end
   %%-------------------------------------------------------------------
   -spec datetime_to_epoch(calendar:datetime()) -> non_neg_integer().
  -datetime_to_epoch({{_,_,_},{_,_,_}} = DateTime) ->
  +datetime_to_epoch({{_, _, _}, {_, _, _}} = DateTime) ->
       calendar:datetime_to_gregorian_seconds(DateTime) - ?UNIX_EPOCH.
   
   
  
positive.code: %% API calls. The time is returned in seconds, and in most cases it has one
  %% second accuracy.
  %% Cache key is used to allow different caches for different remote servers.
  %% @end
  %%--------------------------------------------------------------------
  -spec remote_timestamp(CacheKey :: atom(), RemoteTimestampFun :: fun()) ->
  
negative.code: -spec cluster_time_milli_seconds() -> non_neg_integer().
  cluster_time_milli_seconds() ->
      remote_timestamp(cluster_time_bias, fun() ->
          try
              {ok, gen_server2:call({global, ?CLUSTER_MANAGER}, get_current_time)}
          catch
              exit:{Reason, _} ->
                  ?warning("Cannot get cluster time due to: ~p", [Reason]),
                  error
          end
      end).
  
  
  