source: trunk/FACT++/dim/README_v20.txt

Last change on this file was 19184, checked in by tbretz, 6 years ago
Updated to v20r23
File size: 40.0 KB
Line 
1
2 DIM version 20r23 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 2023.
20
2112/06/2018
22Changes for version 2023:
23 - Fixed the new BimBridge:
24 - A bug had been introduced parsing the command line that made the DimBridge crash when providing
25 the domain name with the dns node name, fixed.
26
27
2808/06/2018
29Changes for version 2022:
30 - Fixed and improved the new BimBridge:
31 - Implemented a -e <services> option to exclude services from the bridge list.
32 New signature:
33 Usage: DimBridge [-f(rom) <from_node>[:<port_number>]] -t(o) <to_node>[:<port_number>]
34 -s <services> [-e <services>] [-i(nterval) <time_interval>] [-c(opy)]
35 ([-r(replace) <search_string> <replace_string>])*
36 - Optimized the behaviour when the DNS (source or target) restarts or changes from one machine to another.
37 - A memory leak had been introduced, fixed now.
38
39
4007/06/2018
41Changes for version 2021:
42 - Changed slightly the Windows include files, to include Winsock2.h instead of windows.h (and Winsock.h).
43 - Added a socket shutdown, for linux, when closing sockets, to make sure the connection is gone.
44 - Added some protections for very long names, for example IP names.
45 - got rid of some warnings for gcc 4.8.5
46 - Modified DimBridge (but should stay backward compatible):
47 - To add new command line options, signature now:
48 DimBridge [-f(rom) <from_node>[:<port_number>]] -t(o) <to_node>[:<port_number] -s <services>
49 [-i(nterval) <time_interval>] [-c(opy)]
50 ([-r(replace) <search_string> <replace_string>])*
51 - Novelties are:
52 - the possibility to specify port_numbers (along with the dns node names)
53 - the possibility to specify replacement strings for the bridged service names
54 - the possibility to give comma separated patterns fot the service parameter
55
56
5706/07/2017
58Changes for version 2020:
59 - All DIM log messages can now be caught by declaring an error_hlandler.
60 - Connect calls now use a non-blocking socket to avoit blocking for a long time (particularly in Windows).
61 - New re-designed version of webDid.
62 - Added conditional compilation settings for LABVIEWGSI/PHARLAP.
63
64
6520/01/2017
66Changes for version 2019:
67 - Changed slightly the definition of DIM constants in C++, they clashed with LHCb/ROOT software.
68 - A server didn't work properly when declaring the same server name to two different dnss.
69 Although this is still not allowed, because it would mean several services with the same name
70 in the same server (and couldn't resolve which one should be sent to which client), now
71 if the user declares the same server name a "-n" (where n is the dns instance number) will
72 be appended to the server name.
73 - Fixed a bug reported by Alice, whereby if a tcpip error (broken pipe) got received when
74 updating a service following a client request, the server would crash.
75 - Fixed a deadlock in C++
76
77
7830/06/2016
79Changes for version 2018:
80 - Removed the function do_dis_add_cmnd(), had became obsolete by do_dis_add_cmnd_dns().
81 - DIM now accepts servers to keep running even though they publish duplicated services:
82 - If all services are duplicated the server will exit like before
83 - If the server name is duplicated the server will also exit like before
84 - Otherwise the server will keep running providing only the non-duplicated services
85 - The server will print the name of each duplicated service to the logfile/stdout
86 - A DIM error handler can be installed by the user to detect or change this behaviour
87 - This new feature can only be used if both the Server and the DNS are using this new version
88 (otherwise the old behaviour will occur)
89 - The DimBrowser class now accepts to browse over DIM Servers with no name
90
91
9224/03/2016
93Changes for version 2017:
94 - Removed the function do_dis_add_service(), became obsolete by do_dis_add_service_dns().
95 - On Windows servers might not reconnect after DNS restart. Bug introduced in version v20r14
96 (when the keepalive mechanism was introduced for TCPIP client connections). Fixed.
97
98
9904/12/2015
100Changes for version 2016:
101 - DIM had stopped working on MAC OS X, since v20r12 and the replacement of select() by poll().
102 This is now fixed.
103
104
10501/09/2015
106Changes for version 2015:
107 - A DIM Server did not properly accept a DimServer::stop(), folowed by a DimServer::start(),
108
109
11009/03/2015
111Changes for version 2014:
112 - A DIM command could be discarded if the DNS connection went stale and the first attempt
113 to use it was to send a command. (Introduced a Keepalive between clients and the DNS)
114
115
11622/01/2014
117Changes for version 2013:
118 - Tried to improve in the DNS the handling of many connections at startup
119 (and many applications "simultaneous" restart)
120
121
12203/12/2014
123Changes for version 2012:
124 - In Linux the number of connections is now completely dynamic.
125 (replaced select by poll)
126 - Changed the default SEND and RECV buffer sizes per connection from 16Kb to 64Kb
127 (except for the DNS connections: 32 Kb, to limit the memory increase)
128 - Changed the DNS Keepalive timeout from 15 to 20 seconds (to use a little less CPU)
129
130
13124/10/2014
132Changes for version 2011:
133 - Increased the Max. num of connections for DNS and servers to 16384 (from 8192)
134 - Increased also slightly the DNS hash table
135
136
13717/09/2014
138Changes for version 2010:
139 - When a client connects to a server using the IP Address, instead of IP name,
140 a reverse lookup "validity" test is no longer performed.
141 - Fixed the Error reporting for tcpip connections, messages like:
142 "(ERROR) Client Connecting to XXX on YYY: Success"
143 should no longer exist.
144 - The "C" version can now be called directly from C++ using only dis.h or dic.h
145 instead of dis.hxx or dic.hxx.
146 (several const definitions and "extern "C" added in included prototypes)
147
148
14917/07/2014
150Changes for version 2009:
151 - Tried to fix more "Invalid Service ID" messages when creating/deleting services/commands in a server.
152 (By protecting the service/command creation/destruction in C++)
153 - Fixed a problem for Raspberry Pi (where "char" is "unsigned char" by default)
154 - The feature of increasing the maximum nember of connections stopped working with glibc 2.19.
155 Fixed.
156
157
15805/04/2013
159Changes for version 2007:
160 - DIM servers were allocating a lot of (possibly) unnecessary memory at startup - fixed.
161 - Tried to fix "Invalid Service ID" messages when creating services/commands in a server.
162 (By protecting the service/command creation in C++)
163 - Fixed many compilation warnings when adding gcc flag -Wconvertion
164 - DIM releases are now:
165 - Windows:
166 - Compiled on Windows 7 Visual Studio 10
167 - Distributed in /bin32 for 32 bits and /bin for 64 bits
168 - Linux:
169 - Compiled on SLC6 with gcc 4.4
170 - Distributed in /linux for 64 bits
171
172
17317/01/2013
174Changes for version 2006:
175 - Changes only affecting the Linux version of DIM:
176 - v20r5 changes related to removing the masking of signals could cause problems in single thread
177 applications, like smiGUI. The masking/unmasking of signals is now conditional, implemented by a
178 global variable in the DIM shareable library.
179 - Changed the DID makefile in order to make sure the correct libdim.so in used when linking.
180 - Changes in DID:
181 - When the list of nodes was long, the list was very slow to display - fixed.
182 - If it was really very long, it crashed - fixed.
183 - In nodes were reported by IPAdress, show servers by node didn't work - fixed.
184
185
18621/12/2012
187Changes for version 2005:
188 - Moved the WebDID sources to the src directory and the VS settings to the Visual directory
189 - In the Multithreaded (the default) version of DIM, signals are not touched anymore.
190 Before they were masked/unmasked at every dim lock/unlock occurence (Linux only).
191 - Fixes in WebDID:
192 - Now DIM nodes defined by an IP Address are shown properly (by IP Name)
193 - WebDID looks for the Javascript files in the same directory where its executable is
194 (independently of where it is started from)
195
196
19721/11/2012
198Changes for version 2004:
199 - WebDid did not compile under SLC5, fixed.
200 - Removed several Compiler warnings under SLC5
201
202
20320/11/2012
204Changes for version 2003:
205 - Added the project settings for Visual Studio 10 in the Visual directory
206 - Added a bin64 directory containing binaries for Windows7 (and 2008 R2) 64 bits
207 - Added a prototype webDid. in order to use it:
208 - In the same machine when the DIM DNS runs start <dim>/WebDid/webDid
209 - In any machine from where the DIM DNS is reacheable on your favorite Web browser use as URL:
210 http://<DIM DNS node name>:2500
211
212
21307/11/2012
214Changes for version 2002:
215 - Still problems with size=0 "no link" parameters - hopefully fixed.
216
217
21807/11/2012
219Changes for version 2001:
220 - First official release containing the Windows 64 bits fix.
221 - The changes in version v19r35 specifying the behaviour when giving a null pointer and size 0 as
222 "no link" parameters only worked well in "C", not in C++ callbacks - fixed.
223
224
22504/10/2012
226Changes for version 19.39:
227 - Unfortunately Windows, unlike Linux, does not use LP64 convention for 64 bits,
228 i.e. the type long is a 32 bit variable (?!?!?!)
229 So created a dim_long type which can always hold a pointer
230
231
23209/08/2012
233Changes for version 19.38:
234 - The timeout used by clients and servers to try to reconnect to a DNS was supposed to be random,
235 to avoid all processes retrying at the same time, but it wasn't - fixed.
236
237
23827/06/2012
239Changes for version 19.37:
240 - DIM DNS crashed for servers with a task name bigger than 80 characters - Fixed.
241
242
24322/06/2012
244Changes for version 19.36:
245 - The internal "DIS_DNS/KILL_SERVERS" command can now be used to pass a user defined exit_code to
246 the servers. The servers will get this exit_code in their exit_handler.
247 Although the exit_code passed to the "DIS_DNS/KILL_SERVERS" command is an integer, only the lower
248 16 bits can be used, i.e. only these bits are passed to the servers.
249
250
25124/05/2012
252Changes for version 19.35:
253 - Fixed the DimInfo() default constructor, now if the default constructor is called, it doesn't cause the
254 destructor to crash anymore.
255 - Made available to DimInfo, DimStampedInfo, DimUpdatedInfo and DimCurrentInfo the method:
256 - void subscribe(char *name, void *nolink, int nolinksize, int time, DimInfoHandler *handler)
257 Like this the default constructor can be called and then this method called later to subscribe
258 whenever needed.
259 - The behaviour of giving a null pointer and size 0 as "no link" parameters was not completely
260 defined. The user could get back either a null pointer or an "invalid" pointer in the callbacks.
261 This is now well-defined:
262 - If null pointer and size 0 is used at subscribe, the user will get null pointer and size 0 in the callback.
263 - If a negative size is passed at subscribe the callback is not called at all.
264
265
26603/05/2012
267Changes for version 19.34:
268 - Changed back to dna_write_nowait() the message that the server sends to the client when removing
269 a service. This was causing clients not to reconnect ever again when the server removed services.
270 (because the client would get the info much before the DNS, so it would keep trying to reconnect
271 and failing even though the service or even the server didn't exist anymore, without asking the DNS)
272 - Changed the client in order to avoid the behaviour above, i.e. if sending the service request fails it
273 asks the DNS again.
274
275
27623/04/2012
277Changes for version 19.33:
278 - A bug was introduced in v19r30. When trying to retry immediately, a dtq_start_timer(0)
279 was used (like for dna_write). This is not possible because the callback is not protected
280 by a DIM lock. Fixed. (in v19r32)
281 - Small tidy up in dic.c and protecting the move_to_xxx functions.
282 - When a server received an unsubscribe from the last subscribed service of a client it was closing the
283 connection to the client, this is not good because there could be commands being sent. In any case
284 it should be up to the client to close the connection - Fixed.
285 - dim_send_command now accepts a "-i" argument to send integer data (default is string)
286
287
28830/03/2012
289Changes for version 19.31:
290 - changed dna_write to dna_write_nowait for servers when removing a service and for clients
291 when releasing and subscribing to a service. Dna_write cannot be used for the same connection
292 as dna_write_nowait as it will mingle the packets.
293 - Removed more compiler warnings.
294
295
29614/03/2012
297Changes for version 19.30:
298 - Sometimes when trying to open a connection to a server the client could backoff for too
299 long (10 seconds), now it will retry immediately and then at increasing intervals.
300 - dim_stop() would sometimes not properly stop all threads if a new connection was received
301 in the mean time.
302 - The DimServerDns destructor could crash, fixed.
303 - Removed some compiler warnings about variables set but not used.
304 - Two new functions available:
305 - dim_set_listen_backlog(int size)
306 - int dim_get_listen_backlog()
307 - The DNS will set the listen_backlog to 1024 at startup, but the OS will truncate it to
308 a maximum limit (available in /proc/sys/net/core/somaxconn, linux default=128),
309 while for servers the constant SOMAXCONN is used.
310
311
31206/02/2012
313Changes for version 19.28:
314 - Added more log messages when a "Write Timeout" occurs to know where it originated.
315 - A server could sometimes not release the connection in case of a "Write Timeout", and
316 then keep on timing out for each message on this connection - fixed.
317
318
31919/01/2012
320Changes for version 19.27:
321 - Updated the DIM Makefiles for MacOSX (Darwin)
322 - Added New possibilities to change DIM timeouts:
323 - 2 New Environment variables:
324 - DIM_WRITE_TMOUT (default: 5)
325 - DIM_KEEPALIVE_TMOUT (default: 15)
326 - Same functionality as the functions:
327 - dim_set_write_timeout(int secs)
328 - int dim_get_write_timeout()
329 - dim_set_keepalive_timeout(int secs) //new
330 - int dim_get_keepalive_timeout() //new
331 - The functions have precedence over the environment variables.
332 - The server per client exit_handler functionality
333 (provided by dis_add_client_exit_handler()/dis_set_client_exit_handler())
334 wan not always working correctly (in case of write timeouts) - fixed.
335 - Changed the reporting of "Write Tiemout":
336 - Used to report only:
337 - "ERROR: Write Timeout, disconnecting from..."
338 - Now reports:
339 - "WARNING: Write Timeout, writing to ..."
340 - If it disconnects: "ERROR: Write Timeout, disconnecting from ..."
341 - If it reconnects later: "INFO: Re-connected to ..."
342
343
34414/09/2011
345Changes for version 19.26:
346 - In the notes for version 19.08 there is the following:
347 - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
348 the wake_up event was triggered before dim_wait was called. Could affect smi++. Fixed.
349 - Amasingly enough this seems also to be the case for Linux, dim_wait could hang until there
350 was some new DIM activity, normally some timer firing... Fixed.
351 - The Linux DID now accepts an extra parameter: -dns=<dns_node_name>
352
35301/09/2011
354Changes for version 19.25:
355 - When a Client was releasing a service "at the same time" as the server was deleting the service,
356 The Connection could be released by mistake - fixed.
357 - The SERVICE_LIST service could be updated with an empty string if there were two consecutive
358 dis_start_serving() - fixed.
359
360
36108/08/2011
362Changes for version 19.24:
363 - The funtion DimInfo::getFormat() never return the correct format of a service, if the first time
364 it was called, the service was not available, i.e. when called inside a "no_link" callback - Fixed.
365 - Deleting the last service of a server or stopping a server could generate "Invalid Service Id"
366 messages from the service that updates DID - Fixed.
367
368
36915/07/2011
370Changes for version 19.23:
371 - The new functions:
372 int DimClient::inCallback()
373 int DimServer::inCallback()
374 Can be used to find out if the function is being called in the context of a DIM callback
375 handler (they return 1 if yes, 0 if no).
376 - There was no way to "remove" an errorHandler or exitHandler in C++.
377 Now the following functions accept 0 as parameter:
378 DimClient::addErrorHandler(0)
379 DimServer::addErrorHandler(0)
380 DimServer::addExitHandler(0)
381 DimServer::addClientExitHandler(0)
382 In order to remove them.
383 - The Windows Visual Studio Manifest file distributed since version v19r19 was wrong, so the latest
384 DIM versions did not work on Windows machines without Visual Studio 8 installed - Fixed.
385
386
38721/06/2011
388Changes for version 19.22:
389 - DIM servers would hang when tring to exit due to "Services already declared", if the user
390 exitHandler() didn't directly call exit (instead tried to exit later in the main program).
391 Fixed.
392 - Servers accept now also 'B' or 'V' as format, they are both equivalent to 'C'.
393 - In Linux when a server printed "Write timeout, disconecting from XXX", it didn't always
394 disconnect properly, so the client would not always reconnect afterwards. Fixed.
395
396
39731/05/2011
398Changes for version 19.21:
399 - Fixed a bug in DimRpcInfo: the timer for the timeout was started too late and sometimes the
400 RPC data was received in the meantime, so the timer was never stopped.
401
402
40304/05/2011
404Changes for version 19.20:
405 - Fixed a bug added in v19r18: The <server_name>/SERVICE_LIST was no longer reporting correctly
406 the disappearence of services (by a "-<service_name>" ). Fixed.
407
408
40927/04/2011
410Changes for version 19.19:
411 - Fixed a very very old (horrible) bug in dis.c and dns.c: there was a hardwired malloc(8),
412 which was only ok for 32 bit machines. It's amazing this didn't bring more trouble...
413
414
41507/04/2011
416Changes for version 19.18:
417 - The standard server service <server_name>/SERVICE_LIST had problems reporting the correct
418 information when used by several clients in paralel - fixed.
419
420
42111/03/2011
422Changes for version 19.17:
423 - The TCPIP "listen" backlog for a server was increased for all servers (including the DNS)
424 from 16 to the constant SOMAXCONN (128 on Linux at the moment, 200 on Windows ?)
425 - After a "fork" the DIM initialization sequence guided by semaphores was not correctly
426 handled, this made the forked children hang and not respond to DIM anymore - fixed.
427
428
42923/02/2011
430Changes for version 19.16:
431 - DimServer::stop() did not correctly clear the ServerName - fixed.
432 - The Linux DID now prints the DNS it is connected to in the title bar.
433
434
43520/12/2010
436Changes for version 19.15:
437 - Still fixing dis_stop_serving():
438 - The DNS sometimes gets a remove service message from a server, after the server has
439 closed the connection, this was not handled properly - fixed.
440 - Fixed yet another detail (variable not cleared) in the thread handling at dis_stop_serving().
441 - dtq.c now clears all timer_queues at dis_stop_serving()
442 - Added some protections in case of closed connections.
443
444
44510/12/2010
446Changes for version 19.14:
447 - Still fixing dis_stop_serving():
448 - Adedd pthread_join in linux to wait for threads to die
449 - the following dis_start_serving() would not reconnect to the DNS if the DNS connection
450 was pending (i.e. the DNS was stopped or restarted)
451
452
45306/12/2010
454Changes for version 19.13:
455 - Fixed a few compiler warnings in dis.c
456 - Added #ifndef PXI around some Windows setPriority calls
457 - dis_stop_serving() did not completely clean-up DIM so that another dis_start_serving()
458 could be done properly after for example a "fork()". Fixed.
459
460
46120/09/2010
462Changes for version 19.12:
463 - Fixed a bug added when removing warnings in v19r10 (dis.c and dns.c).
464
465
46607/06/2010
467Changes for version 19.11:
468 - Added some protections in update_service() in order to try to solve a DIP issue.
469 (related to very frequent updates of the same service in different threads)
470 - Added the possibility of defining timeouts for:
471 - DimBrowser::getServices
472 - DimBrowser::getServers
473 - DimBrowser::getServerServices
474 - DimBrowser::getServerClients
475 - Added the possibility of retrieving the time a command arrived:
476 - int dis_get_timestamp(int service_id, int *secs, int *millisecs) in C
477 - int DimCommand::getTimestamp() and int DimCommand::getTimestampMillisecs() in C++
478 - Added a "const" keyword to the "char *format" parameter in the constructors of
479 - DimService and DimCommand
480 - Added a call DimCommand::hasNext(), can be used when commands are queued.
481 - Fixed a memory leak when using DimService::setData and then dynamically deleting the
482 DimService
483
484
48517/02/2010
486Changes for version 19.10:
487 - Fixed a bug in the DNS related to the latest change (browsing for a single service name)
488 The DNS could crash when killing a server.
489 - Removed some compilation warnings
490
491
49204/01/2010
493Changes for version 19.09:
494 - Created two new functions: dis_set_debug_on() and dis_set_debug_off(), these
495 enable or disable printing a message per service update
496 - Tried to protect against:
497 - a service being deleted from the server while it is being updated
498 - a client unsubscribing from a service while it is being updated.
499 - Optimized the DNS when browsing for a service search pattern without wildcards
500 (i.e. browsing for a single service name)
501
502
50313/11/2009
504Changes for version 19.08:
505 - Since version v18r4 where dim_wait() was modified, dim_wait could hang in windows if
506 the wake_up event was triggered before dim_wait was called. Could affect smi++.
507 Fixed.
508 - Fixed a compilation bug in dis.c that affected some platforms.
509
510
51130/10/2009
512Changes for version 19.07:
513 - Some more bugs related to being able to publish to more that one DNS fixed.
514
515
51628/10/2009
517Changes for version 19.06:
518 - When opening DNS connections, when the DNS is not there, from a process that is at the
519 same time a client and a server only one pending connection was used now two separate
520 ones are created.
521 - Tried to fix a few more problems related to dis_stop_serving...
522
523
52426/10/2009
525Changes for version 19.05:
526 - dis_stop_serving had stopped working in version 19.4. So all servers that undeclared
527 all services and then tried to re-declare new ones would fail (corrupted server name).
528 Affected in particular the DimBridge
529
530
53127/08/2009
532Changes for version 19.04:
533 - Added the following functions:
534 Server part:
535 C - dis_get_n_clients(int service_id)
536 C++ - int DimService::getNClients()
537 Client part (C++ only):
538 DimClient::setNoDataCopy()
539 This will prevent any data copy in the client and the user should make
540 sure that the data received from DIM is not used outside the callback
541 in order to benefir from this feature.
542 - Fixed the Java DIM Jar file, it was wrong in the previous version.
543
544
54531/07/2009
546Changes for version 19.03:
547 - Removed some more compilation warnings.
548 - Fixed a bug in the DNS. The mechanism for retrieving the "SERVER_LIST" when
549 some server names were longer that 35 characters was very slow.
550
551
55206/07/2009
553Changes for version 19.02:
554 - Fixed a bug in the server part handling of RPCs, it created a memory leak.
555 It was using a separate thread to handle timeouts and there is no safe way to
556 kill a thread from outside. Fixed.
557 - the function dim_stop_thread() is now obsolete.
558 - Added the possibility to change the send and receive buffer sizes:
559 - int dim_set_write_buffer_size(int size)
560 - int dim_get_write_buffer_size()
561 - int dim_set_read_buffer_size(int size)
562 - int dim_get_read_buffer_size()
563 The default (and minimum) is 16384 bytes.
564 These calls should be done before any other DIM calls.
565 - Fixed a bug in the Java DimBrowser class (the format was not returned correctly)
566
56704/05/2009
568Changes for version 19.01:
569 - A server can now publish to more than one DNS.
570 To use an extra DNS:
571 - in "C":
572 long dnsid;
573 char extra_dns[128];
574 ...
575 dim_get_env_var("EXTRA_DNS_NODE", extra_dns, sizeof(extra_dns));
576 dnsid = dis_add_dns(extra_dns,0);
577 sprintf(name1,"NewService%d",i);
578 dis_add_service_dns(dnsid, name1, "I", &NewData, sizeof(NewData),
579 (void *)0, 0 );
580 dis_start_serving_dns(dnsid, "xx_new");
581
582 - in C++:
583 DimServerDns *newDns;
584 char *extraDns = 0;
585 DimService *new_servint;
586 ...
587 extraDns = DimUtil::getEnvVar("EXTRA_DNS_NODE");
588 if(extraDns)
589 newDns = new DimServerDns(extraDns, 0, "new_TEST");
590 ...
591 if(extraDns)
592 new_servint = new DimService(newDns, "new_TEST/INTVAL",ival);
593
594 - Removed all warnings from DIM sources so that it can be compiled with -Wall -Wextra on Linux
595 - Changed the makefiles so that the default on Linux is now 64 bits.
596 - The flag 32BITS=yes can be added in order to generate 32 bit code
597
598
59926/02/2009
600Changes for version 18.05:
601 - Made the callback for "DIS_DNS/SERVER_LIST" uninterruptible, so that two clients subscribing
602 would not get mixed up answers.
603 - The same for "<server>/SERVICE_LIST"
604 - Tryied to fix a DNS crash, introduced in v18r4 by releasing the connection when "informing clients".
605 - removed some "//" comments in "C"
606
607
60820/02/2009
609Changes for version 18.04:
610 - Changed the dim_wait() mechanism, so that it works for several threads in parallel:
611 - On Linux it was based on POSIX semaphores now it is based on POSIX "condition
612 variables"
613 - On Windows it was based on "Auto Reset Events" now it uses "Manual Resel "Events"
614 - The DNS should now correctly update the "DIS_DNS/SERVER_LIST" service. It used to report
615 a new server, even when the services already existed and the server was killed by the DNS.
616 (And never report it killed). It also didn't report correctly when a server went out of "ERROR"
617 (this is reported as a "+" as for a new server).
618
619
62005/02/2009
621Changes for version 18.03:
622 - The list of registered services in a server could get corrupted in some rare cases
623 making the server crash - fixed.
624 - If the DNS couldn't talk to a client it could sometimes hang - fixed.
625 - Java client modifications:
626 - DimUpdatedInfo was not working correctly - fixed in dim_jni.c.
627 - Implemented DimRpcInfo
628 - Changed the DimBroser class to use DimRpcInfo.
629 - Added a jdim.jar file in the jdim/classes directory of the DIM distribution
630
631
63215/01/2009
633Changes for version 18.02:
634 - Added the following functions:
635 - C++ Client
636 - int DimClient.getServerPid()
637 - Java Client
638 - int DimClient.getServerPid()
639 - String[] DimBrowser.getServers()
640 - String DimBrowser.getServerNode(String server)
641 - int DimBrowser.getServerPid(String server)
642
643
64409/01/2009
645Changes for version 18.01:
646 - Added in the distribution the Visual Studio 8 dlls and manifest. Otherwise
647 it would not work on most PCs.
648
649
65003/12/2008
651Changes for version 18.00:
652 - The Windows execulables and libraries are now built using Visual Studio 8
653 - Some changes added by GSI mainly in the Java Native Interface
654
655
65606/11/2008
657Changes for version 17.12:
658 - Client functionality:
659 - Added a new function dic_stop(), to close anything related to DIM
660 for a client
661 - Added the function dic_get_server_pid(). Similar to dic_get_server().
662 Can be executed in a callback to retrieve the pid of the current server
663 - DimBrowser Class:
664 - DimBrowser::getServices() used to create and destroy the DimRpc connection
665 to the Dns every time it was called. This was heavy if called in a loop.
666 Now the connection is maintained until the DimBrowser itself is destroyed.
667 - A new method DimBrowser::getNextServer(char *&server, char *&node, int *pid)
668 has been created. similar to the previous one but returns also the server pid.
669 - DNS
670 - The DNS was still doing some blocking write calls to servers or clients.
671 Now all write calls have a timeout and can not block forever.
672 - Linux DID
673 - The "Subscribe" button was subscribing to services with update rate of 10 seconds.
674 This was misleading, the users could think the server was calling update_service
675 when it wasn't.
676 Now there are two Subscribe buttons ("on change" or "Update rate of 10 seconds").
677 - DimDridge
678 - Accepts an extra flag "-copy" which provokes an internal copy of the data.
679
680
68108/09/2008
682Changes for version 17.11:
683 - Some DIM Processes, servers or clients could enter a loop taking 100 % CPU
684 time in some rare occasions, fixed.
685 - Added some protections when removing services in the DimBridge.
686
687
68830/08/2008
689Changes for version 17.10:
690 - Some DIM Processes, servers or clients would not reconnect when the DNS was
691 restarted. Fixed two cause:
692 - Some processes in Linux were stuck reading from the DNS socket
693 - Some others "forgot" to set a timer under very special conditions
694 - Changed some of the DNS debug messages to be more explicit.
695
696
69721/07/2008
698Changes for version 17.09:
699 - DIM error messages were not being flushed when the output was redirected
700 to a logfile, fixed.
701
702
70318/07/2008
704Changes for version 17.08:
705 - Sometimes a server or a client could do a read on a sockect that had just
706 been closed which left them hanging forever - fixed.
707
708
70901/07/2008
710Changes for version 17.07:
711 - The DimTimer was sometimes not started when the constructor was called
712 with a time argument.
713 - Clients could not connect to more than 1024 servers - fixed.
714 (if the machine allows more than 1024 connections)
715
716
71730/06/2008
718Changes for version 17.06:
719 - Corrected the makefile for Darwin, now the number of accepted connections is
720 increased to 8192 only for Linux.
721 - Fixed a bug in the DimTimer, it used to accept to be re-started, but then crashed
722 at destruction time if not stopped the same number of times. Now it can not be
723 re-started.
724 - The Dns used to ask servers to re-register at regular intervals when they were not
725 sending their watchdog messages (i.e. they were in "ERROR", red in DID). Now the
726 DNS only asks once (unless they answer). This could cause the DNS to hang if
727 servers were in ERROR for a long time.
728 - The Dns now accepts a command line parameter: -d to print debug messages.
729 - The clients were not handling properly the case when they could contact the DNS
730 but then they could not contact the server that the DNS gave them (either because
731 of a firewall or because the server run on an inaccessible network). In this case
732 the clients would timeout trying to contact the server for each service and kept
733 asking the DNS the server coordinates over and over again. Now the clients keep
734 a list on unreacheable servers, so they don't try to contact the server for each
735 service and only ask the DNS again with an increasing interval that goes from 10
736 seconds to 2 minutes maximum.
737 - The server now issues an error message if the format string is too long.
738 - Linux DID
739 - Removed the command "Kill ALL Servers", it was too dangerous
740 - Now the list of nodes in "View Servers by Node" is in alphabetical order and
741 in lowercase.
742
743
74430/04/2008
745Changes for version 17.05:
746 - In Linux in some cases a SIGPIPE was generated. Normally the DIM library sets
747 the behaviour of SIGPIPE to ignored, but if another library or main program
748 changes the SIGPIPE behaviour, then the application could exit when the SIGPIPE
749 was generated. Fixed - on Linux now the function send with flag MSG_NOSIGNAL
750 is used in oder to avoid generating SIGPIPE.
751
752
753
7544/04/2008
755Changes for version 17.04:
756 - Sometimes processes (servers or clients) would hang when the DNS was restarted.
757 This was due to a strange (Windows?) feature, by which a connect could succeed
758 after a connection was closed (and reported) on the other side. Fixed.
759
760
761
76227/03/2008
763Changes for version 17.03:
764 - Can now make DID for 64 bits by making DIM using:
765 gmake X64=yes all
766 - Increased the size of the Hash tables for the servers and the DNS.
767
768
769
77020/02/2008
771Changes for version 17.02:
772 - Fixed the Java DimTimer - stop() didn't work
773 Required changing dim_jni.c as well as the java part
774 - Fixed DIM for Darwin - had stopped working
775
776
777
77820/01/2008
779Changes for version 17.01:
780 - The Java API now works on 64 bit machines, Thanks to Joern Adamczewski.
781 Please use:
782 gmake JDIM=yes all
783 - Linux executables are now compiled/linked on slc4 (32 bits).
784 - Big changes in the DimRpcs both client and server part. Tere were bugs
785 related to the handling of timeouts.
786 Unfortunatelly all applications using RPCs need to be re-linked.
787
788
789
790-----------------------------------------------------------------------------------------
791Previous version history:
792
79307/12/2007
794Changes for version 16.14:
795 - Now by default All DIM processes are ready to accept up to 8192 connections, both
796 in Linux and Windows. Although in Linux for this to be effective the machine system
797 limits must allow more than 1024 descriptors/open files per process.
798 - Fixed a little memory leak in tokenstring.cxx
799 - And a little compilation bug for some platforms in tcpip.c
800
801
80215/05/2007
803Changes for version 16.13:
804 - If DIM_HOST_NODE is defined when starting up a server, a DIM client will now try
805 two network interfaces in order to talk to that server and only give up if they both
806 fail. First it will try the ip name or ip address specified by the server using
807 DIM_HOST_NODE, if that fails it will try the ip address of the default interface
808 retrieved by the server using gethostname (and gethostbyname).
809 The changes basically affect the case in which the DIM_HOST_NODE given to the servers
810 is specified as IP address instad of an IP name. Otherwise this mechanism was already
811 working.
812
813
8143/05/2007
815Changes for version 16.12:
816 - The Java version did not exit properly when main() terminated - fixed.
817
818
81925/04/2007
820Changes for version 16.11:
821 - On Linux the timeout to detect a lost connections (unplugged ethernet cable
822 or machine reboot) was too long, around 15 minutes - Fixed.
823 On Linux the KEEPALIVE feature is now used instead of a regular socket write,
824 all other platforms should work as before.
825
826
82721/02/2007
828Changes for version 16.10:
829 - Found a bug in dis_stop_serving: one socket connection was not closed - fixed.
830 - Implemented a new environment variable for the DNS: DIM_DNS_ACCEPTED_NODES
831 Can receive a list on nodes or domains separated by commas.
832 If the DNS receives a connection from a node not in this list, it will
833 reject it and kill the server or client requesting it.
834 - Fixed some C++ warnings.
835
836
83719/01/2007
838Changes for version 16.9:
839 - The modifications done in version 16.8 have introduced a bug:
840 - DIM servers would not behave properly (exit) when receiving a kill command
841 from the DNS (for duplicated services, not allowed host names or manual "kill")
842 This is now fixed.
843
844
84530/10/2006
846Changes for version 16.8:
847 - Modified dis_stop_serving() and DimServer::stop() to completely stop DIM:
848 - Stop also the DIM threads.
849 - Release all allocated memory
850 - Allow a different port number when re-starting.
851
852
85311/07/2006
854Changes for version 16.7:
855 - Prepared for increasing the number of open connections per process
856 (On Linux still requires changing some parameters and recompiling the Dns)
857 - Fixed one error and several warnings for gcc 4.
858
859
86011/05/2006
861Changes for version 16.6:
862 - Sometimes a server or client would crash while exiting if the DNS was not running.
863 Fixed.
864 - Fixed the reporting of some ERROR messages on Windows (used to report error "0")
865 - Allowed dim_send_command to receive instead of -dns <node_name>
866 -dns <node_name>[:<port_number>]
867
868
86901/05/2006
870Changes for version 16.5:
871 - Big Spring Cleanup. Removed most warnings. Can now be compiled on
872 Windows with Warning Level 3 and on Linux with -Wall
873 (still not working for -ansi -pedantic...)
874 - When trying to access a server in a different network (i.e. not reacheable)
875 a client (for example DID) would take very very long to timeout - fixed.
876 - Added two new sets of functions that allow setting the DIM_DNS_NODE separately
877 for a server and a client in the same process:
878 - int dis_set_dns_node(char *node)
879 - int dis_get_dns_node(char *node)
880 - int dis_set_dns_port(int port)
881 - int dis_get_dns_port()
882
883 - int dic_set_dns_node(char *node)
884 - int dic_get_dns_node(char *node)
885 - int dic_set_dns_port(int port)
886 - int dic_get_dns_port()
887 These routines should be used instead of the equivalent ones starting with "dim_"
888 since these set the same DIM_DNS_NODE/port for both Server and client parts of a
889 process.
890 - Adapted the C++ equivalents (DimClient::setDnsNode, etc. and DimServer::setDnsNode,
891 etc.) to use the new routines, so they are now independent.
892 Adapted also the Java equivalents.
893 - Fixed DimBridge to use the new routines.
894 - Fixed a bug in DID that made it crash sometimes at startup (and also when the DNS
895 restarted)!
896 - Found some very interesting features of DIM:
897 - In a node with two ethernet interfaces (so connected to two networks):
898 - The DNS will answer to servers and client on both networks, only its server
899 part - DIS_DNS (the one that answers to DID and DimBrowser requests) would
900 in principle answer only to one of the networks (in principle the default
901 interface* but can be changed by setting the environment variable "DIM_HOST_NODE").
902 - But, in fact, if the DNS or any server is started with the environment variable
903 DIM_HOST_NODE set to the interface that is not the default* one. Than both the
904 DNS (including the server part) and the DIM servers will be accessible from both
905 networks. For example DID will work fine on both networks.
906 * The command "hostname" will return the name of the default network interface.
907
908 Note: As a result of inserting new functions the DIM shared library entry points have
909 changed, so all DIM Servers/Clients should be relinked (in particular in Linux).
910
911
91220/04/2006
913Changes for version 16.4:
914 - Optimized the DNS for providing the list or running servers dynamically
915 by subscribing to the service "DIS_DNS/SERVER_LIST"
916
917
91807/04/2006
919Changes for version 16.3:
920 - Upgraded to work on LynxOS Version 4.
921 - Updated makefile for INTEL platform
922 - Updated some ifdefs based on the existence of __Lynx__
923
924
92510/03/2006
926Changes for version 16.2:
927 - Increased the listen queue. To avoid "Connection Refused" messages from servers
928 or from the DNS.
929
930
93128/02/2006
932Changes for version 16.1:
933 - Fixed the NO_THREADS option for LINUX, it had stopped working.
934 - DimInfo::getData() could return an invalid pointer if called before connecting
935 to the server (or discovering the server did not exist). Fixed
936 (it now returns 0 in this case).
937
938
93909/11/2005
940Changes for version 16.0:
941 - Consolidated the new timer handling mechanism, should be much more precise.
942 - Fixed the RPC handling. Used to be based on timming assumptions.
943 Now uses a safe protocol to make sure the server is connected before sending
944 an RPC request.
945 - Included in the distribution some performance measurements and a benchmark
946 server and client. Sources in src/benchmark executables in /bin for windows
947 and /linux for linux.
948 Usage:
949 benchServer <message_size_in_bytes> <number_of_services>
950 benchClient
951 benchClient will run for a while and print the measurement results.
952
953Please check the Manual for more information at:
954 http://www.cern.ch/dim
Note: See TracBrowser for help on using the repository browser.