Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-15 Thread Jochen Bern

On 14.03.24 21:21, Joan Moreau wrote:

I am trying to avoid closing/ reopening a file pointer to the exact same file
between each call to the plugin


That's still a "what" and not a "why". Long before you'll run into any 
serious resource problem, that file will be firmly seated in the disk 
cache and (r/o) accessing it will *effectively* be done in RAM; probably 
still not quite as efficient as Shared Memory, but.


I seriously doubt that the dovecot developers will want to make their 
software into the plugins' new memory manager, replacing the kernel in 
that role - having a plugin run amok and cause the master dovecot 
process to abort due to OOM sounds like creating an even worse problem, 
frankly ...


Kind regards,
--
Jochen Bern
Systemingenieur

Binect GmbH


smime.p7s
Description: S/MIME Cryptographic Signature
___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-14 Thread Joseph Tam
From: Joan Moreau

> I am trying to avoid closing/ reopening a file pointer to the exact same file
> between each call to the plugin

Can't you do an end-run around all this by having a persistent standalone
process that holds all your persistent data, and the plugin collects session
data and passes it to the persistent process via sockets?  You'll
have to have some initial handshake protocol to establish session context,
but this seems the easiest way to accomplish what you want.

Joseph Tam 
___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-14 Thread Joan Moreau via dovecot
Thanks Eduardo

I am trying to avoid closing/ reopening a file pointer to the exact same file
between each call to the plugin



On 14 March 2024 20:08:37 Eduardo M KALINOWSKI via dovecot
 wrote:

 On 14/03/2024 02:49, Joan Moreau via dovecot wrote:
  No, you don´t understand
  There is a core process (/usr/bin/dovecot) running all the
  time. So I want to
  allocate a memory block, the core process keep it and it is
  retrievable by the
  pluging when laded again
  At exit of /usr/bin/dovecot, it just does a "delete()" of
  the said allocation

 While I cannot help you with plugin writing or dovecot internals,
 this 
 does seem like an example of the XY problem[0]. Perhaps if you
 provide a 
 high level description of what you're attempting to do someone might 
 come up with a way to achieve that.

 [0] https://en.wikipedia.org/wiki/XY_problem

 -- 
 Eduardo M KALINOWSKI
 edua...@kalinowski.com.br

 ___
 dovecot mailing list -- dovecot@dovecot.org
 To unsubscribe send an email to dovecot-le...@dovecot.org

___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-14 Thread Eduardo M KALINOWSKI via dovecot

On 14/03/2024 02:49, Joan Moreau via dovecot wrote:

No, you don´t understand
There is a core process (/usr/bin/dovecot) running all the time. So I want to
allocate a memory block, the core process keep it and it is retrievable by the
pluging when laded again
At exit of /usr/bin/dovecot, it just does a "delete()" of the said allocation


While I cannot help you with plugin writing or dovecot internals, this 
does seem like an example of the XY problem[0]. Perhaps if you provide a 
high level description of what you're attempting to do someone might 
come up with a way to achieve that.


[0] https://en.wikipedia.org/wiki/XY_problem

--
Eduardo M KALINOWSKI
edua...@kalinowski.com.br

___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-14 Thread Aki Tuomi via dovecot
I do understand, and the problem is that your question is similar to asking how 
to get a memory pointer from systemd for your program.

The short answer is, not doable.

The bit longer answer is that /usr/sbin/dovecot is a fancy service supervisor, 
it's job is to launch and manage processes, it won't give you persistence 
service for data.

Aki

> On 14/03/2024 07:49 EET Joan Moreau via dovecot  wrote:
> 
>  
> No, you don´t understand
> 
> There is a core process (/usr/bin/dovecot) running all the time. So I 
> want to allocate a memory block, the core process keep it and it is 
> retrievable by the pluging when laded again
> 
> At exit of /usr/bin/dovecot, it just does a "delete()" of the said 
> allocation
> 
> On 2024-03-14 13:25, Aki Tuomi via dovecot wrote:
> 
> > Hi!
> > 
> > Sorry but that's just not possible, ther is no "core" where to create 
> > such object. There is no "dovecot" where to store things.
> > 
> > When user logs in, dovecot executes /usr/libexec/dovecot/imap and 
> > transfers the connection fd there. then plugins and stuff are loaded, 
> > and the user does what he does, and then plugins and stuff are unloaded 
> > and process exists and no longer exists in memory.
> > 
> > You are clearly asking about memory persistence between sessions, and 
> > this can be done with
> > 
> > a) services (internal or external), such as redis, sql, or something 
> > else
> > b) storing things to disk
> > 
> > Aki
> > 
> > On 13/03/2024 18:45 EET Joan Moreau via dovecot  
> > wrote:
> > 
> > No, I am not referring to that
> > 
> > I want to create an object at first call in memory
> > 
> > that object would be retrievable at second and furthers calls of the
> > plugin, as long as dovecot is running
> > 
> > On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
> > 
> > Not really no. You should use e.g. dict inteface for storing this kind
> > of stateful data. When deinit is called the calling core process will
> > likely die too.
> > 
> > Aki
> > 
> > On 13/03/2024 10:19 EET Joan Moreau  wrote:
> > 
> > Keep a pointer in memory retrievable each time a plugin is called
> > 
> > So the plugin keep the memory, not has to restart everything at each
> > call
> > 
> > On 12 March 2024 08:53:38 Aki Tuomi via dovecot 
> > wrote:
> > 
> > On 11/03/2024 10:42 EET Joan Moreau  wrote:
> > 
> > Hi
> > Is it possible, from a plugin perspective, to create and recover a
> > pointer in the core process (i.e. memory not lost between 2 calls to
> > the plugin, even after the "deinit" of the plugin" ) ?
> > 
> > Thanks
> > Hi Joan!
> > 
> > May I ask what you are attempting to achieve in more detail?
> > 
> > Aki
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-le...@dovecot.org   
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-leave@dovecot.orgNo, I am not 
> > referring to that
> > I want to create an object at first call in memory
> > that object would be retrievable at second and furthers calls of the 
> > plugin, as
> > long as dovecot is running
> > 
> > On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
> > Not really no. You should use e.g. dict inteface for storing this
> > kind of stateful data. When deinit is called the calling core process
> > will likely die too.
> > 
> > Aki
> > 
> > On 13/03/2024 10:19 EET Joan Moreau  wrote:
> > 
> > Keep a pointer in memory retrievable each time a plugin is
> > called
> > 
> > So the plugin keep the memory, not has to restart
> > everything at each call
> > 
> > On 12 March 2024 08:53:38 Aki Tuomi via dovecot
> >  wrote:
> > 
> > On 11/03/2024 10:42 EET Joan Moreau
> >  wrote:
> > 
> > Hi
> > Is it possible, from a plugin
> > perspective, to create and recover a
> > pointer in the core process (i.e.
> > memory not lost between 2 calls to the
> > plugin, even after the "deinit" of the
> > plugin" ) ?
> > 
> > Thanks
> > 
> > Hi Joan!
> > 
> > May I ask what you are attempting to achieve in
> > more detail?
> > 
> > Aki
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-
> > le...@dovecot.org
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-le...@dovecot.org
> > 
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-le...@dovecot.org
>   ___
> dovecot mailing list -- dovecot@dovecot.org
> To unsubscribe send an email to dovecot-leave@dovecot.orgNo, you don´t 
> understand
> There is a core process (/usr/bin/dovecot) running all the time. So I want to
> allocate a memory block, the core process keep it and it is retrievable by the
> pluging when laded again
> At exit 

Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-13 Thread Joan Moreau via dovecot
No, you don´t understand
There is a core process (/usr/bin/dovecot) running all the time. So I want to
allocate a memory block, the core process keep it and it is retrievable by the
pluging when laded again
At exit of /usr/bin/dovecot, it just does a "delete()" of the said allocation


On 2024-03-14 13:25, Aki Tuomi via dovecot wrote:
 Hi!

 Sorry but that's just not possible, ther is no "core" where to create
 such object. There is no "dovecot" where to store things.

 When user logs in, dovecot executes /usr/libexec/dovecot/imap and
 transfers the connection fd there. then plugins and stuff are loaded,
 and the user does what he does, and then plugins and stuff are
 unloaded and process exists and no longer exists in memory.

 You are clearly asking about memory persistence between sessions, and
 this can be done with

 a) services (internal or external), such as redis, sql, or something
 else
 b) storing things to disk

 Aki

  On 13/03/2024 18:45 EET Joan Moreau via dovecot
   wrote:

   
  No, I am not referring to that

  I want to create an object at first call in memory

  that object would be retrievable at second and furthers
  calls of the
  plugin, as long as dovecot is running

  On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:

   Not really no. You should use e.g. dict inteface
   for storing this kind
   of stateful data. When deinit is called the
   calling core process will
   likely die too.

   Aki

   On 13/03/2024 10:19 EET Joan Moreau
wrote:

   Keep a pointer in memory retrievable each time a
   plugin is called

   So the plugin keep the memory, not has to restart
   everything at each
   call

   On 12 March 2024 08:53:38 Aki Tuomi via dovecot
   
   wrote:

   On 11/03/2024 10:42 EET Joan Moreau
wrote:

   Hi
   Is it possible, from a plugin perspective, to
   create and recover a
   pointer in the core process (i.e. memory not lost
   between 2 calls to
   the plugin, even after the "deinit" of the
   plugin" ) ?

   Thanks
   Hi Joan!

   May I ask what you are attempting to achieve in
   more detail?

   Aki
   ___
   dovecot mailing list -- dovecot@dovecot.org
   To unsubscribe send an email to dovecot-
   le...@dovecot.org
    ___
  dovecot mailing list -- dovecot@dovecot.org
  To unsubscribe send an email to dovecot-
  leave@dovecot.orgNo, I am not referring to that
  I want to create an object at first call in memory
  that object would be retrievable at second and furthers
  calls of the plugin, as
  long as dovecot is running




  On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
       Not really no. You should use e.g. dict inteface for
  storing this
       kind of stateful data. When deinit is called the
  calling core process
       will likely die too.

       Aki

            On 13/03/2024 10:19 EET Joan Moreau
   wrote:


            Keep a pointer in memory retrievable each time a
  plugin is
            called

            So the plugin keep the memory, not has to restart
            everything at each call



            On 12 March 2024 08:53:38 Aki Tuomi via dovecot
             wrote:

                      On 11/03/2024 10:42 EET Joan Moreau
                       wrote:


                      Hi
                      Is it possible, from a plugin
                      perspective, to create and recover a
                      pointer in the core process (i.e.
                      memory not lost between 2 calls to the
                      plugin, even after the "deinit" of the
                      plugin" ) ?

                      Thanks

                 Hi Joan!

                 May I ask what you are attempting to achieve
  in
                 more detail?

                 Aki
               
   ___
                 dovecot mailing list -- dovecot@dovecot.org
                 To unsubscribe send an email to dovecot-
                 le...@dovecot.org
       ___
       dovecot 

Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-13 Thread Aki Tuomi via dovecot
Hi!

Sorry but that's just not possible, ther is no "core" where to create such 
object. There is no "dovecot" where to store things.

When user logs in, dovecot executes /usr/libexec/dovecot/imap and transfers the 
connection fd there. then plugins and stuff are loaded, and the user does what 
he does, and then plugins and stuff are unloaded and process exists and no 
longer exists in memory.

You are clearly asking about memory persistence between sessions, and this can 
be done with

a) services (internal or external), such as redis, sql, or something else
b) storing things to disk

Aki

> On 13/03/2024 18:45 EET Joan Moreau via dovecot  wrote:
> 
>  
> No, I am not referring to that
> 
> I want to create an object at first call in memory
> 
> that object would be retrievable at second and furthers calls of the 
> plugin, as long as dovecot is running
> 
> On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
> 
> > Not really no. You should use e.g. dict inteface for storing this kind 
> > of stateful data. When deinit is called the calling core process will 
> > likely die too.
> > 
> > Aki
> > 
> > On 13/03/2024 10:19 EET Joan Moreau  wrote:
> > 
> > Keep a pointer in memory retrievable each time a plugin is called
> > 
> > So the plugin keep the memory, not has to restart everything at each 
> > call
> > 
> > On 12 March 2024 08:53:38 Aki Tuomi via dovecot  
> > wrote:
> > 
> > On 11/03/2024 10:42 EET Joan Moreau  wrote:
> > 
> > Hi
> > Is it possible, from a plugin perspective, to create and recover a 
> > pointer in the core process (i.e. memory not lost between 2 calls to 
> > the plugin, even after the "deinit" of the plugin" ) ?
> > 
> > Thanks
> > Hi Joan!
> > 
> > May I ask what you are attempting to achieve in more detail?
> > 
> > Aki
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-le...@dovecot.org
>   ___
> dovecot mailing list -- dovecot@dovecot.org
> To unsubscribe send an email to dovecot-leave@dovecot.orgNo, I am not 
> referring to that
> I want to create an object at first call in memory
> that object would be retrievable at second and furthers calls of the plugin, 
> as
> long as dovecot is running
> 
> 
> 
> 
> On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
>  Not really no. You should use e.g. dict inteface for storing this
>  kind of stateful data. When deinit is called the calling core process
>  will likely die too.
> 
>  Aki
> 
>   On 13/03/2024 10:19 EET Joan Moreau  wrote:
> 
> 
>   Keep a pointer in memory retrievable each time a plugin is
>   called
> 
>   So the plugin keep the memory, not has to restart
>   everything at each call
> 
> 
> 
>   On 12 March 2024 08:53:38 Aki Tuomi via dovecot
>wrote:
> 
> On 11/03/2024 10:42 EET Joan Moreau
>  wrote:
> 
> 
> Hi
> Is it possible, from a plugin
> perspective, to create and recover a
> pointer in the core process (i.e.
> memory not lost between 2 calls to the
> plugin, even after the "deinit" of the
> plugin" ) ?
> 
> Thanks
> 
>Hi Joan!
> 
>May I ask what you are attempting to achieve in
>more detail?
> 
>Aki
>___
>dovecot mailing list -- dovecot@dovecot.org
>To unsubscribe send an email to dovecot-
>le...@dovecot.org
>  ___
>  dovecot mailing list -- dovecot@dovecot.org
>  To unsubscribe send an email to dovecot-le...@dovecot.org
> 
> ___
> dovecot mailing list -- dovecot@dovecot.org
> To unsubscribe send an email to dovecot-le...@dovecot.org
___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-13 Thread Joan Moreau via dovecot
No, I am not referring to that
I want to create an object at first call in memory
that object would be retrievable at second and furthers calls of the plugin, as
long as dovecot is running




On 2024-03-13 16:29, Aki Tuomi via dovecot wrote:
 Not really no. You should use e.g. dict inteface for storing this
 kind of stateful data. When deinit is called the calling core process
 will likely die too.

 Aki

  On 13/03/2024 10:19 EET Joan Moreau  wrote:


  Keep a pointer in memory retrievable each time a plugin is
  called

  So the plugin keep the memory, not has to restart
  everything at each call



  On 12 March 2024 08:53:38 Aki Tuomi via dovecot
   wrote:

On 11/03/2024 10:42 EET Joan Moreau
 wrote:


Hi
Is it possible, from a plugin
perspective, to create and recover a
pointer in the core process (i.e.
memory not lost between 2 calls to the
plugin, even after the "deinit" of the
plugin" ) ?

Thanks

   Hi Joan!

   May I ask what you are attempting to achieve in
   more detail?

   Aki
   ___
   dovecot mailing list -- dovecot@dovecot.org
   To unsubscribe send an email to dovecot-
   le...@dovecot.org
 ___
 dovecot mailing list -- dovecot@dovecot.org
 To unsubscribe send an email to dovecot-le...@dovecot.org

___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org


Re: [EXT] Re: How to get a memory pointer in the core process

2024-03-13 Thread Aki Tuomi via dovecot
Not really no. You should use e.g. dict inteface for storing this kind of 
stateful data. When deinit is called the calling core process will likely die 
too.

Aki

> On 13/03/2024 10:19 EET Joan Moreau  wrote:
> 
> 
> Keep a pointer in memory retrievable each time a plugin is called
> 
> So the plugin keep the memory, not has to restart everything at each call
> 
> 
> 
> On 12 March 2024 08:53:38 Aki Tuomi via dovecot  wrote:
> 
> > > On 11/03/2024 10:42 EET Joan Moreau  wrote:
> > > 
> > > 
> > > Hi
> > > Is it possible, from a plugin perspective, to create and recover a 
> > > pointer in the core process (i.e. memory not lost between 2 calls to the 
> > > plugin, even after the "deinit" of the plugin" ) ?
> > > 
> > > Thanks
> > 
> > Hi Joan!
> > 
> > May I ask what you are attempting to achieve in more detail?
> > 
> > Aki
> > ___
> > dovecot mailing list -- dovecot@dovecot.org
> > To unsubscribe send an email to dovecot-le...@dovecot.org
>
___
dovecot mailing list -- dovecot@dovecot.org
To unsubscribe send an email to dovecot-le...@dovecot.org