source: trunk/FACT++/dim_v19r15/README_v18.txt @ 10183

Last change on this file since 10183 was 10183, checked in by tbretz, 9 years ago
New import.
File size: 15.7 KB
2                    DIM version 18.05 Release Notes
4Notes 1 and 2 for Unix Users only
5NOTE 1: In order to "make" DIM two environment variables should be set:
6        OS = one of {HP-UX, AIX, OSF1, Solaris, SunOS, LynxOS, Linux, Darwin}
7        DIMDIR = the path name of DIM's top level directory
8        The user should then go to DIM's top level directory and do:
9        > source .setup
10        > gmake all
11        Or, if there is no support for C++ on the machine:
12        > gmake CPP=no all
14NOTE 2: The Name Server (Dns), DID, servers and clients (if running in
15        background) should be started whith the output redirected to a
16        logfile ex:
17                Dns </dev/null >& dns.log &
19NOTE 3: The Version Number service provided by servers is now set to 1805.
22Changes for version 18.05:
23    - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
24      would not get mixed up answers.
25    - The same for "<server>/SERVICE_LIST"
26    - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
27    - removed some "//" comments in "C"
31Changes for version 18.04:
32    - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
33        - On Linux it was based on POSIX semaphores now it is based on POSIX "condition
34          variables"
35        - On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
36    - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
37      a new server, even when the services already existed and the server was killed by the DNS.
38      (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
39      (this is reported as a "+" as for a new server).
43Changes for version 18.03:
44    - The list of registered services in a server could get corrupted in some rare cases
45      making the server crash - fixed.
46    - If the DNS couldn't talk to a client it could sometimes hang - fixed.
47    - Java client modifications:
48        - DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
49        - Implemented DimRpcInfo
50        - Changed the DimBroser class to use DimRpcInfo.
51        - Added a jdim.jar file in the jdim/classes directory of the DIM distribution
55Changes for version 18.02:
56    - Added the following functions:
57        - C++ Client
58                - int DimClient.getServerPid()
59        - Java Client
60                - int DimClient.getServerPid()
61                - String[] DimBrowser.getServers()
62                - String DimBrowser.getServerNode(String server)
63                - int DimBrowser.getServerPid(String server)
67Changes for version 18.01:
68    - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
69      it would not work on most PCs.
73Changes for version 18.00:
74    - The Windows execulables and libraries are now built using Visual Studio 8
75    - Some changes added by GSI mainly in the Java Native Interface
79Changes for version 17.12:
80    - Client functionality:
81        - Added a new function dic_stop(), to close anything related to DIM
82          for a client
83        - Added the function dic_get_server_pid(). Similar to dic_get_server().
84          Can be executed in a callback to retrieve the pid of the current server
85    - DimBrowser Class:
86        - DimBrowser::getServices() used to create and destroy the DimRpc connection
87          to the Dns every time it was called. This was heavy if called in a loop.
88          Now the connection is maintained until the DimBrowser itself is destroyed.
89        - A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
90          has been created. similar to the previous one but returns also the server pid.
91    - DNS
92        - The DNS was still doing some blocking write calls to servers or clients.
93          Now all write calls have a timeout and can not block forever.
94    - Linux DID
95        - The "Subscribe" button was subscribing to services with update rate of 10 seconds.
96          This was misleading, the users could think the server was calling update_service
97          when it wasn't.
98          Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
99    - DimDridge
100        - Accepts an extra flag "-copy" which provokes an internal copy of the data.
104Changes for version 17.11:
105    - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU
106      time in some rare occasions, fixed.
107    - Added some protections when removing services in the DimBridge.
111Changes for version 17.10:
112    - Some DIM Processes, servers or clients would not reconnect when the DNS was
113      restarted. Fixed two cause:
114        - Some processes in Linux were stuck reading from the DNS socket
115        - Some others "forgot" to set a timer under very special conditions
116    - Changed some of the DNS debug messages to be more explicit.
120Changes for version 17.09:
121    - DIM error messages were not being flushed when the output was redirected
122      to a logfile, fixed.
126Changes for version 17.08:
127    - Sometimes a server or a client could do a read on a sockect that had just
128      been closed which left them hanging forever - fixed.
132Changes for version 17.07:
133    - The DimTimer was sometimes not started when the constructor was called
134      with a time argument.
135    - Clients could not connect to more than 1024 servers - fixed.
136      (if the machine allows more than 1024 connections)
140Changes for version 17.06:
141    - Corrected the makefile for Darwin, now the number of accepted connections is
142      increased to 8192 only for Linux.
143    - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
144      at destruction time if not stopped the same number of times. Now it can not be
145      re-started.
146    - The Dns used to ask servers to re-register at regular intervals when they were not
147      sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
148      DNS only asks once (unless they answer). This could cause the DNS to hang if
149      servers were in ERROR for a long time.
150    - The Dns now accepts a command line parameter: -d to print debug messages.
151    - The clients were not handling properly the case when they could contact the DNS
152      but then they could not contact the server that the DNS gave them (either because
153      of a firewall or because the server run on an inaccessible network). In this case
154      the clients would timeout trying to contact the server for each service and kept
155      asking the DNS the server coordinates over and over again. Now the clients keep
156      a list on unreacheable servers, so they don't try to contact the server for each
157      service and only ask the DNS again with an increasing interval that goes from 10
158      seconds to 2 minutes maximum.
159    - The server now issues an error message if the format string is too long.
160    - Linux DID
161        - Removed the command "Kill ALL Servers", it was too dangerous
162        - Now the list of nodes in "View Servers by Node" is in alphabetical order and
163          in lowercase.
167Changes for version 17.05:
168    - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
169      the behaviour of SIGPIPE to ignored, but if another library or main program
170      changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
171      was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
172      is used in oder to avoid generating SIGPIPE.
177Changes for version 17.04:
178    - Sometimes processes (servers or clients) would hang when the DNS was restarted.
179      This was due to a strange (Windows?) feature, by which a connect could succeed
180      after a connection was closed (and reported) on the other side. Fixed.
185Changes for version 17.03:
186    - Can now make DID for 64 bits by making DIM using:
187        gmake X64=yes all
188    - Increased the size of the Hash tables for the servers and the DNS.
193Changes for version 17.02:
194    - Fixed the Java DimTimer - stop() didn't work
195      Required changing dim_jni.c as well as the java part
196    - Fixed DIM for Darwin - had stopped working
201Changes for version 17.01:
202    - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
203      Please use:
204        gmake JDIM=yes all
205    - Linux executables are now compiled/linked on slc4 (32 bits).
206    - Big changes in the DimRpcs both client and server part. Tere were bugs
207      related to the handling of timeouts.
208      Unfortunatelly all applications using RPCs need to be re-linked.
213Previous version history:
216Changes for version 16.14:
217    - Now by default All DIM processes are ready to accept up to 8192 connections, both
218      in Linux and Windows. Although in Linux for this to be effective the machine system
219      limits must allow more than 1024 descriptors/open files per process.
220    - Fixed a little memory leak in tokenstring.cxx
221    - And a little compilation bug for some platforms in tcpip.c
225Changes for version 16.13:
226    - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try
227      two network interfaces in order to talk to that server and only give up if they both
228      fail. First it will try the ip name or ip address specified by the server using
229      DIM_HOST_NODE, if that fails it will try the ip address of the default interface
230      retrieved by the server using gethostname (and gethostbyname).
231      The changes basically affect the case in which the DIM_HOST_NODE given to the servers
232      is specified as IP address instad of an IP name. Otherwise this mechanism was already
233      working.
237Changes for version 16.12:
238    - The Java version did not exit properly when main() terminated - fixed.
242Changes for version 16.11:
243    - On Linux the timeout to detect a lost connections (unplugged ethernet cable
244      or machine reboot) was too long, around 15 minutes - Fixed.
245      On Linux the KEEPALIVE feature is now used instead of a regular socket write,
246      all other platforms should work as before.
250Changes for version 16.10:
251    - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
252    - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
253      Can receive a list on nodes or domains separated by commas.
254      If the DNS receives a connection from a node not in this list, it will
255      reject it and kill the server or client requesting it.
256    - Fixed some C++ warnings.
260Changes for version 16.9:
261    - The modifications done in version 16.8 have introduced a bug:
262        - DIM servers would not behave properly (exit) when receiving a kill command
263          from the DNS (for duplicated services, not allowed host names or manual "kill")
264          This is now fixed.
268Changes for version 16.8:
269    - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
270        - Stop also the DIM threads.
271        - Release all allocated memory
272        - Allow a different port number when re-starting.
276Changes for version 16.7:
277    - Prepared for increasing the number of open connections per process
278      (On Linux still requires changing some parameters and recompiling the Dns)
279    - Fixed one error and several warnings for gcc 4.
283Changes for version 16.6:
284    - Sometimes a server or client would crash while exiting if the DNS was not running.
285      Fixed.
286    - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
287    - Allowed dim_send_command to receive instead of -dns <node_name>
288        -dns <node_name>[:<port_number>]
292Changes for version 16.5:
293    - Big Spring Cleanup. Removed most warnings. Can now be compiled on
294      Windows with Warning Level 3 and on Linux with -Wall
295      (still not working for -ansi -pedantic...)
296    - When trying to access a server in a different network (i.e. not reacheable)
297      a client (for example DID) would take very very long to timeout - fixed.
298    - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
299      for a server and a client in the same process:
300        - int dis_set_dns_node(char *node)
301        - int dis_get_dns_node(char *node)
302        - int dis_set_dns_port(int port)
303        - int dis_get_dns_port()
305        - int dic_set_dns_node(char *node)
306        - int dic_get_dns_node(char *node)
307        - int dic_set_dns_port(int port)
308        - int dic_get_dns_port()
309      These routines should be used instead of the equivalent ones starting with "dim_"
310      since these set the same DIM_DNS_NODE/port for both Server and client parts of a
311      process.
312    - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode,
313      etc.) to use the new routines, so they are now independent.
314      Adapted also the Java equivalents.
315    - Fixed DimBridge to use the new routines.
316    - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS
317      restarted)!
318    - Found some very interesting features of DIM:
319        - In a node with two ethernet interfaces (so connected to two networks):
320            - The DNS will answer to servers and client on both networks, only its server
321              part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
322              in principle answer only to one of the networks (in principle the default
323              interface* but can be changed by setting the environment variable "DIM_HOST_NODE").   
324            - But, in fact, if the DNS or any server is started with the environment variable
325              DIM_HOST_NODE set to the interface that is not the default* one. Than both the
326              DNS (including the server part) and the DIM servers will be accessible from both
327              networks. For example DID will work fine on both networks.
328            * The command "hostname" will return the name of the default network interface.   
330    Note: As a result of inserting new functions the DIM shared library entry points have
331          changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
335Changes for version 16.4:
336    - Optimized the DNS for providing the list or running servers dynamically
337      by subscribing to the service "DIS_DNS/SERVER_LIST"
341Changes for version 16.3:
342    - Upgraded to work on LynxOS Version 4.
343      - Updated makefile for INTEL platform
344      - Updated some ifdefs based on the existence of __Lynx__
348Changes for version 16.2:
349    - Increased the listen queue. To avoid "Connection Refused" messages from servers
350      or from the DNS.
354Changes for version 16.1:
355    - Fixed the NO_THREADS option for LINUX, it had stopped working.
356    - DimInfo::getData() could return an invalid pointer if called before connecting
357      to the server (or discovering the server did not exist). Fixed
358      (it now returns 0 in this case).
362Changes for version 16.0:
363    - Consolidated the new timer handling mechanism, should be much more precise.
364    - Fixed the RPC handling. Used to be based on timming assumptions.
365      Now uses a safe protocol to make sure the server is connected before sending
366      an RPC request.
367    - Included in the distribution some performance measurements and a benchmark
368      server and client. Sources in src/benchmark executables in /bin for windows
369      and /linux for linux.
370      Usage:
371        benchServer <message_size_in_bytes> <number_of_services>
372        benchClient
373      benchClient will run for a while and print the measurement results.
375Please check the Manual for more information at:
Note: See TracBrowser for help on using the repository browser.