forked from mytestbed/oml
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
688 lines (562 loc) · 29.1 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
2014-04-04 Olivier Mehani <[email protected]>
* OML: Version 2.11.0rc2
* Major fixes:
Get rid of unbounded sprintf()s in PSQL adapter causing crashes
when receiving long strings (#1685);
Properly close database connections (#1586, #1653);
Fix memory issue in scaffold-generated template (#1704);
* Improvements:
Better documentation of the internals mechanisms, particularly
all the protocol details in a single place (#1446);
Increase double significance to 15 figures with PSQL
(#1651);
* Known limitations:
A hairy connection management problem currently leads an OML
application to stall on injects when a host running the
collection server is down (#1581) or otherwise dropping packets
without proper TCP RST (e.g., bad firewalling). This does not
happen in case only the oml2-server is not running, but the
host is up, or a router along the way can positively report the
connection host as unreachable.
Due to laxness in typing (#1657), the PostgreSQL backend currently
does not support the full scale of the C double representation.
Numbers with more than 15 significant figures (e.g.,
-1.7976931348623157E+308 or 2.2250738585072014E-308) might get
rounded to unstorable values (#1651#note-22).
2013-11-01 Olivier Mehani <[email protected]>
* OML: Version 2.11.0rc
* New features:
Vector support (#1386; bump to OMSPv5);
Client-side self-instrumentation: dropped measurements, memory
used,... (#1396);
IPv6 support in client and server (#369);
Add DBCREATED and DBOPENED hook events (#1253).
* Major fixes:
liboml2: Fixes in configuration-file handling when selecting MPs
and fields (#1266), or reporting to multiple (#1154);
oml2-server: Don't die when a table with no schema is found
(#1366);
oml2-scaffold: Add metadata injection to scaffold apps (#1401)
Better network logic: applications should not block when the
reporting path is down (#1104);
Fix spurious 'Data item number mismatch' message (#1156, #1222)
Rename memory allocation functions (e.g., from xmalloc to
oml_malloc), to avoid clashes with similarly-named
functions in instrumented applications (#991);
Better documentation of the internals mechanisms, particularly
all the protocol details in a single place (#1446).
* Known limitation: Due to the current wire representation of the binary
mode OMSP, it is not possible to carry more than 255 MSs (not
counting schema0) in a single connection to the server (#1491).
The text mode OMSP does not have this limitation.
2013-08-06 Olivier Mehani <[email protected]>
* OML: Version 2.10.1 (bugfix release)
* No changes since RC.
2013-07-09 Olivier Mehani <[email protected]>
* OML: Version 2.10.1rc (bugfix release)
* Major fixes:
Client library:
- Allow to send similarly-named MP to various collection
points (#1154)
- Fixed oml2-server's spurious 'Data item number
mismatch', and the triggers that caused them (in
filtering system) (#1156)
- _experiment_metadata is unconditionally reported on all
MSs (#1266)
oml2-server
- the Debian init script now waits for sockets in
FIN_WAIT state to have been closed by the system (#1262)
- fix 'Out of memory' bug on low-memory machines (#1320)
2013-04-20 Stephen Glass <[email protected]>
* OML: Version 2.10.0
* Major fixes:
Remove OML4Py from main build Instrument OML server so
that it logs connections and disconnections using OML (#1150).
Add README files to the directories in the source code (#961).
Use symbols instead of strings for scaffold defProperty types.
Make scaffold work with Ruby 1.8.7.
* Fix minor bugs and discrepancies since RC.
2013-04-15 Olivier Mehani <[email protected]>
* OML: Version 2.10.0rc2
* OMSP (protocol): finalise version 4
Support for booleans in both text and binary modes
* liboml2: Proper bump to library version 9.1.0
Allow to declare new MPs after omlc_start has been called (#1057)
Fix log delegation issues (#943)
* Major fixes:
oml2-scaffold is now more compatible with OMF application
descriptions (#1124, #1118)
Fix some memory and/or locking issues (#1122, #1072)
* Documentation:
Document use of OML_FROM_MAIN in liboml2(3) (#1123)
Package PostgreSQL backend documentation by default (#1050)
Various fixups and clarifications
* oml2-scaffold:
The default generated code now shows off all supported types
* OML4Py: API closer to the generic OML interfaces (#938)
* OML4R: removed from tree, now available from GitHub:
https://github.com/mytestbed/oml4r
2013-03-17 Olivier Mehani <[email protected]>
* OML: Version 2.10.0rc
* protocol: New version, 4
Support for user-defined metadata (units, references, etc...)
(#418, #748, #829)
Support for globally unique IDs to group tuples within or across
MPs (#954)
Support for Blob and multi-line strings in text protocol (#761, #835)
* liboml2: Bump in library minor to 9.0.1 to support new API for V4
protocol features
* Backend changes:
Extend _experiment_metadata table schema (#418)
Add primary keys to measurement tables (#814)
* Major fixes:
Fixed handling of zero-size and null strings/blobs (#929)
Fixed the handling of inactive client connections in the server, and a
similar issue in the client (#826)
Resync after erroneous message in binary mode (#791)
2012-12-10 Olivier Mehani <[email protected]>
* OML: Version 2.9.0
* Fix minor bugs and discrepancies since RC.
2012-11-23 Olivier Mehani <[email protected]>
* OML: Version 2.9.0rc
* liboml2: Bump to library version 9.0.0 (1.0.0 for OComm)
Heavy work on memory leak issues (#647, #516)
Changes in the OmlValueU API
Old applications should be ported by using omlc_zero(3)
or omlc_zero_array(3) after declaring OmlValueUs, and
properly omlc_reset_string(3) and omlc_reset_blob(3)
when needed. All the API is documented in OmlValueU(3),
but should not be used directly with new application.
see OmlValue(3) for more details on porting pre-2.9
instrumentations.
Instrumentation workflow MUST now use oml2-scaffold(1) and
oml_inject_MPNAME(3).
Old binaries will still work with the old library which can be
installed in parallel
Re-insteate OML's functionality of being able to
delegate logging to the application (#832)
Throttle logging when too many messages (#827)
More informative and regular log messages (#222)
Plenty of bugfixes
* UI changes: Introduce --oml-domain and --oml-collect instead of
(resp.) --oml-exp-id and --oml-server, which are still valid
(#860, #726)
* Documentation: #891, #771
Update manpages
Document some parts of the code with Doxygen
A README file!
* Bindings: New OML4Py Python module contributed by Fraida Fund from
NYU-Poly (#595)
OML4R now supports reconnection
* Supported architectures: Basic Android port thanks to François Hoguet
from UTC (#512)
* Supported backends: PostgreSQL is officially supported (#874, #859,
#825, #824, #755)
2012-06-25 Olivier Mehani <[email protected]>
* OML: Version 2.8.0
* Bugfixes: Builds on Mac OS X without special arguments (#749)
* liboml2: Reconnect to server in case of disconnection (#757)
* oml2-server: Fix issue with empty string last in text mode (#610)
Introduce event hook mechanism to react to event within
the server (e.g., push a measurement database to iRODS
when the last client has disconnected)
* oml2-scaffold: Load the right appfile (#750)
* OML4R: OML4R Gem pushed to RubyGems
Examples updated
Support for sending measurement to different streams
Make parameters constistent with liboml and command line (#751)
2012-04-24 Olivier Mehani <[email protected]>
* OML: Version 2.7.0-rc1
* manpages: Fix manpage wrt --oml-list-filters
Fix server's data-dir option prototype
* liboml2: Output to local file by default if nothing specified
Use simplified logging style by default
Unify some debug messages between bin and text
Implement the flush:// scheme for the file URI
Avoid compiler warning with omlc_set_const_string()
* oml2-scaffold: Use OML_INT32_VALUE by default
Exit with an error on unknown types
Generate per-MP injector functions
Generate .rb app files
Fix popt.h generation
Fix Makefile generation
Handle both :type and "type"
Brand new example oml2-scaffold-generated generator
2011-06-19 Jolyon White <[email protected]>
* OML: New version 2.6.0
* lib/client/init.c (create_writer): The output encoding is now
independent of the output transport. Text encoding can be sent to
network, and binary encoding can be sent to local file, as well as
the existing options (text->file, binary->network). Encoding is
selectable using --oml-text and --oml-binary.
* lib/client/buffered_writer.c: Add new output serialization and
buffering scheme to the client library to decouple backend
processing from application-thread sample injects. This should
make measurements have less impact on the main thread. New client
lib command line option --oml-bufsize controls the amount of
buffer space available in the buffer that sits between the inject
thread and the output stage thread.
* server/main.c (drop_privileges): oml2-server now drops
privileges if the --user and/or --group command line options.
Privileges are dropped as soon as possible, namely after the
socket has been set up (in case the admin wants to run it on a
privileged port) and after the log file has been opened.
(setup_backend_sqlite): oml2-server now writes databases to a
subdirectory of $(localstatedir), which can be configured at
compile time using the --localstatedir=DIR option of configure.
If the server can't write to that directory, it will abort with an
error message in the log. The default is overridden by the
OML_SQLITE_DIR environment variable, which is overridden by the
--data-dir option (now available as -D as well).
* server/psql_adapter.c (psql_create_database): PostgreSQL support
is not complete and considered to be supported. oml2-server now
supports --pg-connect and --pg-user to help configure the
connection to the PostgreSQL server.
* server/main.c (setup_logging): Make oml2-server and
oml2-proxy-server log to stderr when stderr is attached to a tty
if --logfile is not used. If --logfile is not used and stderr is
NOT attached to a tty, the servers log to their default log file
names instead.
* lib/client/parse_config.c: reskin the XML configuration file
format to make the element and attribute names more meaningful,
and more easily remembered.
2011-03-16 Jolyon White <[email protected]>
* OML: New version 2.5.2
* oml2-server: All strings representing table and column names
are now enclosed in double quotes to allow SQL keywords to be
used as column names. Note that the strings are not yet escaped,
so including a double quote in the name can be used to do SQL
injection.
* oml2-server: Fix a bug in copying string values from the text
protocol parser that resulted in incorrectly terminated
strings. This would sometimes add extra garbage to the end of
strings stored in the database.
2011-01-29 Jolyon White <[email protected]>
* OML: New version 2.5.1
* libocomm, oml2-server: Fix a bug in the event loop that made it
impossible to cleanly free a client's data structures without
leaving the possibility of a segfault. Segfaults were in fact
occurring. This fix provides a clean client shutdown mechanism.
See IssueID #496.
* oml2-server: Fix sync position detection in binary protocol
parsing. This is the second part of the fix to IssueID #463.
Search for sync bytes now starts from the end of the last message
processed, not the start of the input buffer.
2010-10-29 Jolyon White <[email protected]>
* OML: New version 2.5.0
* liboml2, oml2-server: The client and server now support a new
type: OML_BLOB_VALUE. This type allows for arbitrary binary
large objects (BLOBS) to be transmitted and stored in the SQLite
database; only the binary protocol supports blobs, not the text
protocol. This change also required a new packet type in the
binary protocol, to support measurement packets larger than
64KiB. Protocol version is now version 3.
* oml2-proxy-server: Proxy server has been redesigned to support
multiple connect->disconnect->reconnect cycles. The RESUME
command initiates connections to the downstream oml2-server, and
the PAUSE command closes them. The proxy server now processes
protocol metadata headers at the start of the stream, and parses
just enough of each measurement packet to determine the packet
boundaries so that it doesn't send partial packets. It also
re-sends the metadata headers each time the RESUME command is
given. (Also, RESUME and PAUSE have been introduced as simpler
synonyms for OMLPROXY-RESUME and OMLPROXY-PAUSE.)
* oml2-proxy-server: Proxy server now supports a simple
socket-based control interface. It accepts the same commands as
standard input, linebuffered. The script oml2-proxycon provides a
remote terminal for this interface. It can be used as a guide for
custom scripting. The proxy server listens on port n+1 for
control connections, where port n is the data port set using the
-l option. Note: this design is experimental and may change in a
future release.
* oml2-server: Fixed bug #463; the server was sometimes getting
confused about packet boundaries and tried to interpret the
metadata headers as binary packet data. This bug seemed to be
timing-sensitve as it only happened for high-rate senders. Server
now correctly skips past the headers in all cases and correctly
synchronizes on the SYNC_BYTEs (0xAA 0xAA).
2010-09-08 Jolyon White <[email protected]>
* OML: New version 2.4.0
* OML: Package names changed to be better for Debian/Ubuntu policy
compliance. Splite oml2-proxy-server into its own package; split
libocomm into its own package. oml2_scaffold is now correctly
included in the liboml2-dev package; various other files were
moved to the package in which the Debian manual says that they
should reside. The -dev packages are now marked as "Architecture:
any" instead of "Architecture: all" to avoid problems when
uploading packages for different architectures.
* OML: fixes to 'make dist' to ensure the release tarball contains
all the files it should.
* OML: Added a comprehensive set of man pages for OML using
Asciidoc as the markup format. The standard build now also builds
documentation if asciidoc is installed, and 'make html' will build
HTML versions of the man pages for the website. The Debian
packages now include man pages.
* OML: add support for four new integer types: OML_INT32_VALUE,
OML_UINT32_VALUE, OML_INT64_VALUE, and OML_UINT64_VALUE. These
types map to the equivalents from <stdint.h>, i.e. int32_t,
uint32_t, etc. Extensive changes and refactoring in both the
client and the server to support these new types. OML_LONG_VALUE
is now deprecated because it changes width between 32-bit and
64-bit x86 Linux, which causes OML_LONG_VALUES to be corrupted
when transmitted over the binary protocol. OML_LONG_VALUE will
still be supported until the end of the OML2 series, but will be
removed in OML3. The client now complains when an MP is defined
using OML_LONG_VALUE. oml2_scaffold now also supports these new
types.
* OML: split the applications into their own repository; delete
the apps subdirectory.
* OML: convert from Subversion to GIT.
* OML: add support for four new integer types: OML_INT32_VALUE,
OML_UINT32_VALUE, OML_INT64_VALUE, and OML_UINT64_VALUE. These
types map to the equivalents from <stdint.h>, i.e. int32_t,
uint32_t, etc. Extensive changes and refactoring in both the
client and the server to support these new types. OML_LONG_VALUE
is now deprecated because it changes width between 32-bit and
64-bit x86 Linux, which causes OML_LONG_VALUES to be corrupted
when transmitted over the binary protocol. OML_LONG_VALUE will
still be supported until the end of the OML2 series, but will be
removed in OML3. The client now complains when an MP is defined
using OML_LONG_VALUE. oml2_scaffold now also supports these new
types.
* OML: substantial changes to configure.ac to provide good
detection and handling of optional features (building
documentation, running unit tests, etc.). The configure script
now aborts when it detects missing libraries.
* oml2_scaffold: Types :int and :integer were aliases for :long
previously. Added compatibility switches -i,--int32 to select
:int32 as the underlying type and -l,--long to select long as the
underlying type. For now the default will be --long (same
behaviour as before), but in OML 2.5 the default will be changed
to --int32. This allows developers now to generate oml2_scaffold
code that uses the new :int32 type easily with OMF
defApplications, and encourages developers to port their old
applications to use the new types by the time OML 2.5 is release.
A warning is printed whenever the :int or :integer are used to
alert the developer to the migration, and :long now generates a
warning that it is deprecated. This also introduces a new version
of the binary and text protocol (version 2) to support the new
types.
* oml2_scaffold: Added synonyms :float and :real for :double.
* oml2_scaffold: Fix bug to allow the generated OML header file to
be included from multiple source files.
* liboml2, oml2-server: fix lots of OML_STRING_VALUE handling code
to make sure that we allocate the right amount of memory, don't
try to manipulate null pointers, and don't try to free memory that
wasn't allocated (or wasn't allocated at the location we are
trying to free).
* liboml2, oml2-server: tighten up name validation. Names must
now be like C identifiers for application name, measurement point
names, and measurement point field names.
* liboml2: The library now gets generated with the correct
-version-info from libtool.
* liboml2: Fix omlc_set_string() and omlc_set_const_string()
macros.
* liboml2: Added three new filters: 'last' (like first, but takes
the last sample and throws away the rest), 'sum' (computes the sum
of each sample set) and 'delta' (computes the change in the input
value over the sample set). Thanks to Olivier Mehani for
contributing this code.
* lib/client/filter/factory.c (create_filter_result_vector): Fix a
one-character bug that was causing this function to allocate less
memory than needed, leading to segfaults and upredictable behaviour.
* lib/client/filter.c (filter_process): Make this function fail
gracefully if omlc_instance == NULL.
* libocomm: Fixed various issues with the poll() loop that were
causing poll() to exit even when no new data had been received.
This was also spamming the server log file.
* libocomm: Fixed connection handling to make sure all data
received for a connection gets delivered to the application, even
when the client closes the connection.
* oml2-server: Add code to make the SQLite backend use
transactions. Existing transaction is COMMIT'ed and a new one
started whenever a measurement is received and at least one second
has elapsed since the last transaction was begun. This results in
a significant performance increase.
* server/database.c (database_find): Fixed a bug that caused this
function to enter an infinite loop when multiple experiments
connected to the server. This function would loop forever when
trying to check whether the second connecting experiment already
existed and was open.
* oml2-server: Redesigned SQL statement string building code to
use safer string handling functions to avoid buffer overflows.
* oml2-server: Schema handling factored out into its own module
and re-worked/tested to improve server robustness. This resulted
in redesigning the main code path to the database in a way that is
more reliable.
* oml2-server: Now uses a set of x-functions (oml_malloc(),
oml_realloc(), etc.) for memory-related code. These functions allow
a central point for control and auditing of memory. oml_malloc()
stores an integer indicating the size of the object allocated to
allow simple memory use tracking, and to detect problems when
using oml_free() to free allocated memory.
* oml2-server: Integrate Ruben Merz's patches for the server to
support PostgreSQL backend. The code is still experimental, and
is not enabled by default. ./configure --with-postgresql does the
trick.
* oml2-server: Refactored server message buffer handling to be
more robust and fixed a lot of bugs and segfaults along the way.
The buffer component is now extensively unit tested.
* oml2-server: Refactored binary protocol parser to be more
robust. Implemented extensive unit testing of binary protocol
marshalling and unmarshalling (client and server). Found and
fixed lots of bugs.
* oml2-server: Substantially redesigned the client memory handling
to avoid problems with string memory leaking and overruns. Each
client now includes a set of vectors, one for each table, that are
correctly sized to accept measurements for the table, rather than
having one vector that is shared amongst all tables. This
simplifies reallocation dramatically.
* oml2-server: Ran the server under Valgrind and fixed lots of
memory leaks.
* oml2-server: Revamp log messages to be more expressive and to
make it easier to tie a log message to the client connection that
caused it.
* oml2-server: Fix connection handling to avoid dropping
measurements at the end of the measurement stream when the client
disconnects.
* oml2-server: Fix lots of bugs and segfaults.
* oml2-proxy-server: Fixed bug in dump file naming so that there
are no buffer overflow problems and the file name length doesn't
keep growing ad infinitum with each new run.
* oml2-proxy-server: The proxy server has been substantially
re-written. It now does thread synchronization correctly, and
does much better at connection handling. The command state
machine is also much better implemented now. Added synonyms
"RESUME" and "PAUSE" for "OMLPROXY-RESUME" and "OMLPROXY-PAUSE"
commands.
2010-08-17 Jolyon White <[email protected]>
* OML: New version 2.3.9
* server/client_handler.c (process_text_data_message): fix a bug
in the handling of the client's values array for the text
protocol. Because the text protocol parser reuses the values
array for all streams from the same client, it can end up trying
to interpret numeric values that fit into a machine word as
pointers to malloc'd strings, and tries to realloc() or free()
them. This causes segfaults. Fixed to always malloc() a new
block of memory for each string, and free() it immediately after
it is inserted into the database.
2010-06-29 Jolyon White <[email protected]>
* OML: New version 2.3.8
* server/sqlite_adapter.c (sq3_table_free): add check for null
sq3table that was causing a segault in the server when a client
connected with an invalid column type in the schemas.
2010-04-08 <[email protected]>
* OML: New version 2.3.7.
* server/client_handler.c (process_text_data_message): Fix bug in
string handling for text protocol. The client_handler_free()
function free()'s the string value pointers, but the text protocol
was not allocating new space for the pointers, only copying the
pointers (shallow copy). This caused a crash when text clients
disconnected. Fixes bug #266.
2010-03-17 <[email protected]>
* lib/client/misc.c (oml_value_copy): Make oml_value_copy() always
copy strings into memory that is owned by the destination OmlValue
object. Fixes bug #259.
* configure.ac: Don't generate the build system for the
applications anymore, and don't build them (as they are removed on
the master branch, and they now have their own separate
repository, git://mytestbed.net/oml-apps.git).
2010-03-12 Jolyon White <[email protected]>
* OML: New version 2.3.5.
* OML: Fix longstanding bug in averaging filter. Filter now only
averages over all samples received since previous filter output
was generated.
2009-12-16 Jolyon White <[email protected]>
* OML: New version 2.3.4.
* OML: Fix bugs: #171 (backported from trunk), #225
* OML: Open bug list: #172, #168, #149, #90, #24.
* liboml2: Fix bug in marshalling doubles on Mac OS X (backported
from trunk).
* oml2-server: Added a man page.
* otr2: Change name of a measurement point to be clearer.
2009-12-07 Jolyon White <[email protected]>
* OML: New version 2.3.3.
* OML: Fix bugs: #196, #223
* liboml2: Fix a memory allocation bug in client filters; fix
definitions of omlc_set_string() and omlc_set_const_string()
macros.
* oml2-server: Fix a bug that prevented clients from multiple
different experiments from connecting to the server at the same
time. This caused the server to hang in an infinite loop. Fix
the server to close the socket when a client disconnects, to
prevent lots of sockets stuck in CLOSE_WAIT on the server host
machine. Removed a meaningless log message from the server log
output.
* iperf_oml2: Change names of MP's to be more understandable; fix
a portability issue.
2009-09-18 <[email protected]>
* OML: New version 2.3.1.
* liboml2: Fix bug #177, segfault when attempting to marshall NULL
strings.
2009-09-09 <[email protected]>
* OML: Release version 2.3.0.
* OML: Package is now autoconfiscated.
* OML: Package now builds under Mac OS X (but is not well tested
on that platform).
* OML: Layout of the source package has been re-organized to make
it cleaner.
* oml2-server: Added server capability to re-open existing
experiment databases and add new measurements to them. This
allows long running experiments where the client applications may
be restarted many times.
This required the server to create two additional tables in the
experiment database: '_experiment_data' and '_senders'. The
'_senders' table stores a mapping between the client's sender
id (as specified in either the --oml-id command line option, the
OML_NAME environment variable, or 'id' attribute of the XML
configuration file on the client side) and the server-generated
numeric id that is stored in the 'oml_sender_id' column of the
measurement tables. The '_experiment_metadata' table is a generic
key-value table that can be used to store arbitrary experiment
metadata. Currently the OML server uses this to store the
experiment's start-time, which is the time reference against which
all of the client data timestamps are calculated.
* oml2-server: New text-based protocol added.
lib/client/ruby/oml.rb implements a client for this protocol.
* oml2-server: Removed buffer overflow conditions in SQL prepared
statement generation, and removed an unintended artificial limit
on the size of table schema (both number of characters and number
of columns).
* oml2-server: Significant improvements in error condition
handling on the server. Clients are now dropped if the server
detects a protocol error.
* oml2-server: Server was given a thorough code review and
numerous segfaults, memory leaks, and other bugs were fixed. Ran
the server under valgrind memcheck to find run-time memory errors,
and fixed another bunch of numerous memory handling errors.
* liboml2: XML configuration file format has been modified to be
more expressive. This change is incompatible with XML
configuration files from previous versions of OML. See
app/simple/config.xml for an example of the new format.
* liboml2: Added a prototype custom filter API. This is not
documented and will be modified in the next release.
* liboml2: Client headers are now suitable for direct inclusion in
C++ translation units; they automatically perform extern "C"
guarding as appropriate.
* liboml2: Client now detects server disconnects and handles them
gracefully. If a measurement stream that was connected to an OML
server suffers a disconnect, the stream is shut down (or rather,
its writer is) and the application continues, sending measurements
to any remaining streams with active writers (whether to file or
to another OML server).
* liboml2: Added OML_SERVER environment variable as an alternative
way to specify the server to which to send measurements. This is
overridden by an XML configuration file or the --oml-server
command line option, if present. The file:// protocol is
understood by this environment variable.
* liboml2: Added --oml-list-filters client command line option.
* liboml2: Added new standard deviation filter (stddev).
* oml2-server, liboml2: Server and client now both report the same
version number (which is identical to the package version number).
* oml2-server, liboml2: Server and client now both report the
protocol version to their logging streams on startup.
* oml2-server, liboml2: Fixed lots of compiler warnings.
* apps: Integrated the OTG project source into the OML project
tree. The OTG source tree builds two applications, otg2 and otr2.
* apps: All applications except for otg2, otr2, and the simple
example application, now name their binaries according to the
format '<app_name>_oml2', to signify that they are OML2 client
applications.
* apps: Added radiotap support to trace_oml2 (app/omf_trace).
* apps: Added application iperf under app/iperf.