maria-developers team mailing list archive
-
maria-developers team
-
Mailing list archive
-
Message #08055
Re: [Commits] b2f45ba: MDEV-7324 - Lock-free hash for table definition cache
Hi, Sergey!
On Dec 28, Sergey Vojtovich wrote:
> > > + }
> > > + mysql_mutex_unlock(&LOCK_table_share);
> > > + return table;
> > > + }
> > > +
> > > +
> > > + /**
> > > + Get last element of free_tables.
> > > + */
> > > +
> > > + TABLE *free_tables_back()
> >
> > Eh, I've thought for a few seconds what could it mean to "free tables back"
> > until I read the function comment. You see, "free" is so often used as a verb
> > that one absolutely doesn't see it that here it means "free_tables' back"
> > even though it's also a common naming pattern (xxx_back for the list xxx).
> > Rename the method, may be?
> This way I'll have to rename free_tables, because "free" comes from it's name.
> Or you have better option on your mind?
Not at the moment, sorry. I tried, but couldn't come up with anything
reasonable :( ok, let it stay the way it is.
> > > #ifdef HAVE_PSI_INTERFACE
> > > -static PSI_mutex_key key_LOCK_unused_shares, key_TABLE_SHARE_LOCK_table_share;
> > > +PSI_mutex_key key_LOCK_unused_shares, key_TABLE_SHARE_LOCK_table_share;
> >
> > really? not static?
> These need to be visible by TDC_element::lf_alloc_constructor. Their static
> status is to be restored later.
And if you make them static they won't be visible from
TDC_element::lf_alloc_constructor?
> > > @@ -763,18 +677,25 @@ TABLE_SHARE *tdc_acquire_share(THD *thd, const char *db, const char *table_name,
> > >
> > > if (out_table && (flags & GTS_TABLE))
> > > {
> > > - if ((*out_table= tc_acquire_table(thd, share)))
> > > + if ((*out_table= element->acquire_table(thd)))
> > > {
> > > - mysql_rwlock_unlock(&LOCK_tdc);
> > > + lf_hash_search_unpin(thd->tdc_hash_pins);
> >
> > what this lf_hash_search_unpin corresponds to?
> Element found, but it may be to-be-deleted element or not-yet-open element.
> In both cases free_tables must be empty. This is also guarded by the following
> assert: DBUG_RETURN(element->share).
I mean, what lf_hash_search invocation does that unpin corresponds to.
I didn't see any lf_hash_search that wouldn't have a matching unpin.
So this one (and other below) look "homeless"
Regards,
Sergei
Follow ups
References