sobanjom opened a new issue, #9040:
URL: https://github.com/apache/devlake/issues/9040

   <!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
   
       http://www.apache.org/licenses/LICENSE-2.0
   
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
   -->
   
   ## Question
   We are investigating how Apache DevLake handles repositories that are moved 
from one GitHub connection to another.
   
   Our DevLake instance contains the same GitHub repository and pull request 
under multiple connection-scoped identities. For example, GitHub PR `#137` from 
an example repo
   
   is present in the `pull_requests` table as follows:
   
   ```text
   github:GithubPullRequest:1:3375195798   OPEN
   github:GithubPullRequest:35:3375195798  MERGED
   github:GithubPullRequest:36:3375195798  MERGED
   github:GithubPullRequest:37:3375195798  MERGED
   ```
   
   GitHub confirms that PR `#137` was merged:
   
   ```text
   created_at: 2026-03-09T20:00:14Z
   updated_at: 2026-03-10T03:38:33Z
   closed_at: 2026-03-10T03:38:31Z
   merged_at: 2026-03-10T03:38:31Z
   ```
   
   The most recent pipeline for the project collected the repository through 
connection `35`:
   
   ```json
   {
     "plugin": "github_graphql",
     "options": {
       "connectionId": 35,
       "fullName": "",
       "githubId":
     }
   }
   ```
   
   That pipeline correctly created or updated the connection-`35` record to 
`MERGED`. However, the older connection-`1` record remains `OPEN` and is not 
updated by subsequent pipeline runs.
   
   Our reporting queries join pull requests to repositories by repository name 
and therefore include both the active connection-`35` record and the stale 
connection-`1` record. This results in incorrect open-PR counts unless we 
explicitly filter by the currently active connection-specific repository ID.
   
   Is this behavior expected by design, or should DevLake reconcile records 
across GitHub connections when the same GitHub repository and pull request are 
collected through a different connection?
   
   In particular:
   
   1. Is the connection ID intentionally part of the identity of a GitHub 
repository and pull request?
   2. When a repository is removed from connection `1` and added to connection 
`35`, should historical records under connection `1` remain permanently 
queryable?
   3. Should a future full-sync or backfill pipeline update the old 
connection-`1` record, even though connection `1` is no longer present in the 
project blueprint?
   4. Is there a supported procedure for migrating repository data between 
connections without creating duplicate tool-layer and domain-layer entities?
   5. Is there a recommended way to mark or remove obsolete connection-scoped 
records?
   6. What is the recommended query or dashboard strategy for counting PRs and 
identifying stale open PRs when the same repository exists under multiple 
connection IDs?
   7. Is there a supported cleanup or deduplication task that preserves related 
PR comments, reviews, commits, deployments, and DORA metrics?
   
   **Additional context**
   
   The project uses the GitHub GraphQL plugin and has `skipOnFail` enabled. The 
affected pipeline also experienced a separate network timeout while preparing a 
GitHub GraphQL task:
   
   ```text
   unable to get github API client instance
   Failed to connect
   dial tcp 20.26.156.210:443: i/o timeout
   ```
   
   However, for PR `#137`, the active connection-`35` record was successfully 
updated to `MERGED`. The issue appears specifically related to the older 
connection-`1` record remaining stale and being included in cross-connection 
reporting.
   
   The project’s sync policy is currently:
   
   ```text
   Data time range: 2026-05-07 01:00 to Now
   Sync frequency: Custom
   Skip failed tasks: Enabled
   ```
   
   We would appreciate clarification on whether this is:
   
   - expected connection-scoped identity behavior,
   - a limitation of connection migration,
   - a data cleanup/configuration issue,
   - or a defect in the GitHub GraphQL collector, extractor, converter, or 
project mapping logic.
   
   **Expected outcome**
   
   We would like to understand the supported DevLake behavior and obtain 
guidance for:
   
   - migrating repositories between GitHub connections,
   - preventing duplicate records,
   - excluding obsolete connection data from project metrics,
   - and safely cleaning up stale records without corrupting related DevLake 
data.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to