Skip to content

feat: [DEVOPS-2394] fork coralogix/opentelemetry-lambda and publish extend-nodejs layer#7

Merged
jmsundar merged 21 commits intomainfrom
feat/DEVOPS-2394-extend-otel-lambda
Apr 22, 2026
Merged

feat: [DEVOPS-2394] fork coralogix/opentelemetry-lambda and publish extend-nodejs layer#7
jmsundar merged 21 commits intomainfrom
feat/DEVOPS-2394-extend-otel-lambda

Conversation

@jmsundar
Copy link
Copy Markdown
Contributor

@jmsundar jmsundar commented Apr 20, 2026

Summary

  • Forks coralogix/opentelemetry-lambda (branch coralogix-nodejs-autoinstrumentation) and ships a single Node.js Lambda layer: extend-nodejs-wrapper-and-exporter-{amd64,arm64}, published to account 159581800400 in us-east-1 + us-west-2 and org-visible to Extend AWS accounts.
  • Bundles OTel Collector extension (Go binary) + Node.js autoinstrumentation wrapper + three dual-backend collector configs (cx-only, cx+arize, cx+arize+s3). Consumers opt in via NodeLambdaBuilder.otelTracingProps; default is cx-only.
  • Drops all non-Node language dirs from upstream (dotnet/, java/, ruby/, go/, python/) and their CI. python/ intentionally removed — origin/python-instrumentation is the starting point if Python autoinstrumentation is ever needed.
  • Adds UPSTREAM.md: fork-points for coralogix/opentelemetry-lambda, coralogix/opentelemetry-js-contrib, and open-telemetry/opentelemetry-lambda (latest absorbed OTel-upstream tag: layer-nodejs/0.10.0 → SHA c9e67c4, via coralogix merge commit 436f3d0, 2024-10-28). Includes remote-setup block + manual sync procedure walking all three. Full rationale in the linked Confluence page.
  • Pins cx-contrib SHA (3a9691a6…) in scripts/publish-sandbox.sh, scripts/build-nodejs.sh, and publish-extend-otel-layer.yml — all three must be bumped together.
  • Consolidates ci-scripts/ + dev/ into scripts/. Deletes dead upstream workflows (ci-java, publish-nodejs, release-layer-*, codeql, close-stale), issue templates, CONTRIBUTING.md, RELEASE.md.
  • Tightens CODEOWNERS to @helloextend/devops and dependabot.yml to the ecosystems we actually ship (github-actions, gomod for collector, npm for nodejs).

Test plan

  • ./scripts/publish-sandbox.sh arm64 green end-to-end on a clean checkout (no stale .build-cache/) — publishes extend-nodejs-wrapper-and-exporter-sandbox-arm64 to engservicessandbox us-east-1.
  • Same for amd64.
  • workflow_dispatch run of publish-extend-otel-layer.yml completes both matrix legs; confirm resulting layer ARNs are org-visible from a consumer account via aws lambda get-layer-version.
  • Deploy a Lambda via extend-cdk-lib/NodeLambdaBuilder with otelTracingProps omitted — verify spans land in Coralogix.
  • Redeploy with otelTracingProps.arize set — verify spans fan out to Coralogix and Arize.
  • Redeploy with otelTracingProps.s3Archival — verify traces written to the configured bucket.
  • make -C collector package-extend GOARCH=arm64 builds cleanly on Go 1.25.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added Node.js build and sandbox publish scripts and a new publish workflow for the merged Extend OTel Lambda layer
  • Improvements

    • Consolidated Coralogix OTLP endpoints and tightened TLS defaults
    • Updated collector toolchain and dependency baseline
  • Removals

    • Removed sample apps, templates and docs for Java/Python/Ruby/Go
    • Removed many legacy CI/CD and release workflows and related publish scripts

jmsundar and others added 15 commits April 17, 2026 15:38
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
Co-authored-by: Claude Haiku 4.5 <noreply@anthropic.com>
- Remove dotnet/, java/, ruby/, go/ language dirs and associated CI workflows
  (ci-java.yml, release-layer-java.yml, release-layer-ruby.yml). We only ship
  Node.js and Python Lambda layers; upstream's other language layers are noise.
- Rewrite README.md for Extend fork scope: layer name, layout, publish flow,
  consumer wiring via NodeLambdaBuilder.otelTracingProps.
- Add UPSTREAM.md documenting fork-point SHAs for both coralogix/opentelemetry-lambda
  and coralogix/opentelemetry-js-contrib, plus the manual sync process and the
  pin-update checklist (publish-sandbox.sh, workflow, UPSTREAM.md all together).
  Automation tracked in DEVOPS-2502.
Removed unused package ecosystems for gradle, pip, and bundler. Updated npm configuration to include registries and cooldown settings.
Removed unused Java and Ruby sections from release.yml
- Drop opentelemetry-js clone + OPENTELEMETRY_JS_PATH. Unused since cx-js
  was dropped (we resolve @opentelemetry/instrumentation from npm now).
- Pin CX_CONTRIB_SHA to match publish-sandbox.sh and the publish workflow
  so local builds don't drift from CI.
- Unify clone path under .build-cache/opentelemetry-js-contrib so both
  scripts share one cache on dev machines.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Remove python/ entirely. Only nodejs layers ship; if Python
  autoinstrumentation is needed later, start from origin/python-instrumentation.
  Drop the commented-out pip block in dependabot.yml and the python/README.md
  link in README.md.
- UPSTREAM.md: replace the scratch-path reference to the fork-research doc
  with the Confluence page link. Add remote-setup block (remotes aren't
  checked in, fresh clones only have origin). Add a third fork-points row
  for open-telemetry/opentelemetry-lambda with the tag (layer-nodejs/0.10.0,
  c9e67c4) coralogix last merged in via 436f3d0. Add sync block + note that
  coralogix absorbs upstream-upstream selectively (tags or cherry-picks) so
  the sync skill should walk by patch-id, not merge-base.
- .gitignore: add .claude/worktrees/ and extend/plan-*.md so transient agent
  scaffolding doesn't leak into commits again.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 20, 2026

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: a6c4b39e-48da-4cf8-9ec4-ab612850769a

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • ✅ Review completed - (🔄 Check again to review again)

Walkthrough

This pull request consolidates the repository to focus on Node.js and OpenTelemetry Collector support while removing multi-language layers for Java, Ruby, Python, Go, and .NET. It eliminates associated CI/CD workflows, sample applications, and build artifacts for deprecated language runtimes. The project transitions to a fork-focused model with updated build scripts, new sandbox publishing automation, simplified documentation referencing the Extend fork lineage, and updated collector/Node.js dependencies. Code ownership is transferred to a new team, and configuration files are updated to reflect the narrowed scope.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
collector/go.mod (1)

24-25: ⚠️ Potential issue | 🟠 Major

Upgrade contrib providers to compatible versions.

Lines 24-25 pin s3provider and secretsmanagerprovider at v0.109.0, which is incompatible with the upgraded collector modules at v0.150.0 / v1.56.0 (lines 29-37). The compatible version for these providers is v0.149.0, which depends on confmap v1.55.0 and featuregate v1.55.0 that align with the core module versions. Upgrade both providers to v0.149.0.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@collector/go.mod` around lines 24 - 25, Update the pinned contrib provider
versions for s3provider and secretsmanagerprovider from v0.109.0 to v0.149.0 so
they are compatible with the upgraded collector modules; locate the go.mod
entries for
github.com/open-telemetry/opentelemetry-collector-contrib/confmap/provider/s3provider
and
github.com/open-telemetry/opentelemetry-collector-contrib/confmap/provider/secretsmanagerprovider
and change their version tokens to v0.149.0, then run go mod tidy to refresh
dependencies.
nodejs/README.md (1)

15-32: ⚠️ Potential issue | 🟡 Minor

Documentation references removed build dependencies.

The README lists three environment variables as required (lines 18–21): OPENTELEMETRY_JS_PATH, OPENTELEMETRY_JS_CONTRIB_PATH, and IITM_PATH. However, the build scripts only use OPENTELEMETRY_JS_CONTRIB_PATH. Update the documentation to remove the references to OPENTELEMETRY_JS_PATH and IITM_PATH.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@nodejs/README.md` around lines 15 - 32, Update the README to reflect the
actual build requirements by removing the two unused environment variable
references and example exports for OPENTELEMETRY_JS_PATH and IITM_PATH; leave
only OPENTELEMETRY_JS_CONTRIB_PATH mentioned and keep the example export showing
export OPENTELEMETRY_JS_CONTRIB_PATH=./opentelemetry-js-contrib-cx. Remove any
sentences that state OPENTELEMETRY_JS_PATH or IITM_PATH are required and delete
their export lines from the code block so the docs match the build scripts.
collector/processor/decoupleprocessor/factory.go (1)

63-71: ⚠️ Potential issue | 🔴 Critical

Incorrect API function call - use NewTracesProcessor instead.

The code calls processorhelper.NewTraces() which does not exist in v0.150.0. The correct API is processorhelper.NewTracesProcessor(). Update lines 63, 84, and 105 to use the proper function names: NewTracesProcessor, NewMetricsProcessor, and NewLogsProcessor respectively. The function signatures and arguments are compatible.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@collector/processor/decoupleprocessor/factory.go` around lines 63 - 71, The
factory currently calls non-existent helper constructors; replace the incorrect
processorhelper.NewTraces / NewMetrics / NewLogs calls with the v0.150.0 API
names processorhelper.NewTracesProcessor, processorhelper.NewMetricsProcessor
and processorhelper.NewLogsProcessor respectively (preserving the same ctx,
params, cfg, next, handler functions like
dp.processTraces/dp.processMetrics/dp.processLogs and options such as
processorhelper.WithCapabilities(processorCapabilities) and
processorhelper.WithShutdown(dp.shutdown)); ensure you update all three call
sites so signatures and passed arguments remain unchanged.
🧹 Nitpick comments (4)
scripts/build_nodejs_layer.sh (2)

87-88: Consider pinning versions for global npm tools.

Installing copyfiles, bestzip, and rimraf without version pins (npm install -g copyfiles bestzip rimraf) can lead to non-reproducible builds if these tools release breaking changes.

♻️ Proposed fix to pin tool versions
 # Install copyfiles and bestzip # used by `npm run clean/compile`
-npm install -g copyfiles bestzip rimraf
+npm install -g copyfiles@2 bestzip@4 rimraf@5
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/build_nodejs_layer.sh` around lines 87 - 88, The global npm install
command `npm install -g copyfiles bestzip rimraf` should pin specific versions
to ensure reproducible builds; update the script (the line installing global
tools) to install explicit versions (e.g., `copyfiles@x.y.z bestzip@x.y.z
rimraf@x.y.z`) or read versions from variables at the top of the script, and/or
move these tools into package.json devDependencies and use npm scripts (or npx)
instead of globally installing to guarantee consistent tool versions across
environments.

96-97: Blanket error suppression may hide legitimate failures.

The || true at the end of line 97 suppresses all errors from the find ... -exec rm -rf command, including permission errors or filesystem issues that could indicate a real problem.

Consider suppressing only the expected "directory not found during traversal" errors:

♻️ More targeted error handling
-find node_modules -type d \( -name "test" -o -name "tests" -o -name "docs" -o -name "doc" \) -exec rm -rf {} + 2>/dev/null || true
+find node_modules -type d \( -name "test" -o -name "tests" -o -name "docs" -o -name "doc" \) -print0 2>/dev/null | xargs -0 rm -rf
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@scripts/build_nodejs_layer.sh` around lines 96 - 97, The blanket "|| true" at
the end of the find+rm command hides all failures; remove it and instead
suppress only the expected "No such file or directory" messages by filtering
stderr for that pattern. Replace the existing "find node_modules -type d ...
-exec rm -rf {} + 2>/dev/null || true" invocation with one that captures stderr
and filters out the specific benign message (e.g., redirect stderr through grep
-v "No such file or directory" to stderr) so permission or other real errors
still surface; update the line containing the find ... -exec rm -rf invocation
accordingly.
extend/README.md (2)

30-42: Clarify that ARIZE_ and S3 env vars are conditionally required.*

The table lists ARIZE_API_KEY_SECRET, ARIZE_SPACE_ID, ARIZE_PROJECT_NAME, and ARIZE_S3_BUCKET_NAME under "Required env vars", but these are only required when using the Arize/S3 configs — not for the default cx-only config.

Consider restructuring to show which vars are required for each config:

📝 Suggested documentation structure
-Required env vars:
+**Always required** (all configs):

 | Var | Source | Purpose |
 |-----|--------|---------|
 | `CX_SECRET` | existing | CX API key — Secrets Manager name or ARN |
 | `CX_APPLICATION` | existing | CX application tag |
 | `CX_SUBSYSTEM` | existing | CX subsystem tag |
+
+**Required for Arize configs** (`cx-arize`, `cx-arize-s3`):
+
+| Var | Source | Purpose |
+|-----|--------|---------|
 | `ARIZE_API_KEY_SECRET` | new | Arize OTel API key — Secrets Manager name or ARN |
 | `ARIZE_SPACE_ID` | new | Arize space ID (Relay global ID) |
 | `ARIZE_PROJECT_NAME` | new | Arize project name |
+
+**Required for S3 archival** (`cx-arize-s3` only):
+
+| Var | Source | Purpose |
+|-----|--------|---------|
 | `ARIZE_S3_BUCKET_NAME` | new | S3 bucket for archival |
+
+**Optional**:
+
+| Var | Default | Purpose |
+|-----|---------|---------|
 | `CX_ENDPOINT` | optional | default `ingress.us2.coralogix.com:443` (unified ingress) |
 | `ARIZE_COLLECTOR_ENDPOINT` | optional | default `otlp.arize.com:443` (gRPC) |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@extend/README.md` around lines 30 - 42, Update the environment variables
documentation to indicate that ARIZE_* and ARIZE_S3 variables are conditional:
move `ARIZE_API_KEY_SECRET`, `ARIZE_SPACE_ID`, `ARIZE_PROJECT_NAME`, and
`ARIZE_S3_BUCKET_NAME` out of the global "Required env vars" table and present
them in a separate table or subsection titled "Required when using Arize/S3" (or
include per-config tables for "CX-only" vs "Arize/S3"). Keep `CX_SECRET`,
`CX_APPLICATION`, and `CX_SUBSYSTEM` in the CX-only required list, mark
`CX_ENDPOINT` and `ARIZE_COLLECTOR_ENDPOINT` as optional with defaults, and add
a short note explaining that the Arize/S3 vars are only needed if the Arize/S3
configuration is enabled.

46-46: Documentation mentions branch name but build uses pinned SHA.

The docs say to use branch coralogix-autoinstrumentation, but scripts/build-nodejs.sh checks out a specific SHA (3a9691a699ddd06c3644eec70bf4b50cc4217ba3) regardless of branch. This is actually safer for reproducibility.

Consider updating the docs to reflect the pinned-SHA approach:

📝 Suggested clarification
-Follows upstream: `./scripts/build_nodejs_layer.sh` — requires a sibling checkout of `coralogix/opentelemetry-js-contrib` (branch `coralogix-autoinstrumentation`) set via `OPENTELEMETRY_JS_CONTRIB_PATH`. See `.github/workflows/publish-extend-otel-layer.yml` for the published flow.
+Follows upstream: `./scripts/build_nodejs_layer.sh`. For local dev, `./scripts/build-nodejs.sh` auto-clones `coralogix/opentelemetry-js-contrib` at a pinned SHA to `.build-cache/`. Override with `OPENTELEMETRY_JS_CONTRIB_PATH` to use a local checkout. See `.github/workflows/publish-extend-otel-layer.yml` for the published flow.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@extend/README.md` at line 46, The README currently instructs using branch
coralogix-autoinstrumentation but the build script
(./scripts/build_nodejs_layer.sh / scripts/build-nodejs.sh) actually checks out
a pinned SHA (3a9691a699ddd06c3644eec70bf4b50cc4217ba3); update the README text
to state that the build uses a specific pinned commit for reproducibility,
mention that OPENTELEMETRY_JS_CONTRIB_PATH can point to a sibling checkout but
the script will reset/checkout the pinned SHA, and include the exact SHA used
(3a9691a699ddd06c3644eec70bf4b50cc4217ba3) and a brief note linking to
.github/workflows/publish-extend-otel-layer.yml for the published flow.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.github/dependabot.yml:
- Around line 38-39: Dependabot is using a CodeArtifact registry token that
expires and blocks npm updates; either add a scheduled token-rotation Action
that refreshes CODEARTIFACT_AUTH_TOKEN every ~10–11 hours and updates the
repository secret, or migrate the dependabot registry block (the registries: -
codeartifact entry and its codeartifact config) to OIDC by replacing the static
token with the new fields aws-region, account-id, role-name, domain, and
domain-owner so Dependabot can assume an AWS role via OIDC and eliminate manual
rotation; implement one of these strategies and update the
.github/dependabot.yml codeartifact registry entries accordingly.

In @.github/workflows/publish-extend-otel-layer.yml:
- Around line 76-79: The inline `with:` mappings for the
actions/download-artifact@v4 steps are invalid YAML; replace the inline braces
with proper block mappings so they parse correctly. Update the two occurrences
that use `with: { name: collector-${{ matrix.architecture }}, path: dl/collector
}` and `with: { name: nodejs-layer, path: dl/nodejs }` to use block-style keys
under `with:` (name: <value> and path: <value>) for the corresponding
actions/download-artifact@v4 steps so actionlint/yamllint pass.
- Around line 20-22: The workflow currently exposes AWS_ACCESS_KEY_ID and
AWS_SECRET_ACCESS_KEY at workflow-level env; restrict them by removing those two
keys from the top-level env and add them only to the job "package-and-publish"
(or the specific publish step) so only the publish task receives secrets. Update
the env block for the "package-and-publish" job (or the publish step) to include
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} and AWS_SECRET_ACCESS_KEY:
${{ secrets.AWS_SECRET_ACCESS_KEY }} and ensure other jobs (collector build /
Node.js build) no longer inherit those env vars.

In `@collector/processor/decoupleprocessor/go.mod`:
- Around line 9-18: The go.mod entry for the OpenTelemetry confmap module is
pinned to v1.16.0 causing version skew with the rest of the Collector stack;
update the module line for go.opentelemetry.io/collector/confmap to v1.56.0 to
match the other collector modules (e.g., the surrounding
go.opentelemetry.io/collector/* entries), then run go mod tidy to reconcile
dependencies and verify builds/tests.

In `@nodejs/packages/cx-wrapper/package.json`:
- Line 38: The package version mismatch for OpenTelemetry will cause runtime
incompatibilities: update the dependency set so all related OTel packages use
the same minor version—either revert "@opentelemetry/instrumentation" back to
"0.213.0" or bump "@opentelemetry/instrumentation-http",
"@opentelemetry/instrumentation-grpc", and
"@opentelemetry/exporter-trace-otlp-proto" to "0.214.0" so all four packages
share the identical 0.214.0 (or all remain 0.213.0) version; modify the
package.json entries for those specific package names accordingly and run
install to verify no peer/version conflicts remain.

In `@scripts/build-nodejs.sh`:
- Around line 21-29: The script currently always treats CX_CONTRIB_CACHE (set
from OPENTELEMETRY_JS_CONTRIB_PATH or default) as a cache to fetch and checkout
CX_CONTRIB_SHA which will detach/overwrite a caller-supplied local checkout;
change the logic so when OPENTELEMETRY_JS_CONTRIB_PATH is set you only validate
that CX_CONTRIB_CACHE is a git repo with the expected commit (or at least exists
and is readable) and then reuse it without running git fetch/checkout; only
perform the fetch/checkout workflow (using CX_CONTRIB_REPO, git clone, git
fetch, git checkout with CX_CONTRIB_SHA) when OPENTELEMETRY_JS_CONTRIB_PATH is
unset and you are auto-resolving into the build cache, leaving a developer’s
local checkout untouched.

In `@scripts/publish-sandbox.sh`:
- Around line 21-37: The script currently always clones/fetches and checks out
CX_CONTRIB_SHA into CX_CONTRIB_CACHE, which mutates a caller-provided
OPENTELEMETRY_JS_CONTRIB_PATH; change the logic so that if
OPENTELEMETRY_JS_CONTRIB_PATH is already set (and non-empty) the script uses it
unchanged and skips cloning/fetching/checking out; only when
OPENTELEMETRY_JS_CONTRIB_PATH is unset should you set CX_CONTRIB_CACHE (from
OPENTELEMETRY_JS_CONTRIB_PATH default), perform mkdir/git clone/git fetch/git -C
... checkout of CX_CONTRIB_REPO at CX_CONTRIB_SHA and then export
OPENTELEMETRY_JS_CONTRIB_PATH="$(cd "$CX_CONTRIB_CACHE" && pwd)". Ensure
references to OPENTELEMETRY_JS_CONTRIB_PATH, CX_CONTRIB_CACHE, CX_CONTRIB_REPO,
CX_CONTRIB_SHA and the git -C ... checkout/fetch commands are used to locate the
code to change.

In `@UPSTREAM.md`:
- Line 5: The sentence on Line 5 of UPSTREAM.md incorrectly lists only two pin
locations; update that sentence to state three pin locations so it matches Lines
63-68—mentioning scripts/publish-sandbox.sh,
.github/workflows/publish-extend-otel-layer.yml, and scripts/build-nodejs.sh
(the `coralogix/opentelemetry-js-contrib` pin tracked at build time) so the doc
consistently reflects all places that must be updated to avoid SHA drift.

---

Outside diff comments:
In `@collector/go.mod`:
- Around line 24-25: Update the pinned contrib provider versions for s3provider
and secretsmanagerprovider from v0.109.0 to v0.149.0 so they are compatible with
the upgraded collector modules; locate the go.mod entries for
github.com/open-telemetry/opentelemetry-collector-contrib/confmap/provider/s3provider
and
github.com/open-telemetry/opentelemetry-collector-contrib/confmap/provider/secretsmanagerprovider
and change their version tokens to v0.149.0, then run go mod tidy to refresh
dependencies.

In `@collector/processor/decoupleprocessor/factory.go`:
- Around line 63-71: The factory currently calls non-existent helper
constructors; replace the incorrect processorhelper.NewTraces / NewMetrics /
NewLogs calls with the v0.150.0 API names processorhelper.NewTracesProcessor,
processorhelper.NewMetricsProcessor and processorhelper.NewLogsProcessor
respectively (preserving the same ctx, params, cfg, next, handler functions like
dp.processTraces/dp.processMetrics/dp.processLogs and options such as
processorhelper.WithCapabilities(processorCapabilities) and
processorhelper.WithShutdown(dp.shutdown)); ensure you update all three call
sites so signatures and passed arguments remain unchanged.

In `@nodejs/README.md`:
- Around line 15-32: Update the README to reflect the actual build requirements
by removing the two unused environment variable references and example exports
for OPENTELEMETRY_JS_PATH and IITM_PATH; leave only
OPENTELEMETRY_JS_CONTRIB_PATH mentioned and keep the example export showing
export OPENTELEMETRY_JS_CONTRIB_PATH=./opentelemetry-js-contrib-cx. Remove any
sentences that state OPENTELEMETRY_JS_PATH or IITM_PATH are required and delete
their export lines from the code block so the docs match the build scripts.

---

Nitpick comments:
In `@extend/README.md`:
- Around line 30-42: Update the environment variables documentation to indicate
that ARIZE_* and ARIZE_S3 variables are conditional: move
`ARIZE_API_KEY_SECRET`, `ARIZE_SPACE_ID`, `ARIZE_PROJECT_NAME`, and
`ARIZE_S3_BUCKET_NAME` out of the global "Required env vars" table and present
them in a separate table or subsection titled "Required when using Arize/S3" (or
include per-config tables for "CX-only" vs "Arize/S3"). Keep `CX_SECRET`,
`CX_APPLICATION`, and `CX_SUBSYSTEM` in the CX-only required list, mark
`CX_ENDPOINT` and `ARIZE_COLLECTOR_ENDPOINT` as optional with defaults, and add
a short note explaining that the Arize/S3 vars are only needed if the Arize/S3
configuration is enabled.
- Line 46: The README currently instructs using branch
coralogix-autoinstrumentation but the build script
(./scripts/build_nodejs_layer.sh / scripts/build-nodejs.sh) actually checks out
a pinned SHA (3a9691a699ddd06c3644eec70bf4b50cc4217ba3); update the README text
to state that the build uses a specific pinned commit for reproducibility,
mention that OPENTELEMETRY_JS_CONTRIB_PATH can point to a sibling checkout but
the script will reset/checkout the pinned SHA, and include the exact SHA used
(3a9691a699ddd06c3644eec70bf4b50cc4217ba3) and a brief note linking to
.github/workflows/publish-extend-otel-layer.yml for the published flow.

In `@scripts/build_nodejs_layer.sh`:
- Around line 87-88: The global npm install command `npm install -g copyfiles
bestzip rimraf` should pin specific versions to ensure reproducible builds;
update the script (the line installing global tools) to install explicit
versions (e.g., `copyfiles@x.y.z bestzip@x.y.z rimraf@x.y.z`) or read versions
from variables at the top of the script, and/or move these tools into
package.json devDependencies and use npm scripts (or npx) instead of globally
installing to guarantee consistent tool versions across environments.
- Around line 96-97: The blanket "|| true" at the end of the find+rm command
hides all failures; remove it and instead suppress only the expected "No such
file or directory" messages by filtering stderr for that pattern. Replace the
existing "find node_modules -type d ... -exec rm -rf {} + 2>/dev/null || true"
invocation with one that captures stderr and filters out the specific benign
message (e.g., redirect stderr through grep -v "No such file or directory" to
stderr) so permission or other real errors still surface; update the line
containing the find ... -exec rm -rf invocation accordingly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 980b169a-23c8-4ab9-abaa-3383e58a9c0e

📥 Commits

Reviewing files that changed from the base of the PR and between 7cda4ae and 0d4428f.

⛔ Files ignored due to path filters (7)
  • collector/go.sum is excluded by !**/*.sum
  • collector/lambdacomponents/go.sum is excluded by !**/*.sum
  • collector/processor/coldstartprocessor/go.sum is excluded by !**/*.sum
  • collector/processor/decoupleprocessor/go.sum is excluded by !**/*.sum
  • collector/receiver/telemetryapireceiver/go.sum is excluded by !**/*.sum
  • go/sample-apps/function/go.sum is excluded by !**/*.sum
  • java/gradle/wrapper/gradle-wrapper.jar is excluded by !**/*.jar
📒 Files selected for processing (171)
  • .github/CODEOWNERS
  • .github/ISSUE_TEMPLATE/bug_report.md
  • .github/ISSUE_TEMPLATE/feature_request.md
  • .github/dependabot.yml
  • .github/release.yml
  • .github/workflows/ci-collector.yml
  • .github/workflows/ci-java.yml
  • .github/workflows/ci-nodejs.yml
  • .github/workflows/ci-python.yml
  • .github/workflows/ci-shellcheck.yml
  • .github/workflows/ci-terraform.yml
  • .github/workflows/close-stale.yaml
  • .github/workflows/codeql.yml
  • .github/workflows/layer-publish.yml
  • .github/workflows/publish-extend-otel-layer.yml
  • .github/workflows/publish-nodejs.yml
  • .github/workflows/release-layer-collector.yml
  • .github/workflows/release-layer-java.yml
  • .github/workflows/release-layer-nodejs.yml
  • .github/workflows/release-layer-python.yml
  • .github/workflows/release-layer-ruby.yml
  • .gitignore
  • CONTRIBUTING.md
  • README.md
  • RELEASE.md
  • UPSTREAM.md
  • ci-scripts/publish_layer.sh
  • ci-scripts/publish_production.sh
  • ci-scripts/publish_test.sh
  • collector/Makefile
  • collector/Makefile.Common
  • collector/config.yaml
  • collector/go.mod
  • collector/lambdacomponents/default.go
  • collector/lambdacomponents/exporter/logging.go
  • collector/lambdacomponents/go.mod
  • collector/processor/coldstartprocessor/factory.go
  • collector/processor/coldstartprocessor/go.mod
  • collector/processor/decoupleprocessor/factory.go
  • collector/processor/decoupleprocessor/go.mod
  • collector/receiver/telemetryapireceiver/go.mod
  • dev/build-nodejs.sh
  • docs/design_proposal.md
  • dotnet/README.md
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample.sln
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/AwsSdkSample.csproj
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/Function.cs
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/Properties/launchSettings.json
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/build.sh
  • extend/README.md
  • extend/collector-config-cx-arize-s3.yaml
  • extend/collector-config-cx-arize.yaml
  • extend/collector-config-cx-only.yaml
  • go/README.md
  • go/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • go/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • go/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • go/sample-apps/function/build.sh
  • go/sample-apps/function/function.go
  • go/sample-apps/function/go.mod
  • java/README.md
  • java/awssdk-autoconfigure/build.gradle.kts
  • java/awssdk-autoconfigure/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/autoconfigure/AutoconfiguredTracingExecutionInterceptor.java
  • java/awssdk-autoconfigure/src/main/resources/software/amazon/awssdk/global/handlers/execution.interceptors
  • java/build.gradle.kts
  • java/dependencyManagement/build.gradle.kts
  • java/gradle.properties
  • java/gradle/wrapper/gradle-wrapper.properties
  • java/gradlew
  • java/gradlew.bat
  • java/layer-javaagent/build.gradle.kts
  • java/layer-javaagent/scripts/otel-handler
  • java/layer-wrapper/build.gradle.kts
  • java/layer-wrapper/scripts/otel-handler
  • java/layer-wrapper/scripts/otel-proxy-handler
  • java/layer-wrapper/scripts/otel-sqs-handler
  • java/layer-wrapper/scripts/otel-stream-handler
  • java/sample-apps/aws-sdk/README.md
  • java/sample-apps/aws-sdk/build.gradle.kts
  • java/sample-apps/aws-sdk/deploy/agent/main.tf
  • java/sample-apps/aws-sdk/deploy/agent/outputs.tf
  • java/sample-apps/aws-sdk/deploy/agent/variables.tf
  • java/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • java/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • java/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • java/sample-apps/aws-sdk/src/main/java/io/opentelemetry/lambda/sampleapps/awssdk/AwsSdkRequestHandler.java
  • java/sample-apps/aws-sdk/src/main/resources/log4j2.xml
  • java/sample-apps/okhttp/README.md
  • java/sample-apps/okhttp/build.gradle.kts
  • java/sample-apps/okhttp/deploy/wrapper/main.tf
  • java/sample-apps/okhttp/deploy/wrapper/outputs.tf
  • java/sample-apps/okhttp/deploy/wrapper/variables.tf
  • java/sample-apps/okhttp/src/main/java/io/opentelemetry/lambda/sampleapps/okhttp/OkHttpRequestHandler.java
  • java/sample-apps/okhttp/src/main/resources/log4j2.xml
  • java/sample-apps/sqs/README.md
  • java/sample-apps/sqs/build.gradle.kts
  • java/sample-apps/sqs/deploy/agent/main.tf
  • java/sample-apps/sqs/deploy/agent/outputs.tf
  • java/sample-apps/sqs/deploy/agent/variables.tf
  • java/sample-apps/sqs/deploy/wrapper/main.tf
  • java/sample-apps/sqs/deploy/wrapper/outputs.tf
  • java/sample-apps/sqs/deploy/wrapper/variables.tf
  • java/sample-apps/sqs/src/main/java/io/opentelemetry/lambda/sampleapps/sqs/SqsRequestHandler.java
  • java/sample-apps/sqs/src/main/resources/log4j2.xml
  • java/settings.gradle.kts
  • nodejs/.commitlintrc.yml
  • nodejs/.editorconfig
  • nodejs/.gitattributes
  • nodejs/.npmignore
  • nodejs/README.md
  • nodejs/eslint.config.js
  • nodejs/lerna.json
  • nodejs/packages/cx-wrapper/package.json
  • nodejs/packages/layer/package.json
  • nodejs/sample-apps/aws-sdk/.eslintignore
  • nodejs/sample-apps/aws-sdk/.eslintrc.js
  • nodejs/sample-apps/aws-sdk/README.md
  • nodejs/sample-apps/aws-sdk/config.yaml
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • nodejs/sample-apps/aws-sdk/package.json
  • nodejs/sample-apps/aws-sdk/src/index.ts
  • nodejs/sample-apps/aws-sdk/tsconfig.json
  • python/README.md
  • python/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • python/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • python/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • python/sample-apps/build.sh
  • python/sample-apps/function/lambda_function.py
  • python/sample-apps/function/requirements.txt
  • python/sample-apps/run.sh
  • python/sample-apps/template.yml
  • python/src/build.sh
  • python/src/otel/Dockerfile
  • python/src/otel/Makefile
  • python/src/otel/otel_sdk/nodeps-requirements.txt
  • python/src/otel/otel_sdk/otel-instrument
  • python/src/otel/otel_sdk/otel_wrapper.py
  • python/src/otel/otel_sdk/requirements.txt
  • python/src/otel/tests/mocks/lambda_function.py
  • python/src/otel/tests/nodeps-requirements.txt
  • python/src/otel/tests/requirements.txt
  • python/src/otel/tests/test_otel.py
  • python/src/run.sh
  • python/src/template.yml
  • python/src/tox.ini
  • ruby/README.md
  • ruby/sample-apps/function/Gemfile
  • ruby/sample-apps/function/lambda_function.rb
  • ruby/sample-apps/template.yml
  • ruby/src/build.sh
  • ruby/src/otel/Dockerfile
  • ruby/src/otel/layer/Gemfile
  • ruby/src/otel/layer/Makefile
  • ruby/src/otel/layer/otel-handler
  • ruby/src/otel/layer/wrapper.rb
  • ruby/src/template.yml
  • ruby/src/zip_ruby_layer.sh
  • scripts/build-nodejs.sh
  • scripts/build_nodejs_layer.sh
  • scripts/check_size.sh
  • scripts/deploy-nodejs.sh
  • scripts/publish-sandbox.sh
  • utils/sam/run.sh
  • utils/terraform/api-gateway-proxy/main.tf
  • utils/terraform/api-gateway-proxy/outputs.tf
  • utils/terraform/api-gateway-proxy/variables.tf
💤 Files with no reviewable changes (142)
  • .github/ISSUE_TEMPLATE/feature_request.md
  • CONTRIBUTING.md
  • nodejs/sample-apps/aws-sdk/.eslintignore
  • .github/ISSUE_TEMPLATE/bug_report.md
  • java/awssdk-autoconfigure/src/main/resources/software/amazon/awssdk/global/handlers/execution.interceptors
  • .github/workflows/ci-shellcheck.yml
  • RELEASE.md
  • dotnet/README.md
  • .github/release.yml
  • java/gradle/wrapper/gradle-wrapper.properties
  • ci-scripts/publish_test.sh
  • java/awssdk-autoconfigure/build.gradle.kts
  • java/sample-apps/sqs/deploy/wrapper/outputs.tf
  • python/src/otel/otel_sdk/nodeps-requirements.txt
  • java/sample-apps/sqs/src/main/resources/log4j2.xml
  • java/sample-apps/sqs/deploy/agent/outputs.tf
  • nodejs/sample-apps/aws-sdk/.eslintrc.js
  • .github/workflows/ci-nodejs.yml
  • python/src/build.sh
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample.sln
  • java/sample-apps/aws-sdk/src/main/resources/log4j2.xml
  • python/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • python/sample-apps/function/requirements.txt
  • java/sample-apps/sqs/src/main/java/io/opentelemetry/lambda/sampleapps/sqs/SqsRequestHandler.java
  • python/src/otel/tests/requirements.txt
  • python/src/otel/Dockerfile
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/AwsSdkSample.csproj
  • python/src/run.sh
  • go/sample-apps/function/build.sh
  • ruby/sample-apps/function/Gemfile
  • .github/workflows/ci-terraform.yml
  • .github/workflows/release-layer-nodejs.yml
  • python/sample-apps/run.sh
  • nodejs/.editorconfig
  • java/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • collector/config.yaml
  • nodejs/.gitattributes
  • python/src/otel/tests/nodeps-requirements.txt
  • nodejs/.commitlintrc.yml
  • python/sample-apps/build.sh
  • ci-scripts/publish_production.sh
  • .github/workflows/ci-java.yml
  • go/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • nodejs/.npmignore
  • java/sample-apps/sqs/build.gradle.kts
  • .github/workflows/release-layer-java.yml
  • .github/workflows/codeql.yml
  • java/sample-apps/okhttp/deploy/wrapper/outputs.tf
  • java/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • java/sample-apps/okhttp/build.gradle.kts
  • java/sample-apps/okhttp/README.md
  • nodejs/sample-apps/aws-sdk/tsconfig.json
  • java/sample-apps/aws-sdk/deploy/agent/outputs.tf
  • java/README.md
  • nodejs/lerna.json
  • java/gradle.properties
  • python/src/otel/tests/mocks/lambda_function.py
  • .github/workflows/publish-nodejs.yml
  • .github/workflows/release-layer-ruby.yml
  • java/layer-wrapper/scripts/otel-sqs-handler
  • ci-scripts/publish_layer.sh
  • ruby/src/otel/layer/Gemfile
  • ruby/src/otel/layer/Makefile
  • ruby/src/build.sh
  • ruby/sample-apps/function/lambda_function.rb
  • java/gradlew.bat
  • java/layer-wrapper/build.gradle.kts
  • java/gradlew
  • utils/terraform/api-gateway-proxy/outputs.tf
  • .github/workflows/release-layer-collector.yml
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • dev/build-nodejs.sh
  • java/settings.gradle.kts
  • nodejs/sample-apps/aws-sdk/README.md
  • java/sample-apps/okhttp/deploy/wrapper/variables.tf
  • python/sample-apps/function/lambda_function.py
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/Function.cs
  • python/src/otel/otel_sdk/requirements.txt
  • java/sample-apps/okhttp/src/main/resources/log4j2.xml
  • java/layer-javaagent/build.gradle.kts
  • ruby/src/zip_ruby_layer.sh
  • ruby/src/otel/layer/otel-handler
  • java/sample-apps/aws-sdk/README.md
  • ruby/src/otel/layer/wrapper.rb
  • go/sample-apps/function/function.go
  • .github/workflows/ci-collector.yml
  • java/layer-wrapper/scripts/otel-stream-handler
  • nodejs/sample-apps/aws-sdk/src/index.ts
  • go/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • nodejs/eslint.config.js
  • java/layer-wrapper/scripts/otel-proxy-handler
  • nodejs/sample-apps/aws-sdk/config.yaml
  • utils/terraform/api-gateway-proxy/main.tf
  • go/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • .github/workflows/layer-publish.yml
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • nodejs/sample-apps/aws-sdk/package.json
  • python/src/otel/Makefile
  • java/layer-javaagent/scripts/otel-handler
  • ruby/src/otel/Dockerfile
  • java/sample-apps/okhttp/deploy/wrapper/main.tf
  • python/src/template.yml
  • python/README.md
  • python/src/tox.ini
  • java/sample-apps/aws-sdk/deploy/agent/variables.tf
  • ruby/src/template.yml
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • java/sample-apps/aws-sdk/src/main/java/io/opentelemetry/lambda/sampleapps/awssdk/AwsSdkRequestHandler.java
  • java/build.gradle.kts
  • java/dependencyManagement/build.gradle.kts
  • java/sample-apps/sqs/deploy/wrapper/main.tf
  • .github/workflows/release-layer-python.yml
  • utils/sam/run.sh
  • java/sample-apps/sqs/deploy/wrapper/variables.tf
  • go/sample-apps/function/go.mod
  • ruby/sample-apps/template.yml
  • python/src/otel/otel_sdk/otel-instrument
  • python/sample-apps/template.yml
  • java/sample-apps/sqs/deploy/agent/variables.tf
  • java/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • java/sample-apps/sqs/deploy/agent/main.tf
  • java/sample-apps/sqs/README.md
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • nodejs/sample-apps/aws-sdk/deploy/wrapper/outputs.tf
  • utils/terraform/api-gateway-proxy/variables.tf
  • .github/workflows/close-stale.yaml
  • java/layer-wrapper/scripts/otel-handler
  • java/sample-apps/aws-sdk/deploy/agent/main.tf
  • go/README.md
  • python/sample-apps/aws-sdk/deploy/wrapper/main.tf
  • python/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • python/src/otel/tests/test_otel.py
  • docs/design_proposal.md
  • java/sample-apps/okhttp/src/main/java/io/opentelemetry/lambda/sampleapps/okhttp/OkHttpRequestHandler.java
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/AwsSdkSample/Properties/launchSettings.json
  • ruby/README.md
  • java/awssdk-autoconfigure/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/autoconfigure/AutoconfiguredTracingExecutionInterceptor.java
  • .github/workflows/ci-python.yml
  • dotnet/sample-apps/aws-sdk/deploy/wrapper/variables.tf
  • python/src/otel/otel_sdk/otel_wrapper.py
  • dotnet/sample-apps/aws-sdk/wrapper/SampleApps/build.sh
  • java/sample-apps/aws-sdk/build.gradle.kts

Comment thread .github/dependabot.yml
Comment thread .github/workflows/publish-extend-otel-layer.yml
Comment thread .github/workflows/publish-extend-otel-layer.yml Outdated
Comment thread collector/processor/decoupleprocessor/go.mod
Comment thread nodejs/packages/cx-wrapper/package.json
Comment thread scripts/build-nodejs.sh Outdated
Comment thread scripts/publish-sandbox.sh Outdated
Comment thread UPSTREAM.md Outdated
jmsundar and others added 3 commits April 20, 2026 13:08
- extend/README.md: split consumer-contract table into collector env vars
  vs per-request OTLP headers; move ARIZE_PROJECT_NAME to headers (no
  collector default); note ARIZE_S3_BUCKET_NAME applies to s3 variant only
- publish-extend-otel-layer.yml: size-check the merged layer.zip against
  Lambda's 50MB zipped limit after the collector+nodejs merge step
- UPSTREAM.md: "three places" -> "four places" to match the four bullets
- collector/lambdacomponents/exporter: rename logging.go -> debug.go
  and update build tag to lambdacomponents.exporter.debug
- collector configs: declare tls.insecure: false on otlp/coralogix and
  otlp/arize exporters to document intent at the security boundary
- cx-wrapper + layer package.json: bump exporter-*-otlp-proto,
  instrumentation-grpc, instrumentation-http to 0.214.0 so the whole
  @opentelemetry/* experimental cohort is on one version
- publish-sandbox.sh: add --description with cx-contrib SHA + build time
  to aws lambda publish-layer-version for easier sandbox triage

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- workflow: add actions/checkout in package-and-publish job (sparse to
  scripts/) so check_size.sh is present in the runner workspace; convert
  inline flow mappings on download-artifact + cx-contrib checkout steps
  to block form so yamllint/actionlint accept them
- collector-config-cx-arize{,-s3}.yaml: rename arizeTracingProps ->
  otelTracingProps in header comments to match the CDK prop name used
  in root README and extend-cdk-lib
- extend/README.md: tick the first TODO (publish workflow has landed);
  add bash lang to the upstream-sync fenced block
- UPSTREAM.md: split "git fetch upstream otel-upstream" into two fetch
  commands (the single-line form treats otel-upstream as a refspec on
  the upstream remote and fails); add text lang to URL fence
- scripts/build-nodejs.sh, scripts/publish-sandbox.sh: treat
  OPENTELEMETRY_JS_CONTRIB_PATH as read-only when set; only manage
  .build-cache/ (with clone/fetch/checkout) when the env var is empty.
  Prevents mutating a user's local WIP checkout.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
The opening paragraph only named two of the three places the SHA is
pinned, so partial bumps were easy to miss. Call out build-nodejs.sh
alongside publish-sandbox.sh and the workflow.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@UPSTREAM.md`:
- Line 5: Update the introductory sentence that currently reads "The SHA is
pinned in three places" to reflect the actual count and clarify intent: change
it to say "four places" if you mean there are four functional pin locations, or
reword to indicate the fork-points table is only a tracking record (e.g., "three
functional places plus this fork-points tracking table") so the mention of the
fork-points table is not counted as a functional pin; locate the sentence in the
paragraph starting "We also consume [`coralogix/opentelemetry-js-contrib`]" and
adjust that sentence and/or parenthetical note about the "fork-points table" to
make the count and purpose consistent with lines 64-69.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 33c96805-1600-43e8-baa4-748c60e1dfe3

📥 Commits

Reviewing files that changed from the base of the PR and between 0d4428f and 66a1246.

📒 Files selected for processing (10)
  • .github/workflows/publish-extend-otel-layer.yml
  • UPSTREAM.md
  • collector/lambdacomponents/exporter/debug.go
  • extend/README.md
  • extend/collector-config-cx-arize-s3.yaml
  • extend/collector-config-cx-arize.yaml
  • nodejs/packages/cx-wrapper/package.json
  • nodejs/packages/layer/package.json
  • scripts/build-nodejs.sh
  • scripts/publish-sandbox.sh
✅ Files skipped from review due to trivial changes (1)
  • scripts/build-nodejs.sh
🚧 Files skipped from review as they are similar to previous changes (4)
  • nodejs/packages/layer/package.json
  • nodejs/packages/cx-wrapper/package.json
  • extend/collector-config-cx-arize-s3.yaml
  • scripts/publish-sandbox.sh

Comment thread UPSTREAM.md Outdated
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Only repository collaborators, contributors, or members can run CodeRabbit commands.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

Only repository collaborators, contributors, or members can run CodeRabbit commands.

@jmsundar
Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 21, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Apr 21, 2026
bowlofarugula
bowlofarugula previously approved these changes Apr 21, 2026
Build scripts only consume OPENTELEMETRY_JS_CONTRIB_PATH now; the
upstream opentelemetry-js and import-in-the-middle forks were dropped
when we moved those deps to npm.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@jmsundar
Copy link
Copy Markdown
Contributor Author

Outside-diff-range comments from CodeRabbit's first review:

1. collector/go.mod s3provider / secretsmanagerprovider v0.109.0 → v0.149.0No action. Verified: full go build ./... and go test ./internal/... pass with the current pins. These providers are pinned by the Coralogix fork-point and only export the confmap.Provider interface, which is stable across the 0.109 → 0.149 range. No compile or runtime issues. Out of scope for DEVOPS-2394.

2. collector/processor/decoupleprocessor/factory.go NewTraces / NewMetrics / NewLogsNewTracesProcessor etc.Rejected, CodeRabbit is wrong. NewTraces / NewMetrics / NewLogs ARE the current v0.150.0 API names (the *Processor suffixed names were removed in an earlier OTel release). Build passes against go.opentelemetry.io/collector/processor/processorhelper@v0.150.0.

3. nodejs/README.md stale OPENTELEMETRY_JS_PATH + IITM_PATHVerified bug, fixed in 3976922. Grepped the repo: the only references to those vars were in nodejs/README.md; build scripts only consume OPENTELEMETRY_JS_CONTRIB_PATH (upstream-js and import-in-the-middle are resolved from npm now). Rewrote the README's build-requirements section to reflect reality.

@jmsundar jmsundar enabled auto-merge (squash) April 22, 2026 17:05
@jmsundar jmsundar merged commit c894f6c into main Apr 22, 2026
5 checks passed
@jmsundar jmsundar deleted the feat/DEVOPS-2394-extend-otel-lambda branch April 22, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants