source: trunk/FACT++/dim_v19r17/README_v19.txt@ 10398

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