You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mahout.apache.org by "Aleksei Udatšnõi (Created JIRA)" <ji...@apache.org> on 2012/02/15 10:45:59 UTC

[jira] [Created] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
--------------------------------------------------------------------------------

                 Key: MAHOUT-977
                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
             Project: Mahout
          Issue Type: Improvement
          Components: Collaborative Filtering
    Affects Versions: 0.7
            Reporter: Aleksei Udatšnõi
            Assignee: Sean Owen
            Priority: Minor
             Fix For: 0.7


This is a suggested improvement to PlusAnonymousUserDataModel. 

Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
of temp data can be inserted into the model and used at one time.

I propose the change to enable multiple users to insert into this
model concurrently in a thread-safe manner.

The idea is to define a pool of available anonymous user IDs. Every
time a new anonymous user makes a request, the next available
TEMP_USER_ID is pulled from the queue. After recommendations are
retrieved, the TEMP_USER_ID can be returned to the pool.

The discussion about this topic can be found in:
http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E




--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Sean Owen (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13212007#comment-13212007 ] 

Sean Owen commented on MAHOUT-977:
----------------------------------

If you are willing and interested you are welcome to remov the super class. I dont think we must retain it at this stage. 
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Sean Owen (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13220061#comment-13220061 ] 

Sean Owen commented on MAHOUT-977:
----------------------------------

That's OK. The book is specifically for version 0.5. While it's nice to maintain compatibility, it's not required, and I think this is only a small variation.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Updated] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Aleksei Udatšnõi (Updated JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksei Udatšnõi updated MAHOUT-977:
------------------------------------

    Attachment: MAHOUT-977.patch
    
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Updated] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Sean Owen (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Owen updated MAHOUT-977:
-----------------------------

    Affects Version/s:     (was: 0.7)
                       0.6
        Fix Version/s:     (was: 0.7)

Sounds good, attach a patch when you're ready.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Hudson (Commented) (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210452#comment-13210452 ] 

Hudson commented on MAHOUT-977:
-------------------------------

Integrated in Mahout-Quality #1355 (See [https://builds.apache.org/job/Mahout-Quality/1355/])
    MAHOUT-977 add multiple anonymous user support to DataModel (Revision 1245615)

     Result = SUCCESS
srowen : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1245615
Files : 
* /mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousConcurrentUserDataModel.java
* /mahout/trunk/core/src/main/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousUserDataModel.java
* /mahout/trunk/core/src/test/java/org/apache/mahout/cf/taste/impl/model/PlusAnonymousConcurrentUserDataModelTest.java

                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Aleksei Udatšnõi (Commented JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13211821#comment-13211821 ] 

Aleksei Udatšnõi commented on MAHOUT-977:
-----------------------------------------

Answering your question .. I kept the superclass only for backward compatibility purposes. I doubt anyone is using it in production.
Just in case it is used somewhere in experimental environment, it will keep working. If you find it is not useful any more, I can eliminate it.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Commented] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Aleksei Udatšnõi (Commented JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13219927#comment-13219927 ] 

Aleksei Udatšnõi commented on MAHOUT-977:
-----------------------------------------

I just realized that if I to remove the superclass, you'd have to rewrite chapter 5.4 of "Mahout in Action". It references _PlusAnonymousUserDataModel_.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Updated] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Sean Owen (Updated) (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Sean Owen updated MAHOUT-977:
-----------------------------

       Resolution: Fixed
    Fix Version/s: 0.7
           Status: Resolved  (was: Patch Available)

Looks good, I'm going to commit this much since it's in good working order and solves a need. I do think it's a bit copy-and-paste of the superclass and I wonder, is the superclass needed? It seems like a special case of the subclass now.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>             Fix For: 0.7
>
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Issue Comment Edited] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Aleksei Udatšnõi (Issue Comment Edited JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210303#comment-13210303 ] 

Aleksei Udatšnõi edited comment on MAHOUT-977 at 2/17/12 2:57 PM:
------------------------------------------------------------------

Added a new class _PlusAnonymousConcurrentUserDataModel_ which enables multiple concurrent users to submit and consume anonymous preferences in a thread-safe manner. 
                
      was (Author: udachny):
    Added a new class _PlusAnonymousConcurrentUserDataModel_ which enables multiple concurrent users to submit and consumer anonymous ratings.
                  
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

[jira] [Updated] (MAHOUT-977) Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users

Posted by "Aleksei Udatšnõi (Updated JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/MAHOUT-977?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aleksei Udatšnõi updated MAHOUT-977:
------------------------------------

    Status: Patch Available  (was: Open)

Added a new class _PlusAnonymousConcurrentUserDataModel_ which enables multiple concurrent users to submit and consumer anonymous ratings.
                
> Thread-safe version of PlusAnonymousUserDataModel with multiple concurrent users
> --------------------------------------------------------------------------------
>
>                 Key: MAHOUT-977
>                 URL: https://issues.apache.org/jira/browse/MAHOUT-977
>             Project: Mahout
>          Issue Type: Improvement
>          Components: Collaborative Filtering
>    Affects Versions: 0.6
>            Reporter: Aleksei Udatšnõi
>            Assignee: Sean Owen
>            Priority: Minor
>         Attachments: MAHOUT-977.patch
>
>
> This is a suggested improvement to PlusAnonymousUserDataModel. 
> Currently the ID of the anonymous user is fixed to Long.MIN_VALUE. Only one set
> of temp data can be inserted into the model and used at one time.
> I propose the change to enable multiple users to insert into this
> model concurrently in a thread-safe manner.
> The idea is to define a pool of available anonymous user IDs. Every
> time a new anonymous user makes a request, the next available
> TEMP_USER_ID is pulled from the queue. After recommendations are
> retrieved, the TEMP_USER_ID can be returned to the pool.
> The discussion about this topic can be found in:
> http://mail-archives.apache.org/mod_mbox/mahout-dev/201202.mbox/%3CCAEccTywC7QJuAJj-u3C1C=WW0yEeBcScUE6Kmj=bedBrxOpsSg@mail.gmail.com%3E

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira