Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error and update handling for Algorand sandbox [$750] #30

Closed
michielmulders opened this issue Jun 7, 2021 · 3 comments
Closed
Labels
Advanced Experience Level: Advanced Development Tasks that involve development works

Comments

@michielmulders
Copy link
Contributor

michielmulders commented Jun 7, 2021

Overview

  • Short Description: Improving handling of updates and errors in Algorand Sandbox
  • Bounty: 750 USDCa in USDCa or equivalent in ALGO tokens for non-US residents. (The amount of ALGO will be based on the 30-day average price of ALGO on the payment date) Recipient has to opt-in to receive USDCa asset on Algorand blockchain.
  • Estimated Time Commitment: 1-2 days
  • Category: Development
  • Experience Level: Intermediate / Advanced

Description

What is this task?

Sandbox is an easy way to create and configure an Algorand development environment with Algod and Indexer. This task contains several deliverables to improve the sandbox.

What are the requirements for the bounty taker?

The bounty taker must be knowledgeable in git, Docker, and bash scripts.
They also need to be familiar with the Algorand software (algod, indexer, and sandbox).
Ideally, the bounty taker should have access to a Windows, a macOS, and an Ubuntu 20.04 environment to be able to test sandbox in these three environments.

What are the deliverables?

Each deliverable consists of a pull request to github.com/algorand/sandbox.
In case multiple deliverables depend on each other, multiple deliverables may correspond to the same pull request.
But we recommend separating pull requests as much as possible.

Judging Criteria and Metrics

  • Clean, tested, well-documented code
  • Explanation of the rationals behind choices made by the bounty taker when implementing the requested features
  • Update of the README and other user-facing documentation
  • Pull request accepted and merged by the maintainers

1. Update algod/indexer during ./sandbox up

Description
Make a Pull Request to solve the issue algorand/sandbox#41.
The goal is to allow a sandbox user to easily update their sandbox node/indexer without losing all the data in the containers.

The bounty taker should ensure that the update mechanism fails gracefully in case of issues with network connectivity (or ideally also when the user cancels the update with Ctrl+C, but this may not possible to check).
In those cases, the sandbox should start with the previous version.

2. Force rebuild after cleaning

Description
Make a Pull Request to ensure that after ./sandbox clean, ./sandbox up rebuilds without cache the algod and indexer images, so that algod and indexer actually get updated.
One potential (untested) solution is that ./sandbox clean creates a file .clean, so that when ./sandbox up sees this file, it adds the option --no-cache to docker-compose.

Currently cleaning the sandbox via ./sandbox clean does not force the algod and indexer images to be rebuilt from scratch.
In particular, it does not update the version of algod and indexer.

Note that this deliverable complements the first deliverable. The first deliverable facilitates the update of a running sandbox environment (i.e., sandbox containers) but does not update the actual images. This means that after cleaning the sandbox and starting it again, algod and indexer need to be updated again.

The above explanation of the difference between the two update mechanisms needs to appear in the README.

3. Improve error handling

Description
Make a Pull Request to improve error handling in the sandbox and make it easier for a sandbox user to debug issues.
This deliverable is open-ended and the Algorand Foundation may offer higher bounties for outstanding error management.

It should at least solve the issue algorand/sandbox#23.
Power users should have the option to see the full logs (in case default error handling hides part of the full log).

Other Requirements

  • All project codes should be published on GitHub, with MIT license or Apache V2 license.
  • All contributions/PRs to public (Algorand) repositories should be open source and should follow the contributions rules of the relevant repository.
  • All non-codes documents should be using Markdown format.
  • In the project description or repository readme, there should be a proper security notice. E.g., it should tell the visitor the project is not audited and should not be used in a production environment.
@michielmulders michielmulders added Development Tasks that involve development works Advanced Experience Level: Advanced labels Jun 7, 2021
@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 750.0 USDCa (750.0 USD @ $1.0/USDCa) attached to it as part of the algorandfoundation fund.

@gitcoinbot
Copy link

gitcoinbot commented Jun 9, 2021

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 265 years, 5 months from now.
Please review their action plans below:

1) overhead525 has been approved to start work.

Hi Michiel,

I've spent yesterday evening checking out this issue on gitcoin. It definitely falls within my skillset, so I'd like to work on it. I made a proposal with some information about me, my setup, and my approach that you should find useful.

https://overhead525.github.io/algorand-error-handling/

You should see that I'm capable of getting the sandbox to update in a convenient manner for your users, as well as getting the error handling on par with version 1.0.

The link is a working draft that I'll update as I progress through the bounty.

Best regards,
Ritchel Cousar Jr.

Learn more on the Gitcoin Issue Details page.

@gitcoinbot
Copy link

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


The funding of 750.0 USDCa (750.0 USD @ $1.0/USDCa) attached to this issue has been cancelled by the bounty submitter

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Advanced Experience Level: Advanced Development Tasks that involve development works
Projects
None yet
Development

No branches or pull requests

2 participants