RDBMS and Group Cache

We have noticed that when the group cache is reloaded, the
RDBMSDelegate.getGroup(String) method is called for each user that is
either logging into the system or doing some sort of role authentification
against the group cache.
This method in turn calls RDBMSDelegate.getGroupInternal(String, ResultSet),
which then parses the result set of the members of the group. So, if 5
members of the Employee group are logged into the server, the getGroup()
method is called 5 times concurrently. These concurrent method calls seem to
correspond with severe performance degradation since the method parses a
resultset of 3000 records each time its called.
We are using the example RDMBS security code and running WL6.0 sp1 on Win2K.
Is there any modified rdbms code out there that would improve the
performance of the group cache reload, or lock calls to the getGroups so
that the first call is the only one that parses the recordset and concurent
calls would be directed to the cache?
Thanks,
Pete

The philosophy behind the plan is when the group is first required you
just get any empty group object (sort of a wrapper class for a
Hashtable), then you call the database to find out if a user is in the
group only when you have to (this will lead to a lot more database
calls, but only retrieve the required lines, and them only one at a
time, as opposed to making one call which retrieves absolutely all of
the information.)
so RDBMSRealm.getGroup looks like this
public Group getGroup(String name){
RDBMSDelegate delegate = getDelegate();
try{
if (delegate.checkForGroup(name)){
return new RDBMSGroup(name,this,new Hashtable());
}else{
return null;
}catch (SQLException e){
delegate.close();
delegate = null;
throw new RDBMSException("caught SQL exception", e);
}finally{
returnDelegate(delegate);
Where RDMBSDelegate.checkForGroup just calls the database to see if
there is a group of the name given
And RDBMSGroup.isMember() looks like this
public boolean isMember(Principal member){
if (this.getName().equals("everyone")){
//everyone is in the 'everyone' group
return true;
}else{
try{
User user = (User)member;
//check if the member is in the Hashtable of known members
if (members.containsValue(user)){//user is a known member
return true;
}else{//check the database
if (realm.isMember(this,user)){//database says user is in this
group
//add member to known users list(use member's getName() rather
than User's to avoid deprecated API)
this.members.put(member.getName(),user);
return true;
}else{
return false;
}catch(ClassCastException e){//not castable to class User
return false;
Which is enough for the general operation of security.
If you wish to be able to view all members in the group you will need
something that resembles the original functionality
Hope this helps. terry
Hi,
What do you mean by "populate the group lazily with the
isMember() method" ? isMember()
takes a Principal as its argument - where do you get that Principal??
A code example would be highly appreciated!!!
regards,
Simen R.
THorner <[email protected]> wrote:
The RDBMSRealm provided (certainly with WLS5.1, but I think also 6.*)
really isn't meant to be used for production - it is just an example.
The matter of getGroup() is the major performance hit, and I advise you
to treat it differently - an architecture taht works for us is to make
getGroup just return the RDBMSGroup object, without calling the
database, and to populate the group lazily with the isMember() method.
so isMember looks like
if (hasAlreadyBeenCheckedForAndIsAMember){
return true;
}else if (wasntAlreadyCheckedForbutIsInTheDatabase){
addToListOfCheckedForMembers;
return true;
}else{
return false;
terry
-----Original Message-----
From: Jason Collins [mailto:[email protected]]
Posted At: Fri 17 August 2001 20:33
Posted To: weblogic.developer.interest.security
Conversation: RDBMS and Group Cache
Subject: Re: RDBMS and Group Cache
Was any solution to this found? We would like to avoid
writing the changes
to RDMSRealm, but the current performance is pretty bad.
Thanks,
j
"Pete Arvanitis" <[email protected]> wrote in message
news:[email protected]...
We have noticed that when the group cache is reloaded, the
RDBMSDelegate.getGroup(String) method is called for each user that is
either logging into the system or doing some sort of role authentification
against the group cache.
This method in turn calls RDBMSDelegate.getGroupInternal(String,ResultSet),
which then parses the result set of the members of the group. So, if 5
members of the Employee group are logged into the server, the getGroup()
method is called 5 times concurrently. These concurrent method calls seem
to
correspond with severe performance degradation since the method parses a
resultset of 3000 records each time its called.
We are using the example RDMBS security code and running WL6.0 sp1 on
Win2K.
Is there any modified rdbms code out there that would improve the
performance of the group cache reload, or lock calls to the getGroups so
that the first call is the only one that parses the recordset andconcurent
calls would be directed to the cache?
Thanks,
Pete

Similar Messages

  • People and Groups not appearing in Address List

    We have an Exchange 2013 deployment running on Windows 2012 Standard servers. Some of our people and all our groups are not showing up in the Outlook Address Book on people's client application. This despite the fact that "hide name from address book"
    is unchecked on these people and groups.
    This affects both those running Outlook and OWA.
    Any idea how I can go about troubleshooting this?
    ----------- Ron E Biggs Chief Tech Officer Entertainment Studios

    Hi,
    From your description, I would like to clarify the following things:
    1. Outlook in cached mode automatically updates the offline address book on the client every 24 hours. The 24-hour time period is measured from the time that the offline address book was last downloaded successfully. So sometimes new users can't be displayed
    immediately on Outlook.
    2. If you would like to show the dynamic distribution groups in “All Groups”, you can use the following cmdlet.
    Set-AddressList -Identity "all groups" -RecipientFilter "(RecipientType -eq 'MailUniversalDistributionGroup' -or RecipientType -eq 'MailUniversalSecurityGroup' -or RecipientType -eq 'MailNonUniversalGroup' -or RecipientType -eq 'DynamicDistributionGroup')"
    Here is a helpful thread for your reference.
    Let the dynamic distribution groups be shown in “All Groups”
    https://social.technet.microsoft.com/Forums/en-US/d32a94af-eb46-407e-9129-c977c32d2a48/let-the-dynamic-distribution-groups-be-shown-in-all-groups?forum=exchangesvrgeneral
    Hope this can be helpful to you.
    Best regards,
    If you have feedback for TechNet Subscriber Support, contact
    [email protected]
    Amy Wang
    TechNet Community Support

  • User and group names truncated with ls

    Hello,
    When using the 'ls -l' command the resulting list truncates user and group names that are longer than 8 characters.
    Is this a know issue?
    I'm running Mac OS 10.4.10.
    Thanks,
    Anthony

    Jun T. wrote:
    If a program like "ls" wants to know the username corresponding to the uid, it must call a library function of the operating system. But there are two library functions, one gives the correct username and the other truncates the username.
    The basic library function is getpwuid(3) which returns the correct username.
    Hello Jun,
    I ran a search using Xfind (Rixstep) on /bin for 'userfromuid' and /bin/ls was listed as I might of expected.
    Also, /bin/ls was also listed when 'getpwuid' was used as a search Key.
    Peeking further into /bin/ls further with Xstrings (which is Rickstep's "adaptation" of the "strings' tool" ) reveals the string '_ getpwuid'.
    Does this mean that at some point the 'ls' command can call the getpwuid() directly under some circumstances rather than going through userfromuid() which relies on the cache you mentioned?
    The problem is the size of the table; userfromuid() allocates only 8
    characters for each username (the number 8 comes from UT_NAMESIZE in /
    usr/include/utmp.h), and truncates the username if it is longer. This
    may be "fixed" in a future version; or it may not be "fixed" to keep
    backward compatibility. I'm not sure.
    I've heard that utmpx.h has 'UTXUSERSIZE' which is defined as 32. Does not that allow for user and group names larger than 8 characters?
    By the way, I can't find the directory usr/include/utmp.h on my drive.
    Is there a way to reset or redefine this 'UT_NAMESIZE' field to more than 8 characters wherever the userfromuid() function stores it?
    The commands "users", "who", and "w" read the file /var/run/utmp, in
    which truncatd usernames of the currently logged-in users are saved.
    Does some command initially call the function as 'ls', userfromuid(), to result in truncated names being saved in file /var/run/utmp as well?
    I think there are many programs which depend on this fixed-width utmp
    file, so it may not be "fixed" in a future version. "
    I believe there are third party tools which rely on the userfromuid() call which require this bug to be fixed in order to display accurate user and group name data.
    Thanks for your informative reply,
    Anthony

  • To grant  privileges to user or/and group

    Hi,
    I need information about to grant privileges on content area and folders.
    For example, if I grant privilege to view content on Content area and I grant privilege of Manage Items on folder. Can the users or group add items to folder? Or can they view the content?
    Thank you for information,
    Noel

    I changed the file (sudo vi $ORACLE_HOME/rdbms/admin/externaljob.ora) to read run_user = oracle and run_group = dba. The error remains the same - also after restart of dbconsole. Anyway, the file has note: The user and group specified here should be a lowly privileged user and group for your platform. For Linux this is nobody and nobody. Which it was, and I changed it back to that.
    Btw:
    SQL> SELECT owner, credential_name, username FROM dba_scheduler_credentials;
    no rows selected
    SQL> execute DBMS_SCHEDULER.CREATE_CREDENTIAL('oracle','oracle','password');
    After the above I was able to select "sys.oracle" as the credential name pull-down menu of the scheduler job edit mode.
    And the job succeeded: EXTERNAL_LOG_ID="job_73826_863", USERNAME="oracle"
    How does one set credentials if not in the "preferred credential setup" in dbconsole EM?
    Edited by: Dude on Jan 14, 2011 2:11 PM

  • Libvirt-1.2.12-1 user and group owners differ

    Hello!
    During the latest upgrade pacman complains about differing directory permissions for libvirt:
    warning: directory ownership differs on /var/cache/libvirt/qemu/
    filesystem: 99:78 package: 0:0
    warning: directory ownership differs on /var/lib/libvirt/qemu/
    filesystem: 99:78 package: 0:0
    This are the user and group, not file mode ("rwx")! In this case the directories are currently owned by the user "nobody" and the group "kvm", while the package thinks actually "none" should own that directories. Should I change that manually?
    Thanks
    Hoschi
    PS: I currently doesn't use QEMU and KVM, but that can happen very fast and than it need to work out-of-the-box
    Last edited by hoschi (2015-01-28 17:30:06)

    Just to clarify, that "none" (0:0) is actually root, that is root:root
    I hope someone else can step in in order to tell you if a manual change is advised which I would understand as positive though better safe than sorry.

  • Import user and group from dump.txt to ACS Solution Engine 3.3

    I have export the user and group using the CSUtil -d on my acs v2.6. But ACS Solution Engine 3.3 does not have the CSUtil command to import the user and group database. Can anyone advise me?

    I'm trying to do the same thing with no luck so far.
    Documentation seems to indicate you can do this using RDBMS Synchronization but we haven't got it to work yet.
    I read the doco as saying you create a csv and place it on an FTP server and ACS will read from that file. When we've tried, it rights its own file with a different extension and says it can't find the one we place in that same directory.

  • User and Group Ids for Standby Database

    The following oracle homes installed under the same unix account on the primary node:
    10gR2 CRS home
    10gR2 ASM home
    10gR2 RDBMS home
    Oracle Applications E-Business Suite 11.5.10.2 (concurrent admin)
    Based on note 216212.1 - Business Continuity for Oracle Applications Release 11i, Database Releases 9i and 10g
    Section 1: Design Considerations and Assumptions
    The note, verbatim, says "+The user and group Ids of the Oracle and applications software owner accounts must be the same on the production and standby servers+." Is this statement true? In other words, if the primary server software owner is the "morgan" unix account, then the unix account must also be "morgan" (not "stanley") on the standby server?

    Yes you can run a standby with different unix usernames on primary and standby, but it will be easier if the usernames are the same.

  • What is difference between distribution list and share point group? Can we add distribution list into person and group column of share point list?

    what is difference between distribution list and share point group? Can we add distribution list into person and group column of share point list?

    there is a workaround you can try, create audience and add DL to them and deal with the audience or convert DL to groups
    https://social.technet.microsoft.com/Forums/en-US/02f0d773-8188-4d94-a448-0c04d838b0cf/distribution-lists-in-sharepoint?forum=sharepointgenerallegacy
    Kind Regards,
    John Naguib
    Technical Consultant/Architect
    MCITP, MCPD, MCTS, MCT, TOGAF 9 Foundation
    Please remember to mark your question as answered if this solves your problem

  • Partition Name in Select and Group-By

    Is there a function that returns the partition name a row is stored in? I'd like to use it in a SELECT statement, if it exists.
    The goal is to get row counts per partition to determine skew on a hash-based partition (otherwise, I'd just select and group-by the partition key). I want to do something like this:
    SELECT PARTITION_NAME, COUNT(*) as PER_PART_COUNT
      FROM SOMETABLE
    GROUP BY PARTITION_NAME;Obviously, I would replace the string "*PARTITION_NAME*" with whatever function returns that value.
    NOTE: Before the forum sharks jump all over me, I did search the documentation and forums, but I came up empty handed.

    Hi,
    This is hokey - but you can use the undocumented function "tbl$or$idx$part$num" like so:
    SELECT   atp.partition_name
           , COUNT (*) AS count_rows
        FROM all_tab_partitions atp
           , (SELECT tbl$or$idx$part$num ("SCOTT"."TAB1"
                                        , 0
                                        , 1
                                        , 0
                                        , partition_col1 -- your 1st partition key column
                                        , partition_col2 -- your 2nd partition key column
                                         ) AS part_num
                   , 'TAB1' AS table_name
                   , 'SCOTT' AS owner
                FROM scott.tab1) pt
       WHERE atp.table_name = pt.table_name
         AND atp.table_owner = pt.owner
         AND atp.partition_position = pt.part_num
    GROUP BY atp.partition_name;Note - this probably won't perform well at all... but it could be an option...
    Message was edited by:
    PDaddy
    ... On 2nd thought - don't do it - it seems it is pretty unstable - brought my session to a halt a couple of times... Forget I mentioned it :)
    ... On 3rd thought - if you add ROWNUM - it works fine - seems you need to materialize the result set in the inner query - like so:
    CREATE TABLE part_tab (part_key int
                         , a int
    partition by range (part_key)
    (partition p1 values less than (100)
    ,partition p2 values less than (200)
    ,partition p3 values less than (maxvalue)
    insert into part_tab
    select rownum
         , rownum
    FROM all_objects
    where rownum <= 1000; SELECT atp.partition_name
         , COUNT(*) AS count_rows
    FROM all_tab_partitions atp
       , (SELECT TBL$OR$IDX$PART$NUM("PART_TAB", 0, 1, 0, part_key) AS part_num
               , 'PART_TAB' AS table_name
               , user AS owner
               , ROWNUM AS rn -- Materialize the result set by adding ROWNUM...
          FROM part_tab) pt
    WHERE atp.table_name = pt.table_name
      AND atp.table_owner = pt.owner
      AND atp.partition_position = pt.part_num
    GROUP BY atp.partition_name;

  • How to update a People and group field using a sandbox solution

    Hi,
    I am creating a sandbox solution for office 365 and creating a custom form using visual web part, which will allow users to enter data in a custom list.
    And that list also have a user field. I am able to get SharePoint user field on the form (using javascript) which is searching for the user and get a value (working fine).
    Issue: But I am not able to save the user value. Because to save user value I require web, UserID and login name, to construct SPFieldUserValue object or string in "111;#TestUser" format. Moreover that user should be present in
    SiteUserInfoList. 
    I tried web.EnsureUser() but did not work under sanbox solution.
    Can you please provide any pointer or workaround to the problem? I may be missing something here.
    Thanks,
    Himanshu

    Hi,
    According to your description, my understanding is that you want to update the people and group field in Sandbox solution.
    In the sandbox solution, you can still use the web.EnsureUser() function to get the user information, see the thread below:
    EnsureUser in sandboxed solution
    In additional, there is a demo with your similiar requirement for your reference:
    Using the People Picker Control in Sandbox Solutions / Office 365
    Thanks
    Best Regards,
    Jerry Guo
    TechNet Community Support
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact
    [email protected]

  • Foundation 2013 Farm and Distributed Cache settings

    We are on a 3 tier farm - 1 WFE + 1APP + 1SQL - have had many issues with AppFab and Dist Cache; and an additional issue with noderunner/Search Services.  Memory and CPU running very high.  Read that we shouldn't be running Search
    and Dist Cache in the same server, nor using a WFE as a cache host.  I don't have the budget to add another server in my environment. 
    I found an article (IderaWP_CachingFormSharePointPerformance.pdf) saying "To make use of SharePoint's caching capabilities requires a Server version of the platform." because it requires the publishing feature, which Foundation doesn't have. 
    So, I removed Distributed Cache (using Powershell) from my deployment and disabled the AppFab.  This resolved 90% of server errors but performance didn't improve. Now, not only I'm getting errors now on Central Admin. - expects Dist Cache
    - but I'm getting disk operations reading of 4000 ms.
    Questions:
    1) Should I enable AppFab and disable cache?
    2) Does Foundation support Dist Cache?  Do I need to run Distributed Cache?
    3) If so, can I run with just 1 cache host?  If I shouldn't run it on a WFE or an App server with Search, do I have to stop Search all together?  What happens with 2 tier farms out there? 
    4) Reading through the labyrinth of links on TechNet and MSDN on the subject, most of them says "Applies to SharePoint Server".
    5) Anyone out there on a Foundation 2013 production environment that could share your experience?
    Thanks in advance for any help with this!
    Monica
    Monica

    That article is referring to BlobCache, not Distributed Cache. BlobCache requires Publishing, hence Server, but DistributedCache is required on all SharePoint 2013 farms, regardless of edition.
    I would leave your DistCache on the WFE, given the App Server likely runs Search. Make sure you install
    AppFabric CU5 and make sure you make the changes as noted in the KB for
    AppFabric CU3.
    You'll need to separately investigate your disk performance issues. Could be poor disk layout, under spec'ed disks, and so on. A detail into the disks that support SharePoint would be valuable (type, kind, RPM if applicable, LUNs in place, etc.).
    Trevor Seward
    Follow or contact me at...
    &nbsp&nbsp
    This post is my own opinion and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

  • Hi I do not want iTunes to open up automatically when I turn on my macbook pro.  I tried going to System Preferences Users and Groups Login Items and then I took iTunes off the list but it still opens up automatically when I turn on my laptop.

    Hi I do not want iTunes to open up automatically when I turn on my macbook pro.  I tried going to System Preferences>Users and Groups>Login Items and then I took iTunes off the list but it still opens up automatically when I turn on my laptop. What should I do?

    Hi r,
    Make sure you close iTunes before shutdown.  And you're quite welcome.

  • I am trying to stop programs from opening automatically when I turn my computer on.  I tried system preferences users and groups login items...then I deleted them from the list but it did nothing.

    I am trying to stop programs from opening automatically when I turn my computer on.  I tried system preferences>users and groups>login items...then I deleted them itunes and emial from the list but it did nothing.  They continue to open up every time I turn on my Macbook Pro.

    Hi r,
    It sounds like you're running Lion?
    Have you tried running Verify and/or Repair Disk?
    Have you tried running Repair Permissions?
    Do you have at least 15% free space available on your HD?

  • How to change default /Users and /Groups to different Volume?

    Users are created in /Volumes/<boot>/Users and groups in /Volumes/<boot>/Groups.
    We need these to be created on a different volume, eg., /Volumes/External/Users, and /Volumes/External/Groups.
    Setup Assistant correctly put user Backups into */Volumes/External/Shared Items/Backups* and also correctly put web services on /Volumes/External/ServiceData -- we want to do the same for Groups and Users.
    Groups are the most critical, as the group needs bulk storage. Users we could leave as is if it can't be done.
    How can this be configured? We've read File Server Admin, Open Directory Admin, and Advanced Server admin from http://www.apple.com/server/macosx/resources/documentation.html without finding an answer.
    Thanks in advance.

    1. Create new folders on the external volume to hold users and groups, but to prevent confusion name them something other than "Users" and "Groups". /Volumes/External/NetUsers and /Volumes/External/NetGroups would be reasonable choices.
    2. Share both of these folders (in Server Admin -> server name in sidebar -> File Sharing -> Volumes & Browse modes -> select each folder -> click Share near the top right).
    3. Enable both folders for automounting on clients (Server Admin -> server name in sidebar -> File Sharing -> Share Points-> select each folder -> Share Point tab under that -> Enable Automount option) with the default options (Directory: /LDAPv3/127.0.0.1, Protocol: AFP, Use for: User home folders and group folders). Be sure to click Save (not just OK in the dialog).
    4. To migrate users, run Workgroup Manager, and change the home location for the users you want to move (select Accounts in the toolbar -> /LDAPv3/127.0.0.1 from the hidden pop-up menu under that -> User icon tab at the left -> select the user(s) you want to change -> Home tab on the right -> select the NetUsers option from the "Where" list). Then, for each user, run this command on the server: "sudo cp -Rp /Users/username /Volumes/External/NetUsers".
    5. Similarly, move Group folders in WGM (Accounts -> /LDAP... -> Groups icon on left -> select groups to move -> Group Folder tab on right -> NetGroups in the list). Then, for each group, run "sudo cp -Rp /Groups/groupname /Volumes/External/NetGroups".
    6. Test to make sure all is working before deleting the old user and group folders from /Users and /Groups (do NOT delete /Users and /Groups themselves, just the individual folders from under them).

  • Generate report to show all users and groups in Shared Services in EPM 11x

    Hi,
    Is there any way to generate a report (like a migration report or job status report) which can be generated through workspace/shared services 11.1.1.3 so that my admin can look at all the users and groups created. Something that I can view and probably print out? Any suggestions?
    ~Adeeba

    Yes, I knew this one. This basically shows me the users and groups assigned specific provision access. Is there any way to view a report that shows which users and groups have access to dimensions of an individual planning application?
    ~Adeeba

Maybe you are looking for

  • How to get the Delivery date in PO line Item in SAPScript

    Hi Gurus, I am working on PO Script (MEDRUCK). I copied the Standard to a Z form. ZMM_MEDRUCK, Now I need to print the the Header text at the end of MAIN window.  I put Iem number along with the other line Item informmation like stanadrd PO Script ME

  • HP Officejet 4630 all-in-one printer Cancels Print in Middle of Job

    Hi, I recently bought an HP Officejet 4630 all-in-one printer, and it automatically cancels jobs in the middle of printing. The computer I am using is an HP Envy dv7 with 64-bit Windows 8, and I am printing over a wireless network connection. My comp

  • How do I avoid error message when saving combined files?

    I combined about 350 .pdf files into a single .pdf file using Acrobat 8 Pro.  Total file size is about 3.5GB.  I can assemble them in a correct order but saving them results in the following error message:  "The document could not be saved.  A file I

  • Photosmart 7520 not printing

    My Photosmart 7520 is printing blanks after just getting its ink changed and also printed its ink report right after perfectly fine. What is going on? I need help ASAP. I have a final due in two days!

  • SD Data Load (Deliveries Too High In Number)

    Hi All, I am loading data for application component 11, 12, & 13. Filling up of set up table for application component 12 is taking very long time. So i am thinking of taking alternative path. Say; The company has following Sales Organization -- 1100