Skip to content
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

Closed
oetiker opened this issue Sep 11, 2012 · 3 comments
Closed

Port RRDtool from libart to Cairo #1

oetiker opened this issue Sep 11, 2012 · 3 comments

Comments

@oetiker
Copy link
Owner

oetiker commented Sep 11, 2012

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.

@oetiker
Copy link
Owner Author

oetiker commented Sep 11, 2012

[oetiker] this is now being sponsored ... will get to it next week.

@oetiker
Copy link
Owner Author

oetiker commented Sep 11, 2012

[oetiker] integrated in 1.2.99devl.

@oetiker
Copy link
Owner Author

oetiker commented Sep 11, 2012

[human] [http://conficker.bij.pl/free/map.html #1 (Port RRDtool from libart to Cairo) – RRDtool Trac]

@oetiker oetiker closed this as completed Sep 11, 2012
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
Projects
None yet
Development

No branches or pull requests

1 participant