dosubot[bot] commented on issue #36840: URL: https://github.com/apache/superset/issues/36840#issuecomment-3693642147
<!-- Answer --> Great place to start! The frontend Samples tab is handled by the SamplesPane component, which fetches data using getDatasourceSamples. Right now, the fetch logic expects a valid JSON response with a result key—if the backend returns a 200 with an empty body, the JSON parser throws, and the error is caught and surfaced as a generic error message in the UI. However, there’s no explicit check for empty or malformed responses before accessing fields, so the error message may not be very descriptive and could cause confusing UI states or freezes if not handled properly. To improve this, consider adding a defensive check in getDatasourceSamples (in chartAction.js) to detect and handle empty or malformed responses before accessing response.json.result. You could throw a more descriptive error (like "No data returned from server") if the response is empty or missing expected fields. Also, ensure SamplesPane surfaces this error clearly to the user, rather than just spinning or freezing. The main files to look at are: - superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx - superset-frontend/src/components/Chart/chartAction.js (getDatasourceSamples) - superset-frontend/packages/superset-ui-core/src/connection/callApi/parseResponse.ts Testing by simulating a 200 with an empty body will help verify your fix. Let me know if you want more details on any of these code paths! References: [SamplesPane.tsx logic](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx#L40-L160) [getDatasourceSamples in chartAction.js](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/components/Chart/chartAction.js#L591-L625) [parseResponse.ts JSON parsing](https://github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/packages/superset-ui-core/src/connection/callApi/parseResponse.ts#L28-L90) <!-- Dosu Comment Footer --> *To reply, just mention [@dosu](https://go.dosu.dev/dosubot).* --- <sup>How did I do? [Good](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/e549433b-efde-4744-8bc0-f7ee42c1c230?feedback_type=other)</sup> [](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github) [](https://cursor.com/link/prompt?text=Great%20place%20to%20start%21%20The%20frontend%20Samples%20tab%20is%20handled%20by%20the%20SamplesPane%20component%2C%20which%20fetches%20data%20using%20getDatasourceSamples.%20Right%20now%2C%20the%20fetch%20logic%20expects%20a%20valid%20JSON%20response%20with%20a%20result%20key%E2%80%94if%20the%20backend%20returns%20a%20200%20with%20an%20empty%20body%2C%20the%20JSON%20parser%20throws%2C%20and%20the%20error%20is%20caught%20and%20surfaced%20as%20a%20generic%20error%20message%20in%20the%20UI.%20However%2C%20there%E2%80%99s%20no%20explicit%20check%20for%20empty%20or%20malformed%20responses%20before%20accessing%20fields%2C%20so%20the%20error%20message%20may%20not%20be%20very%20descriptive%20and%20could%20cause%20confusing%20UI%20states%20or%20freezes%2 0if%20not%20handled%20properly.%0A%0ATo%20improve%20this%2C%20consider%20adding%20a%20defensive%20check%20in%20getDatasourceSamples%20%28in%20chartAction.js%29%20to%20detect%20and%20handle%20empty%20or%20malformed%20responses%20before%20accessing%20response.json.result.%20You%20could%20throw%20a%20more%20descriptive%20error%20%28like%20%22No%20data%20returned%20from%20server%22%29%20if%20the%20response%20is%20empty%20or%20missing%20expected%20fields.%20Also%2C%20ensure%20SamplesPane%20surfaces%20this%20error%20clearly%20to%20the%20user%2C%20rather%20than%20just%20spinning%20or%20freezing.%20The%20main%20files%20to%20look%20at%20are%3A%0A%0A-%20superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx%0A-%20superset-frontend/src/components/Chart/chartAction.js%20%28getDatasourceSamples%29%0A-%20superset-frontend/packages/superset-ui-core/src/connection/callApi/parseResponse.ts%0A%0ATesting%20by%20simulating%20a%20200%20with%20an%20empty%20body%20will%20help%2 0verify%20your%20fix.%20Let%20me%20know%20if%20you%20want%20more%20details%20on%20any%20of%20these%20code%20paths%21%0A%0AReferences%3A%20%20%0A%5BSamplesPane.tsx%20logic%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/explore/components/DataTablesPane/components/SamplesPane.tsx%23L40-L160%29%20%20%0A%5BgetDatasourceSamples%20in%20chartAction.js%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/src/components/Chart/chartAction.js%23L591-L625%29%20%20%0A%5BparseResponse.ts%20JSON%20parsing%5D%28https%3A//github.com/apache/superset/blob/829e4d92d91ceae4b43b1ed3b063ffe45377799c/superset-frontend/packages/superset-ui-core/src/connection/callApi/parseResponse.ts%23L28-L90%29) [](https://go.dosu.dev/discord-bot) []( https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/issues/36840) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
