<!-- 
RSS generated by JIRA (9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66) at Thu Feb 08 08:35:26 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>MongoDB Jira</title>
    <link>https://jira.mongodb.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>9.7.1</version>
        <build-number>970001</build-number>
        <build-date>13-04-2023</build-date>
    </build-info>


<item>
            <title>[GODRIVER-1000] memory still grows when program run</title>
                <link>https://jira.mongodb.org/browse/GODRIVER-1000</link>
                <project id="14289" key="GODRIVER">Go Driver</project>
                    <description>&lt;p&gt;when i run a program  that load 40MB data  per 30 minitue, by profiling go program, i find the memory still grow, it not release to os&lt;/p&gt;

&lt;p&gt;i think it is a go-mongo bug, how to fix this issue?&lt;/p&gt;


&lt;p&gt;my code&lt;/p&gt;

&lt;p&gt;func UpdateTejia() {&lt;br/&gt;
	begin := common.GetMills()&lt;/p&gt;

&lt;p&gt;	var buff bytes.Buffer&lt;/p&gt;

&lt;p&gt;	myLog := mylog.GetMylog().Log()&lt;/p&gt;

&lt;p&gt;	conf := GetConfigure()&lt;br/&gt;
	f := conf.Mongo.Tejia&lt;br/&gt;
	mongo := db.NewMongoOfficalClient(f.Host, f.Username, f.Password, f.Database, f.Authmechanism,&lt;br/&gt;
		f.Connect_timeout_s)&lt;br/&gt;
	err := mongo.Connect()&lt;br/&gt;
	if err != nil &lt;/p&gt;
{
		buff.WriteString(fmt.Sprintf(&quot;%v&quot;, err))
		myLog.Infof(&quot;%s&quot;, buff.String())
		return
	}&lt;br/&gt;
	defer mongo.Close()&lt;br/&gt;
	client, _ := mongo.GetClientInfo()&lt;br/&gt;
	collection := client.Database(f.Database).Collection(f.Collection)&lt;br/&gt;
&lt;br/&gt;
	//&#21024;&#38500;&#24403;&#21069;&#26102;&#38388;2&#22825;&#21069;&#30340;&#36807;&#26399;&#25968;&#25454;&lt;br/&gt;
	{&lt;br/&gt;
		ctx, cancle := context.WithTimeout(context.Background(), 120*time.Second)&lt;br/&gt;
		defer cancle()&lt;br/&gt;
		now := common.GetMills()&lt;br/&gt;
		timestamp := now - 2*24*3600*1000&lt;br/&gt;
		filter := bson.M{&quot;inserttime&quot;: bson.M{&quot;$lte&quot;: timestamp}}&lt;br/&gt;
		_, err = collection.DeleteMany(ctx, filter)&lt;br/&gt;
		if err != nil {
			buff.WriteString(fmt.Sprintf(&quot;%v&quot;, err))
			myLog.Infof(&quot;%s&quot;, buff.String())
			return
		}&lt;br/&gt;
	}&lt;br/&gt;
	//&#21152;&#36733;2&#22825;&#20869;&#26356;&#26032;&#30340;&#25968;&#25454;&lt;br/&gt;
	ctx, cancle := context.WithTimeout(context.Background(), 120*time.Second)&lt;br/&gt;
	defer cancle()&lt;br/&gt;
	cur, err := collection.Find(ctx, bson.D{})&lt;br/&gt;
	if err != nil {
		buff.WriteString(fmt.Sprintf(&quot;%v&quot;, err))
		myLog.Infof(&quot;%s&quot;, buff.String())
		return
	}
&lt;p&gt;	defer cur.Close(ctx)&lt;/p&gt;

&lt;p&gt;	var sli []MongoSpItem&lt;br/&gt;
	for cur.Next(ctx) {&lt;br/&gt;
		var result MongoSpItem&lt;br/&gt;
		err := cur.Decode(&amp;amp;result)&lt;br/&gt;
		if err != nil &lt;/p&gt;
{
			continue
		}
&lt;p&gt;		// do something with result....&lt;br/&gt;
		sli = append(sli, result)&lt;br/&gt;
	}&lt;br/&gt;
	if err = cur.Err(); err != nil &lt;/p&gt;
{
		buff.WriteString(fmt.Sprintf(&quot;%v&quot;, err))
		myLog.Infof(&quot;%s&quot;, buff.String())
		return
	}

&lt;p&gt;	//&lt;br/&gt;
	num := len(sli)&lt;br/&gt;
	t1 := common.GetMills()&lt;br/&gt;
	buff.WriteString(fmt.Sprintf(&quot;load %d data, use %d ms&quot;, num, t1-begin))&lt;br/&gt;
	myLog.Infof(&quot;%s&quot;, buff.String())&lt;/p&gt;

&lt;p&gt;	if num &amp;gt; 0 &lt;/p&gt;
{
		mongoSpItem.sli = sli
		OtherHandleTejiaMongo()
	}
&lt;p&gt;}&lt;/p&gt;


&lt;p&gt;profile&lt;/p&gt;

&lt;p&gt;Saved profile in /Users/fredlee/pprof/pprof.tejia_index.alloc_objects.alloc_space.inuse_objects.inuse_space.010.pb.gz&lt;br/&gt;
File: tejia_index&lt;br/&gt;
Type: inuse_space&lt;br/&gt;
Time: Apr 26, 2019 at 11:04am (CST)&lt;br/&gt;
Entering interactive mode (type &quot;help&quot; for commands, &quot;o&quot; for options)&lt;br/&gt;
(pprof) top -cum&lt;br/&gt;
Showing nodes accounting for 2548.76MB, 71.40% of 3569.79MB total&lt;br/&gt;
Dropped 54 nodes (cum &amp;lt;= 17.85MB)&lt;br/&gt;
Showing top 10 nodes out of 21&lt;br/&gt;
      flat  flat%   sum%        cum   cum%&lt;br/&gt;
         0     0%     0%  1814.64MB 50.83%  tejia_index/internal/async.Repeat.func1&lt;br/&gt;
         0     0%     0%  1814.64MB 50.83%  tejia_index/internal/async.Repeat.func2&lt;br/&gt;
 1153.75MB 32.32% 32.32%  1814.64MB 50.83%  tejia_index/util.UpdateTejia&lt;br/&gt;
         0     0% 32.32%  1428.12MB 40.01%  runtime.mstart&lt;br/&gt;
         0     0% 32.32%  1428.12MB 40.01%  runtime.newproc.func1&lt;br/&gt;
         0     0% 32.32%  1428.12MB 40.01%  runtime.newproc1&lt;br/&gt;
         0     0% 32.32%  1428.12MB 40.01%  runtime.systemstack&lt;br/&gt;
 1395.01MB 39.08% 71.40%  1395.01MB 39.08%  runtime.malg&lt;br/&gt;
         0     0% 71.40%   659.01MB 18.46%  go.mongodb.org/mongo-driver/bson.(*Decoder).Decode&lt;br/&gt;
         0     0% 71.40%   659.01MB 18.46%  go.mongodb.org/mongo-driver/bson.UnmarshalWithRegistry&lt;br/&gt;
(pprof) list UpdateTejia&lt;br/&gt;
Total: 3.49GB&lt;br/&gt;
ROUTINE ======================== tejia_index/util.UpdateTejia in /Users/fredlee/Documents/&#31649;&#23478;&#39033;&#30446;/huoli/tejia_index/util/mongo_tejia.go&lt;br/&gt;
    1.13GB     1.77GB (flat, cum) 50.83% of Total&lt;br/&gt;
         .          .    206:	defer cur.Close(ctx)&lt;br/&gt;
         .          .    207:&lt;br/&gt;
         .          .    208:	var sli []MongoSpItem&lt;br/&gt;
         .          .    209:	for cur.Next(ctx) {&lt;br/&gt;
         .          .    210:		var result MongoSpItem&lt;br/&gt;
         .   659.01MB    211:		err := cur.Decode(&amp;amp;result)&lt;br/&gt;
         .          .    212:		if err != nil &lt;/p&gt;
{
         .          .    213:			continue
         .          .    214:		}
&lt;p&gt;         .          .    215:		// do something with result....&lt;br/&gt;
    1.13GB     1.13GB    216:		sli = append(sli, result)&lt;br/&gt;
         .          .    217:	}&lt;br/&gt;
         .          .    218:	if err = cur.Err(); err != nil &lt;/p&gt;
{
         .          .    219:		buff.WriteString(fmt.Sprintf(&quot;%v&quot;, err))
         .          .    220:		myLog.Infof(&quot;%s&quot;, buff.String())
         .          .    221:		return
         .          .    222:	}
&lt;p&gt;         .          .    223:&lt;br/&gt;
         .          .    224:	//&lt;br/&gt;
         .          .    225:	num := len(sli)&lt;br/&gt;
         .          .    226:	t1 := common.GetMills()&lt;br/&gt;
         .          .    227:	buff.WriteString(fmt.Sprintf(&quot;load %d data, use %d ms&quot;, num, t1-begin))&lt;br/&gt;
         .          .    228:	myLog.Infof(&quot;%s&quot;, buff.String())&lt;br/&gt;
         .          .    229:&lt;br/&gt;
         .          .    230:	if num &amp;gt; 0 &lt;/p&gt;
{
         .          .    231:		mongoSpItem.sli = sli
         .     1.87MB    232:		OtherHandleTejiaMongo()
         .          .    233:	}
&lt;p&gt;         .          .    234:}&lt;br/&gt;
         .          .    235:&lt;br/&gt;
         .          .    236:func OtherHandleTejiaMongo() {&lt;br/&gt;
         .          .    237:	m := mongoSpItem&lt;br/&gt;
(pprof) list Decode&lt;br/&gt;
Total: 3.49GB&lt;br/&gt;
ROUTINE ======================== encoding/json.(*Decoder).Decode in /usr/local/go/src/encoding/json/stream.go&lt;br/&gt;
         0        1MB (flat, cum) 0.028% of Total&lt;br/&gt;
         .          .     58:	if !dec.tokenValueAllowed() {&lt;br/&gt;
         .          .     59:		return &amp;amp;SyntaxError&lt;/p&gt;
{msg: &quot;not at beginning of value&quot;, Offset: dec.offset()}
&lt;p&gt;         .          .     60:	}&lt;br/&gt;
         .          .     61:&lt;br/&gt;
         .          .     62:	// Read whole value into buffer.&lt;br/&gt;
         .   513.31kB     63:	n, err := dec.readValue()&lt;br/&gt;
         .          .     64:	if err != nil &lt;/p&gt;
{
         .          .     65:		return err
         .          .     66:	}
&lt;p&gt;         .          .     67:	dec.d.init(dec.buf&lt;span class=&quot;error&quot;&gt;&amp;#91;dec.scanp : dec.scanp+n&amp;#93;&lt;/span&gt;)&lt;br/&gt;
         .          .     68:	dec.scanp += n&lt;br/&gt;
         .          .     69:&lt;br/&gt;
         .          .     70:	// Don&apos;t save err from unmarshal into dec.err:&lt;br/&gt;
         .          .     71:	// the connection is still usable since we read a complete JSON&lt;br/&gt;
         .          .     72:	// object from it before the error happened.&lt;br/&gt;
         .   512.01kB     73:	err = dec.d.unmarshal(v)&lt;br/&gt;
         .          .     74:&lt;br/&gt;
         .          .     75:	// fixup token streaming state&lt;br/&gt;
         .          .     76:	dec.tokenValueEnd()&lt;br/&gt;
         .          .     77:&lt;br/&gt;
         .          .     78:	return err&lt;br/&gt;
ROUTINE ======================== encoding/json.(*Decoder).readValue in /usr/local/go/src/encoding/json/stream.go&lt;br/&gt;
         0   513.31kB (flat, cum) 0.014% of Total&lt;br/&gt;
         .          .    129:			dec.err = err&lt;br/&gt;
         .          .    130:			return 0, err&lt;br/&gt;
         .          .    131:		}&lt;br/&gt;
         .          .    132:&lt;br/&gt;
         .          .    133:		n := scanp - dec.scanp&lt;br/&gt;
         .   513.31kB    134:		err = dec.refill()&lt;br/&gt;
         .          .    135:		scanp = dec.scanp + n&lt;br/&gt;
         .          .    136:	}&lt;br/&gt;
         .          .    137:	return scanp - dec.scanp, nil&lt;br/&gt;
         .          .    138:}&lt;br/&gt;
         .          .    139:&lt;br/&gt;
ROUTINE ======================== encoding/json.(*Decoder).refill in /usr/local/go/src/encoding/json/stream.go&lt;br/&gt;
         0   513.31kB (flat, cum) 0.014% of Total&lt;br/&gt;
         .          .    154:		copy(newBuf, dec.buf)&lt;br/&gt;
         .          .    155:		dec.buf = newBuf&lt;br/&gt;
         .          .    156:	}&lt;br/&gt;
         .          .    157:&lt;br/&gt;
         .          .    158:	// Read. Delay error for next iteration (after scan).&lt;br/&gt;
         .   513.31kB    159:	n, err := dec.r.Read(dec.buf&lt;span class=&quot;error&quot;&gt;&amp;#91;len(dec.buf):cap(dec.buf)&amp;#93;&lt;/span&gt;)&lt;br/&gt;
         .          .    160:	dec.buf = dec.buf&lt;span class=&quot;error&quot;&gt;&amp;#91;0 : len(dec.buf)+n&amp;#93;&lt;/span&gt;&lt;br/&gt;
         .          .    161:&lt;br/&gt;
         .          .    162:	return err&lt;br/&gt;
         .          .    163:}&lt;br/&gt;
         .          .    164:&lt;br/&gt;
ROUTINE ======================== go.mongodb.org/mongo-driver/bson.(*Decoder).Decode in /Users/fredlee/Documents/develop/go/workspace/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1/bson/decoder.go&lt;br/&gt;
         0   659.01MB (flat, cum) 18.46% of Total&lt;br/&gt;
         .          .     81:	rval = rval.Elem()&lt;br/&gt;
         .          .     82:	decoder, err := d.dc.LookupDecoder(rval.Type())&lt;br/&gt;
         .          .     83:	if err != nil &lt;/p&gt;
{
         .          .     84:		return err
         .          .     85:	}
&lt;p&gt;         .   659.01MB     86:	return decoder.DecodeValue(d.dc, d.vr, rval)&lt;br/&gt;
         .          .     87:}&lt;br/&gt;
         .          .     88:&lt;br/&gt;
         .          .     89:// Reset will reset the state of the decoder, using the same *DecodeContext used in&lt;br/&gt;
         .          .     90:// the original construction but using vr for reading.&lt;br/&gt;
         .          .     91:func (d *Decoder) Reset(vr bsonrw.ValueReader) error {&lt;br/&gt;
ROUTINE ======================== go.mongodb.org/mongo-driver/bson/bsoncodec.(*StructCodec).DecodeValue in /Users/fredlee/Documents/develop/go/workspace/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1/bson/bsoncodec/struct_codec.go&lt;br/&gt;
         0   771.02MB (flat, cum) 21.60% of Total&lt;br/&gt;
         .          .    149:	if err != nil &lt;/p&gt;
{
         .          .    150:		return err
         .          .    151:	}
&lt;p&gt;         .          .    152:&lt;br/&gt;
         .          .    153:	for {&lt;br/&gt;
         .   241.50MB    154:		name, vr, err := dr.ReadElement()&lt;br/&gt;
         .          .    155:		if err == bsonrw.ErrEOD &lt;/p&gt;
{
         .          .    156:			break
         .          .    157:		}
&lt;p&gt;         .          .    158:		if err != nil &lt;/p&gt;
{
         .          .    159:			return err
         .          .    160:		}
&lt;p&gt;         .          .    161:&lt;br/&gt;
         .          .    162:		fd, exists := sd.fm&lt;span class=&quot;error&quot;&gt;&amp;#91;name&amp;#93;&lt;/span&gt;&lt;br/&gt;
         .          .    163:		if !exists {&lt;br/&gt;
         .          .    164:			if sd.inlineMap &amp;lt; 0 {&lt;br/&gt;
         .          .    165:				// The encoding/json package requires a flag to return on error for non-existent fields.&lt;br/&gt;
         .          .    166:				// This functionality seems appropriate for the struct codec.&lt;br/&gt;
         .          .    167:				err = vr.Skip()&lt;br/&gt;
         .          .    168:				if err != nil &lt;/p&gt;
{
         .          .    169:					return err
         .          .    170:				}
&lt;p&gt;         .          .    171:				continue&lt;br/&gt;
         .          .    172:			}&lt;br/&gt;
         .          .    173:&lt;br/&gt;
         .          .    174:			elem := reflect.New(inlineMap.Type().Elem()).Elem()&lt;br/&gt;
         .          .    175:			err = decoder.DecodeValue(r, vr, elem)&lt;br/&gt;
         .          .    176:			if err != nil &lt;/p&gt;
{
         .          .    177:				return err
         .          .    178:			}
&lt;p&gt;         .          .    179:			inlineMap.SetMapIndex(reflect.ValueOf(name), elem)&lt;br/&gt;
         .          .    180:			continue&lt;br/&gt;
         .          .    181:		}&lt;br/&gt;
         .          .    182:&lt;br/&gt;
         .          .    183:		var field reflect.Value&lt;br/&gt;
         .          .    184:		if fd.inline == nil &lt;/p&gt;
{
         .          .    185:			field = val.Field(fd.idx)
         .          .    186:		}
&lt;p&gt; else &lt;/p&gt;
{
         .          .    187:			field = val.FieldByIndex(fd.inline)
         .          .    188:		}
&lt;p&gt;         .          .    189:&lt;br/&gt;
         .          .    190:		if !field.CanSet() &lt;/p&gt;
{ // Being settable is a super set of being addressable.
         .          .    191:			return fmt.Errorf(&quot;cannot decode element &apos;%s&apos; into field %v; it is not settable&quot;, name, field)
         .          .    192:		}
&lt;p&gt;         .          .    193:		if field.Kind() == reflect.Ptr &amp;amp;&amp;amp; field.IsNil() &lt;/p&gt;
{
         .          .    194:			field.Set(reflect.New(field.Type().Elem()))
         .          .    195:		}
&lt;p&gt;         .          .    196:		field = field.Addr()&lt;br/&gt;
         .          .    197:&lt;br/&gt;
         .          .    198:		dctx := DecodeContext&lt;/p&gt;
{Registry: r.Registry, Truncate: fd.truncate}
&lt;p&gt;         .          .    199:		if fd.decoder == nil {&lt;br/&gt;
         .          .    200:			return ErrNoDecoder&lt;/p&gt;
{Type: field.Elem().Type()}
&lt;p&gt;         .          .    201:		}&lt;br/&gt;
         .          .    202:&lt;br/&gt;
         .          .    203:		if decoder, ok := fd.decoder.(ValueDecoder); ok {&lt;br/&gt;
         .   529.51MB    204:			err = decoder.DecodeValue(dctx, vr, field.Elem())&lt;br/&gt;
         .          .    205:			if err != nil &lt;/p&gt;
{
         .          .    206:				return err
         .          .    207:			}
&lt;p&gt;         .          .    208:			continue&lt;br/&gt;
         .          .    209:		}&lt;br/&gt;
ROUTINE ======================== go.mongodb.org/mongo-driver/bson/bsoncodec.DefaultValueDecoders.StringDecodeValue in /Users/fredlee/Documents/develop/go/workspace/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1/bson/bsoncodec/default_value_decoders.go&lt;br/&gt;
         0   417.51MB (flat, cum) 11.70% of Total&lt;br/&gt;
         .          .    309:	var str string&lt;br/&gt;
         .          .    310:	var err error&lt;br/&gt;
         .          .    311:	switch vr.Type() {&lt;br/&gt;
         .          .    312:	// TODO(&lt;a href=&quot;https://jira.mongodb.org/browse/GODRIVER-577&quot; title=&quot;Add struct tags to choose BSON types&quot; class=&quot;issue-link&quot; data-issue-key=&quot;GODRIVER-577&quot;&gt;GODRIVER-577&lt;/a&gt;): Handle JavaScript and Symbol BSON types when allowed.&lt;br/&gt;
         .          .    313:	case bsontype.String:&lt;br/&gt;
         .   417.51MB    314:		str, err = vr.ReadString()&lt;br/&gt;
         .          .    315:		if err != nil &lt;/p&gt;
{
         .          .    316:			return err
         .          .    317:		}
&lt;p&gt;         .          .    318:	default:&lt;br/&gt;
         .          .    319:		return fmt.Errorf(&quot;cannot decode %v into a string type&quot;, vr.Type())&lt;br/&gt;
ROUTINE ======================== go.mongodb.org/mongo-driver/bson/bsoncodec.ValueDecoderFunc.DecodeValue in /Users/fredlee/Documents/develop/go/workspace/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1/bson/bsoncodec/bsoncodec.go&lt;br/&gt;
         0   417.51MB (flat, cum) 11.70% of Total&lt;br/&gt;
         .          .    151:// used as a ValueDecoder.&lt;br/&gt;
         .          .    152:type ValueDecoderFunc func(DecodeContext, bsonrw.ValueReader, reflect.Value) error&lt;br/&gt;
         .          .    153:&lt;br/&gt;
         .          .    154:// DecodeValue implements the ValueDecoder interface.&lt;br/&gt;
         .          .    155:func (fn ValueDecoderFunc) DecodeValue(dc DecodeContext, vr bsonrw.ValueReader, val reflect.Value) error &lt;/p&gt;
{
         .   417.51MB    156:	return fn(dc, vr, val)
         .          .    157:}
&lt;p&gt;         .          .    158:&lt;br/&gt;
         .          .    159:// CodecZeroer is the interface implemented by Codecs that can also determine if&lt;br/&gt;
         .          .    160:// a value of the type that would be encoded is zero.&lt;br/&gt;
         .          .    161:type CodecZeroer interface &lt;/p&gt;
{
ROUTINE ======================== go.mongodb.org/mongo-driver/mongo.(*Cursor).Decode in /Users/fredlee/Documents/develop/go/workspace/pkg/mod/go.mongodb.org/mongo-driver@v1.0.1/mongo/cursor.go
         0   659.01MB (flat, cum) 18.46% of Total
         .          .    118:	}
&lt;p&gt;         .          .    119:}&lt;br/&gt;
         .          .    120:&lt;br/&gt;
         .          .    121:// Decode will decode the current document into val.&lt;br/&gt;
         .          .    122:func (c *Cursor) Decode(val interface{}) error &lt;/p&gt;
{
         .   659.01MB    123:	return bson.UnmarshalWithRegistry(c.registry, c.Current, val)
         .          .    124:}
&lt;p&gt;         .          .    125:&lt;br/&gt;
         .          .    126:// Err returns the current error.&lt;br/&gt;
         .          .    127:func (c *Cursor) Err() error &lt;/p&gt;
{ return c.err }
&lt;p&gt;         .          .    128:&lt;br/&gt;
(pprof) &lt;/p&gt;





</description>
                <environment>linux x86&lt;br/&gt;
go version go1.12.4 darwin/amd64</environment>
        <key id="745545">GODRIVER-1000</key>
            <summary>memory still grows when program run</summary>
                <type id="1" iconUrl="https://jira.mongodb.org/secure/viewavatar?size=xsmall&amp;avatarId=14703&amp;avatarType=issuetype">Bug</type>
                                            <priority id="3" iconUrl="https://jira.mongodb.org/images/icons/priorities/major.svg">Major - P3</priority>
                        <status id="6" iconUrl="https://jira.mongodb.org/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="13203">Gone away</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="jackylee">orange.jackylee</reporter>
                        <labels>
                    </labels>
                <created>Fri, 26 Apr 2019 03:29:15 +0000</created>
                <updated>Fri, 27 Oct 2023 20:01:26 +0000</updated>
                            <resolved>Mon, 29 Apr 2019 20:11:36 +0000</resolved>
                                    <version>1.0.1</version>
                                                    <component>Core API</component>
                                        <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="2225664" author="jackylee" created="Fri, 26 Apr 2019 08:58:52 +0000"  >&lt;p&gt;you can close it, i figure out it, and fix it, sorry for that&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_15850" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_12550" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2|hul3rb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10558" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            </customfields>
    </item>
</channel>
</rss>