Creating two Adapter jobs with identical Data Source Name, Type, and Object Class causes 500 error on Data Sources page

XMLWordPrintable

    • Severity 2 - Major
    • Hide

      A fix has been identified by the development team and is pending deployment. 
      Workaround available — see Workaround section above.

      Show
      A fix has been identified by the development team and is pending deployment.  Workaround available — see Workaround section above.

      Issue Summary

      When two Adapter (Buoy) jobs are created with identical Data Source Name, Data Source Type, and Object Class, both jobs generate the same internal staging table name. This causes the Data Sources page to throw a 500 error for the entire tenant, making the UI completely inaccessible.

      Steps to Reproduce

      1. In the Adapters Client UI, create a job with Data Source Name = "HMS2", Data Source Type = "HCM", Object Class = "People"
      2. Create a second job with the same Data Source Name = "HMS2", Data Source Type = "HCM", Object Class = "People" (using the REST API directly, which does not enforce the uniqueness check the UI relies on)
      3. Allow both jobs to run at least once so they write entries to the internal task executive table
      4. Navigate to the Data Manager → Data Sources page

      Expected Results

      The Data Sources page loads successfully and displays all configured data sources.

      Actual Results

      The Data Sources page returns a 500 Internal Server Error for the entire tenant. No data sources are visible and the page is completely inaccessible.

      The below exception is thrown in the log file:

      System.ArgumentException: An item with the same key has already been added. Key: STG_HMS2_HCM_People
         at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
         at BuoyTaskExecutiveService.GetAllLastUpdateDatesAsync(List`1 tableNames)
         at DataSourceService.GetAllWithExecutivesAsync(String name, String objectName, String dataSourceTypeName)
         at DataSourceController.GetWithExecutives(String name, String objectName, String dataSourceTypeName)
      

      Workaround

      In the Adapters Client UI, navigate to the conflicting job and rename the Data Source Name to something unique (e.g. change "HMS2" to "HMS2v2"). Save and re-run the job. The new job will generate a unique table name and the Data Sources page will load successfully.

      Note: If direct REST API access was used to create jobs bypassing the UI duplicate check, both conflicting jobs must be inspected and one must be renamed or deleted before re-running.

              Assignee:
              Unassigned
              Reporter:
              Chethan Yadav
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: