Matthew,

Thanks! We've tracked it to;

read_raw_iolist_int(#file{fd=Fd, tail_append_begin=TAB}, Pos, Len) ->
    BlockOffset = Pos rem ?SIZE_BLOCK,
    TotalBytes = calculate_total_read_len(BlockOffset, Len),
    {ok, <<RawBin:TotalBytes/binary>>} = file:pread(Fd, Pos, TotalBytes),
    if Pos >= TAB ->
        {remove_block_prefixes(BlockOffset, RawBin), Pos + TotalBytes};
    true ->
        % 09 UPGRADE CODE
        <<ReturnBin:Len/binary, _/binary>> = RawBin,
        {[ReturnBin], Pos + Len}
    end.

The only reasonable cause is some issue with the file system or disk,
specifically that file:pread returned less than TotalBytes number of
bytes, causing the badmatch.

Is the database in question confidential or private in any way? We
might like to examine it in more detail if not.

B.

On Mon, Nov 15, 2010 at 5:46 PM, Matthew Sinclair-Day <[email protected]> wrote:
> On 11/15/10 at 12:39 PM, [email protected] (Robert Newson) wrote:
>
>> exception exit: {{badmatch,{ok
>> <snip...>
>>
>> can you unsnip the rest of the badmatch exception text?
>>
>> B.
>
> Unsnipped as an attachment (unless the mailing list strips it).

Reply via email to