Newbie questions about Pliant

Newbie questions about Pliant

DB clustering

Message posted by marcus on 2005/09/09 17:10:21
What are the prerequisites (e.g., remote execution is required) to set up DB clustering between source and target 
Message posted by hubert.tonneau on 2005/09/09 17:39:07
Just what you said: remote execution.

Also, please notice that it is deprecated and will be replaced by the Pliant
storage mechanism ... at an unknown date since the browser is still under
heavy construction.

The problem with Pliant database clustering is that it is pull only, and
one single write site. So it does not fit that many applications.
As an example, sharing user accounts need nearly instant update, which means
push update, so it does not use the Pliant clustering.
Message posted by maybe Marcus on 2005/09/13 18:25:03
For my cluster, I just need db replication, from source path /academia/ to 
target path /academia.bkp/

What should I put as 'Source filter' and 'Target filter'?

Also, as Replication Rules, what should I put as 'Time filter' and 'Post process'?
Message posted by hubert.tonneau on 2005/09/21 08:52:30
> For my cluster, I just need db replication, from source path /academia/ to 
> target path /academia.bkp/

It is very rare to have source and target not be the same.
Please notice that the path is the database path, I mean what you specify in
'mount' option when you load your database.

> What should I put as 'Source filter' and 'Target filter'?
Just leave them blank. There are way to restrict replication.

> Also, as Replication Rules, what should I put as 'Time filter' and 'Post process'?

If you have set 'Auto start frequency' which says 'replicate every ...',
then filling 'Time filter' is a way to do things like force replication to work
at night only.
Message posted by marcus on 2005/09/21 12:55:43
I did the changes as you have suggested.

I've noticed, however, that as soon as I have committed them, the CPU of my target
 server (the one on which the DB from the source server will be replicated) have
been used 99% by fullpliant.

I've checked the server status page and noticed that the 'receive Remote execution connections'
is most likely the one consuming the CPU resources.

Any advice?
Message posted by hubert.tonneau on 2005/09/21 14:45:36
That's normal: the CPU power is consumed computing the MD5 of each of the
nodes in your database tree, in order to send on the wire only parts of the
tree that have been changed.
I mean the protocol is optimised to save bandwidth and work nicely over the
Internet, not to save CPU power.
Also consuming 100% CPU is not a serious load so it should not hurt.
It will only be so for a fiew seconds unless your database is very large.
If you reduce the replication frequency, then you will consume some CPU seconds
less frequently.
Message posted by marcus on 2005/09/21 14:57:33
> It will only be so for a fiew seconds unless your database is very large.

fullpliant has been consuming 99% of MY CPU for the last hour or so; and my database
is rather small, only 72667 Bytes.

> If you reduce the replication frequency, then you will consume some CPU seconds
> less frequently.

My replication frequence is 3600 (seconds).

Also, I have chosen 'delete (full replication)' as the replication mode.
Message posted by hubert.tonneau on 2005/09/21 16:55:59
In module /pliant/appli/cluster/server.pli,
in method 'service' (near line 49), you may change:

  while not s:atend
    var Str l := s readline


  while not s:atend
    var Str l := s readline
    console l eol

in order to display all instructions the server is receiving.
Message posted by marcus on 2005/09/21 17:10:46
Nothing is printed.
Message posted by hubert.tonneau on 2005/09/21 22:06:03
I have troubles to understand how the clustering server can consume 100% CPU
if it does not answer any request.
You can still try to kill the Linux thread (process since it's the same
under Linux) that consumes 100% CPU power to try get a Pliant trace of the stack
(does not work all times), and it may help figure out what it's doing.
Message posted by maybe Marcus on 2005/09/22 14:29:39
This is what I got:

exception 15
actions stack is:
receive Remote execution connections
processor stack content is:
destroy Universal (Type Universal) +122
destroy Universal (Type Universal) +98
destroy Universal (Type Universal) +98
open_server_channel  /pliant/util/crypto/channel.pli (internals) 356 1
. open  /pliant/util/crypto/channel.pli (internals) 578 1 /pliant/util/crypto/ch annel.pli (internals) 582 15
. open  /pliant/language/stream/multi.pli (internals) 150 1 /pliant/language/str eam/multi.pli (internals) 160 14
. open  /pliant/language/stream/stream.pli (internals) 296 1 /pliant/language/st ream/stream.pli (internals) 304 13
. main_loop  /pliant/protocol/common/tcp_server.pli (internals) 107 1 /pliant/pr otocol/common/tcp_server.pli (internals) 114 7 /pliant/language/stream/ i (internals) 345 13
frozen expression at /pliant/protocol/common/tcp_server.pli (internals) 178 1  / pliant/protocol/common/tcp_server.pli (internals) 178 1 /pliant/protocol/common/ tcp_server.pli (internals) 178 1
run_thread  /pliant/language/schedule/threads_engine.pli (internals) 324 5 /plia nt/language/schedule/threads_engine.pli (internals) 355 9
Message posted by hubert.tonneau on 2005/09/22 16:08:54
Might be that Pliant is not allowed to open the TCP port 611 because it's
not running as root, and since you are running standard Linux as opposed to
FullPliant, non root users are not allowed to open ports below 1024.

If it's the case, you might try to change the TCP port through setting
pliant remote port
to something like 8100
(use 'configure' 'extra settings' then 'record new setting')
on the server,

then on the client side,
use 'configure' 'name' to enter the host defining the server key, and set
'Remote execution' accordingly.