Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Goals:

  1. Improve operability in the Hydrator Studio (Improvements to logs, metrics, debuggability)
  2. Improve usability in the Hydrator Studio (Redesign of bottom panel, etc)

...

  1. Timeline:
    1. Starts at the program/service start time. Ends at the program/service end time (past) or current.
    2. Time range indicated by two sliders on each side. Time range can be selected by sliding these sliders.
    3. Updating slider position causes a refresh of the log viewer to show logs in the selected range with the selected filters
    4. If program/service is still running, the right/bottom end of the slider indicates current time, and if the slider is at this position, logs are updated live. The timeline keeps updating to reflect that.
    5. Sliders must not cross each other
    6. Label on the selected time range indicates the selected time range
    7. The timeline is marked with time range with granularity that depends on the duration of the log (which is the duration of the program run). 
    8. In the selected (or default time range), there should be symbols on the time line for the errors and warnings, as well as for events that match the filter in the search box. Clicking on such a symbol should navigate you to the corresponding event in the table. The graph may look like so:
  2. Filters:
    1. Filter by lowest log level: 
      1. If ERROR is selected, then we show only ERROR
      2. If WARN is selected, then we show ERROR and WARN
      3. If INFO is selected, then we show ERROR, WARN and INFO
      4. If DEBUG is selected, then we show ERROR, WARN, INFO and DEBUG
      5. If TRACE is selected, then we show ERROR, WARN, INFO, DEBUG and TRACE
    2. Filter by search keywords:
      1. Search box that filters logs by the search text.
      2. This is a simple filter that applies on the message column
  3. Log viewer Table:
    1. Columns:
      1. Timestamp
      2. Lowest Log Level
      3. Source - Only in CDAP - This column should not be shown in Hydrator
      4. Message (also contains stack trace).
    2. Default view shows single line messages, with (plus)/(minus) buttons to expand individual messages if they have more content
    3. Ability to suppress/show stack trace with a similar (plus)/(minus) buttons.
    4. Ability to expand all messages
    5. Ability to only view  the message column
  4. Top Bar:
    1. Shows information/summary of the log
    2. Indicates program/service name
    3. Summary of total messages with number of warnings and errors
    4. Download button to download entire log
    5. Search box for filtering.

Required Backend support:

...

  • As a Hydrator user, I want to be able to set complex schemas for my pipeline
    • I would like to have fields with enum, array, map, record and union types and would like an efficient method to create/manage them from the UI
  • As a Hydrator user, I would like to be able to view complex schemas for my pipeline

Design: 

Design PrincipalPrinciples

  1. No static real-estate allocation. Users can add rows with a (plus) button.
  2. Breadcrumbs as a primary means of creating/viewing complex schemas.

Design

  • Use a combination of dedicated screens with breadcrumbs for complex types
  • Main screen should show the top level data type: string, int, long, float, double, boolean, bytes, enum, array, map, record and union
  • Simple types string, int, long, float, double, boolean, bytes can be defined in the main screen itself, which is represented in breadcrumbs by the name of the stage for which schema is being defined
  • Enum: When an enum is selected, a sub-screen should accept enum values. Breadcrumb: <field-name> (enum)
  • Array: When an array is selected, a sub-screen should accept a data type (which in turn could be a complex type as well, in which case the same flow rules defined here would apply, and breadcrumbs would be updated). Breadcrumb: <field-name> (array)
  • Map: When a map is selected, a sub-screen should accept a key-type and a value-type (which in turn could be complex types as well, in which case the same flow rules defined here would apply for each, and breadcrumbs would be updated). Breadcrumb: <field-name> (map). 
    • Simple types for map key and value can be configured on the same map subscreen.
    • Breadcrumb for complex map key: key (<selected complex type>)
    • Breadcrumb for complex map key: value (<selected complex type>)
  • Record: When a record is selected, a sub-screen identical to the main screen shows up which accepts a nested record. Breadcrumb: <field-name> (record).
  • Union: When a union is selected, a sub-screen should accept the two schemas whose union is needed. Breadcrumb: <field-name> (record)
    • Simple types for both schema1 and schema2 can be selected on the same subscreen
    • Complex types for schema1 takes you to a sub-screen identical to the record sub-screen. Breadcrumb: schema1 (<selected complex type>)
    • Complex types for schema2 takes you to a sub-screen identical to the record sub-screen. Breadcrumb: schema2 (<selected complex type>)
  • For viewing, main screen only shows first level (string, int, long, float, double, boolean, bytes, enum, array, map, record and union) data types. Complex types are clickable, and take you to view-only views described above with breadcrumbs for navigation.

Scratch Pad:

 

Work Streams:

...