-
Notifications
You must be signed in to change notification settings - Fork 262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Port RRDtool from libart to Cairo #1
Labels
Comments
[oetiker] this is now being sponsored ... will get to it next week. |
[oetiker] integrated in 1.2.99devl. |
[human] [http://conficker.bij.pl/free/map.html #1 (Port RRDtool from libart to Cairo) – RRDtool Trac] |
This was referenced Sep 11, 2012
Closed
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Jun 24, 2016
…ntext Multithreaded applications such as ibms_perfmgr can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1 Thread oetiker#2 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread: - Thread oetiker#2 invokes stat() on the directory /var/cache/bxrrd/ramdisk/data/ibms /switch/isw-STK6-1/board0/chip1/port3. Assuming this directory has not been created yet, thread oetiker#2 gets ready to create it but gets scheduled by the OS. /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist [ SCHEDULED ] - In the meantime, thread oetiker#1 creates this directory recursively: /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1, does not exist, create - Thread oetiker#2 wakes up after beeing scheduled and attempts to create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1 (which did not exist before the thread was scheduled) The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail: Tue Feb 10 00:30:15: Info: rrdtool_process_mgr: Command: 'CREATE ibms/switch/isw-IBU4-2/line7/chip1/port6/err.rrd [ .. ]', answer: ' Cannot create: ' Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Jun 27, 2016
…ntext Multithreaded applications such as ibms_perfmgr can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1 Thread oetiker#2 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread: - Thread oetiker#2 invokes stat() on the directory /var/cache/bxrrd/ramdisk/data/ibms /switch/isw-STK6-1/board0/chip1/port3. Assuming this directory has not been created yet, thread oetiker#2 gets ready to create it but gets scheduled by the OS. /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist [ SCHEDULED ] - In the meantime, thread oetiker#1 creates this directory recursively: /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1, does not exist, create - Thread oetiker#2 wakes up after beeing scheduled and attempts to create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1 (which did not exist before the thread was scheduled) The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail: Tue Feb 10 00:30:15: Info: rrdtool_process_mgr: Command: 'CREATE ibms/switch/isw-IBU4-2/line7/chip1/port6/err.rrd [ .. ]', answer: ' Cannot create: ' Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Jun 27, 2016
…ntext Multithreaded applications such as ibms_perfmgr can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1 Thread oetiker#2 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread: - Thread oetiker#2 invokes stat() on the directory /var/cache/bxrrd/ramdisk/data/ibms /switch/isw-STK6-1/board0/chip1/port3. Assuming this directory has not been created yet, thread oetiker#2 gets ready to create it but gets scheduled by the OS. /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist [ SCHEDULED ] - In the meantime, thread oetiker#1 creates this directory recursively: /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1, does not exist, create - Thread oetiker#2 wakes up after beeing scheduled and attempts to create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1 (which did not exist before the thread was scheduled) The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail: Tue Feb 10 00:30:15: Info: rrdtool_process_mgr: Command: 'CREATE ibms/switch/isw-IBU4-2/line7/chip1/port6/err.rrd [ .. ]', answer: ' Cannot create: ' Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Jun 27, 2016
…ntext Multithreaded applications such as ibms_perfmgr can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1 Thread oetiker#2 creates /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread: - Thread oetiker#2 invokes stat() on the directory /var/cache/bxrrd/ramdisk/data/ibms /switch/isw-STK6-1/board0/chip1/port3. Assuming this directory has not been created yet, thread oetiker#2 gets ready to create it but gets scheduled by the OS. /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist [ SCHEDULED ] - In the meantime, thread oetiker#1 creates this directory recursively: /var, already exists -> skip /var/cache, already exists -> skip /var/cache/bxrrd, already exists -> skip /var/cache/bxrrd/ramdisk, already exists -> skip /var/cache/bxrrd/ramdisk/data, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch, already exists -> skip /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1, does not exist, create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1/board0/chip1/port1, does not exist, create - Thread oetiker#2 wakes up after beeing scheduled and attempts to create /var/cache/bxrrd/ramdisk/data/ibms/switch/isw-STK6-1 (which did not exist before the thread was scheduled) The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail: Tue Feb 10 00:30:15: Info: rrdtool_process_mgr: Command: 'CREATE ibms/switch/isw-IBU4-2/line7/chip1/port6/err.rrd [ .. ]', answer: ' Cannot create: ' Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Aug 23, 2016
…ntext Multithreaded applications can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port1 Thread oetiker#2 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread. The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail. Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Aug 23, 2016
…ntext Multithreaded applications can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port1 Thread oetiker#2 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread. The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail. Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Aug 24, 2016
…ntext Multithreaded applications can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port1 Thread oetiker#2 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread. The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail. Fixed by checking errno after invoking mkdir when creating directories recursively.
Marek77
pushed a commit
to Marek77/rrdtool-1.x
that referenced
this issue
Aug 24, 2016
…ntext Multithreaded applications can issue CREATE commands simultaneously from several threads. Such commands may require to create directories from the same root path. Example: Thread oetiker#1 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port1 Thread oetiker#2 creates /var/cache/rrd/data/switch/isw61/board0/chip1/port3 If 2 threads attempt to create the above directories, one thread may fail when creating a directory already created by the other thread. The mkdir syscall fails with an error (errno = EEXIST), which causes the whole CREATE transaction to fail. Fixed by checking errno after invoking mkdir when creating directories recursively.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
It seems that everybody is loosing interest in libart. So we should look at this too. I guess Cairo is going to be king of the hill for some time, so for 1.3 I am looking at switching toolkit again.
The text was updated successfully, but these errors were encountered: