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

Legg til DownloadCompleted #539

Open
Tracked by #271
Andreass2 opened this issue Sep 3, 2024 · 4 comments
Open
Tracked by #271

Legg til DownloadCompleted #539

Andreass2 opened this issue Sep 3, 2024 · 4 comments
Assignees
Labels
kind/feature A distinct functionality or enhancement added to a product to provide specific value to users

Comments

@Andreass2
Copy link
Collaborator

Andreass2 commented Sep 3, 2024

Ettersom #533 medfører endringer på statushistorikk tar vi en gjennomgang av statushistorikk.

  • Legg til "DownloadCompleted". Vi kan ikke garantere at at hele filen er lastet ned. Men det gir litt bedre notoritet, samtidig som det gir oss mulighet til å hente ut statistikk på hvor lang tid nedlastninger tar.
@Andreass2 Andreass2 converted this from a draft issue Sep 3, 2024
@mSunberg mSunberg self-assigned this Oct 21, 2024
@mSunberg mSunberg added the kind/feature A distinct functionality or enhancement added to a product to provide specific value to users label Oct 23, 2024
@mSunberg
Copy link
Collaborator

Setter denne på vent inntil videre. Det viser seg at nedlastingen skjer i bakgrunnen etter at koden er ferdig eksekvert. Det resulterer i at det er vanskelig å faktisk vite om nedlastingen er ferdig eller ikke og sette riktig status. I tillegg settes DownloadConfirmed helt til slutt i koden, så det gir ingen mening å legge til et nytt felt heller siden timestampen vil bli så og si identisk.

@Ceredron
Copy link
Collaborator

Denne kan ses i sammenheng med #550 . Hvis vi går for å injecte en manifest fil i nedlastet filstrøm ender vi uansett opp med å skrive lavnivåkode for å håndtere strømmingen. Da er veien kort til å utføre forretningslogikk (legge til DownloadCompleted) ved fullført streaming.

@Ceredron Ceredron changed the title Endringer på statushistorikk Legg til DownloadCompleted Oct 24, 2024
@Ceredron Ceredron moved this from 🏗 In progress to 📋 Backlog in Altinn melding og formidling Oct 24, 2024
@Ceredron
Copy link
Collaborator

Ceredron commented Nov 7, 2024

Denne vil være mulig å gjøre etter #525 da vi går over til å bruke DownloadStreamingAsync som støtter et ProgressHandler parameter. Dette er en callback som man kan bruke for å utføre handlinger når et gitt antall bytes er overført.
Caveaten er at den trigges dobbelt når filen er ferdig nedlastet så man må bruke en semaphore eller lignende mekanisme for å håndtere duplikater.

@Ceredron
Copy link
Collaborator

Ceredron commented Nov 7, 2024

Naiv implementasjon som ikke håndterer duplikater:

public async Task<Stream> DownloadFile(ServiceOwnerEntity serviceOwnerEntity, FileTransferEntity fileTransfer, string actorExternalReference, CancellationToken cancellationToken)
{
    var blobContainerClient = await GetBlobContainerClient(fileTransfer.FileTransferId, serviceOwnerEntity);
    var blobClient = blobContainerClient.GetBlobClient(fileTransfer.FileTransferId.ToString());
    try
    {
        var content = await blobClient.DownloadStreamingAsync(new BlobDownloadOptions()
        {
            ProgressHandler = new Progress<long>(async bytesTransferred =>
            {
                if (bytesTransferred == fileTransfer.FileTransferSize)
                {
                    actorFileTransferStatusRepository.InsertActorFileTransferStatus(fileTransfer.FileTransferId, ActorFileTransferStatus.DownloadCompleted, actorExternalReference, cancellationToken);
                }
            })
        }, cancellationToken);
        return content.Value.Content;
    }
    catch (RequestFailedException requestFailedException)
    {
        logger.LogError("Error occurred while downloading file: {errorCode}: {errorMessage} ", requestFailedException.ErrorCode, requestFailedException.Message);
        throw;
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/feature A distinct functionality or enhancement added to a product to provide specific value to users
Projects
Status: 📋 Backlog
Development

No branches or pull requests

3 participants