Opened 16 years ago

Closed 16 years ago

Last modified 15 years ago

#590 closed Defect (fixed)

Project with many app files causes "No app version for result" on clients

Reported by: omar Owned by: davea
Priority: Undetermined Milestone: Undetermined
Component: Server - Other Version:
Keywords: app_info blob buffer Cc:

Description

I am running a BOINC grid with one application that has about 100 different executables / dlls contained within it, and more being added every week. Last week, after adding a few more files to the mix, I noticed all the clients had stopped crunching. After doing some digging into the database and log files, I noticed that there appears to be a hard limit of 64KB on the size of the xml_doc field in the app_version table. Anything beyond that is simply truncated, which causes the xml file (I believe it becomes the app_info.xml file on the clients) to be "invalid" and fail to parse thereby producing the no app version error on the clients. Apparently, when I added those new executables it had pushed the size of the file/field over 64KB.

I do not see any reason for this limit, since the xml_doc field is of BLOB type, so I am classifying it as a defect.

Change History (5)

comment:1 Changed 16 years ago by omar

After looking at the MySQL docs, I modified the database and changed xml_doc field from type BLOB to type MEDIUM BLOB, which fixes the problem. I was mixed up with the different definitions of BLOB between Oracle (2GB) and MySQL (64KB).

May I suggest that in future releases BOINC use a MEDIUM BLOB for the xml_doc field by default.

comment:2 Changed 16 years ago by Nicolas

Keywords: blob buffer added; application client error no app version for result limit 64KB removed

In addition, it should give an error if the length limit is exceeded, not silently truncate.

In fact, I wouldn't be surprised if you were causing a buffer overflow in the C++ code.

comment:3 Changed 16 years ago by davea

Resolution: fixed
Status: newclosed

Fixed in changeset 14986. I changed the DB field to mediumblob (up to 16MB) and the struct field to 256KB (can increase this further if needed). Make sure you run db_update.php and recompile all server software.

comment:4 Changed 16 years ago by omar

Resolution: fixed
Status: closedreopened

Thanks for such a quick turn around, but I do not think this totally fixes it! I ran db_update.php and recompiled all the server progs, but my clients now say "[error] No close tag in scheduler reply".

To make sure I did not mess anything up between the upgrades, I recreated the project from scratch. I then added a few applications files and created some work. Up until this point the system works as expected. It is once I add the rest of the application files (107 files to be exact) the error appears again. I do not think think it is truncating the reply message since the sched_reply file is 68,159 in size and it is "nicely" missing the end tag.

comment:5 Changed 16 years ago by davea

Resolution: fixed
Status: reopenedclosed

possible fixed in changeset 15008

Note: See TracTickets for help on using tickets.