Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
4835 commits
Select commit Hold shift + click to select a range
963c0f4
Enhance kafka notification to have typeName
aarshi0301 Nov 14, 2025
c01707d
enhance kafka message to emit typename
aarshi0301 Nov 14, 2025
5d6f28b
fix metrics
aarshi0301 Nov 18, 2025
abd5088
Merge pull request #5665 from atlanhq/fixobservability
aarshi0301 Nov 18, 2025
00e5889
MLH-1762 Fix UnsupportedOperationException with AbstractList
nikhilbonte21 Nov 19, 2025
b0f4186
MLH-1762 Address review comment
nikhilbonte21 Nov 19, 2025
9184be4
Merge pull request #5666 from atlanhq/MLH-1762
aarshi0301 Nov 19, 2025
dbd4569
Add service level configuration to enable full restriction
krsoninikhil Jun 24, 2025
c704530
Enable full restriction based on config in handler itself
krsoninikhil Jun 27, 2025
398573c
Use prefix instead of wildcard where possible
krsoninikhil Nov 18, 2025
d63bfdb
Fix enforcer in final authz log combined for both authorizer
krsoninikhil Nov 18, 2025
aac6280
Fix comments
krsoninikhil Nov 18, 2025
b0a9d6f
Fetch vertex for action other than read
krsoninikhil Nov 18, 2025
87a6082
mesh-747: validation cm properties
ankitpatnaik-atlan Nov 20, 2025
ef49b8b
mesh-747: handled enumType in option map
ankitpatnaik-atlan Nov 20, 2025
040b41d
mesh-747: handled NPE
ankitpatnaik-atlan Nov 20, 2025
f4bcd4a
Skip abac evaluation if atlas deny with higher priority
krsoninikhil Nov 21, 2025
bb282f8
Handle cases where qn might be empty
krsoninikhil Nov 21, 2025
e38c000
Merge pull request #4918 from atlanhq/ns/feat/full-restrict
krsoninikhil Nov 21, 2025
fb4758c
PLT-3284 | Remove soft affinity for internal tenants (#5670)
deepesh-atlan Nov 24, 2025
8a5e6b9
MLH-1477 Replay Failed ES transactions | Bring consistency between 2 …
sriram-atlan Nov 24, 2025
8b7c4dc
MLH-780 | Whitelist elasticsearch URL for remote re-index (#5690)
hitk6 Nov 24, 2025
6e9b0ad
Merge branch 'master' into mlh-1521
aarshi0301 Nov 25, 2025
cc4e3d4
cleanup and add comments
aarshi0301 Nov 25, 2025
20a50e8
restore filr
aarshi0301 Nov 26, 2025
2fdd408
remove unused method
aarshi0301 Nov 26, 2025
450eb7b
Merge pull request #5548 from atlanhq/mlh-1521
aarshi0301 Nov 26, 2025
9b7c8d5
MLH-1806 skip dsl optimisation when enableFullRestriction is applied …
sriram-atlan Nov 26, 2025
f9c2bb9
Merge pull request #5696 from atlanhq/MLH-1480
nikhilbonte21 Nov 26, 2025
ffccb4e
Resized resource limits for cassandra icarus
preetam-atlan Nov 26, 2025
4b4f815
Merge pull request #5701 from atlanhq/MLH-1807
suchits07 Nov 26, 2025
e1ed8db
Toggle for SmokeTests (#5711)
krishnanunni-atlan Nov 27, 2025
5a048d4
mesh-747: resolved reviews
ankitpatnaik-atlan Nov 28, 2025
b81e52a
mesh-747: added unit tests
ankitpatnaik-atlan Dec 1, 2025
75b6a4e
Merge pull request #5646 from atlanhq/mesh-739
ankitpatnaik-atlan Dec 1, 2025
0defa27
Merge pull request #5673 from atlanhq/mesh-747
ankitpatnaik-atlan Dec 2, 2025
f8236a1
Rebase idOnlyMaster manually
nikhilbonte21 Dec 2, 2025
cf5e7ce
Rebase idOnlyMaster manually part 2
nikhilbonte21 Dec 2, 2025
1a102c3
Rebase idOnlyMaster manually part 3 Fix ES issue
nikhilbonte21 Dec 3, 2025
f16b90a
Resized atlas-cassandra container
preetam-atlan Dec 3, 2025
8485341
Merge pull request #5721 from atlanhq/MLH-1832
suchits07 Dec 3, 2025
114d4f5
MLH-1821: Update ES mapping for Custom Metadata to not index value mo…
sameer693 Dec 3, 2025
474cecd
MLH-1866 LeanGraph: code: Specific vertex label for Asset vertices wh…
nikhilbonte21 Dec 3, 2025
1e8b7c3
Lombok fixes - sets lombok to project level, added to annotation proc…
henneberger-atlan Dec 3, 2025
92dac73
fix: Clear __meanings and __meaningsText when removing glossary terms…
Dec 3, 2025
7926398
feat: init configs which can be tuned to stop notifications, audits, …
sumandas0 Dec 4, 2025
73a2bf4
Merge pull request #5730 from atlanhq/leangraphdeploy
sumandas0 Dec 4, 2025
bafe040
Handle hard-coded index names
nikhilbonte21 Dec 4, 2025
ea8b0ee
MLH-1874 Fix issues, configuration based flag for lean gaph feature
nikhilbonte21 Dec 4, 2025
6147c8a
Merge pull request #5731 from atlanhq/leangraphindexname
nikhilbonte21 Dec 4, 2025
72a3a15
removed uncessary if made it one liner
sameer693 Dec 4, 2025
168c364
Merge branch 'idonlymasterrefreshfiles' into nb/idonlymasterrefreshfiles
nikhilbonte21 Dec 4, 2025
bb5c28d
MLH-1874 Address review comment
nikhilbonte21 Dec 4, 2025
0a8d14c
Merge pull request #5725 from atlanhq/nb/idonlymasterrefreshfiles
nikhilbonte21 Dec 4, 2025
0456291
fix: Get users roles from groups as well for member users in case of …
vishal-atlan Dec 4, 2025
1524ae9
Move scope to parent pom
henneberger-atlan Dec 4, 2025
ab9cff8
Keep provided scope in child pom
henneberger-atlan Dec 4, 2025
492f034
build branch
sriram-atlan Dec 4, 2025
6aae950
Merge remote-tracking branch 'origin/idonlymasterrefreshfiles' into i…
sriram-atlan Dec 4, 2025
eae9495
handle NPE
vishal-atlan Dec 4, 2025
7d741d3
LeanGraph: Handle review comments (#5734)
nikhilbonte21 Dec 5, 2025
ddf51c2
LeanGraph: Fix repair index APIs
nikhilbonte21 Dec 5, 2025
144105e
LeanGraph: Fix remove list/set properties for core properties
nikhilbonte21 Dec 5, 2025
fc05e9e
LeanGraph: Fix vertex already removed issue
nikhilbonte21 Dec 5, 2025
b4c8999
LEanGraph: Address review comment
nikhilbonte21 Dec 6, 2025
0c992a6
Merge pull request #5739 from atlanhq/nb/idonlymasterrefreshfiles
sriram-atlan Dec 6, 2025
9deef8a
keep the order for relevance
sriram-atlan Dec 6, 2025
783aefb
Merge pull request #5740 from atlanhq/keep-relevance-order
sriram-atlan Dec 6, 2025
5d8455d
Merge pull request #5736 from atlanhq/ADMIN-413
vishal-atlan Dec 8, 2025
e82688d
MLH-1889 LeanGraph: Fix tags failures due to notifications issue
nikhilbonte21 Dec 9, 2025
cc27eb6
MLH-1889 LeanGraph: Address cursor bot review comments
nikhilbonte21 Dec 9, 2025
7910902
MLH-1889 LeanGraph: Address cursor bot review comments
nikhilbonte21 Dec 9, 2025
7f99d9e
MLH-1889 Address review comments
nikhilbonte21 Dec 9, 2025
d83c920
Merge pull request #5744 from atlanhq/nb/idonlymasterrefreshfiles
sriram-atlan Dec 9, 2025
bedf4e9
Merge pull request #5749 from atlanhq/hotfix/add-leangraphsts-to-disp…
sumandas0 Dec 9, 2025
d718bd7
Refactor meanings text update into smaller methods with optimization …
Dec 9, 2025
d60b4cb
Fix: Use LinkedHashSet for deterministic ordering in meaningsText pro…
Dec 9, 2025
d9396d9
Fix: Clear MEANING_NAMES in full-replace mode to prevent stale names
Dec 9, 2025
c5fc78b
Fix: Use all names in full-replace mode instead of filtered new names
Dec 9, 2025
7be1da8
Fixed notifications for /bulk
suraj5077 Dec 10, 2025
4e527f0
Merge pull request #5724 from atlanhq/MLH-1821-update-es-mapping-for-…
sriram-atlan Dec 10, 2025
781de80
MLH-1898 LeanGraph: Fix failing Restore test cases
nikhilbonte21 Dec 10, 2025
5a8c01c
MLH-1902 LeanGraph: Handle enrich Attributes via typeDefs APIs
nikhilbonte21 Dec 9, 2025
3f95dcc
MLH-1902 Address serlf review comments
nikhilbonte21 Dec 9, 2025
d6035e8
MLH-1902 Address bugbot review comments
nikhilbonte21 Dec 9, 2025
c5e5293
MLH-1902 Refactoring
nikhilbonte21 Dec 9, 2025
9f0bc0e
MLH-1902 Refactoring
nikhilbonte21 Dec 9, 2025
67e31fb
MLH-1902 Address bugbot comments
nikhilbonte21 Dec 9, 2025
9a7fac8
MLH-1890 LeanGraph: Support attributes having isUnique: true as core …
nikhilbonte21 Dec 10, 2025
d0cab31
MLH-1890 LeanGraph: Address review comments
nikhilbonte21 Dec 10, 2025
57a9193
Address bugbot comments
nikhilbonte21 Dec 10, 2025
42b99ce
Address bugbot comments
nikhilbonte21 Dec 10, 2025
c73e0f7
Added tests
suraj5077 Dec 10, 2025
d51da53
renaming - code cleanup
suraj5077 Dec 10, 2025
dbe8511
Merge pull request #5750 from atlanhq/fix-mlh-1867
suraj5077 Dec 11, 2025
9108960
refactor: Extract meanings text property logic to dedicated helper class
Dec 11, 2025
96d12ec
Merge pull request #5728 from atlanhq/mlh1858
hr2904 Dec 11, 2025
c8d0a24
fix: Update __meaningNames before computing __meaningsText
Dec 11, 2025
350102b
Merge pull request #5757 from atlanhq/mlh1858
hr2904 Dec 11, 2025
53a2eaa
GOVFOUN-40: Rollback two way auth for asset term linking
ankitpatnaik-atlan Dec 5, 2025
b837112
GOVFOUN-40: Restrict linking term to asset
ankitpatnaik-atlan Dec 12, 2025
9242a6c
GOVFOUN-40: Removed restriction on Admins
ankitpatnaik-atlan Dec 12, 2025
7e4d125
Merge pull request #5755 from atlanhq/enriches
nikhilbonte21 Dec 12, 2025
d701354
Merge pull request #5754 from atlanhq/MLH-1898
nikhilbonte21 Dec 12, 2025
943e71b
Improved direct tag del for ES staleness
suraj5077 Dec 12, 2025
56e7174
fix
suraj5077 Dec 12, 2025
ebfb144
Added int test for tag ES attributes check on delete
suraj5077 Dec 12, 2025
dad19ae
Merge pull request #5763 from atlanhq/tag-del-improve
arniesaha Dec 12, 2025
13173bc
Fix attributes empty in propagation notifications
nikhilbonte21 Dec 15, 2025
909d575
redis dependency fix race condtions
suraj5077 Dec 15, 2025
df94d34
Merge pull request #5769 from atlanhq/redis-fix
suraj5077 Dec 15, 2025
0878097
Fix: Prevent IllegalStateException in classification propagation
Dec 15, 2025
ceb21ea
Disabled test
suraj5077 Dec 15, 2025
c3e601d
Merge pull request #5771 from atlanhq/redis-fix
suraj5077 Dec 15, 2025
aa4889e
Fix: Restore V1 listener fallback for classification propagation dele…
Dec 15, 2025
7b4c3ad
Implement aggressive disk cleanup - Master
krishnanunni-atlan Dec 15, 2025
97e7ca3
Merge pull request #5772 from atlanhq/space-fix
krishnanunni-atlan Dec 15, 2025
17187db
Merge pull request #5768 from atlanhq/fifa-qa-tag-incons
hr2904 Dec 16, 2025
06f6f0d
Fixed a minor syntax error that went with rebase.
Dec 16, 2025
9455a74
Merge pull request #5774 from atlanhq/fifa-qa-inconsis-2
hr2904 Dec 16, 2025
9342268
mesh-765: allow removing attributes from archived dataproducts
ankitpatnaik-atlan Dec 17, 2025
89b8c78
MLH-1847: [Security] Fix External Service HTTP Interaction and SSI In…
sameer693 Dec 17, 2025
b70b660
Handle null owner attributes and sanitize validation logging
sameer693 Dec 18, 2025
e2171da
mesh-765: Remove validation from GraphMapper and unit tests
ankitpatnaik-atlan Dec 18, 2025
799f21c
Merge pull request #5776 from atlanhq/mesh-765-allow-bm-updates
ankitpatnaik-atlan Dec 18, 2025
dcc369b
Update chart-release-dispatcher.yaml (#5782)
sumandas0 Dec 18, 2025
0e45909
fixed user validation method userStore.getUserGroupMapping();
sameer693 Dec 18, 2025
065dd87
BUG Fixes with Fixed URL Check Bypass and fixed Silent Dropping of No…
sameer693 Dec 18, 2025
54ee423
Fixed inconsistent state modification: when a single-value user or gr…
sameer693 Dec 18, 2025
787becc
Fixed Missing type check for announcementMessage attribute cast
sameer693 Dec 18, 2025
0f043e1
Implemented user store to support full group mapping.
sameer693 Dec 18, 2025
1ba46c6
added ATTR_OWNER_USERS,ATTR_OWNER_GROUPS,ATTR_ANNOUNCEMENT_MESSAGE to…
sameer693 Dec 18, 2025
d5b6c13
heracles dependency to fetch group response
sameer693 Dec 18, 2025
58f162c
refactor: extract user and group attribute validation logic
sameer693 Dec 18, 2025
f0b31a6
Fix: skip user/group existence check if mapping is empty
sameer693 Dec 18, 2025
cfa6d43
Updated getAssetIdentifier Added sanitizeForLogging
sameer693 Dec 19, 2025
0da17c6
added log for announcmentMessage with assetidentifier
sameer693 Dec 19, 2025
6aee35c
Variable 'values' can be replaced with pattern variable
sameer693 Dec 19, 2025
a9fe130
moved all security related validator to a standalone class which will…
sameer693 Dec 19, 2025
17241d4
added a RESERVED_ATTRIBUTE_KEYS set containing the protected keys
sameer693 Dec 19, 2025
c480929
Update policy transform for dq
BichitraCodesAtlan Dec 19, 2025
17a54b9
Merge pull request #5726 from atlanhq/duplicateLombok
sriram-atlan Dec 19, 2025
45a564d
Merge pull request #5788 from atlanhq/dq-369
BichitraCodesAtlan Dec 19, 2025
ccaa58d
MLH-1847 Address review comments
nikhilbonte21 Dec 22, 2025
fc04bfa
MLH-1847 Address review comments
nikhilbonte21 Dec 22, 2025
2058fe1
Merge pull request #5779 from atlanhq/MLH-1847
nikhilbonte21 Dec 22, 2025
aae5dd7
Backward compatibility for migrated docId<>vertexId conversion
nikhilbonte21 Dec 23, 2025
4487dbb
Merge pull request #5770 from atlanhq/nb/idonlymaster
nikhilbonte21 Dec 23, 2025
c1049e4
Add minimal typeDefs file
nikhilbonte21 Dec 23, 2025
ad1a265
GOVFOUN-40: remove placeholders for add-terms permission
ankitpatnaik-atlan Dec 26, 2025
e4328f4
backward compatibility and silently skipping the invalid record
sameer693atlan Dec 26, 2025
2b42645
GOVFOUN-40: Allow linking term to readme & link
ankitpatnaik-atlan Dec 26, 2025
a78bac1
Merge pull request #5796 from atlanhq/MLH-1847-skip-invalid-user-groups
suraj5077 Dec 26, 2025
724b77d
MS-332 Cassandra Reaper Optimisation - Master
krishnanunni-atlan Dec 29, 2025
6a759e8
copy to online-dc
krishnanunni-atlan Dec 29, 2025
297352b
Update Cassandra host and datacenter in cronjob
krishnanunni-atlan Dec 29, 2025
d8324c1
Merge pull request #5798 from atlanhq/MS-332-master
krishnanunni-atlan Dec 30, 2025
ad6e180
use atlas-sa for atlas service (#5806)
hitk6 Jan 5, 2026
7d648aa
remove cinv dependicies entirely (#5812)
hitk6 Jan 5, 2026
1339313
MS-378 - Fixed has lineage with better design
suraj5077 Jan 6, 2026
139d94b
cache fallback added
suraj5077 Jan 7, 2026
1b22c09
Added fallback cache
suraj5077 Jan 7, 2026
022fd48
Revert "cache fallback added"
suraj5077 Jan 7, 2026
e6389a2
Added asset label check
suraj5077 Jan 7, 2026
9e990c1
Enhance vertex caching mechanism in RequestContext and GraphDbObjectF…
suraj5077 Jan 7, 2026
896f1ea
Merge pull request #5816 from atlanhq/fix_has_lin
suraj5077 Jan 7, 2026
d699b10
feat: add leangraph shadow deployment (#5814)
sumandas0 Jan 8, 2026
26081eb
feat: move leangraph Cassandra into templates (#5825)
sumandas0 Jan 8, 2026
869ae8c
MS-366 handle opposite actions for asset updates.
sriram-atlan Jan 7, 2026
0c96d37
MS-366 NOT remove from added when removed is set
sriram-atlan Jan 7, 2026
e5eb7b6
MS-366 bidirectional deduplication, but with "skip if already exists …
sriram-atlan Jan 8, 2026
36ff16e
MS-365 add to differential entity for mutatedDetails
sriram-atlan Jan 8, 2026
4145450
MS-366 move private methods
sriram-atlan Jan 8, 2026
d93a0e1
feat: remove invalid CINV SA from the STS (#5833)
sumandas0 Jan 9, 2026
f3db536
feat: Optimize Cassandra CPU resources for production and development…
hitk6 Jan 9, 2026
3005bdd
feat: keep default leangraph as false (#5836)
sumandas0 Jan 10, 2026
c741e89
MS-416 update helm config for hasLineage async processing
sriram-atlan Jan 12, 2026
4b47018
Merge pull request #5839 from atlanhq/ms-416-metastore
sriram-atlan Jan 12, 2026
a740bd4
Remove flooded warn statement
nikhilbonte21 Jan 13, 2026
da57b3d
GOVFOUN-40: correct error message during failure
ankitpatnaik-atlan Jan 13, 2026
c30d92c
Resolve merge conflicts with master
ankitpatnaik-atlan Jan 13, 2026
6f4b512
MS-425 Atlas Container Resize - Master (#5846)
krishnanunni-atlan Jan 13, 2026
071b43c
GOVFOUN-40: close metric recorder
ankitpatnaik-atlan Jan 13, 2026
b3649e2
feat: change keyspace, index_name for continuity (#5847)
sumandas0 Jan 13, 2026
7d6d3c3
Merge pull request #5827 from atlanhq/ms-365-master
sriram-atlan Jan 13, 2026
6273e26
Merge pull request #5843 from atlanhq/remove-log
nikhilbonte21 Jan 13, 2026
b5f5399
MS-402 : fix: update ES also if entity is not found in casandra
thambudas Jan 9, 2026
77a5f5c
MS-402: fix: use classification name to construct atlas classificatio…
thambudas Jan 12, 2026
bb7383a
fix: Flow correction clean ES if overrideClassification flag as false
thambudas Jan 13, 2026
df52550
Merge pull request #5826 from atlanhq/ms-366-master
sriram-atlan Jan 13, 2026
62d13d5
fix: fix only for playbook origin
thambudas Jan 14, 2026
21262f1
Merge pull request #5849 from atlanhq/cherry-pick/ES-playbook-repair
thambudas Jan 14, 2026
af69659
add playbook name header in audit filter
thambudas Jan 14, 2026
7cca2de
empty playbook name
thambudas Jan 14, 2026
958f25f
MS-445 upgrade to JG latest that handles ES failures correctly
sriram-atlan Jan 14, 2026
69ec428
Merge pull request #5856 from atlanhq/ms-445-mstr
sriram-atlan Jan 14, 2026
13f176a
MS-237 update jg core version
sriram-atlan Jan 14, 2026
f35aec9
Merge pull request #5853 from atlanhq/fix/playbook-name
thambudas Jan 15, 2026
50d451a
Adding lite staging to dispatcher
preetam-atlan Jan 15, 2026
fab3c5a
Merge pull request #5862 from atlanhq/add-feat-branch-lite_staging
krishnanunni-atlan Jan 15, 2026
58cde9e
Added lite master to dispatcher
preetam-atlan Jan 15, 2026
0cf58f4
Merge pull request #5863 from atlanhq/add-branch-lite_master-to-dispa…
arniesaha Jan 15, 2026
1b07822
Add local development setup documentation and tooling
arniesaha Jan 15, 2026
40d6b62
Remove dependency-review workflow that requires GHAS
arniesaha Jan 15, 2026
966a337
MS-450 fix audits template regex for suppressions
sriram-atlan Jan 16, 2026
8e1cebd
MS-450 fix audits template regex for suppressions
sriram-atlan Jan 16, 2026
f6b33a2
atlas context for claude
sriram-atlan Jan 16, 2026
16377a7
Merge pull request #5858 from atlanhq/ms-445-handle-poison-message
sriram-atlan Jan 16, 2026
fb9ad36
Merge pull request #5869 from atlanhq/ms-450-audits-templates-fix
sriram-atlan Jan 16, 2026
bc827e2
Merge pull request #5864 from atlanhq/localsetup
arniesaha Jan 19, 2026
c9dc50c
MS-455 skip if field is assetInternalPopularityScore and value is les…
sriram-atlan Jan 19, 2026
609b61e
MS-455 null safe
sriram-atlan Jan 19, 2026
6bbe1be
Merge pull request #5875 from atlanhq/ms-445-handle-asset-internal-score
sriram-atlan Jan 19, 2026
fb900c2
chore: Update node affinity for metastore components in azure (#5865)
krishnanunni-atlan Jan 19, 2026
a88595c
Fixed tag sync ES issues
suraj5077 Jan 19, 2026
101108b
Added lite_beta branch to dispatcher
preetam-atlan Jan 19, 2026
e5caf85
MS-455 handle primitive default value handling based on typedef defin…
sriram-atlan Jan 19, 2026
07ad85b
Merge pull request #5879 from atlanhq/add_lite_beta_dispatcher
krishnanunni-atlan Jan 19, 2026
bedc1b3
MS-455 create derived fields for handling rank feature attributes out…
sriram-atlan Jan 19, 2026
3a636ee
added upsert=true
suraj5077 Jan 19, 2026
6efc485
refactored upsert code
suraj5077 Jan 19, 2026
ed40364
fixed logs
suraj5077 Jan 19, 2026
285b4d4
MS-456 add tests for tag updates
sriram-atlan Jan 19, 2026
8e86d2f
MS-456 update testing instructions
sriram-atlan Jan 19, 2026
dfd2ba4
MS-445 remove overloaded method and remove extra tests
sriram-atlan Jan 19, 2026
2237535
Merge pull request #5878 from atlanhq/ms-456-tag-fix
sriram-atlan Jan 19, 2026
415756a
log: add type not found stack trace in log
thambudas Jan 20, 2026
2b8308a
MLH-1799 add metrics for atlas startup time (#5712) (#5881)
hitk6 Jan 20, 2026
36e0a81
Merge pull request #5883 from atlanhq/cherry-pick/log-stacktrace
sriram-atlan Jan 20, 2026
4b47abb
Merge pull request #5880 from atlanhq/ms-445-handle-field-value-based…
sriram-atlan Jan 20, 2026
6832577
GOVFOUN-40: Added unit tests
ankitpatnaik-atlan Jan 20, 2026
31c7ef4
Merge pull request #5844 from atlanhq/GOVFOUN-40
ankitpatnaik-atlan Jan 20, 2026
4b20012
MS-445 fix tests
sriram-atlan Jan 20, 2026
0ce920b
Merge pull request #5887 from atlanhq/ms-445-fix-tests
sriram-atlan Jan 20, 2026
bfdac75
Update README.md
nikhilbonte21 Jan 20, 2026
7c02509
Merge pull request #5890 from atlanhq/nikhilbonte21-patch-1
nikhilbonte21 Jan 20, 2026
11855e5
fix: add related entity v2 flow while reading
thambudas Jan 20, 2026
b4cb20b
fix: v2 flow - remove blocked ids
thambudas Jan 20, 2026
2ec6621
create alcon custom image
thambudas Jan 21, 2026
131686f
Merge pull request #5893 from atlanhq/alcon-v2-418
thambudas Jan 21, 2026
4d1566d
MS-356: Add debug logging for null typeName errors in entity processing
sriram-atlan Jan 21, 2026
aacdb31
Merge pull request #5899 from atlanhq/ms-356-npe-typename-logging
sriram-atlan Jan 21, 2026
0988c88
Merge latest master
nikhilbonte21 Jan 22, 2026
b912a4e
MS-462 Fix duplicate ES doc issue for migrated assets on update
nikhilbonte21 Jan 19, 2026
ccbee38
MS-462 Refactoring
nikhilbonte21 Jan 20, 2026
29839ad
MS-462 Fix update classificationText task
nikhilbonte21 Jan 21, 2026
58a2a70
MS-462 Fix Refactoring
nikhilbonte21 Jan 21, 2026
8f54f0c
MS-462 Fix Refactoring
nikhilbonte21 Jan 21, 2026
3cab56a
Add to build
nikhilbonte21 Jan 22, 2026
f2c11ce
Use prepared statements and concurrent Cassandra reads
henneberger-atlan Jan 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
584 changes: 584 additions & 0 deletions .cursor/rules/feature-flag-rest.mdc

Large diffs are not rendered by default.

211 changes: 211 additions & 0 deletions .cursor/rules/feature-flag.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,211 @@
---
description: Cache based feature flag implementation based on redis
alwaysApply: false
---
# Feature Flag Implementation Rules

## Core Architecture Principles

### Feature Flag Definition
- ALL feature flags MUST be defined in the FeatureFlag enum with explicit keys and default values
- Default values are ALWAYS false unless explicitly documented otherwise
- NO dynamic feature flag creation - only predefined flags allowed
- Feature flag keys should be descriptive and follow SCREAMING_SNAKE_CASE convention

### Dual Cache Architecture
- Primary cache: Time-bound cache (configurable TTL with jitter, typically 30 minutes)
- Fallback cache: Permanent cache storing last known Redis values
- NEVER fallback to default values during runtime - use cached values instead
- Cache operations must be atomic to prevent dirty writes

### Redis Integration
- RedisService MUST be initialized before FeatureFlagStore (@DependsOn annotation required)
- All Redis operations include retry logic with exponential backoff
- Redis connectivity MUST be validated during startup with actual read/write/delete test
- Startup MUST fail-fast if Redis is not operational

## Code Patterns & Conventions

### Thread Safety
- Use `synchronized` methods instead of manual lock management for write operations
- Read operations should be lock-free for performance
- Method names ending with `Internal` indicate synchronized operations
- Cache update operations must be synchronized: `updateBothCaches()`, `setFlagInternal()`, `deleteFlagInternal()`

### Error Handling
- Constructor validation: Use `Objects.requireNonNull()` for critical dependencies
- Startup validation: Comprehensive dependency and connectivity testing
- Runtime validation: Null checks and state validation with clear error messages
- NO silent failures - log all errors with appropriate levels (WARN for retries, ERROR for failures)

### Method Naming Conventions
```java
// Public static API methods (validation + delegation)
public static String getFlag(String key)
public static boolean evaluate(String key, String expectedValue)
public static void setFlag(String key, String value)

// Private synchronized implementation methods
private synchronized void setFlagInternal(String key, String value)
private synchronized void deleteFlagInternal(String key)
private synchronized void updateBothCaches(String namespacedKey, String value)

// Validation and utility methods
private static boolean isValidFlag(String key)
private void validateDependencies()
```

### Spring Integration Patterns
- Use `@DependsOn("redisService")` to ensure proper initialization order
- Use `@PostConstruct` for initialization with comprehensive validation
- Use `@Component` for Spring bean registration
- Use `@Inject` for constructor dependency injection
- ApplicationContextProvider pattern for static method access to Spring beans

### Configuration Management
- All configuration values must have sensible defaults
- Configuration validation during startup (retry attempts > 0, timeouts > 0)
- Cache sizes and TTL values should be configurable via application properties
- Property names follow pattern: `atlas.feature.flag.{component}.{property}`

### Validation Patterns
```java
// Flag validation - reject unknown flags immediately
if (!isValidFlag(key)) {
LOG.error("Invalid feature flag requested: '{}'", key);
return null; // or appropriate default
}

// Null safety - fail fast with descriptive messages
Objects.requireNonNull(redisService, "RedisService cannot be null - critical dependency missing!");

// State validation - prevent operations on uninitialized objects
if (!initialized) {
throw new IllegalStateException("FeatureFlagStore not initialized");
}
```

### Retry Logic Patterns
- Use simple for-loop: `for (int attempt = 1; attempt <= maxAttempts; attempt++)`
- Early return on success: `return redisService.getValue(key);`
- Last attempt handling: `boolean isLastAttempt = (attempt == maxAttempts);`
- Clear logging differentiation: WARN for retries, ERROR for final failures
- Thread interruption handling with proper cleanup

### Logging Standards
- Startup: INFO level for successful initialization with timing
- Errors: ERROR level with full exception details and context
- Retries: WARN level with attempt numbers and total attempts
- Debug: DEBUG level for cache hits/misses and internal operations
- Health checks: DEBUG level to avoid log noise

## API Design Principles

### Public Static API
- Keep public methods simple and focused
- Always validate inputs before processing
- Return null for invalid requests (don't throw exceptions in getters)
- Provide convenience methods for common use cases

### Internal Implementation
- Separate concerns: validation, caching, Redis operations
- Use meaningful method names that indicate thread safety
- Keep synchronized blocks minimal and focused
- Handle all exceptions gracefully with appropriate logging

## Performance & Reliability

### Caching Strategy
- Read path: Primary cache → Redis → Fallback cache → null
- Write path: Redis + Both caches (atomic)
- Cache invalidation: Remove from both caches simultaneously. Only current k8s pod updates both caches in real-time. Other pods will have wait for cache expiration
- No cache stampeding - single writer per flag per Atlas pod

### Startup Reliability
- Fail-fast: Application won't start with broken feature flags store initialization.
- Comprehensive testing: Redis connectivity + configuration validation
- Clear error messages: Operators can quickly identify and fix issues
- Timeout protection: Prevent infinite startup hangs

### Runtime Reliability
- Graceful degradation: Use cached values when Redis is unavailable
- Health monitoring: Provide methods for operational visibility
- Exception isolation: One bad flag doesn't break others
- Thread safety: Concurrent access without data corruption

## Testing & Monitoring

### Health Check Integration
```java
// Operational health checks
public static boolean isFeatureFlagStoreHealthy()
public boolean isRedisHealthy()
public boolean isInitialized()
```

### Debugging Support
- Comprehensive startup logging with timing information
- Clear error messages with actionable information
- Health check methods for operational monitoring
- Flag access logging for usage analysis

## Anti-Patterns to Avoid

❌ Manual lock management (`lock.lock(); try { ... } finally { lock.unlock(); }`)
❌ Default fallbacks during runtime (use cached values instead)
❌ Dynamic feature flag creation (only predefined flags)
❌ Silent failures (always log errors appropriately)
❌ Complex async initialization (keep startup simple and sequential)
❌ Missing dependency validation (always validate critical dependencies)
❌ Tight coupling between components (use clear interfaces)
❌ Runtime exceptions for normal operations (reserve for serious errors)

## Example Implementation Template

```java
@Component
@DependsOn("redisService")
public class FeatureService {

private final RedisService redisService;

@Inject
public FeatureService(RedisService redisService) {
this.redisService = Objects.requireNonNull(redisService,
"RedisService cannot be null - critical dependency missing!");
}

@PostConstruct
public void initialize() {
try {
validateDependencies();
// ... initialization logic
initialized = true;
} catch (Exception e) {
throw new RuntimeException("Failed to initialize - cannot start application", e);
}
}

public static ReturnType publicMethod(String key) {
if (!isValidInput(key)) {
LOG.warn("Invalid input: '{}'", key);
return appropriateDefault;
}

Instance instance = getInstance();
if (instance == null) {
LOG.warn("Service not initialized");
return appropriateDefault;
}

return instance.internalMethod(key);
}

private synchronized void writeOperation(String key, String value) {
// Synchronized method for write operations
// Clean, focused implementation
}
}
```

Follow these rules to maintain consistency, reliability, and performance in the feature flag system.
62 changes: 62 additions & 0 deletions .cursor/rules/search-apis.mdc
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
alwaysApply: false
description: search-apis
---
# Search APIs and ES Integration

This rule documents the search API implementations and ES integration to help navigation and consistent usage across the repo.

## Endpoints

- POST `/search/indexsearch` → Atlas-shaped search using DSL. See [DiscoveryREST.java](mdc:webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java)
- POST `/search/es` → Raw ES search response passthrough, trimmed to the `hits` object if present. See [DiscoveryREST.java](mdc:webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java)
- POST `/search/count` → ES `_count` API; returns `{ "count": <long> }`. See [DiscoveryREST.java](mdc:webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java)
- POST `/search/relationship/indexsearch` → Edge index search. See [DiscoveryREST.java](mdc:webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java)

## Service Flow

Service implementation: [EntityDiscoveryService.java](mdc:repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java)

- `directIndexSearch(params, useVertexEdgeBulkFetching)` → standard Atlas result shaping
- `directEsIndexSearch(params)` → returns raw ES map from index query
- `directCountIndexSearch(params)` → returns `Long` count

Common behavior (all three):
- Index selection via `getIndexName(IndexSearchParams)`; supports persona/purpose and access control exclusive DSL
- Optional pre-filtering when `enableFullRestriction` is true via `addPreFiltersToSearchQuery`
- Optional DSL optimization when feature flag is enabled and request originates from product client (see below)
- Error handling: propagate exceptions; upstream layers map network/ES errors to appropriate codes

### DSL Optimization

Reusable helper: `optimizeQueryIfApplicable(SearchParams, clientOrigin)` in [EntityDiscoveryService.java](mdc:repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java)

- Controlled by feature flag key `discovery_use_dsl_optimisation`
- Only applied when `RequestContext.clientOrigin == product_webapp`
- Uses `ElasticsearchDslOptimizer.optimizeQueryWithValidation(...)`
- On validation failure: logs a warning and continues
- On optimizer error: logs and proceeds with original query

## ES Layer

Implementation: [AtlasElasticsearchQuery.java](mdc:graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasElasticsearchQuery.java)

- `vertices(SearchParams)` → executes query via low-level client, returns `DirectIndexQueryResult`
- `directIndexQuery(String)` → returns parsed ES response with `total`, `data`, optional `aggregations`
- `directEsIndexQuery(String)` → returns raw ES response as `Map<String,Object>` (unmodified)
- `countIndexQuery(String)` → calls `/_count`, parses and returns `Long`
- Request isolation: selects ES client based on `RequestContext.clientOrigin`; `product_webapp` → UI cluster; others → Non-UI cluster; fallback to default client
- Network errors: mapped to `SERVICE_UNAVAILABLE` or gateway timeout codes

Note: The Janus in-memory index implementation ([AtlasJanusIndexQuery.java](mdc:graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusIndexQuery.java)) does not implement `directEsIndexQuery`/`countIndexQuery` (throws `NotImplementedException`).

## REST Response Shaping

- `/search/es` returns only the `hits` object when present; otherwise returns the full ES response map
- `/search/count` wraps the `Long` in `{ "count": <long> }`

## Limits and Logging

- Query size limits enforced when `ATLAS_INDEXSEARCH_ENABLE_API_LIMIT` is true; see `ATLAS_INDEXSEARCH_QUERY_SIZE_MAX_LIMIT` and `ATLAS_INDEXSEARCH_LIMIT_UTM_TAGS`
- Optional search logging; some utmTag patterns skip logging; see `shouldSkipSearchLog` in [DiscoveryREST.java](mdc:webapp/src/main/java/org/apache/atlas/web/rest/DiscoveryREST.java)

100 changes: 100 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# Use `allow` to specify which dependencies to maintain

version: 2
updates:
- package-ecosystem: "npm" #npm
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "composer" #composer
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "pip" #python
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions" #github-actions
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "bundler"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "docker"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct updates for all packages
- dependency-type: "all"

- package-ecosystem: "gomod"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "pub"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"

- package-ecosystem: "terraform"
directory: "/"
schedule:
interval: "daily"
allow:
# Allow direct and indirect updates for all packages
- dependency-type: "all"
Loading