Skip to content

Commit 8a915d3

Browse files
author
Richard Kuo (Danswer)
committed
Merge branch 'main' of https://github.com/onyx-dot-app/onyx into feature/propagate-exceptions
2 parents 2e1b13f + 29c84d7 commit 8a915d3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+582
-145
lines changed

.github/workflows/docker-build-push-model-server-container-on-tag.yml

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ on:
44
push:
55
tags:
66
- "*"
7-
paths:
8-
- 'backend/model_server/**'
9-
- 'backend/Dockerfile.model_server'
107

118
env:
129
REGISTRY_IMAGE: ${{ contains(github.ref_name, 'cloud') && 'onyxdotapp/onyx-model-server-cloud' || 'onyxdotapp/onyx-model-server' }}
@@ -15,7 +12,32 @@ env:
1512
BUILDKIT_PROGRESS: plain
1613

1714
jobs:
15+
# 1) Preliminary job to check if the changed files are relevant
16+
check_model_server_changes:
17+
runs-on: ubuntu-latest
18+
outputs:
19+
changed: ${{ steps.check.outputs.changed }}
20+
steps:
21+
- name: Checkout code
22+
uses: actions/checkout@v4
23+
24+
- name: Check if relevant files changed
25+
id: check
26+
run: |
27+
# Default to "false"
28+
echo "changed=false" >> $GITHUB_OUTPUT
29+
30+
# Compare the previous commit (github.event.before) to the current one (github.sha)
31+
# If any file in backend/model_server/** or backend/Dockerfile.model_server is changed,
32+
# set changed=true
33+
if git diff --name-only ${{ github.event.before }} ${{ github.sha }} \
34+
| grep -E '^backend/model_server/|^backend/Dockerfile.model_server'; then
35+
echo "changed=true" >> $GITHUB_OUTPUT
36+
fi
37+
1838
build-amd64:
39+
needs: [check_model_server_changes]
40+
if: needs.check_model_server_changes.outputs.changed == 'true'
1941
runs-on:
2042
[runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}-amd64"]
2143
steps:
@@ -55,6 +77,8 @@ jobs:
5577
provenance: false
5678

5779
build-arm64:
80+
needs: [check_model_server_changes]
81+
if: needs.check_model_server_changes.outputs.changed == 'true'
5882
runs-on:
5983
[runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}-arm64"]
6084
steps:
@@ -94,7 +118,8 @@ jobs:
94118
provenance: false
95119

96120
merge-and-scan:
97-
needs: [build-amd64, build-arm64]
121+
needs: [build-amd64, build-arm64, check_model_server_changes]
122+
if: needs.check_model_server_changes.outputs.changed == 'true'
98123
runs-on: ubuntu-latest
99124
steps:
100125
- name: Login to Docker Hub
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
"""Add background errors table
2+
3+
Revision ID: f39c5794c10a
4+
Revises: 2cdeff6d8c93
5+
Create Date: 2025-02-12 17:11:14.527876
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
11+
# revision identifiers, used by Alembic.
12+
revision = "f39c5794c10a"
13+
down_revision = "2cdeff6d8c93"
14+
branch_labels = None
15+
depends_on = None
16+
17+
18+
def upgrade() -> None:
19+
op.create_table(
20+
"background_error",
21+
sa.Column("id", sa.Integer(), nullable=False),
22+
sa.Column("message", sa.String(), nullable=False),
23+
sa.Column(
24+
"time_created",
25+
sa.DateTime(timezone=True),
26+
server_default=sa.text("now()"),
27+
nullable=False,
28+
),
29+
sa.Column("cc_pair_id", sa.Integer(), nullable=True),
30+
sa.PrimaryKeyConstraint("id"),
31+
sa.ForeignKeyConstraint(
32+
["cc_pair_id"],
33+
["connector_credential_pair.id"],
34+
ondelete="CASCADE",
35+
),
36+
)
37+
38+
39+
def downgrade() -> None:
40+
op.drop_table("background_error")

backend/ee/onyx/external_permissions/confluence/group_sync.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from ee.onyx.db.external_perm import ExternalUserGroup
22
from ee.onyx.external_permissions.confluence.constants import ALL_CONF_EMAILS_GROUP_NAME
3+
from onyx.background.error_logging import emit_background_error
34
from onyx.connectors.confluence.onyx_confluence import build_confluence_client
45
from onyx.connectors.confluence.onyx_confluence import OnyxConfluence
56
from onyx.connectors.confluence.utils import get_user_email_from_username__server
@@ -10,16 +11,19 @@
1011

1112

1213
def _build_group_member_email_map(
13-
confluence_client: OnyxConfluence,
14+
confluence_client: OnyxConfluence, cc_pair_id: int
1415
) -> dict[str, set[str]]:
1516
group_member_emails: dict[str, set[str]] = {}
1617
for user_result in confluence_client.paginated_cql_user_retrieval():
1718
logger.debug(f"Processing groups for user: {user_result}")
1819

1920
user = user_result.get("user", {})
2021
if not user:
21-
logger.warning(f"user result missing user field: {user_result}")
22+
msg = f"user result missing user field: {user_result}"
23+
emit_background_error(msg, cc_pair_id=cc_pair_id)
24+
logger.error(msg)
2225
continue
26+
2327
email = user.get("email")
2428
if not email:
2529
# This field is only present in Confluence Server
@@ -32,7 +36,12 @@ def _build_group_member_email_map(
3236
)
3337
if not email:
3438
# If we still don't have an email, skip this user
35-
logger.warning(f"user result missing email field: {user_result}")
39+
msg = f"user result missing email field: {user_result}"
40+
if user.get("type") == "app":
41+
logger.warning(msg)
42+
else:
43+
emit_background_error(msg, cc_pair_id=cc_pair_id)
44+
logger.error(msg)
3645
continue
3746

3847
all_users_groups: set[str] = set()
@@ -42,11 +51,18 @@ def _build_group_member_email_map(
4251
group_member_emails.setdefault(group_id, set()).add(email)
4352
all_users_groups.add(group_id)
4453

45-
if not group_member_emails:
46-
logger.warning(f"No groups found for user with email: {email}")
54+
if not all_users_groups:
55+
msg = f"No groups found for user with email: {email}"
56+
emit_background_error(msg, cc_pair_id=cc_pair_id)
57+
logger.error(msg)
4758
else:
4859
logger.debug(f"Found groups {all_users_groups} for user with email {email}")
4960

61+
if not group_member_emails:
62+
msg = "No groups found for any users."
63+
emit_background_error(msg, cc_pair_id=cc_pair_id)
64+
logger.error(msg)
65+
5066
return group_member_emails
5167

5268

@@ -61,6 +77,7 @@ def confluence_group_sync(
6177

6278
group_member_email_map = _build_group_member_email_map(
6379
confluence_client=confluence_client,
80+
cc_pair_id=cc_pair.id,
6481
)
6582
onyx_groups: list[ExternalUserGroup] = []
6683
all_found_emails = set()

0 commit comments

Comments
 (0)