source: trunk/FACT++/dim_v19r19/README_v19.txt@ 10599

Last change on this file since 10599 was 10480, checked in by tbretz, 14 years ago
New version V19r19 with some important bug fixes.
File size: 23.1 KB
Line 
1
2 DIM version 19.19 Release Notes
3
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
13
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 &
18
19NOTE 3: The Version Number service provided by servers is now set to 1919.
20
2127/04/2011
22Changes for version 19.19:
23 - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8),
24 which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
25
26
2707/04/2011
28Changes for version 19.18:
29 - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
30 information when used by several clients in paralel - fixed.
31
32
3311/03/2011
34Changes for version 19.17:
35 - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
36 from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
37 - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
38 handled, this made the forked children hang and not respond to DIM anymore - fixed.
39
40
4123/02/2011
42Changes for version 19.16:
43 - DimServer::stop() did not correctly clear the ServerName - fixed.
44 - The Linux DID now prints the DNS it is connected to in the title bar.
45
46
4720/12/2010
48Changes for version 19.15:
49 - Still fixing dis_stop_serving():
50 - The DNS sometimes gets a remove service message from a server, after the server has
51 closed the connection, this was not handled properly - fixed.
52 - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
53 - dtq.c now clears all timer_queues at dis_stop_serving()
54 - Added some protections in case of closed connections.
55
56
5710/12/2010
58Changes for version 19.14:
59 - Still fixing dis_stop_serving():
60 - Adedd pthread_join in linux to wait for threads to die
61 - the following dis_start_serving() would not reconnect to the DNS if the DNS connection
62 was pending (i.e. the DNS was stopped or restarted)
63
64
6506/12/2010
66Changes for version 19.13:
67 - Fixed a few compiler warnings in dis.c
68 - Added #ifndef PXI around some Windows setPriority calls
69 - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
70 could be done properly after for example a "fork()". Fixed.
71
72
7320/09/2010
74Changes for version 19.12:
75 - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
76
77
7807/06/2010
79Changes for version 19.11:
80 - Added some protections in update_service() in order to try to solve a DIP issue.
81 (related to very frequent updates of the same service in different threads)
82 - Added the possibility of defining timeouts for:
83 - DimBrowser::getServices
84 - DimBrowser::getServers
85 - DimBrowser::getServerServices
86 - DimBrowser::getServerClients
87 - Added the possibility of retrieving the time a command arrived:
88 - int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
89 - int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
90 - Added a "const" keyword to the "char *format" parameter in the constructors of
91 - DimService and DimCommand
92 - Added a call DimCommand::hasNext(), can be used when commands are queued.
93 - Fixed a memory leak when using DimService::setData and then dynamically deleting the
94 DimService
95
96
9717/02/2010
98Changes for version 19.10:
99 - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
100 The DNS could crash when killing a server.
101 - Removed some compilation warnings
102
103
10404/01/2010
105Changes for version 19.09:
106 - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
107 enable or disable printing a message per service update
108 - Tried to protect against:
109 - a service being deleted from the server while it is being updated
110 - a client unsubscribing from a service while it is being updated.
111 - Optimized the DNS when browsing for a service search pattern without wildcards
112 (i.e. browsing for a single service name)
113
114
11513/11/2009
116Changes for version 19.08:
117 - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
118 the wake_up event was triggered before dim_wait was called. Could affect smi++.
119 Fixed.
120 - Fixed a compilation bug in dis.c that affected some platforms.
121
122
12330/10/2009
124Changes for version 19.07:
125 - Some more bugs related to being able to publish to more that one DNS fixed.
126
127
12828/10/2009
129Changes for version 19.06:
130 - When opening DNS connections, when the DNS is not there, from a process that is at the
131 same time a client and a server only one pending connection was used now two separate
132 ones are created.
133 - Tried to fix a few more problems related to dis_stop_serving...
134
135
13626/10/2009
137Changes for version 19.05:
138 - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
139 all services and then tried to re-declare new ones would fail (corrupted server name).
140 Affected in particular the DimBridge
141
142
14327/08/2009
144Changes for version 19.04:
145 - Added the following functions:
146 Server part:
147 C - dis_get_n_clients(int service_id)
148 C++ - int DimService::getNClients()
149 Client part (C++ only):
150 DimClient::setNoDataCopy()
151 This will prevent any data copy in the client and the user should make
152 sure that the data received from DIM is not used outside the callback
153 in order to benefir from this feature.
154 - Fixed the Java DIM Jar file, it was wrong in the previous version.
155
156
15731/07/2009
158Changes for version 19.03:
159 - Removed some more compilation warnings.
160 - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when
161 some server names were longer that 35 characters was very slow.
162
163
16406/07/2009
165Changes for version 19.02:
166 - Fixed a bug in the server part handling of RPCs, it created a memory leak.
167 It was using a separate thread to handle timeouts and there is no safe way to
168 kill a thread from outside. Fixed.
169 - the function dim_stop_thread() is now obsolete.
170 - Added the possibility to change the send and receive buffer sizes:
171 - int dim_set_write_buffer_size(int size)
172 - int dim_get_write_buffer_size()
173 - int dim_set_read_buffer_size(int size)
174 - int dim_get_read_buffer_size()
175 The default (and minimum) is 16384 bytes.
176 These calls should be done before any other DIM calls.
177 - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
178
17904/05/2009
180Changes for version 19.01:
181 - A server can now publish to more than one DNS.
182 To use an extra DNS:
183 - in "C":
184 long dnsid;
185 char extra_dns[128];
186 ...
187 dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
188 dnsid = dis_add_dns(extra_dns,0);
189 sprintf(name1,"NewService%d",i);
190 dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData),
191 (void *)0, 0 );
192 dis_start_serving_dns(dnsid, "xx_new");
193
194 - in C++:
195 DimServerDns *newDns;
196 char *extraDns = 0;
197 DimService *new_servint;
198 ...
199 extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
200 if(extraDns)
201 newDns = new DimServerDns(extraDns, 0, "new_TEST");
202 ...
203 if(extraDns)
204 new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
205
206 - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
207 - Changed the makefiles so that the default on Linux is now 64 bits.
208 - The flag 32BITS=yes can be added in order to generate 32 bit code
209
210
21126/02/2009
212Changes for version 18.05:
213 - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
214 would not get mixed up answers.
215 - The same for "<server>/SERVICE_LIST"
216 - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
217 - removed some "//" comments in "C"
218
219
22020/02/2009
221Changes for version 18.04:
222 - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
223 - On Linux it was based on POSIX semaphores now it is based on POSIX "condition
224 variables"
225 - On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
226 - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
227 a new server, even when the services already existed and the server was killed by the DNS.
228 (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
229 (this is reported as a "+" as for a new server).
230
231
23205/02/2009
233Changes for version 18.03:
234 - The list of registered services in a server could get corrupted in some rare cases
235 making the server crash - fixed.
236 - If the DNS couldn't talk to a client it could sometimes hang - fixed.
237 - Java client modifications:
238 - DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
239 - Implemented DimRpcInfo
240 - Changed the DimBroser class to use DimRpcInfo.
241 - Added a jdim.jar file in the jdim/classes directory of the DIM distribution
242
243
24415/01/2009
245Changes for version 18.02:
246 - Added the following functions:
247 - C++ Client
248 - int DimClient.getServerPid()
249 - Java Client
250 - int DimClient.getServerPid()
251 - String[] DimBrowser.getServers()
252 - String DimBrowser.getServerNode(String server)
253 - int DimBrowser.getServerPid(String server)
254
255
25609/01/2009
257Changes for version 18.01:
258 - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
259 it would not work on most PCs.
260
261
26203/12/2008
263Changes for version 18.00:
264 - The Windows execulables and libraries are now built using Visual Studio 8
265 - Some changes added by GSI mainly in the Java Native Interface
266
267
26806/11/2008
269Changes for version 17.12:
270 - Client functionality:
271 - Added a new function dic_stop(), to close anything related to DIM
272 for a client
273 - Added the function dic_get_server_pid(). Similar to dic_get_server().
274 Can be executed in a callback to retrieve the pid of the current server
275 - DimBrowser Class:
276 - DimBrowser::getServices() used to create and destroy the DimRpc connection
277 to the Dns every time it was called. This was heavy if called in a loop.
278 Now the connection is maintained until the DimBrowser itself is destroyed.
279 - A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
280 has been created. similar to the previous one but returns also the server pid.
281 - DNS
282 - The DNS was still doing some blocking write calls to servers or clients.
283 Now all write calls have a timeout and can not block forever.
284 - Linux DID
285 - The "Subscribe" button was subscribing to services with update rate of 10 seconds.
286 This was misleading, the users could think the server was calling update_service
287 when it wasn't.
288 Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
289 - DimDridge
290 - Accepts an extra flag "-copy" which provokes an internal copy of the data.
291
292
29308/09/2008
294Changes for version 17.11:
295 - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU
296 time in some rare occasions, fixed.
297 - Added some protections when removing services in the DimBridge.
298
299
30030/08/2008
301Changes for version 17.10:
302 - Some DIM Processes, servers or clients would not reconnect when the DNS was
303 restarted. Fixed two cause:
304 - Some processes in Linux were stuck reading from the DNS socket
305 - Some others "forgot" to set a timer under very special conditions
306 - Changed some of the DNS debug messages to be more explicit.
307
308
30921/07/2008
310Changes for version 17.09:
311 - DIM error messages were not being flushed when the output was redirected
312 to a logfile, fixed.
313
314
31518/07/2008
316Changes for version 17.08:
317 - Sometimes a server or a client could do a read on a sockect that had just
318 been closed which left them hanging forever - fixed.
319
320
32101/07/2008
322Changes for version 17.07:
323 - The DimTimer was sometimes not started when the constructor was called
324 with a time argument.
325 - Clients could not connect to more than 1024 servers - fixed.
326 (if the machine allows more than 1024 connections)
327
328
32930/06/2008
330Changes for version 17.06:
331 - Corrected the makefile for Darwin, now the number of accepted connections is
332 increased to 8192 only for Linux.
333 - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
334 at destruction time if not stopped the same number of times. Now it can not be
335 re-started.
336 - The Dns used to ask servers to re-register at regular intervals when they were not
337 sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
338 DNS only asks once (unless they answer). This could cause the DNS to hang if
339 servers were in ERROR for a long time.
340 - The Dns now accepts a command line parameter: -d to print debug messages.
341 - The clients were not handling properly the case when they could contact the DNS
342 but then they could not contact the server that the DNS gave them (either because
343 of a firewall or because the server run on an inaccessible network). In this case
344 the clients would timeout trying to contact the server for each service and kept
345 asking the DNS the server coordinates over and over again. Now the clients keep
346 a list on unreacheable servers, so they don't try to contact the server for each
347 service and only ask the DNS again with an increasing interval that goes from 10
348 seconds to 2 minutes maximum.
349 - The server now issues an error message if the format string is too long.
350 - Linux DID
351 - Removed the command "Kill ALL Servers", it was too dangerous
352 - Now the list of nodes in "View Servers by Node" is in alphabetical order and
353 in lowercase.
354
355
35630/04/2008
357Changes for version 17.05:
358 - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
359 the behaviour of SIGPIPE to ignored, but if another library or main program
360 changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
361 was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
362 is used in oder to avoid generating SIGPIPE.
363
364
365
3664/04/2008
367Changes for version 17.04:
368 - Sometimes processes (servers or clients) would hang when the DNS was restarted.
369 This was due to a strange (Windows?) feature, by which a connect could succeed
370 after a connection was closed (and reported) on the other side. Fixed.
371
372
373
37427/03/2008
375Changes for version 17.03:
376 - Can now make DID for 64 bits by making DIM using:
377 gmake X64=yes all
378 - Increased the size of the Hash tables for the servers and the DNS.
379
380
381
38220/02/2008
383Changes for version 17.02:
384 - Fixed the Java DimTimer - stop() didn't work
385 Required changing dim_jni.c as well as the java part
386 - Fixed DIM for Darwin - had stopped working
387
388
389
39020/01/2008
391Changes for version 17.01:
392 - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
393 Please use:
394 gmake JDIM=yes all
395 - Linux executables are now compiled/linked on slc4 (32 bits).
396 - Big changes in the DimRpcs both client and server part. Tere were bugs
397 related to the handling of timeouts.
398 Unfortunatelly all applications using RPCs need to be re-linked.
399
400
401
402-----------------------------------------------------------------------------------------
403Previous version history:
404
40507/12/2007
406Changes for version 16.14:
407 - Now by default All DIM processes are ready to accept up to 8192 connections, both
408 in Linux and Windows. Although in Linux for this to be effective the machine system
409 limits must allow more than 1024 descriptors/open files per process.
410 - Fixed a little memory leak in tokenstring.cxx
411 - And a little compilation bug for some platforms in tcpip.c
412
413
41415/05/2007
415Changes for version 16.13:
416 - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try
417 two network interfaces in order to talk to that server and only give up if they both
418 fail. First it will try the ip name or ip address specified by the server using
419 DIM_HOST_NODE, if that fails it will try the ip address of the default interface
420 retrieved by the server using gethostname (and gethostbyname).
421 The changes basically affect the case in which the DIM_HOST_NODE given to the servers
422 is specified as IP address instad of an IP name. Otherwise this mechanism was already
423 working.
424
425
4263/05/2007
427Changes for version 16.12:
428 - The Java version did not exit properly when main() terminated - fixed.
429
430
43125/04/2007
432Changes for version 16.11:
433 - On Linux the timeout to detect a lost connections (unplugged ethernet cable
434 or machine reboot) was too long, around 15 minutes - Fixed.
435 On Linux the KEEPALIVE feature is now used instead of a regular socket write,
436 all other platforms should work as before.
437
438
43921/02/2007
440Changes for version 16.10:
441 - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
442 - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
443 Can receive a list on nodes or domains separated by commas.
444 If the DNS receives a connection from a node not in this list, it will
445 reject it and kill the server or client requesting it.
446 - Fixed some C++ warnings.
447
448
44919/01/2007
450Changes for version 16.9:
451 - The modifications done in version 16.8 have introduced a bug:
452 - DIM servers would not behave properly (exit) when receiving a kill command
453 from the DNS (for duplicated services, not allowed host names or manual "kill")
454 This is now fixed.
455
456
45730/10/2006
458Changes for version 16.8:
459 - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
460 - Stop also the DIM threads.
461 - Release all allocated memory
462 - Allow a different port number when re-starting.
463
464
46511/07/2006
466Changes for version 16.7:
467 - Prepared for increasing the number of open connections per process
468 (On Linux still requires changing some parameters and recompiling the Dns)
469 - Fixed one error and several warnings for gcc 4.
470
471
47211/05/2006
473Changes for version 16.6:
474 - Sometimes a server or client would crash while exiting if the DNS was not running.
475 Fixed.
476 - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
477 - Allowed dim_send_command to receive instead of -dns <node_name>
478 -dns <node_name>[:<port_number>]
479
480
48101/05/2006
482Changes for version 16.5:
483 - Big Spring Cleanup. Removed most warnings. Can now be compiled on
484 Windows with Warning Level 3 and on Linux with -Wall
485 (still not working for -ansi -pedantic...)
486 - When trying to access a server in a different network (i.e. not reacheable)
487 a client (for example DID) would take very very long to timeout - fixed.
488 - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
489 for a server and a client in the same process:
490 - int dis_set_dns_node(char *node)
491 - int dis_get_dns_node(char *node)
492 - int dis_set_dns_port(int port)
493 - int dis_get_dns_port()
494
495 - int dic_set_dns_node(char *node)
496 - int dic_get_dns_node(char *node)
497 - int dic_set_dns_port(int port)
498 - int dic_get_dns_port()
499 These routines should be used instead of the equivalent ones starting with "dim_"
500 since these set the same DIM_DNS_NODE/port for both Server and client parts of a
501 process.
502 - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode,
503 etc.) to use the new routines, so they are now independent.
504 Adapted also the Java equivalents.
505 - Fixed DimBridge to use the new routines.
506 - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS
507 restarted)!
508 - Found some very interesting features of DIM:
509 - In a node with two ethernet interfaces (so connected to two networks):
510 - The DNS will answer to servers and client on both networks, only its server
511 part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
512 in principle answer only to one of the networks (in principle the default
513 interface* but can be changed by setting the environment variable "DIM_HOST_NODE").
514 - But, in fact, if the DNS or any server is started with the environment variable
515 DIM_HOST_NODE set to the interface that is not the default* one. Than both the
516 DNS (including the server part) and the DIM servers will be accessible from both
517 networks. For example DID will work fine on both networks.
518 * The command "hostname" will return the name of the default network interface.
519
520 Note: As a result of inserting new functions the DIM shared library entry points have
521 changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
522
523
52420/04/2006
525Changes for version 16.4:
526 - Optimized the DNS for providing the list or running servers dynamically
527 by subscribing to the service "DIS_DNS/SERVER_LIST"
528
529
53007/04/2006
531Changes for version 16.3:
532 - Upgraded to work on LynxOS Version 4.
533 - Updated makefile for INTEL platform
534 - Updated some ifdefs based on the existence of __Lynx__
535
536
53710/03/2006
538Changes for version 16.2:
539 - Increased the listen queue. To avoid "Connection Refused" messages from servers
540 or from the DNS.
541
542
54328/02/2006
544Changes for version 16.1:
545 - Fixed the NO_THREADS option for LINUX, it had stopped working.
546 - DimInfo::getData() could return an invalid pointer if called before connecting
547 to the server (or discovering the server did not exist). Fixed
548 (it now returns 0 in this case).
549
550
55109/11/2005
552Changes for version 16.0:
553 - Consolidated the new timer handling mechanism, should be much more precise.
554 - Fixed the RPC handling. Used to be based on timming assumptions.
555 Now uses a safe protocol to make sure the server is connected before sending
556 an RPC request.
557 - Included in the distribution some performance measurements and a benchmark
558 server and client. Sources in src/benchmark executables in /bin for windows
559 and /linux for linux.
560 Usage:
561 benchServer <message_size_in_bytes> <number_of_services>
562 benchClient
563 benchClient will run for a while and print the measurement results.
564
565Please check the Manual for more information at:
566 http://www.cern.ch/dim
Note: See TracBrowser for help on using the repository browser.