You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@iceberg.apache.org by "Jayesh45-master (via GitHub)" <gi...@apache.org> on 2025/12/26 18:31:52 UTC

[PR] iceberg issue [iceberg]

Jayesh45-master opened a new pull request, #14929:
URL: https://github.com/apache/iceberg/pull/14929

   <html>
   <body>
   <!--StartFragment--><h2 data-start="238" data-end="249">PR Title</h2>
   <p data-start="251" data-end="316"><strong data-start="251" data-end="316">Implement in-memory test harness for IRC Events REST endpoint</strong></p>
   <hr data-start="318" data-end="321">
   <h2 data-start="323" data-end="340">PR Description</h2>
   <h3 data-start="342" data-end="353">Summary</h3>
   <p data-start="355" data-end="697">This PR introduces a <strong data-start="376" data-end="404">lightweight test harness</strong> for the IRC Events REST endpoint in the Iceberg REST Catalog.<br data-start="466" data-end="469">
   The implementation is intentionally <strong data-start="505" data-end="523">non-production</strong>, using an <strong data-start="534" data-end="559">in-memory event store</strong>, and is designed to unblock further development and validation of the Events API before it is merged into the REST Catalog specification.</p>
   <p data-start="699" data-end="790">This work follows the consensus reached in #12584 and builds on the groundwork from #13580.</p>
   <hr data-start="792" data-end="795">
   <h3 data-start="797" data-end="811">Motivation</h3>
   <p data-start="813" data-end="941">Before finalizing and merging the IRC Events endpoint into the REST Catalog specification, we need a concrete implementation to:</p>
   <ul data-start="943" data-end="1078">
   <li data-start="943" data-end="972">
   <p data-start="945" data-end="972">Validate endpoint contracts</p>
   </li>
   <li data-start="973" data-end="1010">
   <p data-start="975" data-end="1010">Enable integration and unit testing</p>
   </li>
   <li data-start="1011" data-end="1078">
   <p data-start="1013" data-end="1078">Provide a reference implementation for future production backends</p>
   </li>
   </ul>
   <p data-start="1080" data-end="1173">The test harness satisfies these needs without introducing storage or operational complexity.</p>
   <hr data-start="1175" data-end="1178">
   <h3 data-start="1180" data-end="1199">What’s Included</h3>
   <p data-start="1201" data-end="1261">This PR adds support for <strong data-start="1226" data-end="1234">POST</strong> and <strong data-start="1239" data-end="1246">GET</strong> operations on:</p>
   <pre class="overflow-visible! px-0!" data-start="1263" data-end="1290"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre!"><span><span>/v1/{prefix}/events
   </span></span></code></div></div></pre>
   <p data-start="1292" data-end="1319">using an in-memory backend.</p>
   <h4 data-start="1321" data-end="1352">Key components introduced:</h4>
   <ul data-start="1354" data-end="1879">
   <li data-start="1354" data-end="1476">
   <p data-start="1356" data-end="1382"><strong data-start="1356" data-end="1382">In-memory events store</strong></p>
   <ul data-start="1385" data-end="1476">
   <li data-start="1385" data-end="1426">
   <p data-start="1387" data-end="1426">Thread-safe storage for received events</p>
   </li>
   <li data-start="1429" data-end="1476">
   <p data-start="1431" data-end="1476">Suitable for tests and local development only</p>
   </li>
   </ul>
   </li>
   <li data-start="1478" data-end="1554">
   <p data-start="1480" data-end="1509"><strong data-start="1480" data-end="1509">Request / response models</strong></p>
   <ul data-start="1512" data-end="1554">
   <li data-start="1512" data-end="1533">
   <p data-start="1514" data-end="1533"><code data-start="1514" data-end="1533">PostEventsRequest</code></p>
   </li>
   <li data-start="1536" data-end="1554">
   <p data-start="1538" data-end="1554"><code data-start="1538" data-end="1554">EventsResponse</code></p>
   </li>
   </ul>
   </li>
   <li data-start="1556" data-end="1662">
   <p data-start="1558" data-end="1573"><strong data-start="1558" data-end="1573">REST wiring</strong></p>
   <ul data-start="1576" data-end="1662">
   <li data-start="1576" data-end="1610">
   <p data-start="1578" data-end="1610">New routes registered in <code data-start="1603" data-end="1610">Route</code></p>
   </li>
   <li data-start="1613" data-end="1662">
   <p data-start="1615" data-end="1662">Endpoint handling added to <code data-start="1642" data-end="1662">RESTCatalogAdapter</code></p>
   </li>
   </ul>
   </li>
   <li data-start="1664" data-end="1744">
   <p data-start="1666" data-end="1682"><strong data-start="1666" data-end="1682">Path helpers</strong></p>
   <ul data-start="1685" data-end="1744">
   <li data-start="1685" data-end="1744">
   <p data-start="1687" data-end="1744">Centralized <code data-start="1699" data-end="1720">/v1/{prefix}/events</code> path in <code data-start="1729" data-end="1744">ResourcePaths</code></p>
   </li>
   </ul>
   </li>
   <li data-start="1746" data-end="1879">
   <p data-start="1748" data-end="1757"><strong data-start="1748" data-end="1757">Tests</strong></p>
   <ul data-start="1760" data-end="1879">
   <li data-start="1760" data-end="1879">
   <p data-start="1762" data-end="1793"><code data-start="1762" data-end="1782">TestEventsEndpoint</code> validates:</p>
   <ul data-start="1798" data-end="1879">
   <li data-start="1798" data-end="1814">
   <p data-start="1800" data-end="1814">Posting events</p>
   </li>
   <li data-start="1819" data-end="1845">
   <p data-start="1821" data-end="1845">Retrieving stored events</p>
   </li>
   <li data-start="1850" data-end="1879">
   <p data-start="1852" data-end="1879">Basic request/response flow</p>
   </li>
   </ul>
   </li>
   </ul>
   </li>
   </ul>
   <hr data-start="1881" data-end="1884">
   <h3 data-start="1886" data-end="1903">Files Changed</h3>
   <div class="TyagGW_tableContainer"><div tabindex="-1" class="group TyagGW_tableWrapper flex w-fit flex-col-reverse">
   File | Description
   -- | --
   ResourcePaths.java | Added V1_EVENTS path and helper
   PostEventsRequest.java | Request model for POST /events
   EventsResponse.java | Response model for GET /events
   InMemoryEventsStore.java | Simple in-memory event backend
   RESTCatalogAdapter.java | Endpoint handling for events
   Route.java | Added EVENTS_POST and EVENTS_GET routes
   TestEventsEndpoint.java | Unit test covering the new endpoint
   
   </div></div>
   <hr data-start="2379" data-end="2382">
   <h3 data-start="2384" data-end="2400">Design Notes</h3>
   <ul data-start="2402" data-end="2667">
   <li data-start="2402" data-end="2499">
   <p data-start="2404" data-end="2499"><strong data-start="2404" data-end="2432">Non-production by design</strong><br data-start="2432" data-end="2435">
   The in-memory store is scoped to testing and local usage only.</p>
   </li>
   <li data-start="2501" data-end="2583">
   <p data-start="2503" data-end="2583"><strong data-start="2503" data-end="2532">No persistence guarantees</strong><br data-start="2532" data-end="2535">
   Events are not durable and reset between runs.</p>
   </li>
   <li data-start="2585" data-end="2667">
   <p data-start="2587" data-end="2667"><strong data-start="2587" data-end="2611">Minimal surface area</strong><br data-start="2611" data-end="2614">
   No external dependencies or configuration required.</p>
   </li>
   </ul>
   <p data-start="2669" data-end="2766">This approach keeps the implementation simple while providing meaningful coverage and validation.</p>
   <hr data-start="2768" data-end="2771">
   <h3 data-start="2773" data-end="2784">Testing</h3>
   <ul data-start="2786" data-end="2967">
   <li data-start="2786" data-end="2814">
   <p data-start="2788" data-end="2814">Added <code data-start="2794" data-end="2814">TestEventsEndpoint</code></p>
   </li>
   <li data-start="2815" data-end="2896">
   <p data-start="2817" data-end="2826">Verified:</p>
   <ul data-start="2829" data-end="2896">
   <li data-start="2829" data-end="2855">
   <p data-start="2831" data-end="2855">POST events are accepted</p>
   </li>
   <li data-start="2858" data-end="2896">
   <p data-start="2860" data-end="2896">GET returns previously posted events</p>
   </li>
   </ul>
   </li>
   <li data-start="2897" data-end="2967">
   <p data-start="2899" data-end="2933">Full build executed locally using:</p>
   <pre class="overflow-visible! px-0!" data-start="2936" data-end="2967"><div class="contain-inline-size rounded-2xl corner-superellipse/1.1 relative bg-token-sidebar-surface-primary"><div class="sticky top-[calc(--spacing(9)+var(--header-height))] @w-xl/main:top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs"></div></div></div><div class="overflow-y-auto p-4" dir="ltr"><code class="whitespace-pre! language-bash"><span><span>./gradlew build
   </span></span></code></div></div></pre>
   </li>
   </ul>
   <hr data-start="2969" data-end="2972">
   <h3 data-start="2974" data-end="3000">Backward Compatibility</h3>
   <ul data-start="3002" data-end="3114">
   <li data-start="3002" data-end="3023">
   <p data-start="3004" data-end="3023">No breaking changes</p>
   </li>
   <li data-start="3024" data-end="3074">
   <p data-start="3026" data-end="3074">No impact on existing REST Catalog functionality</p>
   </li>
   <li data-start="3075" data-end="3114">
   <p data-start="3077" data-end="3114">New endpoint is additive and isolated</p>
   </li>
   </ul>
   <hr data-start="3116" data-end="3119">
   <h3 data-start="3121" data-end="3149">Follow-ups / Future Work</h3>
   <ul data-start="3151" data-end="3287">
   <li data-start="3151" data-end="3189">
   <p data-start="3153" data-end="3189">Pluggable or persistent event stores</p>
   </li>
   <li data-start="3190" data-end="3222">
   <p data-start="3192" data-end="3222">Metrics and retention policies</p>
   </li>
   <li data-start="3223" data-end="3252">
   <p data-start="3225" data-end="3252">Authorization and filtering</p>
   </li>
   <li data-start="3253" data-end="3287">
   <p data-start="3255" data-end="3287">Production-ready implementations</p>
   </li>
   </ul>
   <hr data-start="3289" data-end="3292">
   <h3 data-start="3294" data-end="3307">Checklist</h3>
   <ul class="contains-task-list" data-start="3309" data-end="3492">
   <li class="task-list-item" data-start="3309" data-end="3344">
   <p data-start="3315" data-end="3344"><input disabled="" type="checkbox" checked=""> Follows Iceberg REST patterns</p>
   </li>
   <li class="task-list-item" data-start="3345" data-end="3384">
   <p data-start="3351" data-end="3384"><input disabled="" type="checkbox" checked=""> Minimal, test-only implementation</p>
   </li>
   <li class="task-list-item" data-start="3385" data-end="3412">
   <p data-start="3391" data-end="3412"><input disabled="" type="checkbox" checked=""> Covered by unit tests</p>
   </li>
   <li class="task-list-item" data-start="3413" data-end="3455">
   <p data-start="3419" data-end="3455"><input disabled="" type="checkbox" checked=""> No production assumptions introduced</p>
   </li>
   <li class="task-list-item" data-start="3456" data-end="3492">
   <p data-start="3462" data-end="3492"><input disabled="" type="checkbox" checked=""> Ready for review and iteration</p></li></ul><!--EndFragment-->
   </body>
   </html>


-- 
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: issues-unsubscribe@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org


Re: [PR] Implement in-memory test harness for IRC Events REST endpoint [iceberg]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #14929:
URL: https://github.com/apache/iceberg/pull/14929#issuecomment-3808242359

   This pull request has been marked as stale due to 30 days of inactivity. It will be closed in 1 week if no further activity occurs. If you think that’s incorrect or this pull request requires a review, please simply write any comment. If closed, you can revive the PR at any time and @mention a reviewer or discuss it on the dev@iceberg.apache.org list. Thank you for your contributions.


-- 
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: issues-unsubscribe@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org


Re: [PR] Implement in-memory test harness for IRC Events REST endpoint [iceberg]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] commented on PR #14929:
URL: https://github.com/apache/iceberg/pull/14929#issuecomment-3844521660

   This pull request has been closed due to lack of activity. This is not a judgement on the merit of the PR in any way. It is just a way of keeping the PR queue manageable. If you think that is incorrect, or the pull request requires review, you can revive the PR at any time.


-- 
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: issues-unsubscribe@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org


Re: [PR] Implement in-memory test harness for IRC Events REST endpoint [iceberg]

Posted by "github-actions[bot] (via GitHub)" <gi...@apache.org>.
github-actions[bot] closed pull request #14929: Implement in-memory test harness for IRC Events REST endpoint
URL: https://github.com/apache/iceberg/pull/14929


-- 
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: issues-unsubscribe@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@iceberg.apache.org
For additional commands, e-mail: issues-help@iceberg.apache.org