anchor.diff:      %% Function internally calls config_manager to pull the config value
       config_manager ! {self(), Key},
       receive
  -        Val ->
  +        {config_manager, Val} ->
               Val
       end.
   
  
positive.code: config_manager(Map) ->
      receive
          {From, Key} ->
              From ! maps:get(Key, Map),
              config_manager(Map)
      end.
  
  
negative.code:     case bitcask:put(DBHandle, BinaryKey, BinaryVal) of
          ok ->
              Parent ! {"PUT", Key, Val};
          {error, Reason} ->
              ?P("Put failed for key: ~p for ~p~n", [BinaryKey, Reason]),
              Parent ! {"PUT", Key, error}
      end.
  
  handle_io(Parent, Op, Key, Val) ->
      case Op of
          "GET" ->
              DBHandle = open_store(),
              handle_node_get(Parent, DBHandle, Key),
              bitcask:close(DBHandle);
          "PUT" ->
              DBHandle = open_store(),
              % bitcask writes data to disk. Every key is mapped to one file.
              % So updating same key across multiple process requires acquiring the lock.
              % Inorder to handle atleast 100 requests or so for same key sleep is used.
              timer:sleep(10),
              handle_node_put(Parent, DBHandle, Key, Val),
              bitcask:close(DBHandle);
          true -> Parent ! {Op, Key, Val}
      end.
  
  read_config() ->
      application:ensure_all_started(econfig),
  