GithubHelp home page GithubHelp logo

Comments (2)

DropSnorz avatar DropSnorz commented on June 23, 2024

Hi @jotacoro !

Thank you for pointing out that because it's not an intended behavior. 🙂

The Context

The current state of the plugins (the list of known plugins) is stored in the persistence engine after each Sync. In the first versions of OwlPlug, the plugin state is updated once ALL plugins are scanned. So plugin state displayed is always "complete".

When a plugin is synced using Native Discovery, OwlPlug loads the plugin like a DAW to extract metadata. During this operation, a crash in the plugin can lead to a crash of the host (which is the entire OwlPlug app)

So when the app crashes, it's hard to understand which plugin is involved in the crash. To overcome this, now when we run a Sync, the previous state is cleared and updated on the fly during the sync progress. This way, when we restart the app after a crash we can see exactly where the previous scan stops and identify the problematic plugin.

I've implemented a sandbox to scan plugins in a sub-process and avoid crashes (#27). I'm still gathering feedback to enable this feature by default (#138). By using sub-processing there are sometimes issues with antivirus and OS security options.

Fix options / Workaround

It's not a major issue, but i agree, it's a bit strange when it happens. Here some possible ways to handle the problem:

  • Create some sort of versioning in the persistence context, to always display "complete" version of the plugin state. Seems too complicated regarding the added value.
  • When we open the export window, we use the plugin state active at that time but we don't re-fetch anything from the persistence. We won't avoid "incomplete" data but at least, things will not change between the switch from JSON to CSV. I think it's the best option
  • Add a warning message when a scan run in the background
  • Do nothing

from owlplug.

jotacoro avatar jotacoro commented on June 23, 2024

Hi @DropSnorz , thanks for the detailed context here.

If I have an opinion here, I'll go with a mix between the second option and maybe block the UI journeys while synchronizing plugins. An example could be the exposed in the description of the issue, i.e. blocking the Sync and Export buttons while synchronizing.

I know that this could be seen as more "restrictive" but what do you think?

Regards,

from owlplug.

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.