Skip to content
  1. Jun 03, 2019
  2. Mar 16, 2019
    • Alberto Miranda's avatar
      Remove task descriptors when tasks complete · e14e29a6
      Alberto Miranda authored
      Calling norns(ctl)?_error() to query the status of a running task will
      release its descriptor in the server if the task already completed
      (NORNS_EFINISHED or NORNS_EFINISHEDWERROR). Since norns(ctl)?_wait()
      internally queries the task status to check whether a task has
      completed, we cache the retrieved task_status into the iotask_t user
      descriptor so that it can be retrieved by a subsequent
      norns(ctl)?_error() call.
      e14e29a6
    • Alberto Miranda's avatar
      Add timeout parameter to waiting functions · c484573c
      Alberto Miranda authored
      Functions norns_wait() and nornsctl_wait() now accept an optional
      const struct timespec *timeout (see nanosleep(2)) to allow users
      to suspend the calling thread until one of the following occurs:
      
      * A signal is delivered and the task has already completed.
      * The specified time interval has already passed.
      
      If timeout is NULL, the functions will suspend the thread for
      a predefined amount of time and query the server upon waking up.
      
      Note that since the server does not allow registering listeners at the
      moment, the thread will wake only when one of the aforementioned
      conditions has occurred, even if the task of interest has already finished.
      c484573c
  3. Mar 11, 2019
  4. Mar 08, 2019
  5. Mar 07, 2019
    • Alberto Miranda's avatar
      Rename norns_status() to norns_error() · 074515b8
      Alberto Miranda authored
      We need to provide a nornsctl_status() function to check the status of
      administrative data transfer tasks, but we already have
      a nornsctl_status() function in the API that checks the global status of
      the service. Thus, we decided to keep the current nornsctl_status() and
      rename norns_status() to norns_error() and provide a nornsctl_error()
      for simmetry.
      074515b8
  6. Feb 26, 2019
  7. Oct 04, 2018
    • Alberto Miranda's avatar
      Add tests to exercise NORNSCTL_COMMAND_SHUTDOWN · 12c32dd2
      Alberto Miranda authored
      The duration of 'sleep phases' in dry run tasks can now be defined both
      in the command line (by passing an integer with the number of usecs to
      wait) and in tests (by using the dry_run_duration field in the
      fake_daemon_cfg class).
      12c32dd2
  8. Sep 20, 2018
    • Alberto Miranda's avatar
      First implementation of shutdown command · 46db6047
      Alberto Miranda authored
      When invoked, the daemon checks whether active tasks remain to be
      processed and, if so, returns NORNS_ETASKSPENDING. If there are no
      active tasks, but there are tracked namespaces that are not empty, the
      daemon return NORNS_ENAMESPACENOTEMPTY. Otherwise, the daemon returns
      NORNS_SUCCESS and shuts itself down.
      46db6047
  9. Sep 18, 2018
    • Alberto Miranda's avatar
      Add a 'tracked' field to namespaces · 7a589d40
      Alberto Miranda authored
      Clients can now provide a 'track' flag when defining a namespace to let
      urd know that it must keep track of the namespace contents. The flag is
      currently propagated by the messaging system and stored in the internal
      backend metadata. Tracking not implemented yet.
      7a589d40
  10. Sep 17, 2018
    • Alberto Miranda's avatar
      Add support for local file deletion · be496c5e
      Alberto Miranda authored
      The norns library and service now supports a new type of i/o task called
      NORNS_IOTASK_REMOVE that enqueues the deletion of a resource from
      a backend. As of right now, only the deletion of NORNS_LOCAL_PATHs is
      supported.
      be496c5e
  11. Aug 29, 2018
  12. Aug 23, 2018
  13. Aug 21, 2018
    • Alberto Miranda's avatar
      Add NORNS_DEBUG_CONFIG_FILE_OVERRIDE env variable · 15545ec4
      Alberto Miranda authored
      Added a new environment variable NORNS_DEBUG_CONFIG_FILE_OVERRIDE that
      allows test programs to override the load process for the default
      configuration file. When setting this variable, the test program is
      expected to call either libnorns_reload_config_file() or
      libnornsctl_reload_config_file() to set the configuration file for the
      test explicitly.
      
      This commit closes #3.
      15545ec4
  14. Aug 17, 2018
    • Alberto Miranda's avatar
      Add nornsctl_status function · 7fe672fa
      Alberto Miranda authored
      The new nornctl_status function queries the urd daemon and returns
      summarized stats about all iotasks currently in the system. More
      specifically, the function returns a nornsctl_stat_t structure that
      contains the following information:
          st_running_tasks: Number of tasks currently running
          st_pending_tasks: Number of tasks currently pending
          st_eta: Estimated Time of Arrival of the currently running tasks
                  (in seconds). Note that, internally, the daemon estimates
                  how long a task will take by keeping track of the average
                  namespace-to-namespace bandwidth from previous requests.
                  This means that this field may contain NaN if no tasks
                  have yet completed, since the daemon will not be able to
                  estimate the E.T.A.
      7fe672fa
  15. Jul 11, 2018
  16. Jul 09, 2018
  17. Jun 19, 2018
  18. Jun 13, 2018
  19. Jun 12, 2018
    • Alberto Miranda's avatar
      aafa84e1
    • Alberto Miranda's avatar
      Improve daemon and library configuration · ac75a49b
      Alberto Miranda authored
      - Changed the format of the global service configuration file to a
      YAML-like format
      - Urd daemon is now able to read its configuration from the
      newly-formatted configuration file.
      - Companion libraries linorns and libnornsctl are now capable of
      reading their configuration from the global service configuration file.
      - Libraries now encapsulate their state in a context structure shared
      by all threads rather than in globals.
      - Tests are only built now if the --enable-tests option is passed
      when invoking configure
      - Tests updated to patch the libraries on the fly in order to use
      case-by-case configuration files.
      - Tests now only cleanup their internal data if the test succeeds.
      ac75a49b
  20. May 14, 2018
  21. May 04, 2018
    • Alberto Miranda's avatar
      Significant changes to data resource management · 617bad66
      Alberto Miranda authored
      - Add transferor_registry class to manage resource transfer functions
      - First implementation of 'local path' to 'local path' transferor using
        fadvice+fallocate+sendfile.
      - Add stubs for other converters
      - Move dispatch_table from api to common since it's now also used by
        transferor_registry.
      - Add get() function to dispatch_table class so that stored functors
        can be retrieved.
      - Generic implementation of task::operator()() to transfer resources and
        resource elements between different backends. When constructed, the
        task is provided with the input and ouput resources as well as a
        'transferor' functor that is invoked upon them to perform the actual
        transfer.
      - Add new_resource() and get_resource() methods to backends to promote
        resource_info instances to fully qualified resources.
      - Implementation of new_resource() and get_resource() for a POSIX
        filesystem. Stubs for other backends.
      - New convenience library that aggregates all symbols for resources
      - Add name() and is_collection() methods to class resource_info.
      - Provide implementation for boost::filesystem::relative() in utils.cpp
        if boost version <= 1.6.0
      - Remove resource::buffer, no longer needed (superseeded by transferors).
      - Remove resource::stream, no longer needed (superseeded by transferors).
      - Remove functions resource::info(), resource::backend(), and
        resource::set_backend().
      - Reorganize resources build hierarchy
      - Remove self-registration of backends
      - Update tests
      - Cleanup unused code
      617bad66
  22. Mar 25, 2018
    • Alberto Miranda's avatar
      Important API refactoring · 65b151ed
      Alberto Miranda authored
      - Rename norns_register_backend to norns_register_namespace
      - Rename norns_unregister_backend to norns_unregister_namespace
      - Rename norns_update_backend to norns_update_namespace
      - API is now more symmetrical: all norns_*_namespace functions
      receive an nsid as first parameter (in previous versions this
      was not consistent).
      - The norns_job_t descriptor now requires a norns_job_limit_t
      parameter that defines what the job will be allowed to do, rather
      than a norns_backend_t specification as in previous versions.
      - Other changes: message passing logic improved
      65b151ed
  23. Mar 22, 2018
    • Alberto Miranda's avatar
      Fake tasks can now be created for testing · 119084c6
      Alberto Miranda authored
      - task_manager is now a full-fledged class rather than
      inheriting from std::unordered_map
      - changes to handlers to reflect the new interface
      in task_manager
      - new dry_run option for enabling "fake task mode"
      - in libraries, log errors to stderr only if env var
      NORNS_DBG_LOG_TO_STDERR is defined.
      119084c6
  24. Mar 19, 2018
  25. Mar 18, 2018
  26. Mar 17, 2018
  27. Mar 10, 2018
  28. Feb 22, 2018
  29. Feb 02, 2018
  30. Jan 26, 2018