You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: memory-bank/activeContext.md
+4-2Lines changed: 4 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -18,11 +18,13 @@ Building a comprehensive knowledge base of the Gitpod codebase and architecture
18
18
- Documented 33 service components and 11 API components
19
19
- Enhanced API component documentation with code generation information
20
20
- Implemented server readiness probe with database, SpiceDB, and Redis connectivity checks
21
+
-**Improved `registry-facade` resilience by implementing a comprehensive retry mechanism for blob retrieval, addressing transient network errors.**
21
22
22
23
## Next Steps
23
24
24
-
1.**Component Interactions**: Understand inter-component communication
25
-
2.**Development Environment**: Configure local development setup
25
+
1.**Monitor `registry-facade`:** Observe the component's behavior with the new retry logic to ensure it correctly handles the previously identified network issues.
26
+
2.**Component Interactions**: Understand inter-component communication
27
+
3.**Development Environment**: Configure local development setup
26
28
3.**Build System**: Gain experience with in-tree and Leeway builds
27
29
4.**Component Builds**: Practice building different component types
28
30
5.**Initial Tasks**: Identify specific improvement areas
Copy file name to clipboardExpand all lines: memory-bank/components/registry-facade.md
+6Lines changed: 6 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,12 @@ The component acts as an "image layer smuggler," inserting layers into container
33
33
-`cmd/run.go`: Implements the main registry service
34
34
-`cmd/setup.go`: Handles service setup and configuration
35
35
-`pkg/registry/`: Core registry implementation
36
+
-`blob.go`: Handles blob retrieval from various sources (local store, IPFS, upstream registries). Contains a resilient retry mechanism to handle transient network errors during both connection and data transfer phases.
37
+
38
+
## Key Implementation Details
39
+
40
+
### Blob Retrieval Retry Logic
41
+
The `retrieveFromSource` function in `pkg/registry/blob.go` implements an exponential backoff retry mechanism that wraps the entire blob retrieval process. This ensures that transient network errors, such as `TLS handshake timeout` or `connection reset`, that occur during either the initial connection (`GetBlob`) or the data streaming (`io.CopyBuffer`) are retried. This makes the service more resilient to intermittent network issues when fetching blobs from upstream sources like S3.
0 commit comments