Giter VIP home page Giter VIP logo

Comments (6)

nicolasgarnier avatar nicolasgarnier commented on July 25, 2024 15

Yes the issue is what @ahaverty described.

When you do this:

createThumbnail(1, ...);
createThumbnail(2, ...);
createThumbnail(3, ...);
...
return;

You are starting 3 asynchronous processes but you are returning right away. Therefore the instance gets shut down and your 3 createThumbnail don;t have time to complete.

Each of these returns a Promise. What you need to do is this instead:

const listOfAsyncJobs = [];
listOfAsyncJobs.push(createThumbnail(1, ...));
listOfAsyncJobs.push(createThumbnail(2, ...));
listOfAsyncJobs.push(createThumbnail(3, ...));
...
return Promise.all(listOfAsyncJobs); // This will ensure we wait for the end of the three aync tasks above.

from functions-samples.

ValentinTaleb avatar ValentinTaleb commented on July 25, 2024 2

Thanks a lot. You have saved my day !

from functions-samples.

ahaverty avatar ahaverty commented on July 25, 2024 1

I got an econn error with my realtime database function, perhaps my fix could help you debug your issue? (See example of logs occuring after function terminates: firebase/firebase-functions#18 (comment)

from functions-samples.

nicolasgarnier avatar nicolasgarnier commented on July 25, 2024

As @ahaverty said can you make sure you return a Promise correctly in your code. From your snippet your code looks OK though but it's missing some parts of it we can't be sure.

from functions-samples.

ValentinTaleb avatar ValentinTaleb commented on July 25, 2024

Thank guys, you are right. I did some test and the problem really seems to be a problem with a return.

I don't really understand when I have to return something. I want to do something like this :

exports.myFunction =
    functions
    .database
    .ref('...')
    .onWrite(event => {
        
        ...

        // Create thumbnails
        createThumbnail(1, ...);
        createThumbnail(2, ...);
        createThumbnail(3, ...);

         ...

        return; // <- Is this necessary ?
    });

function createThumbnail(...) {

    ...

    return bucket
        .file(originalFilepath)
        .download({
            destination: tempFilePath
        })
        .then(() => {
           
            ...

            // Generate a thumbnail using ImageMagick.
            return spawn('convert', [tempFilePath, '-thumbnail', dimension + 'x' + dimension + '>', tempFilePath])
                .then(() => {
                    
                    ....

                    // Uploading the thumbnail.
                    return bucket.upload(tempFilePath, {
                            destination: thumbnailUrl
                        })
                        .then(() => {

                              ...

                            // Save thumbnailUrl in database
                            return admin.database().ref(...).set(thumbnailUrl);
                        });
                });
        });
}

This code doesn't work. I tried to remove some of these return but either I have a read ECONNRESET or a TimeOut.

If you can give me any advice, I'd be very thankful

from functions-samples.

nicolasgarnier avatar nicolasgarnier commented on July 25, 2024

PS: I'll also reply on your Stack Overflow post.

from functions-samples.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.