TOC, 1, 2, 3, 4

2) THE PARADISE SERVER

2.1) I have a license for 20 Paradise clients, yet I'm only able to run with 10. Why is that?


You must use set the maxlicense resource in paradise.config or use the paradise -n option. Either add the line

  *maxlicense: 20


to paradise.config, or use the command

  example0aradise -n 20 &


when starting the Paradise server. The default value of maxlicense is 10; the size of your license doesn't matter.


The license is intended to be shared across different Paradise servers any way you want. If you have a license for 20 clients, you can run 10 servers each with up to two clients, or one server with up to 20 clients.

2.2) I started a Paradise server allowing 10 clients, now I need to allow 20. Do I have to shut down the server to do this?


You don't need to restart the server; you just need to reinitialize it. Just edit the maxlicense resource in your Paradise configuration file (as described in the previous answer), and reinitialize the Paradise server using padmin or xpadmin. The Paradise server will allow the new number of clients if the license allows it. Clients that were already connected will not be affected.

2.3) Why do I get the message: "Paradise: cannot find tuplespace file" when running a Paradise application or XPadmin?


This message means that the Paradise server failed to find a file the contains one of its tuple spaces. Either someone deleted a swap file (with a name like Ls00000a), or perhaps multiple Paradise servers were started from the same directory without changing the default setting of the swapdir resource in the Paradise configuration file. In the latter case, if both Paradise servers swap out some tuple spaces to disk, the second server to do so could clobber some of the first servers swap files. Then, the first server to swap one of those tuple spaces back into memory will delete the file, leaving the other without a swap file for one or more of its tuple spaces.


Another scenario is that some strange sharing of the tuple space occurs between the two servers. If the tmp tuple space is only occasionally used, for example, both servers might swap it out, and then take turns swapping it in, changing it, and swapping it out again. This could happen even if the servers occasionally get "cannot find tuplespace file" errors.


The moral is: don't start more than one Paradise server from the same directory without changing the value of the swapdir resource. One way to solve the problem is to set the swapdir resource to /tmp:

  Paradise.Node.swapdir: /tmp


This is might be a better default than ".", because it is usually local to each workstation, except that very often there isn't much space in the partition containing /tmp. Another solution is to set swapdir differently on different workstations:

  Paradise.frank.swapdir: /usr/local/tmp
		  Paradise.joe.swapdir: /var/tmp
		  Paradise.Node.swapdir: /tmp


This sets the swap directory to /usr/local/tmp on node frank, to /var/tmp on node joe, and to /tmp everywhere else.

2.4) I started a server with over a hundred licenses, but clients start failing before I reach a hundred clients. What's wrong?


Some workstations (for instance Suns) have a rather low default limit on the number of file descriptors that can be used by a process. Shell commands such as limit or ulimit can often be used to increase this limit up to some hard limit.


On Suns, the default soft limit is commonly 64. This can be increased, up to a maximum of 256, with the the C shell command:

   0mit descriptors 256


or the Korn shell command:

  0limit -n 256


On Alphas, the default soft limit is 4096, which is the hard limit, also.


On HPs, the soft limit is commonly 60, and the hard limit is commonly 1024. SAM can be used to increase both of these limits. However, the standard shells don't provide support for increasing the soft limit. Thus, the current version of the Paradise server can only have about 56 simultaneous Paradise clients, unless SAM is used to reconfigure the Unix kernel.


The following program, called setrlimit, can be used as a work around until the next release. It acts as a wrapper for paradise, invoked as follows:

  etrlimit paradise


It could be incorporated into the paradise command, since paradise is actually a shell script in the hp/bin directory. In particular, the lines:

  exec ${LINDA_PATH}bin/paradise_server
		and
		  exec ${LINDA_PATH}bin/paradise_server "$@"
		could be changed to
		  exec ${LINDA_PATH}bin/setrlimit ${LINDA_PATH}bin/paradise_server
		and
		  exec ${LINDA_PATH}bin/setrlimit ${LINDA_PATH}bin/paradise_server "$@"


after putting setrlimit into the hp/bin directory.


The source code for setrlimit.c is:

*************** Start of setrlimit.c ***************
		#include <errno.h>
		#include <sys/time.h>
		#include <sys/resource.h>
		#include <stdlib.h>
		#include <stdio.h>
		int
		main(argc, argv, envp)
		    int argc;
		    int *argv[];
		    int *envp[];
		{
		  int status = 1;
		   struct rlimit rlp;
		  if (argc > 1) {
		     if (getrlimit(RLIMIT_NOFILE, &rlp) == 0) {
		        rlp.rlim_cur = rlp.rlim_max;
		       if (setrlimit(RLIMIT_NOFILE, &rlp) == 0) {
		       argv++;
		        execve(argv[0], argv, envp);
		        _exit(1);
		     }
		      else
		          perror("setrlimit");
		    }
		     else
		         perror("getrlimit");
		  }
		    return(status);
		}
		***************** End of setrlimit.c ***************

2.5) When I start the server, I get an error saying it can't register the server. What's wrong?


Here is a representative error message:


PARADISE Fatal error(345) 10/05 13:50: unable to register (LINDA_OTS,
LINDA_OTS_VERSION, tcp) main.c:81


This indicates that the local portmapper was unable to register the paradise server service. This could have a number of causes, including that the portmapper is messed up, or some other service is already registered.


You can look at the portmapper using the command rpcinfo -p. The paradise server currently registers with program number 536873369, version 1. If the service is registered, you will see something like:

  536873369 1 tcp 2455


You can use rpcinfo -d to forceably deregister a service (as root).

2.6) When I start the server, I get an error message saying it "cannot obtain needed licenses". What's wrong?


PARADISE Fatal error (350) 11/06 09:54: cannot obtain needed licenses


This error occurs when the license server does not have available enough Paradise (PSV) licenses to satisfy the amount requested by a starting Paradise server. By default Paradise requests 10 license tokens when it starts. If the license server only has 8 tokens available the Paradise server will fail to start. If this occurs you can start Paradise again explicitly specifying fewer tokens:

  0aradise -n 8


The lsmon command provided with a Paradise distribution is useful for querying the license server to determine how many licenses it does have available.

  mon
		  lsmonitor for LicenseServ 3.2a Copyright (c) Viman Software Inc. 
		  Feature Name: PSV(v0) (floating license) No expiration date.
		  Concurrent licenses: 220
		  Available unreserved : 150 In Use: 70
		  Available reserved : 0 In Use: 0
		  Number of subnets : 0
		  Site License info : *.*.*.*
		  Hold time: 0 minute(s)
		  Hostid based locking


TOC, 1, 2, 3, 4

 
Copyright © 2007 Scientific Computing Associates, Inc.