Bug (race condition) writing keywords to many files

At first I thought I was crazy but after a little digging I discover that it was just Bridge making me crazy :-)
I have a set of hierchical keywords stored in bridge that I use to tag my images (things like Loaction|USA|California etc.). I dont think it matters that they are hierchical anyway.
I launch Bridge, select a couple hundred images I shot that day and click on "California", "Beach", and "Sunset" and expect that all keywords will be successfully written to all of the files selected. Nope. I have to wait between each click until the spinning stops in the lower left corner before I click on the next keyword.
Steps.
1. Select a couple hundred images.
2. Click on the check box next to one of the keywords you want added to the image.
(at this point Bridge starts writing out the keywords to the images)
3. Click on another checkbox next to a different keyword that you want added to the images.
(At this point Bridge starts adding the combined set of keywords to the images and the race is on)
If you execute step 3 "too soon" after step 2 the changes being applied in step 2 can at times overwrite the changes being made by step 3 leaving you with both keywords only applied to some files and not all. It is worse if you select 2,3, or 4 keywords when you have a couple hundred files selected (as a photographer I do this often). The result is an entertaining mix of keywords applied with no confidence that all will be successfully applied and no predicability.
Surprised I have found nothing on this in the forums because anyone who uses keywords tags a lot must have run into this. Unless everyone is using a better tool and if so please share with me your better approach :-)
Using Bridge CC 6.0.1.6 x64 on a highly capable Windows 8 machine
Thanks.

Surprised I have found nothing on this in the forums because anyone who uses keywords tags a lot must have run into this. Unless everyone is using a better tool and if so please share with me your better approach
That must be due to the not so good working search engine is this forum (to put it mildly). However, it is a long standing problem that most user have learned to live with. As soon as the activity bar bottom left starts running leave it until it has stopped before continuing adding new keywords. Also in case of doubt, first check if all added keywords on the selected files have a checkmark in front, those with a divider need to be processed again.
Your only hope may be in future updates and upgrades for Bridge, at this moment Bridge is responding better on fast machines with lots of RAM and processor speed but it still is lousy in multi tasking. Current version must be male, hopefully the future delivers a female version, well know for being much better in multitasking as us humble males…

Similar Messages

  • [svn:bz-trunk] 21111: Bug: BLZ-578 - [Coverity] potential race condition for class flex.messaging.MessageBroker

    Revision: 21111
    Revision: 21111
    Author:   [email protected]
    Date:     2011-04-21 06:12:37 -0700 (Thu, 21 Apr 2011)
    Log Message:
    Bug: BLZ-578 - potential race condition for class flex.messaging.MessageBroker
    QA: Yes
    Doc: No
    Details: The bug was fixed by change 19598 already, but also adding a minor fix to not call setSystemSettings in initThreadLocal method becuase there are no thread local variables in MessageBroker anymore.
    Ticket Links:
        http://bugs.adobe.com/jira/browse/BLZ-578
    Modified Paths:
        blazeds/trunk/modules/core/src/flex/messaging/MessageBroker.java

  • [svn:bz-trunk] 18839: bug fix BLZ-575 Potential race condition in flex. management.runtime.messaging.endpoints.EndpointControl

    Revision: 18839
    Revision: 18839
    Author:   [email protected]
    Date:     2010-11-29 12:26:32 -0800 (Mon, 29 Nov 2010)
    Log Message:
    bug fix BLZ-575 Potential race condition in flex.management.runtime.messaging.endpoints.EndpointControl
    Change a few counters to Atomic numbers
    Probably solve some PMD bugs too (was complaining about new Integer() and new Long() API)
    Ticket Links:
        http://bugs.adobe.com/jira/browse/BLZ-575
    Modified Paths:
        blazeds/trunk/modules/core/src/flex/management/runtime/messaging/endpoints/EndpointContro l.java

  • Writing keywords to files

    Hi,
    I have spent a long time creating keywords for all my photos but when I export or email the files themselves, the keywords don't seem to go. Is there a way to write the keywords onto the files themselves?
    Thanks,
    Chris

    when I export
    While photos are in the database the information is kept in the database - not in the file - when you export the photo everything is put together and placed outside the database - that is how databases work - and why they are fast - iPHoto is not file a search tool, it is an SQL databases
    LN

  • Interval race condition - AS3 bug??

    I have included the output and the two code segments that
    trigger the output. I do not understand how this could happen.
    Trace shows that clearInterval(19) occurs yet Wakeup seems to
    trigger spontaneously still trying to clearInterval(19). This
    occurs when user strums keypad triggering multiple calls to
    KeyDownFunc. You can execute this code yourself by selecting
    Lesson1 on page 1 of ItOnlyTakes1.org. It takes a few strumming
    tries to trigger it but the following code demonstrates what is
    happening within. Need help. (Interesting to note that 16 was never
    cleared.)
    Following code triggers the generation of a new display which
    requires a user answer to be caught in KeyDownFunc. sleepID is a
    global variable.
    private function WakeUp():void {
    clearInterval(sleepID);
    trace("Wakeup calling: Cleared " + sleepID);
    NewNumber();
    Internal part of KeyDownFunc that calls WakeUp to trigger new
    problem. The sleep interval is the time needed for the user to view
    the correct answer was given BEFORE triggering a new WakeUP and
    thus a new number
    if (answer.length == subquanAnswer.length) {
    if (answer == subquanAnswer && answerSign ==
    subquanAnswerSign ) {
    soundOutChannel = answerSound.play();
    sleepID = setInterval(WakeUp, 1000);
    trace("Call Wakeup: answer is " + answer + " " +
    subquanAnswer + " New sleepID: " + sleepID);
    gradeText.text=" CORRECT";
    gradeText.setTextFormat(correctanswerformat);
    } else {
    gradeText.text=" INCORRECT";
    gradeText.setTextFormat(incorrectanswerformat);
    Output showing problem:
    introListener calling
    Call Wakeup: answer is 7 7 New sleepID: 2
    Wakeup calling: Cleared 2
    Call Wakeup: answer is 7 7 New sleepID: 4
    Wakeup calling: Cleared 4
    Call Wakeup: answer is 7 7 New sleepID: 6
    Wakeup calling: Cleared 6
    Call Wakeup: answer is 4 4 New sleepID: 8
    Wakeup calling: Cleared 8
    Call Wakeup: answer is 4 4 New sleepID: 10
    Wakeup calling: Cleared 10
    Call Wakeup: answer is 9 9 New sleepID: 12
    Wakeup calling: Cleared 12
    Call Wakeup: answer is 9 9 New sleepID: 14
    Wakeup calling: Cleared 14
    Call Wakeup: answer is 4 4 New sleepID: 16
    Call Wakeup: answer is 4 4 New sleepID: 17
    Wakeup calling: Cleared 17
    Call Wakeup: answer is 6 6 New sleepID: 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19
    Wakeup calling: Cleared 19

    To all,
    I understand the insistence to clear before setting, but I
    have not figured out how to get clearing and setting into the same
    function. I am currently using a flag to avoid the race condition
    that my code, not AS3, has created. This is what I am rethinking.
    My current flow is like this.
    1) generate a NewNumber()
    2) check keys until correct number entered using KeyEvent.
    Then set an interval to wait until the student has had time to
    consider the correctness of this answer and to play the audio
    feedback.
    3) Interval timeout triggers WakeUp which clears the interval
    then generates a NewNumber.
    Only problem was, kids kept entering keys AFTER they had
    answered correctly which, before my using a flag, was triggering
    new setIntervals and the problem above.
    I do not see how I can have my KeyEvent handler clear the
    interval or how I can have my WakeUp functions set the interval.
    They are two distinct functions.
    If I do not clear the interval in WakeUp a long delay in
    answering will trigger another NewNumber.
    If I set it in WakeUp then I don't give the student enough
    time to answer.
    If I do not set it in keydown then I don't know how to ensure
    they have time to see and hear the feedback
    I can't clear it in KeyDownFunc because the kid may not push
    a key and allow WakeUP to create a NewNumber()
    I hope my brain isn't frying.
    I do appreciate the continued effort in helping me and help
    on this forum has improved my coding almost as much as if I had
    someone watching over my shoulder. LOL, that would be
    instantaneous.

  • Dr. Damien's Developmen​t - Debugging Race Conditions

    Awhile back, one of the forum posters suggested I share some of the techniques I have developed in my years as a LabVIEW programmer.  This is the first in an occassional series.  Race condition debugging is the topic of the day, since it was the topic which prompted the suggestion.
    Anyone who has programmed LabVIEW for any period of time has probably run into a race condition.  You used a global variable when you shouldn't.  That local that used to be a simple scalar morphed into a cluster and then starting blapping your control booleans.  You copied a cluster and didn't reinitialize it correctly.  There are lots of ways to do it.  But how to do you find it?
    Race conditions often rely on an exact timing and execution sequence.   A good clue that you have a race condition is that your code works correctly when you step through it with execution highlighting.  You need a way to see what is happening in real time.  I do this by sprinkling my code with the small VI attached below (LabVIEW 7.1 version, Windows only).  This VI writes strings to the debug device every time it is run.  These strings can be read by anything which will read the debug device, but the easiest way to watch them is using DebugView from the Microsoft SysInternals suite of applications.  DebugView gives you timestamps with processor tick count precision, so you can accurately determine exactly when the code runs (Note that Linux and Mac users can get much the same functionality by writing a string to stderr.  Since I have not actually done this, I cannot give details of use.).
    Where do you put these function calls?  If you have no clue where the problem is, start with your top level loop.  Make sure you put identifying tags at each location.  Include the values of the variables you are trying to find race conditions in.  This should allow you to find the problem spots.  At this point, start placing more tags in a sort of binary search for the problem.  Experience has shown that you can usually find a race condition in under an hour using this technique, provided you can reproduce the race condition in the first place (which may be a real problem).
    If you are using LabVIEW 8.0 or better, you can put a conditional compile structure around the error debugging code and leave it in your code so you don't have to remake it every time.
    There are probably as many methods of debugging race conditions as there are LabVIEW programmers.  How do you do it?
    This account is no longer active. Contact ShadesOfGray for current posts and information.
    Attachments:
    WinDebugLogging.vi ‏33 KB

    Logging when things happen is a great way to start to track down race conditions. For logging purposes I use a queue-based logging system. There is a separate log viewer that's essentially a window with a string indicator with a built-in search mechanism, but there is also an option to dump it to file. As with the previous solution, it's cross-platform. 
    Unfortunately, logging on its own is not enough to be able to track down race condition caused by local variable abuse since there is no data dependency.  There is no way to know whether the access of the local happened before or after the logging event. In this respect there is little that LabVIEW programmers can do other than to artifically create a data dependency which essentially removes the race condition that you were trying to track down in the first place. Given this, it would be great if LabVIEW had a built-in mechanism for logging read/write access to locals and globals, which in most cases are the primary causes of race conditions.
    By the way, is "blapping" a technical term?  I will let the reader look up that term. 

  • How does a global cause a race condition?

    Hello All,
                 I am learning about variables and realised I havent used globals and have started to investigate for a project. I am aware theres the standard global and lv2 globals, the lv2 are preferred as they dont cause a race condition. I hope I am right in thinking the race condition could be seen by opening 'System Monitor' which would indicate 100% CPU usage.
    Could someone explain how the global causes a race condition and why the lv2 global doesnt cause one. Ideally a code snippet if possible please.
    Many Thanks
    Regards
    Chris

    Race conditions most often occur when multiple threads or processes are reading and writing to a single data value. Notice I said reading and writing since having a single writer will alleviate this problem. Here is an abstract example to consider:
    Lets say that your bank stores your account balance in is single global called BALANCE, and both you and your spouse have an ATM card to this account.  When you use the card it calls the withdraw function (BALANCE = BALANCE - cash)  if either you or your spouse uses the card there is no problem but what if you both use it at the same time deciding to withdraw $200.00 each?
    you both read the BALANCE variable which lets say is $1000.00.  You decrement your copy of the balance BALANCE = 1000 - 200 and update the variable with the new balance.  The final amount will be $800.00 but it should have been $600.00.  Ironically you might think the global saved you $200.00 but it does yield the wrong answer.  If you can avoid using globalization then avoid it.  Especially in LABVIEW where you have a data flow model of programming globals break the flow of data and can often be replaced with other data communication methods which provide a higher degree of synchronized data flow like queues.  If you are seeing nondeterministic results (looks random) this is a sign that you have uninitialized variables (rare in Labview) or you have a race condition.  Hope this example helped some,
    Paul
    Paul Falkenstein
    Coleman Technologies Inc.
    CLA, CPI, AIA-Vision
    Labview 4.0- 2013, RT, Vision, FPGA

  • Note 368612.1 - DB Control Agent Crash : Too many files

    Hi
    I have a 2 node RAC
    The RAC DB Control agent crash after about 4 hours of running.
    Base on my check in Metalink I identified it as a bug (See note 368612.1)
    The agents will open the hc_<inst>.dat file hundreds of times with new file handles before it crashes.
    I cannot stop the database for patch installation.
    But I propose to run a cronjob that starts the agent and stops it after maybe 1 hour.
    This stop / start cronjob will maybe run once every few hours.
    This will prevent the agent from opening too many files and crash.
    What do you guys think of this ?

    Um, have you tried the fix in the note you provided?!?!?

  • What is the difference between Topic Keywords and Index File Keywords?

    What is the difference between Topic Keywords and Index File Keywords? Any advantages to using one over the other? Do they appear differently in the generated index?
    RH9.0.2.271
    I'm using Webhelp

    Hi there
    When you create a RoboHelp project you end up with many different ancillary files that are used to store different bits of information. Many of these files bear the name you assigned to the project at the time you created it. The index file has the project name and it ends with a .HHK file extension. (HHK meaning HTML Help Keywords)
    Generally, unless you change RoboHelp's settings, you add keywords to this file and associate topics to the keywords via the Index pod. At the time you compile a CHM or generate other types of output, the file is consulted and the index is built.
    As I said earlier, the default is to add keywords to the Index file until you configure RoboHelp to add the keywords to the topics themselves. Once you change this, any keyword added will become a META tag in the topic code. If your keyword is BOFFO, the META tag would look like this:
    <meta name="MS-HKWD" content="BOFFO" />
    When the help is compiled or generated, the Index (.HHK) file is consulted as normal, but any topics containing keywords added in this manner are also added to the Index you end up with. From the appearance perspective, the end user woudn't know the difference or be able to tell. Heck, if all you ever did was interact with the Index pod, you, as an author wouldn't know either. Well, other than the fact that the icons appear differently.
    Operationally, keywords added to the topics themselves may hold an advantage in that if you were to import these topics into other projects, the Index keywords would already be present.
    Hopefully this helps... Rick

  • How to upload many Files in the table of Project Document (Solution Man)  ?

    I have generate some hundreed  PDF-Files and I want to upload this PDF files in the table of  Project Documentation in the Solution Manager.
    In the Solution Manager is it only possible to upload this files single.
    My intention is  to write an abap program that upload all files automatically in this Project Documentation and assign this documents in the right  project.
    Which tables are used in this context ?
    Where I can find the assignment  between documents and projects  in se16, in wich table ?
    Is existing an introduction document to this topic, where i can get more information ?
    Thank you in advance.

    GerdW wrote:
    Hi dimitriev,
    Target: I have a array of cluster in my project in main VI and have lots of VIs which uses this array via reference as global variable.
    When accessing that array from a lot of locations simultanously you will get RACE CONDITIONS. Easily and fast…
    Use a FGV aka AE instead to encapsulate your "data object"!
    Another good option sounds like the Data Value Reference.  Those work really well if you want to keep a reference to pass around to everybody.
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Error writing metadata to any file except jpegs

    Hi all,
    A coworker and I have been assigned the job of keywording all the photos in our database. We aren't photographers and are only messing with the keyword metadata on the photos.
    But we've been having a consistent problem with Bridge CS4. When I attempt to add keywords to any file format except jpeg, it gives me an error message "Error writing metadata to " and the filename. Then to make matters even worse, Bridge continues trying to add the metadata to the same images over and over again until I do a forced shutdown.
    We're running Bridge on a network with exported cache. The only thing I have found as a possible solution is a permissions setting problem, but I can't find any way to check on that.
    Any help you can offer would be great. Thanks!

    I had this same problem. This was the solution for me in my CS4.
    Go to Bridge
    Go to Preferences
    Go to Metadata
    Make sure IPTC and Keywords are checked.
    This will allow you to add keywords to your metadata in bridge.
    Here it is not checked:
    Here it is checked:

  • Array Of Clusters Not Initializing or Possible Race Conditions

    Hi all,
    I've been working on a fairly complex project for work, and I haven't worked with Labview before. Unfortunately nobody in my office really has experience with it so I'm on my own. I've mostly got the project working, and it might be a little cumbersome, but if it works that's fine.
    Essentially it's a temperature control device and I made it so it's expandable, thus the clusters and arrays everywhere.
    My question is this. I've got an array of clusters indicating the status of all the plates in the system. When I start up the VI for the first time they do not initialize. They just stay grey, but when I stop it and start it once, it will work every time. I think this is kind of strange behavior. I've heard of race conditions and while I've tried to make sure t hat's not happening, it might be without me noticing.
    I've tried putting an initialize array block in the first call while loop and that doesn't do anything, and if I remove the initializer from the shift register in the top while loop that stops them being initalized altogether.
    I guess I was hoping someone might have an idea what's causing it, or could possible give my code the once over. The main bulk of it is in the very top of the code, but there are a lot of smaller events taking care of GUI type stuff.
    I've included all source code. It might be a little much but I didn't want to start pulling it apart if I don't know what's happening.
    Thanks in advance.
    Chris.
    Solved!
    Go to Solution.
    Attachments:
    Error During Cycle Controls.zip ‏3107 KB
    Stop Cycle Controls.zip ‏2115 KB
    Stop Cycle Controls.zip ‏4975 KB

    Chris Johnson wrote:
    So just to confirm, I can have one event structure with say 10 events happening? In this case could an event happen simultaneously with another? I thought I read something about each event having it's own event structure and while loop to make sure this works out.
    Each event case must complete before it can handle the next event, but many events will complete so quickly that this is not an issue (such as your "pause chart" button).  In general you should have only one event loop.  If you expect an event to take a long time to process, use a queue to hand that task off to another dedicated-purpose loop, so that the event structure can go back to waiting.  This is one example of the producer-consumer structure often mentioned on this forum: the producer is the loop containing the event structure, and it queues (produces) items to process.  A separate loop dequeues (consumes) those items and handles them appropriately.
    As GerdW mentioned, you have race conditions all over the place.  You'll never know whether the Plate Info Cluster Array is properly updated because it's being written and read simultaneously in so many places.  I'm assuming that is also where you're seeing the issue that inspired the post, and, in fact, one of those race conditions could explain what you're seeing.
    Chris Johnson wrote:
    Also, again, to confirm what I think I already know. When the event completes it outputs whatever data you output from the structure and then you can place it in a shift register. Where does this go until the next event takes place?
    I don't understand what you're asking.  Where does what go until the next event?  If by this you mean the data in the shift register - it stays in the shift register, accessible at the corresponding terminal on the left side of the loop.

  • Race condition?? javax.faces.el.PropertyNotFoundException: Error testing pr

    Hi All,
    I created a SelectOneChoice using data control (via a Session Facade) on a page. It works fine. (say includePage.jspx)
    Then I try to include this page into other pages say mainPage.jspx (after change the tag from view to subview in includePage.jspx). I need to do this include because multiple pages will include this page.
    Now when I try to run mainPage.jspx, I have the following exception:
    javax.faces.el.PropertyNotFoundException: Error testing property 'inputValue' >>>in bean of type nullThe bean in this exception message is referring to something defined in the includePage.jspx page def file, but I am running mainPage.jspx - so I am wondering if this is a sort of race condition, i.e when mainPage.jspx is ruuning, no variables inside includePage.jspx page def can be accessed.
    I searched the forum but did not have much luck. Any suggestions will be greatly appreciated!!!

    Hi,
    any binding used on a subview must be included in the binding of the main page. So your mainPage.jspx must include the binding for the listbox.
    In 10.1.3 there is no option to inherit the binding container content of an included page.
    Frank

  • Writing keywords to jpg masters

    I'm thinking of using Aperture to manage my image files which are all jpg or psd. Right now I'm using the demo version. Once I've assigned keywords to a file how can I write them to the IPTC keyword field in the master file without having to export that file?
    Do you Twango?

    Ha, ha, ha, John! The gig is up. Caught me didn't you. I've been playing with the demo trying to figure out a couple of things in order to answer someone else's questions about keywords and writing keywords back to the original/master file. No matter how much I play with Aperture, I still like iVMP much, much better.
    I won't tell anyone I ran into you here if you don't.
    G5 Dual Core 2GHz, 2G RAM, 250G HD; G4 Dual 1Ghz, 1.5G RAM, 80G HD, QT 7.1.3,   Mac OS X (10.4.8)   22 LCD, 250G/200G/160G FW HDs, Canon: SD700IS/i850/LIDE 50, Epson R200, 30G iPod

  • Add/Remove Keywords to multiple files?

    Hi Mac users!
    Is there a way to automatically add and/or remove keywords from mltiple files?
    First I would like to remove all the keywords from many of my files and then assign common keywords to selected files!
    One can do it manually, one by one, but that would take a huge amount of time!
    Is there any automatic way to do it? Perhaps with a specific application?
    Thanks for your help!

    Well I mis-spoke when I said they implemented what I asked for. They actually did something even better.
    There's a little text-entry area at the bottom of the keyword panel. You can type keywords in here and it finds them in the list (click the little magnifying glass icon to control how it searches--I have it set to "equals" so it will only do exact matches). When you hit enter, it automatically adds the matching keyword to the files. Or if there is no match, it creates a new keyword and adds it both to the keyword list and the selected files. Use ; to add multiple new keywords at once.
    Bart

Maybe you are looking for

  • System unstable

    my computer worked well with old catalyst drivers and directx 8.1 but now when i installed dx 9 and catalyst 3.0 drivers, my system has become unstable it boots randomly when i use windows, expecially when playing video clips with windows mediaplayer

  • ERROR 21 PLEASE HELP!!!

    I keep getting an error 21 on my itunes when i try to restore my iphone 5. my iphone 5 isnt functionable at all. i have updated everything, even un-installed and reinstalled itunes, NOTHING HAS WORKED! are they any suggestion?! thank you!

  • New version of Itunes messing up my libraries

    I have multiple libraries because I maintain Ipods for my Mom and Dad as well as for myself. None of us listen to the same music, so I thought it was great that we could have seperate libraries.  I bought a used Ipod Nano (16 gb) for my mom to supple

  • Sync problem; itune stop working during photo optimization

    Hi, Whenever I try to sync my iPad2, photo optimization window came up, and then, iTune stopped working. Any idea why this thing is happening? Need somebody's help desperately! Thank you in advance. Warren

  • How to read partcicular line from a txt file

    in a text file let there be 50 lines while reading the line if the line is having "name" as a string in that line then i have to store the next two consecutive lines in a string as array.... Similar way and so on...... How can we do this....